7-Zip плагины\Smart7z
Smart7z - это плагин для популярного архиватора 7-Zip, позволяющий производить упаковку файлов в 7z архив с использованием гибких настроек. Например, можно настроить, что бы jpg файлы упаковывались с использованием метода LZMA, wav файлы с использованием метода WavPack2, текстовые файлы с использованием метода PPMD, а все остальное с использованием метода LZMA2. Подобное разделение может значительно улучшить качество сжатия.
Установка
Установочный дистрибутив Smart7z представляет собой простой zip архив, в котором находятся 3 файла:
- Smart7z.64.dll - 64 битная версия плагина
- Smart7z.32.dll - 32 битная версия плагина
- Smart7z.ini - пример файла настроек
- ReadMe.txt - краткая инструкция
Для установки плагина в папке, в которую установлена программа 7-Zip, необходимо создать папку Formats. В созданную папку необходимо скопировать либо файл Smart7z.64.dll, либо Smart7z.32.dll, в зависимости от разрядности программы 7-Zip, и файл Smart7z.ini. После этого 7-Zip при запуске будет автоматически находить плагин Smart7z.
Использование
Важно: Плагин предназначен только для создания НОВЫХ 7z файлов. При необходимости модификации созданного 7z файла его можно легко открыть как в самой программе 7-Zip, так и в любой другой программе, поддерживающей формат 7z.
Важно: Плагин имеет экспериментальный характер, поэтому всегда проверяйте созданные архивы на корректность.
Для упаковки с использованием плагина Smart7z нужно выбрать в 7-Zip стандартную команду упаковки. После появления окна Add To Archive нужно выбрать в поле Archive format формат Smart7z:

Перед упаковкой выбранных файлов происходит их автоматический анализ, и в зависимости от результата анализа для каждого файла выбирается свой метод сжатия.
Анализ файла происходит в соответствии с файлом настроек. Файл настроек можно задать вводом дополнительного параметра в строку Parameters:
ini=filename
где filename - это имя файла настроек без полного пути. Имя не должно содержать пробелы, а сам файл должен располагаться в папке плагина. Если параметр ini не указан, то будет использован файл настроек Smart7z.N.ini из папки плагина, где N - это числовое представление выбранного уровня сжатия, т.е. для уровня Ultra будет использован файл настроек Smart7z.9.ini, для Maximum будет использован файл настроек Smart7z.7.ini и т.д. Если такой файл не найден, то будет использован файл настроек Smart7z.ini из папки плагина.
Файл настроек поделен на секции, каждая секция описывает конкретный метод сжатия и имеет следующий вид:
:default: m=%LZMA2% *.pdf *.rtf *.dat "some name*.dat"
Первая строка секции идентифицирует начало секцию и состоит из имени секции, обрамленного символами ":", и настроек сжатия, с которыми будут сжиматься файлы, отнесенные к этой секции. В данном случае именем является "default", а настройками сжатия является строка "m=%LZMA2%" (%LZMA2% - это переменная, описание переменных смотрите ниже). Если в настройках не указан параметр s (размер непрерывного блока), то его значение будет устанавлено в 2Gb.
Остаток секции заполнен масками файлов. Допускается произвольное количество масок в строке, разделителем масок в строке является пробел. При необходимости использования пробела в маске такая маска должны быть обрамлена в двойные кавычки.
Секции, имеющие одинаковые настройки сжатия в конечном итоге будут объединены в одну, поэтому можно не бояться создавать несколько секций с одинаковыми настройками.
Секция вместе с масками может быть временно отключена, если в начале первой строки добавить символ "-", т.е. первая строка приобретет следующий вид:
-:default: m=%LZMA2%
Последней секцией файла настроек является секция c именем sorting. В этой секции перечислены не маски файлов, а просто расширения файлов. Эта секция имеет особое значение - она определяет, как будет сортироваться список файлов в соответствии с расширением. Чем раньше указано расширение, тем выше в списке окажется файл с таким расширением. Размещение однотипных файлов рядом (например, файлов MS Office doc и xls) дает лучшее сжатие.
Группировка упаковываемых файлов по секциям
При анализе файлов используется следующая последовательность проверок:
- Проверяется соответствие имени упаковываемого файла с масками, перечисленными в каждой из секций (путь к файлу не учитывается). При первом найденном соответствии файл автоматически соотносится с секцией, содержащей совпадающую маску.
- Если соответствия с маской обнаружить не удалось, то производится анализ содержимого файла. На этой стадии файл может быть отнесен к предопределенным секциям, имеющим значение по умолчанию (о таких секциях смотрите ниже). Например, exe файл может быть отнесен к секции "BCJ2", а wav файл отнесен к секции "WavPack2". В текущей версии плагина могут быть проанализированы и автоматически распределены по группам следующие типы файлов:
- PE файлы (.exe, .dll, .com, .sfx, etc.)
- ELF файлы
- Mach-O файлы
- Файлы, которые могут быть упакованы плагином WavPack
- WAV файлы
- Текстовые файлы
- Если анализ содержимого файла не привел к результату, то файл будет отнесен к секции с именем "Default".
После проведения анализа всех файлов начинается упаковка файлов в соответствии с настройками соответствующих секций.
Поскольку операция анализа содержимого файла является достаточно ресурсоемкой по сравнению с операцией проверки соответствия имени файла и маскам, то для уменьшения общего времени анализа рекомендуется заполнять секции бо́льшим количеством масок с известными расширениями. В тоже время крайне не рекомендуется добавлять маски, содержащие расширения файлов, тип которых определяется автоматически на основе содержимого (exe, dll, wav и прочие).
Переменные
Для удобства настроек предопределен ряд переменных. Также могут быть добавлены и новые переменные. Переменные используются при описании настроек сжатия.
Предопределенны следующие переменные:
Имя | Значение по умолчанию | |
---|---|---|
В 64 битной версии плагина | В 32 битной версии плагина | |
%LZMA% | LZMA:x9:mt2:d1536m | LZMA:x9:mt2:d128m |
%LZMA2% | LZMA2:x9:mt2:d1536m | LZMA2:x9:mt2:d128m |
%PPMD% | PPMd:x9:mem1g |
Пример:
В 64 битной версии плагина строка
:default: m=%LZMA2%
будет интерпретироваться как
:default: m=LZMA2:x9:mt2:d1536m
Для установки нового нужного вам значения или для добавления новой переменной нужно добавить в начало ini файла строку следующего вида:
::SET %LZMA% NewValue
где %LZMA% - это одна из переменных, а NewValue - это новое значение переменной. NewValue не может содержать другую переменную.
Предопределенные секции
Предопределенные секции используются для сопоставления с файлами, анализируемыми по содержимому. Секции со следующими именами будут созданы автоматически, если они отсутствуют в ini файле:
Имя секции | Применяется к | Настройки по умолчанию |
---|---|---|
Default | Сжатие по умолчанию | %LZMA2% |
Txt | Текстовые файлы | %PPMD% |
BCJ2 | Файлы с исполняемым кодом для Intel совместимых процессоров | m0=BCJ2 m1=%LZMA2% m2=LZMA:d20:fb128:lc0:lp2 m3=LZMA:d20:fb128:lc0:lp2 mb0s0:1 mb0s1:2 mb0s2:3 |
ARM | Файлы с исполняемым кодом для процессоров ARM | f=ARMT m=%LZMA2%:lc2:lp1 |
ARMT | Файлы с исполняемым кодом для процессоров ARM Thumb-2 | f=ARMT m=%LZMA2%:lc2:lp1 |
IA64 | Файлы с исполняемым кодом для процессоров Intel 64 | f=IA64 m=%LZMA2%:pb4:lc0:lp4 |
SPARC | Файлы с исполняемым кодом для процессоров SPARC | f=SPARC m=%LZMA2%:lc1:lp2 |
PPC | Файлы с исполняемым кодом для процессоров PowerPC | f=PPC m=%LZMA2%:lc1:lp2 |
WavPack2 | Файлы с несжатым аудио в формате PCM | m0=WavPack2:x9 m1=lzma:d20 mb0s1:1 |
Delta2 | f=delta:2 m=%LZMA2%:lc2:lp1 | |
Delta4 | f=delta:4 m=%LZMA2%:lc1:lp2 | |
Delta8 | f=delta:8 m=%LZMA2%:pb3:lc0:lp3 | |
Delta16 | f=delta:16 m=%LZMA2%:pb4:lc0:lp4 | |
DeltaN, N - число от 1 до 256 кроме 2, 4, 8 и 16 | f=delta:N m=%LZMA2% |
Использование дополнительных кодеков
При обнаружении установленного в программу 7-Zip плагина WavPack он автоматически будет применяться для упаковки файлов с несжатым аудио в формате PCM. Для отключения использования данного кодека необходимо добавить в начало ini файла следующую строку:
::DISABLE WavPack2
Актуальная версия
- Версия плагина: 1.2.1
- Размер установочного дистрибутива: 2097 KB
- Дата установочного дистрибутива: 12 Apr 2020