如何清理已损坏或丢失的安装(在添加/删除程序中不可见):此产品的另一个版本已安装错误

时间:2017-02-03 07:06:33

标签: installation windows-installer installshield installshield-2016

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

enter image description here

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

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

在这个特定的路径中,我能够在C14DB2B2-6089-4C96-A878-77BA377BABBF密钥的帮助下找出DisplayName guid配置单元属于我的产品

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

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

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

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

    1. 在另一个混乱中,我的MSI已经在构建过程中重命名,开始发出新的MSI名称myapplication_x.msi。当我尝试通过运行新命名的myapplication_x.msi文件来安装应用程序时,它会在下面显示错误消息框:
    2. enter image description here

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

3 个答案:

答案 0 :(得分:3)

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

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

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

在最糟糕的情况下,如果您通过编辑注册表完全弄乱了系统,可能还有另一种选择: MsiZap.exe tool 已弃用不支持的不安全的工具),可以清除指定MSI的所有注册表项。

更新:如果您的应用程序无法卸载,可以尝试新的FixIt tool from Microsoft

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

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

此注册表项存在于HKEY_CLASSES_ROOT中。您必须使用HKEY_CLASSES_ROOT配置单元上的产品名称启动搜索,以搜索所需的注册表。完整路径如下:

[HKEY_CLASSES_ROOT\Installer\Products\2B2BD41C980669C48A8777AB73B7BAFB]

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

我刚刚提到了这个注册表路径,以防万一有人发现它在更糟糕的情况下有用,比如我陷入其中。