2010-02-26 86 views
5

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

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

编辑: 我做了一些黑客在我的荏苒具有巨大的文件集的文件夹中安装并减少组件的大小就像克里斯托弗说。它大大提高了性能。是的,当然,我通过这个概念失去了MSI安装程序模式,并且不推荐使用这种方法。但是,当我们想要实现这一点时,它是折衷的,并且我们的用户真的不想在卸载/升级补丁程序时获得文件版本的详细信息。

回答

4

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

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

由于再次使用回滚功能,卸载需要比安装更多的时间。按照我的理解,当您卸载时,MSI会首先创建每个文件的副本,然后卸载每个文件,并在成功时删除每个备份的文件。因此,卸载时间大约是安装时间的三倍。当我采用默认选项为每个组件包含1个文件时,我遇到了同样的问题。虽然建议,但如果您处理未决案件,您应该进行权衡。

希望这能为你清除一些东西。

+0

严,我真的很感谢你的回答,它让我更清楚这个概念。在我的情况下,回滚选项不是必需的,到目前为止,我从来没有遇到过这样的情况,我需要回滚选项。无论如何,我会尝试你所有人的建议。 – sankar 2010-02-27 07:46:49

+0

你能解释一下如何卸载缓存的图标文件吗? – sky 2013-08-16 09:35:07

+0

本例中的缓存图标文件是Windows Installer未安装的文件,并且一无所知。因此,它可以是一组'RemoveFile' /'RemoveFolder'元素或自定义操作。我更喜欢第一个变体。 – 2013-08-16 10:48:40

2

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

+0

感谢您的回复。我会尽量减少组件因素以减少它。我需要运送如此大量的html文件和图像作为教程目的。 – sankar 2010-02-27 04:23:03

+2

我的典型安装包含大约15,000个文件,这些是客户端应用程序。在游戏行业,安装大量文件非常容易。在服务器端(特别是Web应用程序),很容易进入成千上万。我曾经观察到,仅仅在网络客户端添加Infragistrics增加了5500多个文件。 任何试图收缩包装web应用程序的人都可以很快找到高度复杂和大规模的安装程序。按照微软提供的“自我托管”MSDN网站的想法。 – 2010-02-27 15:00:54