当前位置:  开发笔记 > 开发工具 > 正文

为什么MSI需要原始.msi文件才能继续卸载?

如何解决《为什么MSI需要原始.msi文件才能继续卸载?》经验,为你挑选了1个好方法。

正如大多数人可能注意到的那样,当卸载MSI软件包时,Windows将要求提供原始.msi文件.这是为什么?

我只能看到它的缺点:

不适应网络变化.

不适应本地磁盘更改.

用户意外.

通常要求用户离开他们的办公桌并开始讨伐以获得正确的CD.

有点证明装置不是独立的.

促进使用msizap等不安全工具.

这反过来促进了"下一次我只会使用zip文件"的心态.

有人可以对此有所了解吗?



1> Stein Åsmul..:

更新:

这个新的支持工具(此工具现在也已弃用)可以在最近的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文件.


一个重点不准确:不是"更新的版本"(Win7于2009年10月22日发布):从MSI 5.0(> = Windows 7)开始,MSI不会被剥夺出租车并完全缓存.原因是:由于签名的MSI文件(我不同意,这是一个很好的决定.)这会导致所有MSI包含.cab文件的高且不必要的磁盘空间.因此,现在和未来的良好做法是永远不要设计包含cab的MSI文件,而是将.cab文件放在外面.特别是对于InstallShield,这非常奇怪,因为它们只允许使用每个功能.
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有