Wix 如何使用相同的产品id在已安装的msi上更新Windows installer软件包

Wix 如何使用相同的产品id在已安装的msi上更新Windows installer软件包,wix,windows-installer,Wix,Windows Installer,我已经创建了一个wix安装程序项目,它运行良好。它可以轻松地在系统上安装我的应用程序。每当任何文件或服务发生任何更改时,我都会从控制台卸载msi,并在系统上安装新的msi 但每当我安装新的msi时,应用程序的所有设置都会在新安装后更改,这听起来不太好。为了解决这个问题,我在Product.wxs文件中使用了升级代码。但当我在构建后安装新msi时,却显示出给定错误: Another version of this product is already installed. Installatio

我已经创建了一个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,不想删除它。

您不能使用相同的产品id进行升级,您需要更改它。最好的方法是设置ProductId=“*”,这将为每个构建更改它。您还需要增加版本号,最好使用主exe程序集版本号。有关更多信息,请参阅。

您不能使用相同的ProductId进行升级,您需要更改它。最好的方法是设置ProductId=“*”,这将为每个构建更改它。您还需要增加版本号,最好使用主exe程序集版本号。有关更多信息,请参阅。

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

msiexec /i <path to new msi> REINSTALL=ALL REINSTALLMODE=vomus. 
msiexec/i重新安装=所有重新安装模式=vomus。
以我的经验,这不是常用的,因为如果你要重建MSI,你也可以升级一个主要的升级


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

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

msiexec /i <path to new msi> REINSTALL=ALL REINSTALLMODE=vomus. 
msiexec/i重新安装=所有重新安装模式=vomus。
以我的经验,这不是常用的,因为如果你要重建MSI,你也可以升级一个主要的升级


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

我可以使用修补程序进行升级吗。但我不知道如何使用补丁。我见过很多例子,但没有得到那么多。请给我一个使用补丁的合适解决方案。我自己没有使用过补丁,所以我不能发表评论,对不起。我可以用补丁升级吗。但我不知道如何使用补丁。我见过很多例子,但没有得到那么多。请给我一个使用补丁的合适解决方案。我自己没有使用过补丁,所以我不能发表评论,对不起。