[Setup]: ArchiveExtraction

Допустимые значения:

basic
enhanced/nopassword
enhanced
full

Значение по умолчанию:

basic

Описание

Определяет метод извлечения архива, используемый флагом extractarchive в секции [Files] и функциями ExtractArchive и CreateExtractionPage.

basic использует исходную версию декодера "7z ANSI-C Decoder" из LZMA SDK (автор – Игорь Павлов) с небольшими доработками: улучшена поддержка Unicode, оптимизированы сообщения об ошибках и добавлен вывод требований к памяти. Поддерживает только архивы .7z, не защищённые паролем.

enhanced/nopassword использует внешнюю библиотеку 7zxr.dll, собранную на базе исходного кода 7-Zip (автор – Игорь Павлов) с минимальными изменениями: добавлена цифровая подпись и файл переименован в is7zxr.dll. По сравнению с методом basic, предлагает более эффективное использование памяти при работе с архивами, содержащими крупные файлы, но приводит к увеличению размера установочного пакета. Важно отметить, что данный метод поддерживает исключительно архивы .7z без парольной защиты.

enhanced использует библиотеку 7zxa.dll вместо 7zxr.dll. Файл библиотеки собран заново, подписан цифровым сертификатом и переименован в is7zxa.dll. Поддерживает только архивы .7z, включая защищённые паролем.

full вместо библиотеки 7zxa.dll использует 7z.dll. Данная библиотека была перекомпилирована, подписана и переименована в is7z.dll. Поддерживает наиболее популярные форматы архивов (такие как .7z, .zip, .rar и другие), но не все по сравнению с оригинальной 7z.dll — это было сделано для уменьшения её размера. Кроме того, реализована поддержка многотомных архивов.

В следующей таблице приведены различия между этими методами.

Требования к памяти Архивы под паролем Увеличение инсталлятора Формат архивов
basic (по умолчанию) Высокие для больших файлов* Нет 0 Кб .7z
enhanced/nopassword Нормальные Нет 100 Кб .7z
enhanced Нормальные Да 123 Кб .7z
full Нормальные Да 458 Кб .7z, .zip, .gz, .bz2, .xz, .tar, .rar, .iso, .msi, .cab, .rpm, .vhd, .vhdx, .vdi, .vmdk, .wim, .dmg, .001

* = При извлечении файла всегда будет выделен достаточный объём памяти, чтобы вместить весь файл, независимо от размера блока. Например, для извлечения файла размером 1 ГБ с использованием метода basic потребуется не менее 1 ГБ оперативной памяти. Однако для 7z-архивов с крупными файлами рекомендуется использовать альтернативный метод: в таком случае потребление памяти зависит исключительно от размера словаря.

Все методы автоматически перезаписывают существующие в целевой папке файлы (даже с атрибутом "только для чтения") без предупреждения пользователя.

Все методы восстанавливают из архива следующие свойства файлов, если они доступны: время создания, время последнего изменения и атрибуты.

При использовании метода full для извлечения содержимого архива, например archive.tar.gz, на выходе будет получен сам файл архива (например, archive.tar), а не отдельные файлы, которые в нём содержатся.

Метод basic имеет следующие ограничения, как указано Игорем Павловым в комментариях к LZMA SDK:

См. также:

ExtractArchive
MapArchiveExtensions
CreateExtractionPage