如何使用相同的产品ID更新已安装的msi上的Windows安装程序包

时间:2012-06-16 11:32:52

标签: wix windows-installer

我创建了一个工作正常的wix安装程序项目。它轻松地在系统上安装我的应用程序。无论何时任何文件或服务有任何变化,我都会从控制面板卸载msi并在系统上安装新的msi。

但每当我安装新的msi时,应用程序的所有设置都会在新安装后发生变化,这听起来不太好。为了解决这个问题,我在Product.wxs文件中使用升级代码。但是当我在构建之后安装新的msi时,却显示出错误:

Another version of this product is already installed.  Installation of this version cannot continue.  To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel

所以,我想在文件发生任何变化并且具有相同的产品ID时更新Windows应用程序包。我只是想更新已安装的msi,不想删除它。

2 个答案:

答案 0 :(得分:4)

您不能使用相同的ProductId进行升级,您需要更改它。最好的方法是设置ProductId =" *"这将改变每个构建它。您还需要增加版本号,这最好通过使用主exe程序集版本号来完成。有关详细信息,请参阅http://wix.sourceforge.net/manual-wix3/major_upgrade.htm

答案 1 :(得分:1)

您可以使用相同的ProductCode更新已安装的MSI。基本上,您递增ProductVersion,重建MSI(使用新的PackageCode)并使用命令行进行小更新,例如:

msiexec / i重新安装=所有重新安装模式= vomus。

根据我的经验,这并不常用,因为如果你要重建MSI,你也可以通过重大升级进行升级。

如果你想要的只是对几个文件的更新,而你还没有准备好发送一个完整的MSI文件,那么这就是补丁的用途。如上所述重建MSI,然后构建补丁 - 补丁是两个MSI文件之间的增量,请参阅MsiMsp.exe的文档。