Поддержка FreeArc+InnoSetup
FreeArc стал очень популярен при создании инсталяторов многогигабайтных программ, поскольку это единственный архиватор, поддерживающий словари до 2 гб, что позволяет добиться большей степени сжатия, чем в 7-zip или любых других архиваторах. Чтобы помочь создателям инсталяторов, мы разработали этот пакет.
Он включает unarc.dll для распаковки архивов FreeArc в инсталяторах, созданных с помощью InnoSetup, и два примера скриптов инсталятора, использующих эту dll - простой и с расширенными возможностями. В этом форуме можно получить консультации по использованию скрипта.
Если вы используете архивы FreeArc в своих инсталяторах - пожалуйста сделайте в них ссылку на этот сайт для увеличения популярности FreeArc.
Версии скрипта
Версия 3.5, 21-12-2009- поддержка опций -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.