0

在使用新的 MSI 将我的解决方案从版本 1 升级到 2 时,我注意到我配置应用程序的自定义操作之一是使用属于版本 1 的值(在 OnCommit 操作上)

我添加了打印出程序集版本的消息框和日志,并确认在升级期间,Windows 安装程序正在使用以前 MSI 中的 dll。但是,如果我手动安装较新的 MSI,则会使用正确的自定义操作。

有没有办法解决这个问题?还没有找到很多关于它为什么使用以前的自定义操作的信息?

我设置RemovePreviousVersions = trueUpgradeCodes相等,而ProductCodes不同。

4

1 回答 1

0

我相信这是一个老错误:

https://support.microsoft.com/en-us/kb/555184

还有另一篇关于它的支持文章,我找不到。它可能已被删除,因为它适用于旧版本的安装项目。我认为弯路是重命名程序集和更改其程序集版本。

问题(正如您可能猜到的)是卸载加载程序集以进行卸载,并且升级安装中的程序集在这种情况下(反射加载)确定的加载规则是相同的,因此它不会加载您的新程序集,但使用已加载的旧程序集。这一切都意味着您使用的是非常旧版本的 Visual Studio 安装项目,该项目首先卸载旧产品,然后安装新产品。自(包括)Visual Studio 2008 以来,这不是默认行为,因此我认为您不会在较新版本中遇到问题。

于 2016-09-08T17:32:05.467 回答