在安装和卸载Windows Installer软件包或MSI文件时,安装进度显然比其他安装软件包慢得多。
为什么会出现这种情况?我能做些什么来加快速度 ?
背景信息:
Windows安装程序会话的缓慢程度大部分归因于其回滚function 。 首先它会在安装或卸载之前创build一个还原点 (提供的系统还原没有被禁用)。 然后,在卸载和安装过程中,它将备份所有受影响的文件和registry项 ,以确保在发生错误时可以将系统恢复到原始状态。 Windows Installer的更新版本具有禁用某些复杂性并加快速度的方法。 请参阅以下技术信息。
另一个速度因素是MSI中的所有组件和function都将被注册到registry中。 这涉及相当多的开销,但是对于实现重要的企业部署和系统pipe理的好处是必要的。 没有其他部署技术具有这种控制级别。
带有embedded式源文件的大型MSI文件可能需要大量时间才能将其安装程序文件提取到临时文件夹。 有时这可能是最大的瓶颈。 build议运行一个pipe理员安装程序,从这个软件包中提取源文件,以便它们与MSI文件本身并排显示,从而无需在每台计算机上本地提取文件,从而节省了部署时间。 这里是另一篇文章,用简单的术语来描述MSI包中的文件提取 。
技术信息
Windows Installer 5 (在Windows Server 2012,Windows 8,Windows Server 2008 R2或Windows 7上可用)的最新版本Windows Installer,具有一个新的属性MSIFASTINSTALL ,可以用来加速安装一个大的MSI包 。 有关有效值,请参阅上面的链接。 我会build议3 没有还原点 ,只有FileCosting (确定磁盘空间要求的过程)。
正常的“ 成本核算 ”function包括对系统上存在的内容和正在安装的内容进行大量的function,组件,磁盘和registry比较和计算。 大多数情况下,我认为这是很less需要的(磁盘空间通常在客户端电脑上是充足的),但让整个成本计算运行显然更安全。
msiexec.exe / I“D:\ winzip112.msi”/ QN MSIFASTINSTALL = 3
还可以将DISABLEROLLBACK属性设置为在MSI安装程序中禁用回滚支持。 我强烈build议不要使用这个,除非你正在升级一台新电脑。 这是一个特殊的情况,当你可以重新开始,如果失败了。 对于实际使用的电脑,我不build议启用这个属性。
具有讽刺意味的是,如果您正在运行一个replace大量文件或任何大型卸载(因为卸载将所有移除的文件移动到回滚区域)的巨大更新程序包,禁用回滚将加速最多的事情。 这可能相当重要,但不安全。 您只需在命令行上设置此属性:msiexec.exe / I“D:\ winzip112.msi”/ QN MSIFASTINSTALL = 3 DISABLEROLLBACK = 1
最后,如上面在背景信息中提到的那样,运行MSI文件的admin安装来解压缩文件,这样提取不会在每台机器本地发生。 这假定你在一个相当快的networking上,并且该文件复制发生没有太多的延迟。 我想假设一个高延迟的无线networking可能会让小文件被逐一复制,从而使速度变慢。 您只需将一个/ a传递给安装文件即可运行pipe理员安装:
pipe理员设置:
setup.exe / a
要么
msiexec / a“D:\ winzip112.msi”
然后,您需要按照提示并select文件的提取位置。 有关讨论此function的主题,请参阅superuser.com 。