Wix:如何卸载使用不同安装程序安装的以前安装的应用程序

时间:2014-06-20 11:52:43

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

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

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

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

感谢。

3 个答案:

答案 0 :(得分:2)

假设它是基于Windows Installer的安装程序(WiX,InstallShield等),您可以使用ORCA对其进行编辑,并查看Property表以查看它的UpgradeCode。如果将其打包为自解压安装程序,则可能必须先将其解压缩。

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

答案 1 :(得分:2)

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

Get-WmiObject Win32_Product | Format-Table Name, LocalPackage

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

C:\Windows\Installer\235bbf8.msi

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

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

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

答案 2 :(得分:1)

当我发布给WiX用户时:

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

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