Поддержка FreeArc+InnoSetup
FreeArc стал очень популярен при создании инсталяторов многогигабайтных программ, поскольку это единственный архиватор, поддерживающий словари до 2 гб, что позволяет добиться большей степени сжатия, чем в 7-zip или любых других архиваторах. Чтобы помочь создателям инсталяторов, мы разработали этот пакет.
Он включает unarc.dll для распаковки архивов FreeArc в инсталяторах, созданных с помощью InnoSetup, и два примера скриптов инсталятора, использующих эту dll - простой и с расширенными возможностями. В этом форуме можно получить консультации по использованию скрипта.
Если вы используете архивы FreeArc в своих инсталяторах - пожалуйста сделайте в них ссылку на этот сайт для увеличения популярности FreeArc.
Демонстрационные скрипты
Need for Speed Undercover: красивый демонстрационный скрипт от YURSHAT, включающий распаковку архивов FreeArc и множество других вкусностей (дополнительные скриншоты), 9-05-2010.
Need for Speed Undercover Comfort: усовершенствованный вариант этого скрипта от Shegorat, 7-07-2010.
Need for Speed Undercover с ипользованием ISDone 0.4.2: вариант скрипта от nik1967, 17-07-2010.
Xenus2 + botva2 + ISDone-mode от nik1967, 26-07-2010.
Inno Shield v.1.0 от Alexander61434, 14-07-2010.
Ещё один пример скрипта с раcпаковкой FreeArc, 15-05-2010.
Самый краткий скрипт распаковки FreeArc от Shegorat, 14-06-2010.
Коллекция скриптов и примеров для InnoSetup.
Дополнительные/альтернативные библиотеки и утилиты
ISDone.dll v 0.4.1: альтернативная библиотека+скрипт для раcпаковки в InnoSetup архивов FreeArc, 7-zip, RAR, Precomp, SREP; 3-07-2010. Предыдущие версии: 0.4, 0.3.2, 0.3.1, 0.3, 0.2, 0.1, 0.0,
Библиотеки ISSrep v0.15.1, 2-06-2010, ISPrecomp и альтернативная unrar.dll от Vo1T.
Packers Show от Krinkels: графическая оболочка для сжатия файлов консольными упаковщиками, такими как precomp, paq и т.д.
Версии скрипта
Версия 2.6 от Shegorat, 4-07-2010- Исправлена ошибка с зависанием инсталятора
- Исправлена функция AnsiToUtf8
- Исправлены некоторые ошибки
- Доработана функция обработки строки Archives
- Сделана проверка, распакован ли уже архив (архивы больше не распаковываются дважды/трижды и т.д)
- Исправлены некоторые ошибки
- Изменена строка состояния архивов
- Добавлен скрипт с ISPrecomp
- Исправлена распаковка архивов, если архивы разделили на большее кол-во дисков, чем расчетное (прим. DVD9 => 2xDVD5), при этом общий прогресс пересчитывается в зависимости от количества дисков
- Исправлен общий прогрессбар, теперь он не обнуляется при вставке нового диска
- Исправлено оставшееся время, теперь не обнуляется при распаковке
- Доработана система подсчета кол-ва распакованных файлов, теперь не обнуляется при вставке нового диска
- Общий объем распакованных файлов теперь не обнуляется при вставке нового диска
- Мелкие исправления
- Исправлена распаковка, если архивы с нескольких дисков поместили на один
- Исправил распаковку с компонентами
- Добавлен запрос 2го и последущих дисков
- Добавлена распаковка в разные папки
- Архивы добавляются через #define Archives, имена архивов могут быть любыми
- Скрипт сделан на основе FreeArc_Example-Ext v.3.5.iss
- поддержка опций -ap/-ld/-cfg в FreeArcExtract()
- ускорена распаковка при большом количестве wav-файлов (метод TTA)
- можно передавать NULL в качестве первого параметра (callback) в FreeArcExtract()
- исправлена ошибка: обрабатывались опции после '--'
- улучшение в unarc.dll - не создаёт временные файлы при распаковке rep:1gb и фрагментированной памяти
- поддержка метода 4x4
- arc.ini ищется в c:\
- купирована ошибка индикатора прогресса при использовании внешних распаковщиков
- пофиксена потеря количества извлечённых/распакованных файлов
- ускорение распаковки на 10%
- FreeArcExtract() поддерживает опцию '-wPATH' для задания каталога для временных файлов
- при прерывании распаковки стирает временные файлы
- исправлена ошибка в unarc.dll - вылетала при распаковке с использованием временных файлов
- очень простой способ добавления архивов
- распаковка архивов в разные папки
- распаковка идёт с учётом выбранных компонентов/задач
- включение в инсталлятор папки с precomp-утилитами
- фоновая графика и прозрачные строки статуса и файлов (мечта репакеров!)
- miniFAQ и многое другое...
- исправлена unarc.dll - теперь она не вылетает на сбойных архивах
- более плавный индикатор прогресса (данные из LZMA пишутся кусками по 8 мб вместо dictsize)
- больше не грузятся всякие левые facompress.dll из PATH
- функция ArchiveOrigSize возвращает объём данных в архиве
- наименования колбэков изменены на read и write (было progress и written)
- заменил в PeekMessage 0 на WizardForm.Handle, иначе были ошибки при действиях с окном
- добавил проверку на деинсталлятор при откате из-за ошибок FreeArc
- действует стандартная кнопка отмены инсталлятора (и опрос клавиши Escape)
- не требуется прописывать в скрипт общий размер распакованных файлов (убран totalsize)
- вывод сведений изменён на классический - имена архивов отображаются в WizardForm.FileNameLabel
- кнопка инсталлятора в таскбаре показывает процент выполнения текущего этапа и время до его завершения
- расширенная статистика выдаётся как при извлечении файлов инстяллятором, так и при распаковке архивов
- при обработке более одного архива показываются отдельный прогрессбар и сведения о текущем архиве
- на этапе извлечения файлов идёт только подсчёт числа файлов и отсчёт оставшегося времени
- на этапе распаковки заново начинаются подсчёт файлов, распакованных объёма и оставшегося времени
- при ошибке показывается имя архива (сделано для Corona Skin, где журнал установки перехватывает все сообщения)
- в функции FreeArcCallback оставлен минимум кода, информация обрабатывается отдельно, т.к. нужна и для других этапов
- исправление для Unicode-версии: можно использовать русские символы для названий и содержимого архивов
- (!) при перезаписи совпадающих файлов счётчик распакованных данных всё равно увеличивается
- архивы могут быть в разных папках, в этом случае они отделяются знаком | Пример: #define Archives "{app}\Data\*.tmp|{src}\Archives\*.arc"
- В unarc.dll исправлена ошибка, чреватая потенциальными проблемами при распаковке множества архивов
- Корректно отображает общий объём установки и сколько данных уже распаковано
- Индикатор прогресса теперь основан на объёме распакованных и записанных на диск данных
- Дополнительно отображается сколько осталось времени
- FreeArcCallback вызывается не менее 100 раз в секунду, что заменяет вызов по таймеру
- Добавлен placeholder для периодически выполняемого кода (в начале процедуры FreeArcCallback)
- Исправлена проблема с удалением последнего распакованного файла при отмене инсталяции
- Исправлена проблема с русскими именами/путями распаковываемых архивов
- Кнопка 'Отменить распаковку' масштабируется в зависимости от размеров формы
- Исправлено вычисление оставшегося времени (теперь отсчёт начинается в момент начала распаковки)
- За пределами процесса распаковки все лишние надписи убираются с экрана
- Правильно создаются папки, если в пути установки встречаются русские буквы
- При компиляции определяется использование PAnsiChar/PChar. Можно использовать как обычную так и UNICODE версию с установленным препроцессором.
- Русские имена файлов теперь правильно отображаются.
- При нажатии "отмены" при распаковке теперь появляется запрос на подтверждение отмены.
- оптимизация и локализация скрипта, более подробная строка статуса, общий прогресс-бар, при неудачной распаковке выполняется откат (деинсталляция) и показывается текст ошибки.
- создание библиотеки unarc.dll и скрипта распаковки freearc_example.iss.