Улучшенное извлечение архива
Теперь можно извлекать архивы с паролем, многотомные архивы и несколько дополнительных форматов архивов, таких как .zip.
Кроме того, раздел [Файлы] теперь поддерживает извлечение архивов. Писать Pascal Script для извлечения архива больше не нужно.
Всё это необязательно и
не увеличивает размер Setup, если не используется.
- Обновлены разделы [Setup] и [Files]:
- Добавлена новая директива раздела [Setup] ArchiveExtraction для указания метода извлечения архива, используемого для новых флагов раздела [Файлы] Extractarchive (см. ниже), а также поддерживающих функций ExtractArchive и CreateExtractionPage:
- basic (по умолчанию) — это метод, введённый в Inno Setup 6.4.0. Он поддерживает только .7z архивы, которые не защищены паролем.
- enhanced/nopassword — это новый метод, внутренне использующий 7zxr.dll из исходного кода 7-Zip Игоря Павлова, в том виде, как есть, за исключением того, что он был перекомпилирован, подписан кодом и переименован в is7zxr.dll. По сравнению с Basic, он требует меньше памяти для архивов с крупными файлами, но увеличивает размер файла настройки. Он по-прежнему поддерживает только .7z архивы, которые не защищены паролем.
- Расширенное использование 7zxa.dll вместо 7zxr.dll, перекомпилировано, подписано кодом и переименовано в is7zxa.dll. Он по-прежнему поддерживает только .7z архивы, но они могут быть защищены паролем.
- полноценное использование 7z.dll вместо 7zxa.dll, перекомпилировано, подписано кодом и переименовано в is7z.dll. Он поддерживает несколько форматов архива (.7z, .zip, .rar и другие), хотя и не так много, как оригинальный 7z.dll, чтобы уменьшить размер. Кроме того, он поддерживает многотомные архивы.
Новая тема для документации в ArchiveExtraction есть таблица, обобщающая различия между этими методами.
- Добавлен новый флаг раздела [Файлы] Extractarchive и параметр ExtractArchivePassword, предназначенный для обеспечения бесшовной интеграции и извлечения архивов.
- Поддерживаемые форматы архивов, помимо .7z, а также поддержка защищённых паролем и многотомных архивов зависят от упомянутой директивы ArchiveExtraction, которая не должна быть установлена на базовый.
- Flag extractarchive должен быть комбинирован с внешними и ignoreversion флагами. Обычно он также сочетается с флагами recursesubdirs и createallsubdirs.
- Использование солидного архива не рекомендуется; Производительность извлечения может снижаться в зависимости от размера твёрдого блока.
- В остальном извлечение архива ведёт себя так же, как копирование внешних файлов. Например, он поддерживает автоматическую удаление извлечённых файлов и может комбинироваться с теми же другими флагами и параметрами.
- Пример сценария:
[Setup]ArchiveExtraction=enhanced/nopassword
[Files]
{tmp}\MyProg-ExtraReadmes.7z"; DestDir: "{app}"; \ Flags: external extractarchive recursesubdirs createallsubdirs ignoreversion
- Архивное извлечение теперь учитывает состояние перенаправления файловой системы, установленное 64-битным режимом установки, флагами ввода и функцией поддержки EnableFsRedirection.
- Обновлённые скрипты Pascal:
- Новая функция поддержки ExtractArchive заменяет устаревший Extract7ZipArchive. ExtractArchive включает дополнительный параметр для опционального указания пароля.
- ExtractArchive и CreateExtractionPage теперь перезаписывают файлы только для чтения, которые уже существуют в адресной папке, без запроса пользователя. Раньше это приводило к ошибке извлечения.
- Добавлена новая функция поддержки MapArchiveExtensions, позволяющая извлекать архивы с помощью пользовательских расширений, таких как самораспакующиеся архивы.
- Добавлена новая функция AddEx для поддержки класса TExtractionWizardPage для добавления архивов с паролем.