当卸载过程中 MSI 失败时,是否有一种“最佳”方法可以强制“卸载”产品?

问题描述

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

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

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

解决方法

msizap.exe:您说得对,msizap.exe 早就被弃用了。


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

虚拟机:很明显,但只是提一下,您应该检查虚拟机上的设置,以便在遇到“开发和QA 错误”之类的。

自定义操作标志:您还可以为每个自定义操作添加一个条件,以便您可以通过发送到 msiexec.exe

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

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