Wix主要升级问题
以下是场景 1.)安装1.0.1.1,然后升级到1.0.2.2==>这工作正常(如预期) 2.)安装1.0.2.2,然后降级到1.0.1.1==>这不起作用(如预期的那样) 3.)安装1.0.1.1,然后安装1.0.1.1==>进入修复/删除模式(如预期) 4.)安装1.0.1.1,然后安装1.0.1.2===>它像一个新的一样安装,并在控制面板的“添加/删除程序”中显示程序两次(我想它应该像3一样工作。)因为据我所知,MSI不关心产品版本的第四部分) 我做错什么了吗Wix主要升级问题,wix,windows-installer,Wix,Windows Installer,以下是场景 1.)安装1.0.1.1,然后升级到1.0.2.2==>这工作正常(如预期) 2.)安装1.0.2.2,然后降级到1.0.1.1==>这不起作用(如预期的那样) 3.)安装1.0.1.1,然后安装1.0.1.1==>进入修复/删除模式(如预期) 4.)安装1.0.1.1,然后安装1.0.1.2===>它像一个新的一样安装,并在控制面板的“添加/删除程序”中显示程序两次(我想它应该像3一样工作。)因为据我所知,MSI不关心产品版本的第四部分) 我做错什么了吗 <Product I
<Product Id="*" Name="My product" Version="$(var.Version)" Language="1033" Manufacturer="My Company" UpgradeCode="MY-UPGRADE-CODE">
<Package Description="My product" Comments="Comments" InstallerVersion="200" Compressed="yes" />
<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
这是WIX文档中提到的行为。您需要在MajorUpgrade元素中将下面的属性设置为“Yes”,以处理此场景。阅读突出显示的文本以了解更多详细信息 AllowSameVersionUpgrades(YesNoType) 当设置为“否”(默认值)时,MSI允许安装具有相同版本和升级代码(但不同产品代码)的产品,并将其视为两个产品。当设置为“是”时,WiX将设置msidUpgradeAttributesVersionMaxInclusive属性,该属性告诉MSI将具有相同版本的产品视为主要升级
当两个产品版本仅在第四个版本字段中不同时,此选项非常有用。MSI在比较产品版本时特别忽略该字段,因此只有第四个版本字段不同的两个产品是相同的产品,需要将此属性设置为“是”才能检测到。
请注意,由于MSI忽略第四个产品版本字段,因此当前三个产品版本字段相同时,将此属性设置为“是”也允许降级。例如,产品版本1.0.0.1将“升级”1.0.0.2998,因为它们被视为同一版本(1.0.0)。这可能会重新引入严重的bug,因此最安全的选择是更改前三个版本字段,并省略此属性以获得默认值no
当AllowDowngrades也为“是”时,此属性不能为“是”-AllowDowngrades已允许具有相同版本号的两个产品相互升级
资料来源:另见此。不错的是IAH4110。