使用Inno Setup更快地创建安装程序

时间:2018-12-31 12:59:27

标签: inno-setup

当我对大量文件(> 2GB)运行Inno Setup时,需要很长时间才能运行。我相信它将时间花在压缩上,这应该是受CPU限制的,但是它只使用了几个CPU。有没有办法将其分布在更多的内核上?

具体来说,我正在使用这个boost-release repository,它的Inno Setup脚本包括:

[Setup]
....
Compression=lzma2/ultra64
....

[Files]
Source: "boost_1.69.0/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion
....

在具有16个内核和32GB RAM(Azure F16s v2)的计算机上,调用Compil32.exe boost_installer.iss大约需要25分钟。

文件集大约为2.5GB,其中2GB是大约300个编译库的集合。剩余的500MB是60,000个源文件。

2 个答案:

答案 0 :(得分:1)

尝试设置LZMANumBlockThreads directive(默认值为1):

  

当压缩大量数据时,LZMA2压缩器具有将数据划分为“块”的能力,并可以通过使用附加线程来并行压缩其中两个或多个这些块(提供足够的处理器能力)。该指令指定要使用的线程数,即LZMA2压缩器可以并行压缩的最大块数。

答案 1 :(得分:1)

因此,要深入了解这一点,我创建了一个test project,它对各种Inno Setup配置选项进行了各种排列。

我发现有用的(并使我的速度提高了40%!)是

SolidCompression=yes
LZMASeparateProcess=yes
LZMANumBlockThreads=6

在没有SolidCompression的情况下,LZMANumBlockThreads的影响不大。但是在一起,我看到了一个更典型的可并行化的问题,其中更多的线程给出了更快的结果。

如果您觉得这很有趣,我建议您使用writeup,它有很多数据可以备份。