正如大多数人可能注意到的那样,当卸载MSI软件包时,Windows将要求提供原始.msi
文件.这是为什么?
我只能看到它的缺点:
不适应网络变化.
不适应本地磁盘更改.
用户意外.
通常要求用户离开他们的办公桌并开始讨伐以获得正确的CD.
有点证明装置不是独立的.
促进使用msizap等不安全工具.
这反过来促进了"下一次我只会使用zip文件"的心态.
有人可以对此有所了解吗?
更新:
这个新的支持工具(此工具现在也已弃用)可以在最近的Windows版本上尝试,如果你已经失效的MSI软件包需要卸载(而不是过时,不赞成,不支持MSIZAP.EXE).
有些人建议使用saschabeaumont链接到这里的工具:没有MSI文件的卸载.如果您尝试它并且它有效,请务必告诉我们.该答案中的反馈表明它有效(我现在没有任何卡住设置进行测试).
为什么要求提供原始安装媒体?:
卸载时不需要原始MSI,除非MSI本身设计错误 - 或者缺少缓存的MSI(请参阅下面的详细信息).
所有已安装的MSI文件都使用随机十六进制名称缓存在%SystemRoot%\ Installer\*.*中.
缓存的MSI文件用于任何维护,修复和卸载操作 - 在绝大多数情况下,它足以卸载.
在某些情况下,此缓存文件可能会丢失,然后卸载是根本不可能在某些情况下(一些理论,为什么会发生这种情况 - ,MSI design errors
,anti-virus quarantining
,system restore
,tinkering
,).developer system in erroneous state from development work
etc...
请参阅下面的更多信息 - 以及强制卸载或取消注册产品的链接.
原来的源时,才需要如果文件需要拷贝到磁盘(用于维修安装),或MSI做了明确要求,以解决通过标准动作原始来源ResolveSource或者通过自定义操作(这不应该做的在一个正确创作的包中 - 我认为MS Office包在当天包含了这个ResolveSource错误,导致每个人都去寻找他们的安装CD/DVD).
在以前的Windows版本中,这个缓存的MSI被剥离了所有的cab,因此只包含安装程序结构,没有文件.
从Windows 7(MSI版本5)开始,MSI文件现在被缓存为完整大小,以避免破坏影响安装启动时UAC提示的文件签名(已知的Vista问题).这可能会导致磁盘空间消耗大幅增加(某些系统为几千兆字节).查看这篇文章,特别是底部的讨论,以获得更多的信息.
要防止缓存巨大的MSI文件,可以在安装之前运行该程序包的admin-install.这就是在托管网络中正确部署的公司如何做事,它将剥离cab文件,并使用小的MSI文件和除此之外的文件创建网络安装点.请注意,由于提取的MSI文件不再签名,因此在某些情况下可能会产生UAC提示 - 必须使用您的SOE /桌面配置对其进行测试.
请阅读此主题中的答案以获取管理员安装的完整说明:使用msiexec/a启动管理安装的目的是什么? 或者这个类似但可能更容易理解的答案:admin install及其用途
在极少数情况下,缓存的MSI(具有随机名称)可能会被错误地丢失,然后卸载将要求原始MSI以完成卸载.这种情况不会经常发生.曾经是人们可以使用的情况MSIZAP.EXE清除此类安装,但此工具已过时,已弃用且不受支持.不要使用它 - 与较新的Windows版本存在太多不兼容性,并且您会产生新问题.也许试试吧这个支持工具相反(也弃用).我现在建议的唯一选择是来自saschabeaumont的答案.如果您尝试使用此工具,请告知我们是否适用于您.如果你想弄清楚可能导致缓存的MSI丢失的原因,请尝试阅读第12节:在不使用msiexec的情况下从命令行卸载MSI文件(简短的潜在原因包括干扰系统还原,防病毒和清理脚本,错误的手动调整,低磁盘空间,电源中断,开发人员盒调试错误,设计糟糕的MSI文件与重复的包代码,失败的补丁等...许多理论,我很害怕的确定性很少).
作为最后的手段,您可以尝试系统还原(除非它已被完全或部分禁用)以返回到先前的安装状态,看看这是否解决了您的卸载问题(您可以在youtube或类似网站上找到此视频演示) .
请注意,系统还原可能会影响必须重新应用的Windows Update - 以及许多其他系统设置.我已经看到系统还原导致的新的无法解决的安装问题,但通常它可以正常工作.显然,不要将该功能用于娱乐,它是最后的手段,最好用于回滚刚刚安装的新驱动程序或设置,并且发现它们会立即出现问题和此类问题.你回去的时间越长,你为自己创造的返工就越多.很多不言而喻的东西,但我想它需要被提及.
自从我提到系统恢复以来,我想我应该提到最后一次正确的配置功能.此功能与卸载或系统还原无关,但是最后一个启动配置在运行的系统中起作用或产生.如果在启动期间蓝屏或暂停,它可用于使系统再次运行.这通常在安装驱动程序后发生.这对于修复失败的卸载没有任何作用(或者我会非常惊讶).
相关回答:
在没有MSI文件的情况下卸载
除了这个答案,也许这篇关于卸载MSI包的各种方法的文章很有意思.这是一篇颇受欢迎的文章,有很多观点:
在不使用msiexec的情况下从命令行卸载MSI文件.