Как создать несколько архивов zip при компиляции настроек

У меня есть Inno-Setup, который только что запускает другую настройку. (Я хотел бы полностью восстановить его с помощью InnoSetup, но еще не успел сделать это.)

Чтобы запустить эту внутреннюю настройку, мне нужно предоставить некоторые zip-файлы. В настоящее время я вручную создаю эти zip-файлы и копирую их в папку InnoSetup-Folder. Моя идея состоит в том, чтобы позволить процессу компиляции InnoSetup создавать теги zip-файлов. Необходимые файлы находятся в разных (но фиксированных) папках.

Есть ли возможность сделать это?

Вот более наглядный пример:

  • C: \ dir1 \ File1
  • C: \ dir2 \ File2
  • 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-файлы будут скопированы в папку temp
  • инструмент внешних настроек будет работать с этими zip-файлами из папки temp.

Желаемый процесс

  • Zip1 - 3 автоматически создается InnoSetup
  • rest идентичен текущему процессу

Спасибо за ваши советы

1
nl ja de
Попытка построить это в настройке Inno будет более склонна к ошибкам и хрупкой, чем просто делать это изначально. И это займет больше времени :)
добавлено автор Deanna, источник
Это можно сделать препроцессором. Если ваш zip-архиватор поддерживает параметры командной строки для создания архивов, вы можете просто использовать Exec , если нет, то пришло время изменить архиватор :-) Какой архиватор вы используете (чтобы мы могли составить более конкретный ответ, если это возможно)?
добавлено автор TLama, источник
Это довольно экзотично (хотя он использует InnoSetup для собственной установки), но, похоже, TzScript.exe может сделать то, что вам нужно еще проще. Загляните в справочный файл TUGZip для части Scripting . Это даст вам возможность создать файл сценария для сжатия ваших файлов, и вы можете вызвать этот инструмент командной строки TzScript.exe из препроцессора InnoSetup (до начала компиляции) с помощью Exec . После того, как вы закончите сжатие, вы можете взять эти новые архивы и используя CopyFile скопировать их в определенную папку.
добавлено автор TLama, источник
Я использую TUGZip. Мне это не нравится, но это единственная принятая компания.
добавлено автор Christian Rockrohr, источник
Большое спасибо. Файл справки TUGZip был очень хорошим. Я создал короткий скрипт, который создает все zip-файлы. Впоследствии я могу просто скомпилировать мою установку, как и раньше.
добавлено автор Christian Rockrohr, источник

1 ответы

How to add files to an archive using TUGZip ?

Вы используете довольно экзотический, но сценарий, совместимый с архиватором. Короче говоря, вы можете создать файл сценария для инструмента командной строки TzScript.exe вашего архивиста, как показано ниже. В свойство Archive назначьте целевое имя архива, используйте правильный WorkDir и к файлам 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();
}

How to execute the TUGZip command line archiver before the InnoSetup script compilation ?

Гораздо проще, чем положить это в скрипт InnoSetup, было бы сделать командный файл, который будет делать все с архиватором, и после того, как это будет сделано с новыми архивами, скопированными в вашу папку развертывания, он запустит компиляцию InnoSetup или просто откроет InnoSetup файл сценария.

Если вы хотите иметь это в своем сценарии InnoSetup, вам нужно будет использовать Exec препроцессора> Exec . Поскольку это препроцессорная функция, она выполняется до начала компиляции скрипта InnoSetup, поэтому это идеальное место, где вы можете делать такие вещи.

3
добавлено
Пожалуйста! :-)
добавлено автор TLama, источник
Вау, спасибо за отличный ответ!
добавлено автор Christian Rockrohr, источник