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
相关产品推荐
相关产品推荐

