0

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

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

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

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

回答

0

我认为,这是一个古老的错误:

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

并没有关于它的其他支持文章,我无法找到。它可能已被删除,因为它适用于较早版本的安装项目。我认为走弯路就像重命名程序集和更改程序集版本一样。

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

相关问题