【问题标题】:WIX: When upgrading, what to do when there are 2 different UpgradeCodes?WIX:升级时,如果有 2 个不同的 UpgradeCode 怎么办?
【发布时间】:2015-08-05 23:10:33
【问题描述】:
在这里得到一个很好的答案后:WIX: How can I uninstall a previous MSI built using a VS *.vdproj,现在我在该领域面临一个不同的问题。
我有 2 个版本,有 2 个不同的升级代码。发生这种情况是因为我们已经部署了新 WIX 的一个版本,没有将 UpgradeCode 与旧 MSI 同步。
将新的 Wix 安装程序与其中一个代码同步,升级顺利进行。我对第二个感到兴奋吗?我试图从添加/删除中卸载额外的,并且运行顺利,但在我指示这些用户去添加/删除之前,我想知道是否有另一个技巧来处理这两个问题。
如果我能在安装过程中检测到安装了哪个版本,我可以动态设置新的 Wix UpgradeCode 吗?
【问题讨论】:
标签:
wix
windows-installer
【解决方案1】:
将两个 UpgradeCodes 放入 Upgrade 表中的两个单独的行中。这允许您在升级期间让 MSI 自动卸载旧的 MSI(如果这是您想要的),并为您提供 MSI 属性以有条件地使用以检查系统上已安装的内容。
更新(回复第一条评论)
<!-- old product -->
<Upgrade Id="$(var.UpgradeCode1)">
<UpgradeVersion Property="OLD_PRODUCT_FOUND_1"
IncludeMaximum="yes"
Maximum="2.0.0"
MigrateFeatures="yes"
OnlyDetect="no" />
</Upgrade>
<!-- new product -->
<Upgrade Id="$(var.UpgradeCode2)">
<UpgradeVersion Property="OLD_PRODUCT_FOUND_2"
IncludeMaximum="yes"
Maximum="3.0.0"
MigrateFeatures="yes"
OnlyDetect="no" />
</Upgrade>
此代码将检测两个 UpgradeCode,如果找到一个(或两个),则会在 RemoveExistingProducts 操作期间将其删除。
【讨论】:
-
这听起来很有希望。如何添加两个 UpgradeCode?这是我到目前为止所拥有的,其中一个代码在我的 Variables.wxi 文件中声明: