【问题标题】:Wix: how to uninstall previously installed application that is installed using different installerWix:如何卸载使用不同安装程序安装的以前安装的应用程序
【发布时间】:2014-08-11 04:12:39
【问题描述】:

假设您有一个从某处下载的安装程序(不是 wix 安装程序)。您如何知道该安装程序的 UpgradeCode,以便您可以将其填写在您准备的新安装程序的 UpgradeCode 部分?

我可以从注册表中以某种方式学习它吗?所以问题基本上是,如何知道安装在计算机中的程序的UpgradeCode。

实际上我的问题是我的产品已经安装了另一个安装程序,我现在正试图将它移动到 wix 安装程序。但是,我在以前的安装程序中找不到升级代码,我想从已安装的软件中找到它。

谢谢。

【问题讨论】:

    标签: wix windows-installer wix3 wix3.6 wix-extension


    【解决方案1】:

    假设它是基于 Windows Installer 的安装程序(WiX、InstallShield 等),您可以使用 ORCA 对其进行编辑并查看属性表以查看其升级代码。如果它被打包为自解压安装程序,您可能必须先解压它。

    您还可以查询 MSI API 或在注册表 (HKCR\Installer) 中查找此信息。如果您走注册表路线,最简单的方法可能是查看 Products/GUID/Sourcelist 键并将其追溯到缓存的 MSI 并在 ORCA 中查看。否则,您必须学习如何连接不同的数据集并将 Darwin 转换后的 GUID 转换回其原始 GUID 格式。

    【讨论】:

    • 您好克里斯托弗,感谢您的回复。我需要咨询您一些事情,因为我不太确定我是否正确理解了这个概念。 1. 当我使用以前的安装程序安装应用程序时,我看到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ 下出现了一个新密钥。关键名称是产品 ID 对吗? 2.我们应该保持升级代码和产品ID相同,对吗? 3. 在所有版本中保持产品 ID 相同的缺点是什么?除了所有这些问题,我如何提取安装程序,因为它是一个 exe 文件。
    • 非常感谢! Darwin/PackedGUID 到 GUID 的道路比预期的要简单得多。
    【解决方案2】:

    正如我向 WiX 用户发布的内容:

    我已经看到通过让升级从注册表中获取卸载字符串来完成此操作,其中应该有一个您可以使用的命令,因为它不是基于 MSI 的。您是否应该在 UI 序列或执行序列中调用它,或者两者都调用它取决于您对静默安装的要求,这意味着您需要在执行序列中静默执行它,并且可能需要更改卸载命令以使其静默.

    如果该安装具有标准的卸载快捷方式,您可以从中获取命令,则相同的一般想法应该有效。无论哪种方式,您都只是使用 CA 来运行外部程序,或者可能是 Util CAQuietExec 之类的东西。

    【讨论】:

      【解决方案3】:

      启动 PowerShell(以管理员身份运行)并运行此命令以获取已安装产品的列表以及产品代码

      Get-WmiObject Win32_Product | Format-Table Name, LocalPackage
      

      您将获得所有已安装 MSI 产品的列表,以及本地缓存 MSI 数据库的奇怪路径。它通常看起来像这样:

      C:\Windows\Installer\235bbf8.msi
      

      235bbf8.msi 文件名是随机,并且对于每个安装的产品都不同。它是您最初安装的 MSI 文件的缓存副本。它不包含 cab 文件(或者至少在旧版本的 Windows 中不包含)。

      您可以使用 Orca 中的随机名称打开该文件,方法是选择 File -> Open,然后将完整路径粘贴到文件打开对话框中,然后按打开。 不要进行任何更改,而是检查属性表中的升级代码。您还可以使用其他 MSI 工具,例如 Installshield。

      请注意,路径 C:\Windows\Installer“超级保护”,在启用显示隐藏文件夹并禁用之前,它甚至在 Windows 资源管理器中都不可见保护操作系统文件选项。如果您将整个路径粘贴到 Orca 中,我仍然相信您可以直接打开文件 - 无需通过 Windows 资源管理器。

      【讨论】:

        猜你喜欢
        • 2019-12-13
        • 2019-05-18
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        • 2017-10-27
        • 1970-01-01
        相关资源
        最近更新 更多