如何加快 MSI 软件包的安装和卸载?

Ste*_*mul 14 installation windows-installer msi uninstall

安装和卸载Windows Installer 程序包或 MSI 文件时,安装进度似乎比使用其他安装程序包要慢得多。

为什么会这样,我可以做些什么来加快速度

Ste*_*mul 16

快速总结

  • 需要调整的速度属性
    • MSIFASTINSTALL(尝试一下,也许37
    • FASTOEM(三思而后行,必须阅读文档)
    • DISABLEROLLBACK(明白是什么意思,可引起MSI包自定义操作失败跑!这取决于MSI设计-寻找commit-回滚自定义操作
  • 可以暂停安全软件以加快安装速度。
    • 尝试在安装时禁用 - 在virustotal.com上扫描您的安装程序。
  • 尝试从管理映像运行(替代信息)运行(无需提取文件)。
    • 从本地管理映像运行将是最快的。
    • 如果您使用网络管理映像,高延迟网络可能会减慢安装速度?
      • 每个文件(小文件)的潜在高开销。
      • 下载单个 CAB 可能会更快(这里的病毒检查可能需要很长时间)?
  • 可以在机器上全局禁用系统还原(不仅仅是通过 MSIFASTINSTALL)。

背景资料

Windows Installer 会话缓慢的主要原因是它的回滚功能。首先,它会在安装或卸载之前创建一个还原点(前提是尚未禁用系统还原)。然后它将在卸载和安装过程中备份所有受影响的文件和注册表项,以确保在发生错误时系统可以恢复到其原始状态。更高版本的 Windows Installer 提供了一些方法来禁用某些这种复杂性并加快速度。请参阅下面的技术信息。

另一个速度因素是MSI中的所有组件和功能都将在注册表中注册。这涉及相当多的开销,但对于实现重要的企业部署和系统管理收益是必要的。。没有其他部署技术具有这种级别的控制。

带有嵌入源文件的大型 MSI 文件可能需要大量时间才能将其安装程序文件解压缩到临时文件夹。这有时可能是最大的瓶颈。建议运行管理员安装以从此类包中提取源文件,以便它们与 MSI 文件本身并排显示,无需在每台机器上本地提取文件,从而节省部署时间。这是另一篇文章,用简单的术语描述了从 MSI 包中提取文件


技术信息


更新(2018 年 2 月):您可以在非常特殊的情况下设置一个名为FASTOEM的属性(请参阅链接内容)以加快部署速度。我从未尝试过这个,但它非常值得一读。我怀疑你会成功有效地使用它,但它可能值得一试。


在撰写本文时,Windows Installer 的最新更新Windows Installer 5(可在 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上使用)具有一个新属性MSIFASTINSTALL,可用于加快安装一个大的 MSI 包。有关有效值,请参阅上面的链接。我建议3没有恢复点,只有FileCosting(确定磁盘空间要求的过程)。或7也减少进度消息的频率。

正常的“成本计算”具有大量功能、组件、磁盘和注册表的比较以及系统上现有内容与正在安装的内容之间的计算。在我看来,其中大部分内容很少有必要(客户端 PC 上的磁盘空间通常很充足 - 回到 2018 年的现实,使用较小的 SD 磁盘,空间问题可能会重新出现......),但显然让空间充满更安全成本运行。

msiexec.exe /I "D:\winzip112.msi" /QN MSIFASTINSTALL=3

还可以设置DISABLEROLLBACK属性以禁用 MSI 安装程序中的回滚支持。我强烈建议不要使用它,除非您要安装新的 PC。这是一种特殊情况,如果出现故障,您可以重新开始。对于实际使用的计算机,我不建议启用此属性。

具有讽刺意味的是,如果您正在运行替换大量文件的巨大更新包或任何大型卸载(因为卸载会将所有删除的文件移动到回滚区域),禁用回滚将最大程度地加快速度。它可能非常重要,但不安全。您只需在命令行中设置此属性: msiexec.exe /I "D:\winzip112.msi" /QN MSIFASTINSTALL=3 DISABLEROLLBACK=1

行政安装

最后,如上文背景信息中所述,运行MSI 文件的管理安装以提取文件,以便提取不会在每台机器上本地进行。这假设您在一个相当快的网络上,并且文件复制没有太多延迟。我想一个高延迟的无线网络可能会使提取的小文件变得更慢,而这些文件必须一个一个地复制。您只需将 /a 传递给安装文件即可运行管理员安装:

安装程序.exe /a

或者

msiexec /a "D:\winzip112.msi"

然后您需要按照提示选择文件的提取位置。有关讨论此功能的线程,请参阅superuser.com


一些链接

速度: