Chr*_*s S 31 windows uninstall installer windows-installer
自 Windows XP 时代以来,Windows 安装程序(.msi 文件),包括 InstallShield 安装程序(这只是 MSI 的引导程序)卸载应用程序所需的时间是其他安装程序的五倍左右。安装通常也是如此。
为什么他们仍然需要这么长时间,为什么人们仍然使用 MSI 进行安装?例如:
卸载 VLC - 大约需要 5 秒钟。
卸载 XYZ - 启动“准备删除...”,然后延迟 15 秒。
它所做的只是删除文件和清理注册表(其中可能包括 COM 注册),那么为什么要花这么长时间呢?
har*_*ymc 32
Windows 安装程序首先系统地创建系统还原点,这是一个相当慢的操作。
同样来自题为“Windows Installer 糟糕透顶”的文章,摘录如下:
过去,安装将包括一个程序执行并采取几个简单的步骤来安装您的软件,然后在卸载时执行相反的操作。
这不是 Windows Installer 的工作方式。它不是运行一个程序来简单地安装并完成它,而是检查您的系统状态,然后检查作为程序安装程序的数据库的状态,然后进行一系列关于如何协调两者的过于复杂的计算。
看起来,它不是运行安装脚本,而是解决旅行商问题。这就是它运行如此缓慢的原因。或者至少,这是我的印象。
我还补充说,Windows 安装程序将所有信息保存在注册表中,这不是世界上最快的数据库。
A D*_*arf 20
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 调试。或者,对于较少但仍然有价值的信息,这一个如何激活日志记录。
Windows 安装程序对于企业部署有很多很大的优势,其中一些我在这里描述过:https : //serverfault.com/a/274609/20599
大部分的缓慢Windows安装程序会话是由于其回滚功能。首先,它会在安装或卸载之前创建一个还原点(前提是尚未禁用系统还原)。然后它将在卸载和安装过程中备份所有受影响的文件,以确保系统在发生错误时可以恢复到其原始状态。
另一个促成因素是 MSI 中的所有组件都将在注册表中注册。这涉及一些开销。
对于已编译的 MSI 文件,还需要一些时间来提取安装文件。
有关加速 MSI 安装的技术细节,请参阅此答案。
| 归档时间: |
|
| 查看次数: |
27141 次 |
| 最近记录: |