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


14

当安装和卸载Windows Installer软件包或MSI文件时,它们的安装进度明显于其他安装软件包。

为什么会这样,我该怎么做才能加快速度


1
您所知道的,我因试图从部署领域到系统管理领域提供一些实用和技术建议而被立即否决。在撰写本文时,此线程中的建议在逻辑上和技术上都是合理的。欢迎进行建设性批评。
斯坦·奥斯穆尔(SteinÅsmul)

您实质上已经在MSI技术的某些方面撰写了一篇文章。我猜那太酷了。作为系统管理员,我从来没有真正需要解决“我的软件安装如此缓慢”的问题。
mfinni 2014年

这是对我在此站点和其他堆栈交换站点上多次看到的问题的最新解答。
斯坦·奥斯穆尔(SteinÅsmul),2014年

3
@mfinni-但这并不意味着它不是主题。我在此站点上看到了很多我没有遇到的问题。
马克·亨德森

他在问为什么他不加评论地拒绝投票。我没有投票,但给出了一个答案,我认为这可能是这样做的原因。
mfinni

Answers:


15

快速总结

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

背景资料

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

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

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


技术信息


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


在撰写本文时,Windows Installer的最新更新是Windows Installer 5(在Windows Server 2012,Windows 8,Windows Server 2008 R2或Windows 7上可用),具有新属性MSIFASTINSTALL,可用于加快安装 Windows XP的速度。大的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传递到安装文件即可运行管理员安装:

setup.exe / a

要么

msiexec / a“ D:\ winzip112.msi”

然后,您需要按照提示并为文件选择一个提取位置。有关讨论此功能的主题,请参见superuser.com


一些链接

速度:


不是MSIFASTINSTALL吗?没有ER尾巴。
n611x007

我在Wix项目中添加了属性MSIFASTINSTALL = 3。但是,安装时间没有差异。<Property Id =“ MSIFASTINSTALL” Value =“ 3” />我是否做错了什么?
卡希尔·苏伯拉马尼亚姆

1
它主要缩短了MSI的“下车”时间-创建系统还原点可能很慢。它还可以帮助计算空间需求,但是实际安装本身并不会很快。请稍等,我可能会找到其他答案。
斯坦·奥斯米尔(SteinÅsmul),


正如您将看到的:没有灵丹妙药,但是您可以进行一些调整。您的安装尺寸是多少?
斯坦·奥斯穆尔(SteinÅsmul),
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.