1

我创建了一个运行良好的 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,不想删除它。

4

2 回答 2

4

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

于 2012-06-16T14:50:16.047 回答
1

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

msiexec /i <path to new msi> REINSTALL=ALL REINSTALLMODE=vomus. 

以我的经验,这并不常用,因为如果您要重建 MSI,您不妨进行重大升级。

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

于 2015-10-06T17:31:32.700 回答