在wix中卸载旧版本的4位数字,如1.1.0.1

时间:2015-01-14 05:08:02

标签: wix install uninstall

虽然安装的版本高于当前安装的版本,但需要卸载以前的版本并安装较新的版本。而安装较低版本的当前版本需要限制安装。  它有3位数字(1.0.0,2.0.0等)。但我要求4位数版本(1.1.0.1,1.1.0.2等)。 请任何人回答我的问题..

1 个答案:

答案 0 :(得分:3)

这是Windows Installer的设计限制。见:

ProductVersion property

  

<强>说明

     

ProductVersion的三个字段中至少有一个必须更改为   使用升级表进行升级。任何只更改的更新   包代码,但是ProductVersion和ProductCode保持不变   叫做小更新。提供了三个版本字段   主要是为了方便。例如,如果要更改   ProductVersion,但不想改变主要或次要   版本,您可以更改构建版本。

     

请注意,Windows Installer仅使用前三个字段   产品版本。如果您在产品中包含第四个字段   版本,安装程序忽略第四个字段。

WiX MajorUpgrade Element有一个名为AllowSameVersionUpgrades的属性:

  

设置为no(默认值)时,安装具有相同的产品   版本和升级代码(但不同的产品代码)是允许的   被MSI视为两种产品。设置为yes时,WiX设置为   msidbUpgradeAttributesVersionMaxInclusive属性,告诉MSI   处理与主要升级版本相同的产品。

     

当两个产品版本仅在第四个版本中有所不同时,这非常有用   版本字段。 MSI在比较时特别忽略了该字段   产品版本,所以两个产品只在第四个不同   version字段是相同的产品,需要将此属性设置为yes   被发现。

     

请注意,因为MSI忽略了第四个产品版本字段,   将此属性设置为yes也允许在第一个时降级   三个产品版本字段完全相同。例如,产品   版本1.0.0.1将&#34;升级&#34; 1.0.0.2998因为他们被视为   相同版本(1.0.0)。这可能会重新引入严重的错误   最安全的选择是更改前三个版本字段并省略   此属性将获取默认值no。

     

此属性不能是&#34;是&#34;当AllowDowngrades也是&#34;是&#34; -   AllowDowngrades已经允许两个版本相同的产品   号码互相升级。

现在有办法让两全其美。它涉及编写在FindRelatedProducts action之后安排的自定义操作,以调用MsiEnumRelatedProducts function来查询MSI并识别仅与第四个字段不同的已安装产品,并且少于您的新产品版本。然后将其添加到升级行中指定的ActionProperty中,让RemoveExistingProducts Action完成剩下的工作。