我已经使用WIX工具集(3.10)制作了一个安装程序。我想要升级,但我不能让它工作。每次我运行msi时,它都会安装另一个版本。我不知道出了什么问题。有人能告诉我吗?
<Product Id="*"
Name="$(var.PRODUCTNAME)"
Language="1033"
Version="$(var.PRODUCTVERSION)"
Manufacturer="Manufacturer"
UpgradeCode="UPGRADE_CODE"
>
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine" />
<MajorUpgrade Schedule="afterInstallInitialize"
AllowDowngrades="no"
AllowSameVersionUpgrades="no"
DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />发布于 2016-07-06 15:29:04
AllowSameVersionUpgrades=的“是”可能会解决这个问题。在测试升级时,您需要始终在安装程序之间更新版本(前3部分之一),或者只允许进行相同的版本升级。
来自wix网站
当设置为no (默认值)时,MSI允许安装具有相同版本和升级代码(但不同的产品代码)的产品,并将其视为两种产品。当设置为“是”时,WiX设置msidbUpgradeAttributesVersionMaxInclusive属性,该属性告诉MSI将具有相同版本的产品视为主要升级。
因此,您的安装认为这两个安装是独立的,即使它们共享相同的升级代码,这就是为什么您在add remove程序列表中获得两个副本的原因。
发布于 2016-07-06 14:08:55
我对UpgradeCode使用GUID (我想这就是UPGRADE_CODE的意思)。
还可以设置REINSTALLMODE属性以更改重新安装行为。
看起来可能是这样的:
<SetProperty Id="REINSTALLMODE" Value="amus" After="FindRelatedProducts">Installed AND REMOVE<>"ALL"</SetProperty>请注意,无论安装的版本如何,a都会重新安装您的产品。但是您可以查找安装程序需要的字符。
对于Value="amus",您可以参考Microsoft文档这里。
发布于 2016-07-08 10:31:06
除了MajorUpgrade属性之外,对于将来的版本,UpgradeCode不进行更改也是至关重要的。这可能就是问题所在吗?
https://stackoverflow.com/questions/38223616
复制相似问题