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

2024-05-18

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

具体来说,我正在处理这个提升发布存储库 https://github.com/teeks99/boost-release-windows/,其中有一个 Inno Setup 脚本,其中包括:

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

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

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

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


为了弄清楚这一点,我创建了一个测试项目 https://github.com/teeks99/inno-test/经历了各种 Inno Setup 配置选项的各种排列。

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

SolidCompression=yes
LZMAUseSeparateProcess=yes
LZMANumBlockThreads=6

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

如果您觉得这很有趣,我会推荐writeup https://github.com/teeks99/inno-test/blob/master/README.md我做了它,它有很多数据来支持它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Inno Setup 更快地创建安装程序 的相关文章

  • 是否可以使用 sha1 和 sha256 证书对安装程序和卸载程序进行双重签名?

    Inno Setup 中是否可以同时使用 sha1 和 sha256 对卸载程序和安装程序进行签名 我知道它是可以签署 https stackoverflow com a 30671378 1329977通过命令工具具有两个证书的可执行文件
  • Inno Setup刷新桌面

    是否可以使用 Inno Setup 中的刷新桌面 Code 部分 要么通过使用SendMessage或以某种方式使用SHChangeNotify 您可以通过在适当的 DLL 中调用 Windows API 中的任何函数来调用它 Pascal
  • Inno Setup - 如何本地化组件和类型名称?

    如何本地化组件和类型名称 例如 Languages Name eng MessagesFile Idiomas English isl Name spa MessagesFile Idiomas Spanish isl 如果我选择英语 Ty
  • 使用 Inno Setup 安装时应用程序无法运行

    我正在开发桌面数据库应用程序 使用rdlc报告和reportviewer 开发过程中一切顺利 reportviewer 可以顺利显示所有数据 我使用 Inno Setup 部署应用程序 但是当我安装该应用程序时 报告查看器不显示数据 当数据
  • 是否可以使用 INNO 脚本移动现有目录/文件?

    我们最近对一个使用 INNO 脚本安装的应用程序进行了重大重组 不幸的是 该应用程序需要某些文件在不同版本之间保持不变 更不幸的是 这些文件的位置在这次重组期间发生了变化 最不幸的是 现在由我来制作一个 INNO 脚本片段 它将查看这些文件
  • 我的安装程序如何有选择地删除一些最初并非创建的文件?

    我将所有程序的设置存储在 appdata 目录 appdata MyProgram 中 当出现问题而用户必须重新安装时 我想询问是否删除该目录中的数据 我正在使用 Inno Setup 并添加了一个自定义页面来提示用户 if DirExis
  • 将用户定义的命令行参数添加到/?窗户

    使用 Inno Setup 可以添加用户定义的命令行参数 当我使用 HELP命令中未列出用户定义的参数 如何将带有描述的命令添加到 HELP window Inno Setup 6 0 支持HelpTextNote message http
  • 可以在 Inno Setup 脚本中使用环境变量吗?

    我需要找到一种方法来引用 Inno Setup 脚本文件 iss 中的环境变量 我发现了很多关于从 iss 修改环境的参考资料 但没有关于如何实际使用它的参考资料 这可能吗 当我尝试在 Files 部分中指定文件的源位置时 我遇到了同样的问
  • 准备卸载,就像 Inno Setup 中的准备安装页面一样

    我需要检查多个 exe 文件是否正在运行 通过安装程序安装 然后提示用户关闭它们 如果它们正在运行 如果没有则取消卸载过程 有没有办法在安装中为卸载程序提供类似 准备 页面之类的内容 或者我该如何实施这样的检查 甚至一个消息框也将是完美的
  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • Inno Setup - 允许用户选择“只有我”或“任何使用这台计算机的人”

    我遇到的一些安装程序让我选择 只为我 或 为 使用这台计算机的任何人 安装应用程序 如何让我的 Inno Setup 脚本向用户提供此选择 以便我可以根据他们的回答方式更改安装程序的操作 有很多方法可以解释 只有我 与 所有用户 问题的答案
  • 如果在 Inno Setup 中更新安装,则排除 ssPostInstall 步骤中的部分代码部分

    我尝试对两者使用相同的安装程序 全新安装和更新 因此 如果用户第一次尝试安装我的应用程序 它将运行完整安装 包括 MySQL 安装程序作为先决条件 以及 MySQL 安装的一部分 Code 就会正常执行 但是 如果用户已经安装了我的应用程序
  • Inno Setup:如何观察变量值或写入调试输出?

    在 Inno Setup 中调试时如何观察变量的值 如何打印一些内容来调试输出 Thanks 目前没有调试监视窗口 但当调试器在断点处停止时 您只需将鼠标悬停在要检查的变量上即可 要将某些内容打印到调试输出 请使用Log http jrso
  • 如何在 Inno Setup 中为控件卷出设置动画

    我想在我的安装程序中制作控件滚动的动画 你可以看这个视频 https drive google com file d 1H0HKTPXg9BdYD4HQWqCWHlGSTIHlcJa view 您可以使用计时器来为控件设置动画 Code f
  • 如何从PrepareToInstall事件函数设置StatusMsg

    我的应用程序需要安装 NET Framework 因此我运行 NET 安装准备安装事件函数 当安装运行时 我想在向导上显示一些简单的消息 I found 如何在 Inno 安装脚本的 Code 部分设置状态消息 https stackove
  • Inno Setup:如何根据代码更改语言文件

    我使用自己的语言文件 isl 而不是使用 Inno Setup 的默认语言文件 它允许我自定义一些消息 但现在 我想要每种语言文件有两个版本 一个用于首次安装 一个用于更新 但是 是否可以从代码中选择一个文件 如果是 该怎么做 也许有一些比
  • 欢迎页面未显示,SelectDir 页面首先显示

    我正在尝试使用 Inno Setup 来制作安装程序 我想先显示欢迎页面 然后显示 SelectDir This is CurPageChanged示例代码 procedure CurPageChanged CurPageID intege
  • 使用 Inno Setup 更快地创建安装程序

    当我在大量文件 gt 2GB 上运行 Inno Setup 时 需要很长时间才能运行 我相信它把时间花在了压缩上 这应该是 CPU 限制的 但它只使用了几个 CPU 有没有办法将其分散到 许多 更多核心 具体来说 我正在处理这个提升发布存储
  • 在 Inno Setup 中编译安装程序时跳过不存在的源文件

    In the Files 部分 我必须通过尝试编译一个不存在的文件来实现这一点 编译器不会失败并遵循其过程 例如在这段代码中 Files Source D pais modulo IMG image png DestDir userdocs
  • 在启动设置而不是结束时提取文件

    我正在使用最新版本的 inno 它在安装过程中执行以下操作 执行依赖性检查以查看安装的内容 安装尚未安装的依赖项 net sql server directx 等 从 Files 部分安装应用程序和文件 wpReady 检查 SQL Ser

随机推荐