Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup плюс внешние упаковщики

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

Открыть новую тему     Написать ответ в эту тему

msatmb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При создании больших инсталяций в InnoSetup можно значительно уменьшить их размер, воспользовавшись более мощной упаковкой, чем встроенная. Особенностям применения внешних упаковщиков с InnoSetup посвящена данная тема
 
Варианты выбора:
 
RAR: упаковка в общем хуже чем встроенная, но есть куча доп. алгоритмов (тексты, мультимедиа), поэтому может давать выигрыш на некоторых типах данных. Распаковка: только через SFX
 
7-zip: тот же алгоритм упаковки, что и встроенный (lzma), но за счёт доп. алгоритмов bcj2, delta, lzma2, ppmd и большего словаря может обеспечить лучшее сжатие. Для наилучшего сжатия рекомендуется: 64-битная еерсия, 6гб ОЗУ, Ultra7z Optimizer. Распаковка: через SFX или dll от Expeditor
Модуль распаковки архивов 7z 1.01 [18.12.2008] от ExpeditorR
 
FreeArc: тот же базовый алгоритм упаковки (lzma), но наличие множества доп. алгоритмов может обеспечить большее сжатие. Распаковка: через SFX или dll
Модуль распаковки архивов FreeArc [10.07.2009] от Bulat_Ziganshin
 
NanoZip: наилучшее сжатие в редиме -cc (распаковка 1mb/s), оптимальный режим -cO (распаковка 5mb/s). Распаковка: только через SFX
 


Все остальное в родственных темах
 
Inno Setup (создание инсталяционных пакетов)
 
Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - обсуждение того, какими утилитами/способами лучше сжимать, чтобы получить как можно меньший размер инсталятора.
 
FreeArc - бесплатный open-source архиватор для Windows и Linux, сочетающий высокую степень сжатия и большой набор возможностей

Всего записей: 178 | Зарегистр. 15-04-2007 | Отправлено: 08:31 11-11-2009 | Исправлено: juvaforza, 20:49 26-04-2011
Belenos

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rhinosniper
Попробуй сейчас с этим скриптом что я подправил
http://rghost.ru/2788461
 

Всего записей: 30 | Зарегистр. 06-08-2008 | Отправлено: 01:07 02-10-2010
Fizik333

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подправть скрипт
Сначала запускается установка, быстро заканчивается и пишет что код ощибки-1. Возможно архив повреждён или недостаточно места на дискt
http://letitbit.net/download/76701.7083f8e2e36cae6a8499b4ca73ba/FreeArc_Example.iss.html

Всего записей: 5 | Зарегистр. 01-10-2010 | Отправлено: 08:47 02-10-2010
xfsz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заметил, что в скрипте DiskPromts+FreeArcExtract v.2.6 от Shegorat (а можь ещё где), есть такая бага - по нажатию Esc выскакивает окошко отмены инсталляции, даже если само окно инсталлятора было неактивно или свёрнуто. В общем, профиксить это легко - дописать условие к операции отмены:
Код:
if WizardForm.Focused then if (GetKeyState(VK_ESCAPE) < 0) and not CancelDuringInstall then WizardForm.Close;   // опрашиваем Cancel (если разрешена отмена установки)

 

Всего записей: 3 | Зарегистр. 10-09-2010 | Отправлено: 15:03 02-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если их собирать 7zip к примеру, то выходной файл получиться data.7z а не data.dat, или я чего то не понял, почему у тебя он с расширением dat получился (в твоей инструкции)?  

Да любое расширение можно сделать, не суть важно.

Цитата:
В какой очерёдности это делать, то есть данные, которые уже в PCF можно обработать ещё и srep'ом (дополнительно), или после того как создался архив 7z (без сжатия) обрабатывать его srep'ом вместо Precomp ?

Можно потом и srep'ом, если есть необходимость. Вместо прекомпа среп не может использоваться, так как это не имеющие ничего общего программы. Единственное, что их объединяет - обе препроцессоры для подготовки данных под дальнейшее сжатие.
Вообще, srep не всегда может дать очевидную выгоду по сравнению со встроенным в freearc rep'ом. Freearc вкусен наличием дополнительных встроенных тулзов, которые на некоторых типах данных дюже хорошо помогают. Так что экспериментируй, читай мануалы.
 

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 15:06 02-10-2010 | Исправлено: manstopper, 15:07 02-10-2010
Belenos

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
manstopper
Ещё раз спасибо за ответы и за советы, уже со всем этим разобрался, и новый скрипт от Profrager-а изучил, за что ему отдельная благодарность.
Хотелось только  уточнить, в этой строке скрипта для запроса диска:
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc'                 ) then break;
нужно обязательно прописывать какой то архив
'CODMW2_Disk2.arc'
, или этот момент можно как то вытереть из строки ? я пробовал вытирать, но тогда скрипт не компилился и выдавал ошибку, просто мне не понятно, для чего там этот архив ('CODMW2_Disk2.arc') прописан ? если распаковываться будут совсем другие архивы.

Всего записей: 30 | Зарегистр. 06-08-2008 | Отправлено: 23:53 02-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
просто мне не понятно, для чего там этот архив ('CODMW2_Disk2.arc') прописан ? если распаковываться будут совсем другие архивы.

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

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 00:16 03-10-2010
Belenos

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

А если у меня будет к примеру несколько архивов, вместо одного, то как тогда в этом месте ('CODMW2_Disk2.arc') писать ? ведь там ('CODMW2_Disk2.arc') можно прописать только один архив, самый первый по "имени" писать ?

Всего записей: 30 | Зарегистр. 06-08-2008 | Отправлено: 03:24 03-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Belenos
да я ж тебе говорю, любой пиши, главное чтобы такого файла с таким именем на первом диске не было. Можно вообще любой произвольный файл нулевого размера с любым расширением спецом положить на второй диск и его указать.

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 09:05 03-10-2010
Rhinosniper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я пережал некоторые файлы с помощью precomp, потом srep и freearc, при установки игры выходят две ошибки, вот:
   
   
 
Вот сам скрипт:
http://rghost.ru/2783980

Всего записей: 21 | Зарегистр. 25-09-2010 | Отправлено: 12:32 03-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Profrager, он кажецца не про то спрашивает
 

Цитата:
нужно обязательно прописывать какой то архив
'CODMW2_Disk2.arc'
, или этот момент можно как то вытереть из строки ? я пробовал вытирать, но тогда скрипт не компилился и выдавал ошибку, просто мне не понятно, для чего там этот архив ('CODMW2_Disk2.arc') прописан ? если распаковываться будут совсем другие архивы.

Закомментируй строку двумя слэшами, если у тебя инсталлятор не будет разбит на 2 (или больше) диска.
 
Эта функция нужна для отображения запроса смены диска или нового пути для указанного файла (в данном случае CODMW2_Disk2.arc).
 
Ты, походу, так и не понял логику. Она простая. Допустим, ресурсы игры ты сжал в 2 файла: data1.arc и data2.arc. В первом архиве у тебя большой файл, который ты получил после обработки resource.big из корня игры прекомпом. Секция распаковки будет выглядеть так:
 
Подробнее...
 
Добавлено:
Profrager, наберусь наглости подкинуть еще одну "мегаидею" насчет будущих версий.
 
Нельзя ли в секцию распаковки включить отображение прогресса для внешних файлов?
 
Примерно так:
1. Рапаковываем фриарк архив.
2. Проход срепа.
3. Распаковываем 7z без сжатия в {app}. (в это время прогрессбар показывает, скажем 50%)
4. Запускаем восстановление звука.ехе
5. Распаковываем второй фриарк архив.
 
На 4 этапе прогрессбар просто равномерно движется от 50 до 80% (задается вручную в records.inf). На 5 доходит до сотни.
 
Считать проценты внешней проги не надо, просто равномерное движение в заданном диапазоне.

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 12:45 03-10-2010 | Исправлено: manstopper, 13:00 03-10-2010
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Считать проценты внешней проги не надо, просто равномерное движение в заданном диапазоне.  

т.е. узнаём когда выполнение программы закончится и затем равномерно выводим индикатор?

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 12:59 03-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
т.е. узнаём когда выполнение программы закончится и затем равномерно выводим индикатор?
 

Нет, немножко не так. Прогрессбар показывает 50%. Это момент, когда распаковался фриарк архив. Запускается внешняя прога, индикатор идет от 50 до ?%. Затем, после завершения программы, запускается распаковка второго архива и индикатор идет до 100. Можно не считать, просто по окончании работы внешней проги индикатор прыгнул на 80% например.  
 
 
Добавлено:
Ну или второй прогрессбар для внешних прог прикрутить. Реализация, правда тут сложна тем, что внешняя прога на разных конфигах компов будет исполняться с разной скоростью...

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 13:05 03-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
manstopper

Цитата:
Считать проценты внешней проги не надо, просто равномерное движение в заданном диапазоне.

да уж. А как узнать с какой скоростью двигать прогрессбар? На первом пне распаковка час бдует длиться, а на i7 к примеру 5 сек. Все равно нужно же от чего-то отталкиваться при расчете процентов, а в данном случае не от чего.

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 13:12 03-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
да уж. А как узнать с какой скоростью двигать прогрессбар? На первом пне распаковка час бдует длиться, а на i7 к примеру 5 сек. Все равно нужно же от чего-то отталкиваться при расчете процентов, а в данном случае не от чего.
 

Ну отталкиваться можно от некоей типовой конфигурации. Задаем диапазон движения. Если у юзера комп быстрый, то прогрессбар плавно идет от 50 до 58, допустим, а потом резко прыгает по завершении проги на 80. Если медленнее заданного, то стоит на 80ти до окончания работы проги. Всяко лучше, чем на Run вешать и писать "Потерпите 20 минут"

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 13:15 03-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Прогрессбар показывает 50%. Это момент, когда распаковался фриарк архив. Запускается внешняя прога, индикатор идет от 50 до ?%. Затем, после завершения программы, запускается распаковка второго архива и индикатор идет до 100. Можно не считать, просто по окончании работы внешней проги индикатор прыгнул на 80% например.  

а если он юужет так долго выполняться, что за 100% зашкалит?) Тут ведь не только от системы сильно зависит, да и вообще от фрагментированности винта и многих других мелочей, которых просчитать не выйдет.
 
Добавлено:

Цитата:
Ну отталкиваться можно от некоей типовой конфигурации. Задаем диапазон движения. Если у юзера комп быстрый, то прогрессбар плавно идет от 50 до 58, допустим, а потом резко прыгает по завершении проги на 80. Если медленнее заданного, то стоит на 80ти до окончания работы проги. Всяко лучше, чем на Run вешать и писать "Потерпите 20 минут"

ну в принципе подобное реализуемо, только вот геморно будет задавать параметры для такой распаковки.

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 13:16 03-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно еще менять статус сообщение. Пока распаковка идет средствами isdone, сообщение показывает распаковывающийся файл или то, что написано в ExtractedFile. Когда работает внешняя программа, статус сообщение меняется.  
 
Добавлено:

Цитата:
ну в принципе подобное реализуемо, только вот геморно будет задавать параметры для такой распаковки.

Тут вручную только, ИМХО, писать в records... Или считать время на компе юзера при тестовом прогоне, когда пишется инфа в records, а потом на 2, например, умножать потребное время для внешней вундерпроги.
 
 
Добавлено:
Еще вариант. Добавить на страницу второй прогрессбар, который включается в скрипте только если в секции распаковки присутствует внешняя прога. Включение этого прогрессбара не обязательно, имхо, должно быть автоматическим. Этот бар "бесконечный". Указываем примерное время на типовой конфигурации. Если выполнение прошло быстрее прописанного - прыжок в конец. Если медленнее - бар начинает движение сначала, и так до конца выполнения внешки. В конце опять же прыжок. При этом основной isdone прогресс стоит на месте и начинает опять двигаться по окончании. Статус сообщение меняется во время работы внешней проги.
 
При медленном выполнении юзер все равно видит активность, к тому же жесткий "шуршит".

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 13:18 03-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну в isdone ведь 2 варианта расстановки есть - ручная и автоматическая. При ручной для осуществлении твоей идеи придется за основу брать скорость на какой то системе, а для автомата в принципе процент относительно остальных операций можно вычислить автоматически на тестовом проходе репакера. Только вот для правильного отображения на машине юзера надо перед запуском exe выполнять какие-либо распаковки фриарка,7з или любых других контролируемых операций для примерного подсчета времени выполнения этого exe на машине юзера. В голове вроде уже сформировалась мысль возможности реализации твоей идеи.
 
Добавлено:

Цитата:
Еще вариант. Добавить на страницу второй прогрессбар, который включается в скрипте только если в секции распаковки присутствует внешняя прога. Включение этого прогрессбара не обязательно, имхо, должно быть автоматическим. Этот бар "бесконечный". Указываем примерное время на типовой конфигурации. Если выполнение прошло быстрее прописанного - прыжок в конец. Если медленнее - бар начинает движение сначала, и так до конца выполнения внешки. В конце опять же прыжок. При этом основной isdone прогресс стоит на месте и начинает опять двигаться по окончании. Статус сообщение меняется во время работы внешней проги.  
 
При медленном выполнении юзер все равно видит активность, к тому же жесткий "шуршит".

для этого есть ISProgressbar.dll или как-то так) посмотри в шапке темы про Inno скрипты

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 13:35 03-10-2010
manstopper



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Только вот для правильного отображения на машине юзера надо перед запуском exe выполнять какие-либо распаковки фриарка,7з или любых других контролируемых операций для примерного подсчета времени выполнения этого exe на машине юзера.

Если подсчитывать время работы внешней программы при тестовом проходе в процентах от контролируемой распаковки, то может получиться почти правильно. Для запаса все-таки лучше увеличить его, пусть будет небольшой прыжок прогресса.
 
Идея то в том, что нельзя объять необъятное Ты вроде писал, что планируешь расширить функциональность в части распаковочных модулей. Но все равно скрипт будет ограничен наличием встроенных распаковщиков. А если прикрутить выполнение любой программы и хотя бы примерно показывать ее на прогрессбаре, функциональность будет неограниченной. Нынче lossy репаки пошли со сборкой того же звука на машине юзера. И не всегда достаточно из ogg получить wav. Еще и паковать сторонними тулзами потом в формат игры надо.  
 
 
Добавлено:

Цитата:
для этого есть ISProgressbar.dll или как-то так) посмотри в шапке темы про Inno скрипты

Спасибо большое Посмотрю.

Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 13:51 03-10-2010
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ты вроде писал, что планируешь расширить функциональность в части распаковочных модулей.
mediapack (ogg(tak,optimfrog) <-> wav; jpg(bmf) <-> dds,tga,bmp) пакер почти готов, но он идет отдельным проектом и его доделать бы до конца, но пока лень) А после уж можно его поддержку и в isdone добавить.
 
nanozip пока еще сырой и без нормального прогресса распаковки, так что рано ему еще.
 
xdelta для патчей может пригодится, но есть ведь и специальные проги для создания патчей на его основе, поэтому сомневаюсь в необходимости его в inno.
 
а больше не знаю чего можно добавить.
 

Цитата:
А если прикрутить выполнение любой программы и хотя бы примерно показывать ее на прогрессбаре, функциональность будет неограниченной.

на счет этого согласен. Благодарю за идею. 0.5 версия isdone готова, так что наверное к следующей попробую подобное прикрутить.

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 14:31 03-10-2010 | Исправлено: Profrager, 14:33 03-10-2010
Belenos

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Закомментируй строку двумя слэшами, если у тебя инсталлятор не будет разбит на 2 (или больше) диска.

Это я знаю, я немного не так написал в своём предыдущем посте, поэтому сформулирую его по другому:
Значит имею я 2 архива фриарка для первого DVD, назовём их data-1.arc и data-2.arc
и 3 архива для второго DVD, назовём их data-3.arc, data-4.arc и data-5.arc
так вот какое название архива писать здесь ('CODMW2_Disk2.arc'), самое первое, что идёт по имени, то есть data-3.arc ? Мой вопрос заключается не в том, как расписать всего 2 архива, на 1 или 2 DVD, а в том, если у меня приготовлено несколько архивов для вторго DVD, и какой из этих архивов, что приготовлены для второго DVD, нужно писать в эту строчку ('CODMW2_Disk2.arc') ?

Всего записей: 30 | Зарегистр. 06-08-2008 | Отправлено: 15:25 03-10-2010 | Исправлено: Belenos, 15:25 03-10-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup плюс внешние упаковщики


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru