当我更改版本号时,我的WiX安装程序不会卸载ARP中的先前版本记录。它会安装更新的文件,但我最终会在ARP中重复记录。这是否与次要升级和主要升级有关?我的WiX安装程序文件的开头如下:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Blah" Language="1033" Version="1.0.0.6" Manufacturer="Blah Inc." UpgradeCode="c6044fe4-e07a-4dd0-9540-cc77b4430466">
<Package Id ="*" Keywords="Installer" Description="Blah Installer" Manufacturer="Blah Inc." InstallerVersion="200" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
<Property Id="OLDVERSION" Secure="yes" />
<Upgrade Id="7BDF86F7-C6A8-4112-9DA6-FDFB6864AE66">
<UpgradeVersion OnlyDetect="no" Minimum="1.0.0.0" Maximum="99.0.0.0" Property="OLDVERSION" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Overridable="no" After="InstallInitialize" />
</InstallExecuteSequence>
答案 0 :(得分:2)
要检查的事情:
两个MSI的升级ID是否相同? MSI不知道安装了相关产品,除非升级GUID相同。
看起来您只更新了版本号的最后一位数字? 如果您的版本1使用版本值1.0.1.0,则版本2的版本值应为1.0.2.0或更高版本(此处1.0.1.1不起作用)。
从Wix3.5开始,有一个名为MAJORUPGRADE MajorUpgrade的新元素,它整合了您编写的行并使事情变得更容易。你可以利用它,看看它是否有效?这是Bob Arnsons博客的链接,介绍了“MajorUpgrade”MajorUpgrade
点击此链接了解详情:How to implement major upgrade
答案 1 :(得分:1)
您的升级代码通常必须在不同版本中保持稳定,以确定相关产品。它们的代码似乎不同。
此外,您必须实施major upgrade以确保在安装新产品之前卸载旧产品版本。否则,您将在ARP中显示多个安装。
为了好的衡量,总是大写你的GUID ,虽然我相信WIX会在编译时为你做这件事。并且在尝试其他任何操作之前,请确保卸载所有版本的应用程序。