распаковать файлы данных перед запуском inno setup

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


person ramyadel    schedule 13.05.2011    source источник


Ответы (1)


Нет встроенной поддержки сценариев Pascal для распаковки.

Хотя внутри Inno Setup есть множество процедур распаковки для поддержки различных способов сжать файлы во время компиляции. Ни один из них не опубликован на языке сценариев Pascal.

Это по-прежнему возможно сделать, но для выполнения шага распаковки необходимо создать DLL. Затем используйте эту DLL при удалении.

Если вы не сжимаете, вы можете использовать этот метод:

В [Files] вашего сценария Inno Setup вы можете ссылаться на файлы, которые не содержатся в вашей настройке, используя флаг external.

[Files]
Source: "data1.dat" DestDir: "{app}" Flags: external;

Это скопирует data1.dat, расположенный в том же каталоге, что и ваш Setup.exe, в каталог установки вашего приложения.

Альтернатива для рассмотрения

Создайте отдельный сценарий установки Inno для файлов данных. Дайте этот сценарий своим клиентам, чтобы они могли запускать его с помощью компилятора, а не программы Zip.

Он будет сжимать данные, как ZIP, хотя по умолчанию используется lzma2/max. Затем эту установку можно было бы провести через раздел [Run] для установки непосредственно после установки приложения.

2-я альтернатива для рассмотрения

Основываясь на вашем комментарии, я немного лучше понимаю вашу проблему.

Вы можете собрать все файлы MP3 в единую установку установки. Вы можете сгруппировать файлы MP3, используя раздел [Components]. Это позволяет пользователю выбрать, какую группу файлов он хочет установить. Раздел [Files] поддерживает подстановочные знаки, поэтому вы можете указать все файлы в одном каталоге, чтобы упростить обслуживание сценария.

InnoSetup создан для работы с большими установками за счет настройки способов разбиения файла setup.exe на несколько файлов.

[Setup]
DiskSpanning=Yes
DiskSliceSize=XXX
SlicesPerDisk=XXX
SolidCompression=no (Default but it not recommended to be set 'YES' with Huge installs)
person Robert Love    schedule 14.05.2011
comment
Спасибо, Роберт, это было полезно. Но на самом деле файлы данных - это mp3, поэтому я не хочу их архивировать/распаковывать для экономии места, но их слишком много (500 файлов), и я просто хочу упаковать их в 4 или 5 пакетов, чтобы дать пользователю одну настройку. exe с 4 файлами, не обязательно сжатыми или в формате zip. Я вижу какую-то программу установки, которая перед началом установки распаковала свои файлы. Могу ли я сделать это на Паскале в скрипте Inno или будут ограничения? Большое спасибо! - person ramyadel; 15.05.2011
comment
вы могли бы, но это кажется сложнее, чем механизмы по умолчанию. Я обновлю ответ более подробно, основываясь на этом отзыве. - person Robert Love; 15.05.2011
comment
Большое спасибо Роберт. Это именно то, что мне нужно. Работает как часы. - person ramyadel; 15.05.2011