我搞砸了,如何卸载我的程序?
-
13-12-2019 - |
题
我的 Wix 安装程序可以安装我的程序,但无法卸载。文件被过早删除,并且需要进一步进行。卸载程序失败并恢复其更改。
这意味着我无法从我的计算机中删除该软件包,因此无法安装我的安装程序的任何进一步版本(相当不便)。如何强制删除该包?
解决方案
更新,斯坦·奥斯穆尔: 注入这个更新的清理方法列表.
找到您的包裹
C:\Windows\Installer
, ,其中 Windows 保留已安装的 MSI 包的副本。这些名称是随机生成的,因此您必须查看文件的创建日期。使用以下命令打开 MSI 文件 虎鲸. 。(不幸的是,没有简单的 Orca 安装程序下载。您可以通过安装“MSI Tools”来获取它 Windows 10 SDK, ,然后在中搜索 orca.msi
C:\Program Files (x86)\Windows Kits
.)从以下位置删除有问题的自定义操作 自定义操作表
现在您应该可以卸载该软件包了。
编辑:根据下面@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
中使用了这个小工具基本上此工具可用于“修复问题,包括阻止您从安装或删除程序的损坏的注册表项”
它修复的内容:
-
64位操作系统的损坏注册表项
-
控制更新数据的损坏的注册表项
-
阻止新程序安装的问题
-
防止现有程序完全卸载或更新的问题
-
通过在控制面板中添加或删除控制面板中的程序(或程序和功能)来卸载程序的问题
- Windows 7
- Windows 8
- Windows 8.1
- Windows 10
可用于: