0

我在 Windows Server 2012 机器上,有些东西搞砸了。我试图从添加/删除程序工具中卸载我的应用程序。当我尝试这样做时,我看到以下错误消息:

在此处输入图像描述

所以我继续并在 Windows 管理添加/删除程序工具中所有已安装应用程序列表的帮助下删除了以下注册表项:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C14DB2B2-6089-4C96-A878-77BA377BABBF}]

在这个特定的路径中,我能够在其中的密钥C14DB2B2-6089-4C96-A878-77BA377BABBF的帮助下确定 guid hive 属于我的产品DisplayName

此后,我不再在添加/删除程序工具窗口中看到我的应用程序。所以,我以为我已经完成了。

<<看到@Nikolay 的回答后更新>>

在这种混乱之后尝试进行全新安装时,有两种方法可以遇到我所面临的错误。我正在解释两条路线:

  1. 当我尝试通过运行相同的myapplication.msi文件来安装应用程序时,当我单击欢迎屏幕上的“下一步”按钮时,它会显示在屏幕下方。似乎程序仍然安装:

在此处输入图像描述

  1. 在另一个混乱中,不知何故我的 MSI 在开始发出新的 MSI name 的构建过程中被重命名myapplication_x.msi。当我尝试通过运行新命名的myapplication_x.msi文件来安装应用程序时,它会给我下面显示的错误消息框:

在此处输入图像描述

所以总的来说,我无法安装我的产品的新 MSI,并且在“添加/删除程序”窗口中没有看到任何内容。从注册表的角度来看,我似乎仍然缺少一些东西。有人可以通过清理更多注册表项或更好的方法(如果存在清除机器上已安装产品的痕迹)来帮助我摆脱这个问题吗?

4

3 回答 3

4

删除条目Uninstall\{xxxxxxxxx}并不会真正卸载产品。它类似于从桌面删除程序快捷方式。这并没有真正删除程序。

尝试在添加/删除控制面板中单击“删除”而不是“修改”按钮。如果只有一个按钮,“修改/删除”,那么您可以尝试从命令行中删除程序,如下所示:

> msiexec /x {C14DB2B2-6089-4C96-A878-77BA377BABBF}

在最坏的情况下,如果您通过编辑注册表完全搞砸了系统,可能还有另一种选择:MsiZap.exe 工具不推荐使用不受​​支持且不安全工具),可以清除指定 MSI 的所有注册表项。

更新:如果您有无法卸载的应用程序,可以尝试使用Microsoft提供的新FixIt 工具。

于 2017-02-03T10:22:47.687 回答
0

该错误表明您正在尝试安装与当前在计算机上的软件包“相关”的软件包,而没有向 msiexec 提供适当的说明。这个包可能是一个小更新或小升级(虽然可能不是一个有效的,我会特别怀疑以后的任何卸载问题)。通常要安装此类更新,您需要指定

msiexec /i myapplication.msi REINSTALL=all REINSTALLMODE=vomus

或者,如 Nikolay 所述,正确卸载现有软件包msiexec /x {product-code}(您在注册表的 Uninstall 键中看到的 guid 是您的产品代码)。

如果这不起作用,请将您的测试虚拟机恢复到干净状态并重新开始。

于 2017-02-03T13:26:41.600 回答
0

@Nikolay 的回答帮助我解决了我的问题,并且是一种非常干净的方法。但是在解决这个问题的适当时候,我想出了一个注册表项,如果您的机器上的情况更加混乱,它可能会有所帮助。删除此注册表项最初也有助于摆脱此问题。删除此注册表项后,我的新安装程序开始工作。

此注册表项存在于HKEY_CLASSES_ROOT. 您必须通过在HKEY_CLASSES_ROOThive 上使用您的产品名称启动搜索来搜索所需的注册表。完整路径如下:

[HKEY_CLASSES_ROOT\Installer\Products\2B2BD41C980669C48A8777AB73B7BAFB]

注意:上述路径中显示的 guid 不是产品代码,而是在产品注册过程中运行安装程序时随机生成的 guid。

我刚刚提到了这个注册表路径,以防有人发现它在更混乱的情况下有用,比如我遇到的情况。

于 2017-02-05T04:09:22.767 回答