Pos*_*ack 5 installer windows-installer wix heat visual-studio
对于我的Wix项目,我通过Visual Studio的预构建事件收获了4个目录,这将导致大约160mb的数据和大约220个文件,但是构建过程花费了很长时间。
我如何加快该过程?我有一个嵌入式media.cab文件,它将保存所有文件。是文件的大小或数量会减慢该过程?还是在预建活动中使用加热工具进行收割?使用HeatDirectory元素会更快吗?
有人在加快速度方面取得了一些经验吗?
对于我们来说,绝大多数时间都花在调用上light(用于链接阶段)。
light压缩机柜的速度非常慢。DefaultCompressionLevel将.wixproj 中的更改high为mszip(或low或none) 有很大帮助。然而,我们的构建仍然太慢。
事实证明,light独立处理机柜,并默认在多个线程上自动链接它们。要利用这种并行性,您需要生成多个机柜。在我们的 .wxsProduct元素中,我们将所有内容放置在一个柜子中:
<MediaTemplate EmbedCab="yes" />
Run Code Online (Sandbox Code Playgroud)
事实证明,您可以使用该MaximumUncompressedMediaSize属性来声明您希望文件自动分片为不同 .cab 文件的阈值(以 MB 为单位):
<MediaTemplate EmbedCab="yes" MaximumUncompressedMediaSize="2" />
Run Code Online (Sandbox Code Playgroud)
现在light速度要快得多,即使进行了high压缩,但对于增量构建(只有少数文件发生变化)来说仍然不够快。
回到 .wixproj,我们可以使用以下内容来设置 Cabinet 缓存,这对于很少有文件更改且大多数 Cabinet 不需要重新生成的增量构建来说是理想的选择:
<CabinetCachePath>$(OutputPath)cabcache\</CabinetCachePath>
<ReuseCabinetCache>True</ReuseCabinetCache>
Run Code Online (Sandbox Code Playgroud)
抑制验证还可以显着提高速度(默认情况下,light.exe 花费大约三分之一的时间来验证 .msi)。我们为调试版本激活此功能:
<SuppressValidation>True</SuppressValidation>
Run Code Online (Sandbox Code Playgroud)
通过这些更改,我们的最终(增量)构建对于 32 MB .msi 输出的时间从一分多钟缩短到几秒钟,并且即使在压缩high级别下,完整重建也保持在一分钟以内。
WiX 帮助文件:如何:优化构建速度。换句话说:和是 WiX 中用于加速构建的内置机制。
1)Cabinet reuse2)multi-threaded cab creation
硬件:不可避免"throw hardware at it"。新SSD磁盘NVMe比旧 IDE 驱动器快得多,您可能想尝试将它们作为提高构建速度和安装速度的另一种方法。显然是的,但非常重要。确实可以提高开发速度。看到这个答案。
NVMe 驱动器面临的挑战?:1)它们运行很热,2)通常容量(大小)有限,3)在笔记本电脑中使用时它们可能比旧的 2.5 英寸驱动器更容易受到攻击(我不确定 - 请记住,某些 NVMe 驱动器牢固地焊接到笔记本电脑的主板上) ,4)如果您没有优质的外部外壳(外形尺寸等...),数据救援可能会有点困难,5)据说 NVMe 驱动器会随着时间的推移而烧坏,6)它们仍然有些昂贵 - 尤其是容量较大的驱动器,并且当然还有进一步的挑战 -但总的来说:这些驱动器非常棒。
压缩:您可以尝试使用不同的压缩级别来编译您的设置(例如,调试版本没有压缩级别)。无压缩使构建速度更快。以下是执行相反操作的插图,设置更高的压缩(只需使用“无”而不是“高”即可达到您的目的):
CompressionLevel: Msi 比 msm 大两倍MediaTemplate:如何使用 Orca 减小 1GB MSI 文件的大小?关于压缩的相关答案:MSI文件使用的压缩方法是什么?
单独安装:如果您仍然进行压缩,您可以将先决条件和合并模块放在单独的安装中,以避免为每个构建压缩它们(或者如果您在 Installshield 中,则使用发布标志,或者检查Wix 中的预处理器功能)。
外部源文件:我想如果可以接受的话,您可以使用外部源文件- 那么您在构建过程中就不会进行冗长的压缩操作,而只是文件副本(它会变得越来越快 - 特别是对于闪存驱动器)。
Shim :如果您要测试的是安装本身及其 GUI 和自定义操作,则另一种技术是将您安装的所有文件填充为1 KB 。那么它只是一个设置的“外壳” - 这是测试设置的新自定义操作的好方法。许多人已经为此编写了工具,但我没有给您的链接。总有github.com可供搜索。
发布标志:节省时间的另一种方法是使用特殊的发布标志(仅限 Installshield)来编译您当前正在处理的安装程序的较小版本(忽略许多功能)。WiX 通过其预处理器具有类似的可能性。有关WiX 预处理器实际使用的更多信息。
调试构建:我通常使用这些技术的组合来进行调试构建。
我的看法是:进行仅先决条件的单独设置。这对于大规模部署场景也有好处,在这种场景中,企业用户希望使用自己的标准化先决条件,并且对巨大设置中的大量嵌入式“垃圾”感到恼火。大公司中的大量包准备时间都花在删除过时的运行时和先决条件上。您还可以提供对这些先决条件的更新,而无需重建整个设置。良好的解耦。
链接:
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |