【问题标题】:Prevent directory from multiple compressions防止目录被多次压缩
【发布时间】:2014-03-13 16:01:13
【问题描述】:

我正在使用 Inno Setup 来创建我的 Java 应用程序的设置。该设置由应用程序(JAR 文件)和 Java 运行时(包含数千个文件的运行时目录)组成。压缩运行时需要很长时间(几分钟),但运行时不会因任何新应用版本而改变。

是否可以只压缩目录?

【问题讨论】:

  • 不,Inno Setup 当前不缓存已构建的设置块(它们是在构建过程中动态创建的),因此您无法预构建某个文件夹。您可以考虑的另一种方法是将该文件夹打包到存档中,然后由设置中包含的某个存档器手动解压。我将其作为评论发布,即使无论您喜欢与否,它都是答案;-)

标签: inno-setup


【解决方案1】:

“预压缩”安装程序某些部分的唯一方法是为该子组件制作一个单独安装脚本,并将该脚本的编译输出包含在主脚本中,以及使用[Run]PrepareToInstall 条目在主安装过程中静默执行子安装。 (您很可能希望在主脚本中对该文件使用 nocompression 标志,否则您将失去大部分速度优势。)

请注意,这会产生一些额外的开销,因为您实际上是以这种方式存储安装引擎的副本,因此通常只对较大的子组件值得。您还必须决定是否应将卸载数据单独保存或与主应用程序一起保存,并设置AppIds 并相应地卸载数据路径。

在某些情况下(特别是对于用户可能已经从其他应用程序安装的运行时),您可能需要考虑按需下载而不是将子安装嵌入其中,这将减小安装程序的大小(但需要 Internet 连接在安装时)。 Inno 没有内置下载功能,但有一些插件可以提供它。

【讨论】:

  • 作为书呆子,制作子安装程序并不是预压缩某些文件的唯一方法。您仍然可以制作存档,分发一些存档器并编写一堆代码来解压(安装)和删除(卸载)其中的文件。但好吧,在大多数情况下,子安装程序听起来是个好方法。
  • 没错,我可能应该添加“本机”,即。没有 Inno 之外的工具。但是这样做也有缺点,例如。卸载功能丢失(没有hackery)。
  • 好的,谢谢!我认为使用自己的打包程序进行归档比等待几分钟压缩 JRE 更复杂。
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 2018-05-10
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多