安装微星时如何卸载之前的烧录包

How to uninstall previous Burn package when installing MSI

假设我分发了一个带有特定升级代码的 WiX Burn 包(我不知道任何产品代码)。假设我决定继续前进,我想转向 MSI 软件包。问题是:安装MSI包时如何根据升级码删除之前的Burn包?我给了两个相同的升级代码,但 MSI 默认情况下似乎没有卸载 Burn。

您可能需要在 MSI 中编写一个自定义操作,遍历以下所有注册表项:

HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

并使用静态 UpgradeCode GUID 的值搜索注册表值 "BundleUpgradeCode"。找到它后,读入条目 "UninstallString" 或 "QuietUninstallString" 的值。这是您需要执行的命令,以便在安装新 MSI 之前卸载以前的捆绑包。

警告:如果您卸载旧的捆绑包并且新的 MSI 安装程序失败,则此方法不支持回滚。您最终会得到一台既没有安装您的产品的机器。