升级使用以前安装程序中的OnCommit Custom Action

时间:2016-09-08 13:32:32

标签: c# windows-installer setup-project visual-studio-setup-proje vsinstaller

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

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

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

我设置RemovePreviousVersions = true UpgradeCodes 相同,而 ProductCodes 则不同。

1 个答案:

答案 0 :(得分:0)

我相信这是一个老错误:

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

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

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