【问题标题】:WiX installer - how can I remove installed application and re-install it at the same runWiX 安装程序 - 如何删除已安装的应用程序并在同一运行时重新安装它
【发布时间】:2014-12-29 02:37:12
【问题描述】:
我有一个基于 WiX 技术的自定义安装程序,它将多个 .vsix 包安装到 Visual Studio 中。
如果已安装此软件包,安装程序会提出删除它们。删除过程完成后,安装程序退出。
这是正常行为,但我需要在退出前让用户重新安装此软件包(可选)。我的意思是可选模式卸载以前的版本并通过一次安装程序运行安装新版本(或相同版本)。
如何在 WiX 中实现这一点?
【问题讨论】:
标签:
wix
uninstallation
reinstall
【解决方案1】:
我怀疑您的自定义安装程序可以变得更智能一些。有很多 API(例如 MsiQueryProductState)会告诉您是否安装了确切的 ProductCode,以及获取版本的方法(MsiGetProductInfo)。我的猜测是,您的自定义安装程序只是启动了所有 MSI 安装,而没有检查它们是否已经安装,因此会出现删除提示。
您的总体计划应该是为您的自定义安装程序提供一些数据,以便它可以用来找出已安装的内容和版本,然后将这些数据与您将要安装的内容进行比较。使用这些 API。如果产品已安装,则跳过安装。如果您有较新的版本(使用 WiX MajorUpgrade 元素构建的),则只需安装它,因为它将替换现有的旧版本。
我想不出在 WiX 中会自动重新安装您的自定义安装程序通过重新安装它并提示用户删除它而导致删除的产品(如果发生这种情况的话)。