我被要求将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>
Question: 有没有方法可以将1.0.0.0升级到1.0.0.1?
实际上,我给出了这样的场景:
-
在1.0.0.0之上安装1.0.0.1时,需要升级1.0.0.0 .
-
在1.0.0.1之上安装1.0.0.0时,1.0.0.0需要失败 .
-
在1.0.0.1之上使用不同的产品代码安装1.0.0.1(仅在开发版本中可能),现有的1.0.0.1需要卸载 .
2 回答
查看帮助主题MajorUpgrade Element:
以下是关于AllowSameVersionUpgrades属性的说明:
蒂姆的答案是正确的95% . 我真的不建议只改变第4版 . 也就是说,有一种方法可以缓解上面提到的“意外降级”错误 . 编写一个不检测相同版本的MajorUpgrade规则 . 然后编写一个自定义操作,对第四个字段中较大的产品进行额外检查并共享您的UpgradeCode . 将检测到的ProductCode设置或附加到ActionProperty . 在FindRelatedProducts和RemoveExistingProducts之间安排此自定义操作,您将获得Windows Installer从未设计过的所需行为 .
不,因为MSI忽略版本号的修订部分 . MSI认为版本1.0.0.0和1.0.0.1完全相同,因为它只查看版本的主要版本,次版本和构建版本,即1.0.0,两者都相同 .
ProductVersion property