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

tee*_*s99 4 inno-setup

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

具体来说,我正在使用这个boost-release 存储库,它有一个 Inno Setup 脚本,其中包括:

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

[Files]
Source: "boost_1.69.0/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion
....
Run Code Online (Sandbox Code Playgroud)

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

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

tee*_*s99 10

因此,为了深入了解这一点,我创建了一个测试项目,该项目经历了各种 Inno Setup 配置选项的各种排列。

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

SolidCompression=yes
LZMAUseSeparateProcess=yes
LZMANumBlockThreads=6
Run Code Online (Sandbox Code Playgroud)

如果没有SolidCompression,则LZMANumBlockThreads不会产生太大影响。但总的来说,我看到了一个更典型的可并行化问题,其中更多的线程提供更快的结果(在某种程度上)。

如果你觉得这很有趣,我会推荐我写的文章,它有很多数据可以支持。