Предотвратяване на многократно компресиране на директория

Използвам Inno Setup за създаване на настройки на моето Java приложение. Настройката се състои от приложението (JAR файл) и Java Runtime (директория за изпълнение с хиляди файлове). Компресирането на времето за изпълнение отнема много време (няколко минути), но времето за изпълнение не се променя за всяка нова версия на приложението.

Възможно ли е да компресирате само една директория?


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