WIX:升级时,如果有2种不同的UpgradeCodes,该怎么办?

时间:2015-08-04 20:08:10

标签: wix windows-installer

在这里得到一个好的答案后:WIX: How can I uninstall a previous MSI built using a VS *.vdproj,现在我面临着一个不同的问题。

我有2个版本,有2个不同的UpgradeCodes。之所以发生这种情况,是因为我们已经部署了一个版本的新WIX w / out将UpgradeCode与旧的MSI同步。

将新的Wix安装程序与其中一个代码同步,升级顺利进行。我是否在第二个人身上?我试图从添加/删除中卸载额外的一个并且运行顺利,但在我指示这些用户进入添加/删除之前,我想知道是否还有另一个技巧来处理这两个。

也许如果我能在安装过​​程中以某种方式检测到安装了哪个版本,我可以动态设置新的Wix UpgradeCode吗?

2 个答案:

答案 0 :(得分:2)

将UpgradeCodes升级表放入两个单独的行中。这允许您在升级期间让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>

此代码将检测两个UpgradeCodes,如果找到其中一个(或两个),则会在RemoveExistingProducts操作期间删除它们。

答案 1 :(得分:-2)

要检测旧版本,我会考虑使用自定义操作。