fre*_*ley 26 windows-installer wix uninstall
我的Wix安装程序可以安装我的程序,但是卸载它已经坏了.文件过早删除,需要进一步下线.卸载程序失败并恢复其更改.
这意味着我无法从我的机器中删除软件包,因此无法安装我的安装程序的任何进一步构建(相当不便).我怎样强行拆除包裹?
Wim*_*nen 22
找到您的软件包C:\Windows\Installer
,其中Windows保存已安装的MSI软件包的副本.名称是随机生成的,因此您必须查看文件的创建日期.
使用Orca打开MSI文件.(不幸的是,orca安装程序没有简单的下载.您可以通过安装Windows 10 SDK的"MSI工具" ,然后搜索orca.msi 来获取它 C:\Program Files (x86)\Windows Kits
.)
从CustomAction表中删除违规的自定义操作
现在您应该可以卸载该软件包了.
编辑:根据@ darkrock76的回答,步骤1的文件夹也可以C:\ProgramData\Package Cache\
.我在Windows 7 SP1机器上都有.我无法立即找到关于此的文档.
更新:嗨,Wim,感谢您之前提供的免费注册COM信息!关于此卸载问题的几个更新:darkrock76s答案不正确,请在下面查看我对他的评论.此外,您可以将InstallExecuteSequence表中的条件设置为0(数字零== false),以防止它永远运行,而不是删除上面步骤3中的自定义操作.删除自定义操作表条目会留下一些损坏的外键引用(我猜可能会失败).在诉诸此hack之前,还可以尝试使用Microsoft FixIt工具.除了Orca之外,还有一些替代的,免费的MSI工具/编辑/观察者(朝向底部).也许用户也应该在编辑前制作原始MSI的拉链,但我猜这是隐含的.一旦你得到它,请删除这个凌乱的评论 - 如果我有时间的话,我可以写一些强制卸载的强制摘要(FixIt MS工具,使用次要升级,直接编辑缓存的MSI,应用转换为卸载,以及其他任何东西).随着部署摇滚:-).你的免注册COM回答过去曾帮助过我(Stein).非常感谢.
并忘了一件事:你可以使用Powershell找到实际的缓存MSI文件.那是一个包,你也可以获得所有包(向下滚动到第一个截图).
这个命令通常对我有用:
msiexec /fv installer.msi
Run Code Online (Sandbox Code Playgroud)
它稍微回顾了安装程序,因此您可以使用更正的安装程序再次尝试.
有一次这个命令不起作用,我不得不使用Microsoft FixIt.它解决了这个问题(对我来说非常震惊).
根据您描述的行为的确切原因,您可能至少有几个选项.
如果失败的原因是在卸载时运行的自定义操作,并且此自定义操作受某些可以影响的属性的限制,则可以尝试通过命令行传递所需的值:
msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false
Run Code Online (Sandbox Code Playgroud)
在此示例中RUNMYACTION
是一个Windows Installer属性,它参与自定义操作条件,如果您传递false
其值,则操作将不会运行.
否则,您可以修复逻辑(或仅显式禁用自定义操作)并构建新的MSI包.然后将其上传到该目标计算机,并运行如下:
msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus
Run Code Online (Sandbox Code Playgroud)
这YourPackage.msi
是一个新的固定封装,REINSTALL=ALL
指示msiexec
重新安装使用这个新包装的产品,并且REINSTALLMODE=vomus
(在v
它的一部分)将重新缓存的MSI包,你就可以在事后删除它的正常方式.
旁注:您应该在虚拟机上测试您的安装,以免冒真实风险.