提高Wix msi安装/卸载的性能

时间:2010-02-26 20:48:03

标签: performance wix windows-installer install uninstall

在Windows 7(即MSI 5.0)中,有一个名为MSIFASTINSTALL的属性可以提高安装程序的性能。否则,您可以通过设置属性DISABLEROLLBACK来关闭回滚选项。此属性也可在早期版本的MSI 5.0中使用。

请分享您的知识以改善安装体验。此外,我找不到提高卸载性能的正确方法。我们使用大量文件/文件夹(超过70,000)和35000等组件。它挂起在文件成本计算过程中,不知道如何避免这种延迟。有时它在XP或Vista机器上挂起超过2或3个小时

修改 我通过压缩具有大量文件集的文件夹并减少了像Christopher所说的组件大小,在我的安装中做了一些黑客攻击。它大大提高了性能。是的,我通过这个概念失去了MSI安装程序模式,这是不推荐的方法。但是,当我们想要实现这一目标时,我们需要权衡利弊,当我们卸载/升级补丁时,我们的用户真的不想拥有文件版本细节。

2 个答案:

答案 0 :(得分:4)

我有类似的情况,虽然文件数量少一点,约25k。这些文件中的大部分是图标,从未从一个版本更改为另一个版本。只有一个主要版本(每两年一次)可能会给这个领域带来一些变化。一个“快速和肮脏”的解决方案是压缩这些图标并将这个单个文件包含在安装中(不是组件,只是与MSI并排的文件)。在安装过程中,这个ZIP是在后台线程中提取的,RemoveFile表用于删除卸载时的图标。它比将这些20k图标作为单独的组件安装更快,即使是具有许多文件的组件也是如此。一个好的和正确的解决方案是说服主应用程序开发人员将所有这些20k图标放入20个zip存档中。现在这20个zip文件作为常规MSI组件安装,应用程序知道如何按需提取图标并缓存它。

我不建议您禁用回滚。虽然您将节省相当多的安装时间,但您将失去标准的保证回滚选项。

由于再次使用回滚功能,卸载比安装花费更多时间。我理解它的方式,当您卸载时,MSI首先创建每个文件的副本,然后卸载每个文件,如果成功,则删除每个备份文件。因此,卸载时间大约是安装时间的三倍。当我使用默认选项为每个组件包含1个文件时,我遇到了同样的问题。虽然建议,如果你处理一个悬而未决的案件,你应该做出权衡。

希望这能为你解决一些问题。

答案 1 :(得分:2)

提高应用性能的最佳选择是减少文件和组件的数量。虽然您可以对MSI进行一些调整以提高性能,但是过多的文件/组件是核心问题,并且将成为您所做的任何性能改进的门控因素。为什么需要安装70k文件?