1

我有一个 Inno-Setup,它在内部只是启动另一个设置。(我想用 InnoSetup 完全重建它,但还没有时间这样做。)

要运行此内部设置,我需要提供一些 zip 文件。目前我手动创建这些 zip 文件并将它们复制到我的 InnoSetup-Folder 中。我的想法是,让 InnoSetup 编译过程创建这些 zip 文件。所需文件位于不同(但固定)的文件夹中。

有没有办法这样做?

这是一个更直观的示例:

  • C:\dir1\File1
  • C:\dir2\文件2
  • C:\dir3\File3
  • C:\dir4\File4
  • C:\dir5\File5
  • C:\dir6\File6

  • Zip1 包含 File1 和 File2
  • Zip2 包含 File3 和 File4
  • Zip3 包含 File5 和 File6

当前流程

  • Zip1 - 3 是手动构建的
  • 所有三个 zip 文件将被编译成一个完整的 InnoSetup .exe 文件
  • 运行安装时,压缩文件将被复制到临时文件夹
  • 外部设置工具将对临时文件夹中的这些 zip 文件起作用。

期望的过程

  • Zip1 - 3 由 InnoSetup 自动构建
  • rest 与当前进程相同

感谢您的建议

4

1 回答 1

3

如何使用 TUGZip 将文件添加到存档中?

您正在使用非常奇特但脚本友好的存档器。简而言之,您可以为存档器的TzScript.exe命令行工具制作一个脚本文件,如下所示。为Archive属性分配存档的目标名称,使用正确的WorkingDirData要添加到存档的放置文件。我已经硬编码了存档名称,但即使是这个脚本文件也可以由 InnoSetup 预处理器制作(但这超出了这个问题的范围):

function main()
{
     var Comp = new Compress();

     Comp.Archive = "d:\\DeployFolder\\Archives\\Archive1.zip";
     Comp.Type = "ZIP";
     Comp.Compression = 3;
     Comp.WorkingDir = "d:\\ArchiveFolder\\";
     Comp.Data = "File1.txt,File2.txt";
     Comp.Password = "";
     Comp.DateExtension = 0;
     Comp.TimeExtension = 0;
     Comp.Overwrite = 1;
     Comp.Recurse = 0;
     Comp.StoreFolderNames = 1;
     Comp.IncludeHiddenFiles = 1;

     Comp.DoCompress();
}

如何在 InnoSetup 脚本编译之前执行 TUGZip 命令行归档程序?

比将其放入 InnoSetup 脚本更容易的是制作一个批处理文件,这将使用存档器完成所有工作,并且在完成复制到部署文件夹中的全新存档后,它将启动 InnoSetup 编译或仅打开 InnoSetup脚本文件。

如果你想在你的 InnoSetup 脚本中有这个,你需要使用预处理器的Exec函数。由于它是一个预处理器函数,它在 InnoSetup 脚本编译开始之前执行,因此它是您可以执行此类操作的理想场所。

于 2013-01-29T10:37:31.243 回答