【问题标题】:Uninstall Application using a later version of msi使用更高版本的 msi 卸载应用程序
【发布时间】:2016-08-23 19:31:58
【问题描述】:

我们有一个自定义的 WIX 引导程序安装程序。引导程序捆绑链 3 个单独的应用程序 msi。引导程序自定义 UI 允许用户选择要安装的应用程序,并根据选择自定义引导程序将安装其 msi。

现在考虑一下场景。 应用程序,例如 A1 版本 1.0.0.50 已安装在系统中。假设引导程序版本也是 1.0.0.50

假设具有一些更新的下一个版本的引导程序安装程序可用,假设它的版本是 1.0.0.51。 使用这个我想安装第二个应用程序,比如 A2。 我也想卸载A1。目前我们支持使用这个最新的安装程序将 A1 升级到 1.0.0.51 版本。

但我想检查使用最新引导程序版本卸载 A1 的可能性。我该如何实施? 因为根据我们的项目要求,最终用户应该能够使用任何版本的引导程序卸载 A1。

我在注册表中看到它为每个 msi 存储了 Uninstallstring。如果我运行 uninstallstring value ,例如 MsiExec.exe /X{90140000-0011-0000-0000-0000000FF1CE} 它会完全执行 msi uninstall 所做的事情吗?它会处理清理注册表项、删除已安装的文件等吗?

【问题讨论】:

    标签: wix bootstrapper


    【解决方案1】:

    不要为此去注册表。 MSI 数据库有一个升级表,有望满足您的要求(https://msdn.microsoft.com/en-us/library/windows/desktop/aa372379(v=vs.85).aspx)。添加一个带有已安装 MSI 的升级代码的条目,在 VersionMin 和 VersionMax 下提供版本边界,根据您的要求设置属性 769 或其他内容,创建一个新的公共属性并将其添加到 SecureCustomProperties。 最后,在安装过程中启用 Windows 日志记录并检查日志以查找标准操作,例如 findrelatedproducts 和 removeexistingproducts,如果您遇到任何问题。

    【讨论】:

    • 感谢您的回答。您能否通过示例详细说明一下。例如,我对设置属性和安全自定义属性不太了解。
    • 我msis中的当前升级表如下
    • 这是正确的吗?升级到更高版本工作正常。在升级过程中,它会卸载旧版本并安装新版本。但不是升级
    • 欢迎您,如果我把您的情况反过来说,我深表歉意。如果您的要求只是卸载而不是重大升级,请继续创建一个自定义操作来触发您要卸载的应用程序的卸载。您可以在 {symantec.com/connect/downloads/uninstall-msi-vbscript} 找到此类自定义操作的 vbscript
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2016-03-29
    • 2019-01-14
    • 2015-04-22
    • 2019-02-15
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多