14

大多数人可能已经注意到,在卸载 MSI 包时,Windows 会要求提供原始.msi文件。这是为什么?

我只能看到它的缺点:

  • 对网络变化没有弹性。
  • 对本地磁盘更改没有弹性。
  • 出乎用户意料。
  • 通常要求用户离开他们的办公桌并开始讨伐以获得正确的 CD。
  • 某种证明装置不是独立的。
  • 提倡使用不安全的工具,例如 msizap。
  • 这反过来又促进了“下次我将只使用 zip 文件”的心态。

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

4

2 回答 2

31

修复损坏的卸载:如果您在卸载 MSI 时遇到问题可以尝试Microsoft 最新的 FixIt 卸载工具。还有一个链接:在不使用 msiexec 的情况下从命令行卸载 MSI 文件(卸载 MSI 的多种不同方法)。


更新

这个新的支持工具(此工具现在也已弃用)如果您有需要卸载的失效 MSI 软件包(而不是过时的、弃用的、不受支持的msizap.exe)。

有些人建议使用 saschabeaumont 链接到此处的工具:Uninstall without a MSI file。如果您尝试了它并且它有效,请务必让我们知道。该答案中的反馈表明它有效(到目前为止,我没有任何卡住的设置可供测试)。


为什么要求您提供原始安装介质?

  • 除非 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 问题)。这可能会导致磁盘空间消耗的巨大增加(某些系统为几 GB)。查看这篇文章,尤其是底部的讨论以获取更多信息
  • 为防止缓存巨大的 MSI 文件,您可以在安装前运行软件包的管理员安装。这就是在托管网络中进行适当部署的公司将如何做事,它将去除 cab 文件并使用一个小的 MSI 文件和除此之外的文件创建一个网络安装点。请注意,这可能会在某些情况下产生UAC 提示,因为提取的 MSI 文件不再签名 - 这必须使用您的 SOE/桌面配置进行测试
  • 阅读我在此线程中的答案以获取有关管理员安装的完整描述:使用 msiexec /a 启动的管理安装的目的是什么? 或者这个类似但可能更容易理解的答案:admin install and its uses
  • 在极少数情况下,缓存的 MSI(具有随机名称)可能会错误地丢失,然后卸载将要求原始 MSI 以完成卸载。这并不经常发生。它曾经是一个可以使用的情况MsiZap.exe清理这样的安装,但这个工具已经过时不推荐使用并且不受支持。不要使用它 - 与较新的 Windows 版本有太多不兼容,并且会产生新问题。也许尝试这个支持工具相反(也已弃用)。我现在可以建议的唯一选择是saschabeaumont 的这个答案如果您尝试使用此工具,请告诉我们它是否适合您。如果您想找出可能导致缓存 MSI 丢失的原因,请尝试阅读此处的第 12 节:在不使用 msiexec 的情况下从命令行卸载 MSI 文件(简而言之,潜在原因包括干扰系统还原、防病毒和清理脚本,错误的手动调整,磁盘空间不足,停电,开发人员框调试错误,设计错误的带有重复包代码的MSI文件,失败的补丁等......许多理论,恐怕很少有确定性)。
  • 作为最后的手段,您可以尝试系统还原(除非已完全或部分禁用)以返回到以前的安装状态,看看这是否解决了您的卸载问题(您可以在 youtube 或类似网站上找到此视频演示) .
  • 请注意,系统还原可能会影响必须重新应用的 Windows 更新以及许多其他系统设置。我看到系统还原导致新的、无法解决的安装问题,但通常可以正常工作。显然不要为了好玩而使用该功能,这是最后的手段,最适合用于回滚刚刚安装的新驱动程序或设置,发现会立即导致问题和此类问题。你回去的时间越长,你为自己创造的返工就越多。很多不言而喻的东西,但我想它需要被提及。
  • 由于我提到了系统还原,我想我应该提到Last Known Good Configuration 功能。此功能与卸载或系统还原无关,但它是最后一次有效或导致系统运行的引导配置。如果系统在引导过程中蓝屏或停止,它可用于让您的系统再次运行。这通常发生在驱动程序安装后。不过,这对修复失败的卸载无济于事(否则我会感到非常惊讶)。

相关答案:


除了这个答案,也许这篇关于卸载 MSI 包的各种方法的文章也很有趣。这是一篇颇受欢迎的文章浏览量很高

于 2009-07-27T17:28:57.280 回答
2

保留原始 msi 有几个原因:

  • 卸载程序使用它来了解安装了哪些文件和注册表项,并确保它们都被清理干净。
  • msi 可能包含需要执行的特殊卸载操作。
  • 它允许您从“添加/删除程序”菜单执行“修复”操作,无论您是否自己保存了安装文件。

通常情况下,Windows 会为您保留文件缓存,因此您不必考虑它。查看您的%WINDIR%\Installer\文件夹。它会要求您提供原始 msi 的唯一原因是保存的文件是否有问题。这解决了您的大部分问题,尽管它确实提出了一个新问题(磁盘空间)。

于 2008-10-16T13:29:26.413 回答