我被要求将ver 1.0.0.0升级到1.0.0.1。默认情况下,当我使用虚拟安装程序进行测试时,如果我们更改产品代码,则1.0.0.0和1.0.0.1将并排安装。
但是如果我们执行ver 1.0.1.0(在更改产品代码时),它会进行升级。这是我的升级部分:
<Upgrade Id="{354E9DAE-EB70-4BCC-BD93-AC20ACE3F370}">
<UpgradeVersion
Maximum="$(var.ver)"
Property="DOMAJORUPGRADE"
MigrateFeatures="yes"
IncludeMinimum="yes"/>
</Upgrade>
问题:有没有方法可以将1.0.0.0升级到1.0.0.1?
实际上,我给出了这样的场景:
答案 0 :(得分:10)
查看帮助主题MajorUpgrade Element:
以下是关于AllowSameVersionUpgrades属性的说法:
蒂姆的回答是正确的95%。我真的不建议只改变第4版。也就是说,有一种方法可以缓解上面提到的“意外降级”错误。编写一个不检测相同版本的MajorUpgrade规则。然后编写一个自定义操作,对第四个字段中较大的产品进行额外检查并共享您的UpgradeCode。将检测到的ProductCode设置或附加到ActionProperty。在FindRelatedProducts和RemoveExistingProducts之间安排此自定义操作,您将获得从未为Windows Installer设计的所需行为。设置为no(默认值)时,安装具有相同的产品 版本和升级代码(但不同的产品代码)是允许的 被MSI视为两种产品。设置为yes时,WiX设置为 msidbUpgradeAttributesVersionMaxInclusive属性,告诉MSI 处理与主要升级版本相同的产品。
当两个产品版本仅在第四个版本中有所不同时,这非常有用 版本字段。 MSI在比较时特别忽略了该字段 产品版本,所以两个产品只在第四个不同 version字段是相同的产品,需要将此属性设置为yes 被发现。
请注意,因为MSI忽略了第四个产品版本字段, 将此属性设置为yes也允许在第一个时降级 三个产品版本字段完全相同。例如,产品 版本1.0.0.1将“升级”1.0.0.2998因为它们被视为 相同版本(1.0.0)。这可能会重新引入严重的错误 最安全的选择是更改前三个版本字段并省略 此属性将获取默认值no。
当AllowDowngrades也是“是”时,此属性不能为“是” - AllowDowngrades已经允许两个版本相同的产品 号码互相升级。
答案 1 :(得分:5)
不,因为MSI忽略了版本号的修订部分。 MSI看到版本1.0.0.0和1.0.0.1完全相同,因为它只查看版本的主要版本,次要版本和构建版本,即1.0.0版本,两者都是相同的。