触发卸载和修复以前安装的产品

Trigger uninstall and Repair of previously installed product

我是 Wix 工具集的新手。我已经成功地在 Wix 中制作了我的第一个安装程序,但现在我对我的软件更新感到困惑,这些更新通常是次要的。

在我的安装程序中,我想检查用户是否安装了任何旧版本,然后我想向他展示三个选项;

  1. 修改:安装新版本。
  2. 修复:这将修复以前安装的产品。
  3. 删除:这将删除已安装的产品。

对于修改,我可以简单地将 InstallReadyDlg 显示为下一个对话框,然后卸载以前的版本并安装新版本。

但我无法找到如何触发卸载或修复以前安装的版本。

如有任何提示,我们将不胜感激。

注意:我知道如何显示这些选项以及如何检测用户是否安装了任何旧版本。

事情通常不是这样的,因为:

  1. 在此上下文和对话框中,修改被普遍理解为添加或删除功能。

  2. 您无法从已安装的将要删除的产品的对话框中正确地进行升级。换句话说,您的计划很可能行不通,因为您需要浏览到新的 MSI(网站?CD?),然后从您的修改对话框启动它(如何,当您显示当前产品对话框时?)然后尝试升级显示对话框的产品。

所以没有人会以这种行为进行安装,也没有人会期望这种非标准行为,而且很可能无法正常工作。

话虽如此,这就是您从刚刚包含的内置 WiX UI 对话框中免费获得 modify/repair/remove 的原因,因此您无需执行任何操作即可修复、删除,或修改已安装的功能以使其工作。一切都在那里。

已安装的产品通过补丁(用于小修复)和重大升级进行升级,您只需将新的 MSI 构建为全新产品并包含 MajorUpgrade 标签,以便在有旧版本时删除旧版本一个安装。只需安装新产品(从 CD、网站或其他任何方式),它始终是一个全新的完整安装,由于 MajorUpgrade 元素,它会升级和删除任何以前的版本。