如何在编译设置时创建多个zip存档

时间:2013-01-29 09:25:04

标签: inno-setup zipfile

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

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

有选择吗?

这是一个更直观的例子:

  • C:\ dir1 \ File1
  • C:\ dir2 \ File2
  • C:\ DIR3 \文件3
  • C:\ dir4 \ FILE4
  • C:\ dir5 \ File5
  • C:\ DIR6 \ File6

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

当前流程

  • Zip1 - 3是手动构建的
  • 所有三个zip文件都将编译成一个完整的InnoSetup .exe文件
  • 在运行安装时,zip文件将被复制到临时文件夹
  • 外部设置工具将处理来自临时文件夹的这些zip文件。

所需流程

  • Zip1 - 3由InnoSetup自动构建
  • 休息与当前流程相同

感谢您的建议

1 个答案:

答案 0 :(得分:3)

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

你正在使用非常奇特,但脚本友好的归档。简而言之,您可以为归档程序的TzScript.exe命令行工具创建一个脚本文件,如下所示。要Archive属性分配归档的目标名称,请使用正确的WorkingDir和要添加到归档的Data放置文件。我已经对存档名称进行了硬编码,但即使是这个脚本文件也可以由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脚本编译开始之前执行,所以它是你可以做这样的事情的理想场所。