繁体   English   中英

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

[英]Wix: how to uninstall previously installed application that is installed using different installer

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

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

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

谢谢。

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

您也可以查询MSI API或在注册表(HKCR \\ Installer)中查找此信息。 如果您使用注册表路由,则最简单的方法是查看Products / GUID / Sourcelist项并将其追溯到缓存的MSI,然后在ORCA中进行查看。 否则,您必须学习如何加入不同的数据集并将达尔文转换后的GUIDS转换回其原始GUID格式。

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

Get-WmiObject Win32_Product | Format-Table Name, LocalPackage

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

C:\Windows\Installer\235bbf8.msi

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

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

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

当我发布给WiX用户时:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM