有没有办法"best" 强制"uninstall" 一个产品在卸载过程中MSI 失败?

Is there a "best" way to forcibly "uninstall" a product when the MSI fails during uninstall?

由于 CustomAction 中的错误,我的安装在卸载时失败。我已经修复了这个错误,但我现在有一台安装了该产品的测试机器,但我无法卸载它(不断回滚并停留)。

过去(几年前),我使用 Windows SDK 附带的 msizap.exe。但它似乎不再随之而来。我安装了它,找不到它。我唯一的猜测是它在 Windows 10.

中不再相关

无论如何,有没有最好的方法来强制删除该产品,以便 Windows 不再认为它已安装?

msizap.exe:你是对的,msizap.exe很久以前就被弃用了。


卸载失败的解决方法:这个问题很常见。你可以找到 a list of approaches for these kind of uninstall problems here.

  • 最简单和最快的可能就是使用 Microsoft FixIt tool 删除包。从外观上看,这基本上是“取消注册”,在这方面类似于 msizap.exe
  • 如果这只是一台机器,您可以使用 Orca (, , using Windows Explorer - point 2) 破解缓存的安装数据库 - 如果它涉及多台机器,您应该制作一个补丁。请参阅上面 link 中的详细信息。

Virtual Machines:很明显,但只是提一下,您应该检查虚拟机上的设置,这样您就可以恢复当您遇到像这样的“开发和 QA 错误”时使用虚拟机。

Custom Action Flag:您还可以为每个自定义操作添加一个条件,以便您可以从 运行 通过自定义命令行发送到 msiexec.exe.

如果您的标志是 属性 RUNCA="1",那么您可以通过将此标志 属性 设置为 来禁用它]0 通过命令行——这是对包的卸载功能破坏的一点预防——你可以在安装/卸载期间完全禁用来自 运行 的自定义操作——它可能甚至对您的技术支持人员和实际安装也很有用:

msiexec.exe /x {PRODUCT-CODE} RUNCA=0