我的 Wix 安装程序可以安装我的程序,但无法卸载。文件被过早删除,并且需要进一步进行。卸载程序失败并恢复其更改。

这意味着我无法从我的计算机中删除该软件包,因此无法安装我的安装程序的任何进一步版本(相当不便)。如何强制删除该包?

有帮助吗?

解决方案

更新,斯坦·奥斯穆尔: 注入这个更新的清理方法列表.


  1. 找到您的包裹 C:\Windows\Installer, ,其中 Windows 保留已安装的 MSI 包的副本。这些名称是随机生成的,因此您必须查看文件的创建日期。

  2. 使用以下命令打开 MSI 文件 虎鲸. 。(不幸的是,没有简单的 Orca 安装程序下载。您可以通过安装“MSI Tools”来获取它 Windows 10 SDK, ,然后在中搜索 orca.msi C:\Program Files (x86)\Windows Kits.)

  3. 从以下位置删除有问题的自定义操作 自定义操作表

现在您应该可以卸载该软件包了。

编辑:根据下面@darkrock76的回答,步骤1的文件夹也可以是 C:\ProgramData\Package Cache\. 。我的 Windows 7 SP1 机器上有这两个。我无法立即找到有关此的文档。


更新:你好,Wim,感谢您之前提供的免注册 COM 信息!关于此卸载问题的一些更新:darkrock76的答案不正确, 请参阅下面我对他的评论. 。此外,您可以将 InstallExecuteSequence 表中的条件设置为 0(数字零 == false)以防止其运行,而不是删除上面步骤 3 中的自定义操作。删除自定义操作表条目会留下一些损坏的外键引用(我猜在某些时候可能会失败)。 微软 FixIt 工具 也可以在诉诸此 hack 之前尝试一下。有 一些替代的免费 MSI 工具/编辑器/查看器 (向底部)除了逆戟鲸。也许用户还应该在编辑之前制作原始 MSI 的 zip,但我想这是暗示的。一旦你得到它,请删除这个混乱的评论 - 如果我有时间,我可能会写一个快速总结来强制此类卸载(FixIt MS Tool,使用较小的升级,直接编辑缓存的 MSI,应用转换卸载,以及其他任何东西)。继续部署:-)。您的免注册 COM 答案在过去对我(Stein)帮助很大。非常感谢。

并且忘记了一件事: 您可以使用 Powershell 找到实际的缓存 MSI 文件. 。那是一个包裹, 您还可以获得所有套餐 (向下滚动到第一个屏幕截图)。

其他提示

此命令通常适用于我:

msiexec /fv installer.msi
.

它有点重新加入安装程序,所以您可以使用纠正纠正纠正。

一次此命令不起作用,我必须使用Microsoft Fixit。它解决了这个问题(对我而言相当震惊)。

根据您所描述的行为的确切原因,您可能至少有几个选择。

如果失败的原因是卸载时运行的自定义操作,并且此自定义操作以您可以影响的某些属性为条件,则您可以尝试通过命令行传递所需的值:

msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false

在这个样本中 RUNMYACTION 是参与自定义操作条件的 Windows Installer 属性,如果您通过 false 作为其值,该操作将不会运行。

否则,您可以修复逻辑(或者只是显式禁用自定义操作)并构建新的 MSI 包。然后将其上传到目标机器,并像这样运行:

msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus

这里 YourPackage.msi 是一个新的固定包, REINSTALL=ALL 指示 msiexec 使用此新软件包重新安装产品,并且 REINSTALLMODE=vomus (这 v 它的一部分)将重新缓存 MSI 包,之后您将能够以正常方式将其删除。

附注:您应该在虚拟机上测试您的安装,以免给真实计算机带来风险。

fyi:在Windows 8.1安装人员此处已移动:C:\ ProgramData \包缓存\

我通常只是寻找 <Your Installer's Name>.msi 或者 <Your Installer's Company Name> 在注册表中删除一些卸载键 Products 在 Windows 安装程序树下,之后一切通常都运行良好,尽管这 留下一些东西,比如缓存的安装程序,可能还为每个安装的文件留下大量其他注册表项等。但它的 总是 在开发安装程序时为我工作,因为老实说,谁会关心一个 MSI 是否被遗留并缓存在某个地方?无论如何,您都在使用这台机器进行开发,对吧?

我也从Microsoft

中使用了这个小工具

https://support.microsoft.com/en-Us/help/17588/fix-problems-that-block-programs-from-being-installed-or-removed

基本上此工具可用于“修复问题,包括阻止您从安装或删除程序的损坏的注册表项”

它修复的内容:

  1. 64位操作系统的损坏注册表项

  2. 控制更新数据的损坏的注册表项

  3. 阻止新程序安装的问题

  4. 防止现有程序完全卸载或更新的问题

  5. 通过在控制面板中添加或删除控制面板中的程序(或程序和功能)来卸载程序的问题

  6. 可用于:

    • Windows 7
    • Windows 8
    • Windows 8.1
    • Windows 10
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top