Windows Installer确实以速度慢而著称。有一些事情对此有所帮助,我将在下面解决它们。但是最终,应该问自己一分钟,两分钟或三分钟是否真的是安装和卸载软件时的争执问题。我花的时间比翻看电视频道更多:)
注册表
这是罪魁祸首。Windows Installer大量使用注册表进行操作。随着系统的成熟,安装和卸载应用程序以及注册表的增加或碎片化,MSI的速度将变慢。与在成熟的系统上相比,在原始Windows安装上,同一应用程序的安装和卸载速度要快得多。此处的解决方案是尝试保持注册表清洁和碎片整理。
要清理注册表,请使用许多可用的工具之一。但是对于注册表碎片整理,我不能推荐足够的NTREGOPT用于内部配置单元优化,而不能推荐PageDefrag用于物理文件碎片整理。
MSI操作在注册表上变慢的原因与MSI使用它的方式有关。Windows Installer使用注册表来跟踪哪些产品已安装了哪些组件以及将其安装到的位置。原始安装GUID以压缩格式使用。有关安装的每台计算机信息,可以在找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
,而HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
在用户SID 的下方和键上,可以在其旁边找到每用户数据。
这两个键都可能很大,并且包含许多子键和值。它们控制每个已安装应用程序的产品,组件和KeyPath。必须阅读并处理所有这些信息,以进行正确的卸载过程。但是,注册表格式按字母顺序列出了键,从而可以进行二进制搜索。但是值不是。它们是在创建时存储的,因此必须执行线性搜索过程。这会降低算法性能。
总而言之,MSI是一种相当完整而准确的软件安装和卸载方法。但是它遭受注册表依赖。该系统非常好。Windows注册表应该在很久以前进行过大修:)
有关更多高级信息:
要深入分析每个安装或卸载过程中MSI的工作,请参阅本文。,其中介绍了如何设置MSI Debug。或者,对于较少但仍然有价值的信息,这是一个如何激活日志记录的信息。