You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup执行{tmp}中安装后程序时无法找到依赖DLL/程序集

安装后运行程序时Newtonsoft.Json依赖加载失败

我在使用Inno Setup完成安装后,尝试运行一个名为UpdateSettingsFile的程序,配置如下:

[Files]

; Post install
Source: "UpdateSettingsFile\*.exe"; DestDir: {tmp}
Source: "UpdateSettingsFile\*.dll"; DestDir: {tmp}
Source: "UpdateSettingsFile\UpdateSettingsFile.runtimeconfig.json"; DestDir: {tmp}
Source: "UpdateSettingsFile\*.json"; DestDir: {tmp}

[Run]
Filename: "{tmp}\UpdateSettingsFile.exe"; \
    Description: "Post Install Update Settings File"; \
    Flags: nowait postinstall skipifsilent

程序确实会在安装结束时启动,但抛出以下错误:

未处理的异常已在应用程序中发生。单击“继续”,应用程序将忽略此错误并尝试继续;单击“退出”,应用程序将立即关闭。

无法加载文件或程序集“Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4febb2abaeed”。系统找不到指定的文件。

Newtonsoft.Json.dll和其他文件位于同一目录,按理应被程序找到,我的需求是在安装后运行该程序,结束后自动移除它。


解决办法

1. 指定程序运行的工作目录

Inno Setup的[Run]节默认工作目录并非{tmp},这可能导致程序在错误的目录下查找依赖库。修改配置,明确指定工作目录为{tmp}:

[Run]
Filename: "{tmp}\UpdateSettingsFile.exe"; \
    Description: "Post Install Update Settings File"; \
    WorkingDir: {tmp}; \
    Flags: nowait postinstall skipifsilent

2. 验证依赖文件的正确性

  • 检查复制到{tmp}的Newtonsoft.Json.dll版本是否为13.0.0.0:右键文件 → 属性 → 详细信息,查看产品版本和文件版本
  • 确认文件名拼写完全正确(比如是否为Newtonsoft.Json.dll,无大小写或字符错误)

3. 检查.NET程序的部署配置

如果UpdateSettingsFile是.NET Core/.NET 5+程序:

  • 确认UpdateSettingsFile.runtimeconfig.json中的框架版本与程序编译时一致
  • 如果是框架依赖部署,确保目标机器已安装对应版本的.NET运行时;如果是自包含部署,确认所有依赖文件都已正确复制到{tmp}目录

内容的提问来源于stack exchange,提问作者rrirower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:27:42