WIX:升级时,有2个不同的UpgradeCode怎么办?
WIX: When upgrading, what to do when there are 2 different UpgradeCodes?
在这里得到一个很好的答案后:,现在我在这个领域面临着不同的问题。
我有 2 个版本,有 2 个不同的升级代码。发生这种情况是因为我们已经部署了一个版本的新 WIX w/out,将 UpgradeCode 与旧 MSI 同步。
将新的 Wix 安装程序与其中一个代码同步,升级顺利进行。我被第二个冲昏了头脑吗?我尝试只从 Add/Remove 中卸载额外的一个并且工作顺利,但在我指示这些用户转到 Add/Remove 之前,我想知道是否有另一种技巧可以同时处理这两个问题。
也许如果我能在安装过程中以某种方式检测到安装了哪个版本,我可以动态设置新的 Wix UpgradeCode 吗?
为了检测旧版本,我会考虑使用自定义操作。
将两个 UpgradeCodes 放入升级 table 成两行。这允许您让 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 个版本,有 2 个不同的升级代码。发生这种情况是因为我们已经部署了一个版本的新 WIX w/out,将 UpgradeCode 与旧 MSI 同步。
将新的 Wix 安装程序与其中一个代码同步,升级顺利进行。我被第二个冲昏了头脑吗?我尝试只从 Add/Remove 中卸载额外的一个并且工作顺利,但在我指示这些用户转到 Add/Remove 之前,我想知道是否有另一种技巧可以同时处理这两个问题。
也许如果我能在安装过程中以某种方式检测到安装了哪个版本,我可以动态设置新的 Wix UpgradeCode 吗?
为了检测旧版本,我会考虑使用自定义操作。
将两个 UpgradeCodes 放入升级 table 成两行。这允许您让 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 操作期间删除它们。