Предотвратить многократное сжатие каталога

Я использую Inno Setup для создания настроек моего Java-приложения. Установка состоит из приложения (файл JAR) и среды выполнения Java (каталог среды выполнения с тысячами файлов). Сжатие среды выполнения занимает много времени (несколько минут), но среда выполнения не меняется ни для одной новой версии приложения.

Можно ли сжать каталог только один раз?


person Vertex    schedule 11.03.2014    source источник
comment
Нет, в настоящее время Inno Setup не кэширует созданные фрагменты установки (они создаются «на лету» в процессе сборки), поэтому вы не можете предварительно создать определенную папку. В качестве альтернативы вы можете подумать о том, чтобы упаковать эту папку в архив и распаковать ее вручную с помощью какого-либо архиватора, включенного в вашу установку. Я отправляю это как комментарий, хотя это ответ, когда вам это нравится или нет ;-)   -  person TLama    schedule 12.03.2014


Ответы (1)


Единственный способ «предварительно сжать» какую-либо часть вашего установщика — это создать отдельный скрипт установки только для этого подкомпонента и включить скомпилированный вывод этого скрипта в ваш основной скрипт вместе с [Run] или запись PrepareToInstall для автоматического выполнения вспомогательной установки в рамках основной установки. (Скорее всего, вы захотите использовать флаг nocompression для этого файла в своем основном скрипте, иначе вы потеряете большую часть преимуществ скорости.)

Обратите внимание, что это повлечет за собой некоторые дополнительные накладные расходы, поскольку таким образом вы, по сути, сохраняете дубликат механизма установки, поэтому обычно это имеет смысл только для более крупных подкомпонентов. Вам также нужно будет решить, должны ли данные удаления храниться отдельно или вместе с вашим основным приложением, и соответственно установить AppIds и пути к данным удаления.

В некоторых случаях (особенно для сред выполнения, которые пользователь мог уже установить из других приложений) вы можете захотеть рассмотреть загрузку по запросу вместо встраивания подустановки внутрь, что уменьшит размер вашего установщика (но потребует подключения к Интернету во время установки). ). Функциональность загрузки не встроена в Inno, но есть несколько плагинов, которые ее предоставляют.

person Miral    schedule 13.03.2014
comment
Чтобы быть педантом, создание вспомогательного установщика - не единственный способ предварительного сжатия некоторых файлов. Можно еще сделать архив, раздать какой-нибудь архиватор и написать кучу кода для распаковки (установки) и удаления (удаления) файлов из него. Но в большинстве случаев вспомогательный установщик звучит как хороший способ. - person TLama; 13.03.2014
comment
Правда, наверное надо было добавить нативно, т.е. без инструментов вне Inno. Но есть недостатки в этом, например. потеря функциональности удаления (без взлома). - person Miral; 13.03.2014
comment
Спасибо! Я думаю, что использовать для этого собственный пакет сложнее, чем ждать несколько минут для сжатия JRE. - person Vertex; 16.03.2014