首页 文章

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

提问于
浏览
2

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

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

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

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

2 回答

  • 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操作期间删除它们 .

  • -2

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

相关问题