使用MSI升级软件时出现错误“无法加载文件或程序集”

问题描述

我有使用MSI安装程序构建的软件3.0和4.0两个版本。其中安装程序3.0包含NewtonSoft.Json 11.0,而安装程序4.0包含NewtonSoft.Json 10.0。将软件从3.0升级到4.0时,出现以下错误。我该如何解决

'错误1001。 无法加载文件或程序集“ NewtonSoft.Json,版本= 10.0.0.0,区域性=中性,PublicKeyToke = 30ad4fe6b62a6aeed”或其依赖项之一。系统找不到指定的文件。'

解决方法

如果我的理解正确,则在更新软件期间,必须降级。我假设您进行了重大升级(即卸载旧版本,安装新版本)。

在InstallExecute序列中,您可以在InstallInitialize之前(即首先卸载旧版本,安装新版本)或在InstallFinalize之后(即先安装新版本,然后卸载旧版本)计划RemoveExistingProducts。

后者效率更高,但在您的情况下不起作用,因为它不会用NewtonSoft.Json 10.0覆盖NewtonSoft.Json 11.0。

因此,解决方案是在InstallInitialize之前将RemoveExistingProducts移至。