我创建了一个工作正常的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,不想删除它。
答案 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的文档。