7-Zip внутри Inno Setup.
Как код Игоря Павлова работает в Inno Setup — и какие компромиссы остаются.
7-Zip внутри Inno Setup
При установке программы сначала приходится доставить её файлы, а затем развернуть их на компьютере. Архиватор 7-Zip известен отдельным окном с папками, но его код работает и внутри чужих продуктов. Один проверяемый пример — Inno Setup, инструмент Jordan Russell и Martijn Laan для создания установщиков Windows. Его документация прямо указывает поддержку 7-Zip LZMA/LZMA2. Значимость этой истории — в состоявшемся повторном использовании технологии, а не в обещании мирового рекорда. Авторство здесь можно отделить от бренда. В исходниках 7-Zip 26.05 указан Игорь Павлов, а LZMA SDK назван написанным им набором средств разработки. Российскую связь подтверждает публикация Threatpost от 12 мая 2016 года, называющая Павлова российским программистом. В ответе на форуме проекта в январе 2007-го он писал, что работает только над 7-Zip, и объяснял ограничения получения платежей для аккаунтов из России. Последнее — историческое свидетельство самого автора, а не справка о его нынешнем месте жительства. Точный сегодняшний адрес разработки и полная цепочка прав на каждый вклад редакцией не установлены. Поэтому категория материала — «Российские корни». Как работает сжатие? Вместо повторной записи одинаковой последовательности байтов словарный алгоритм может сохранить указание на уже встречавшийся фрагмент. LZMA развивает подход LZ77; декодер восстанавливает исходные данные, используя словарь и своё состояние. Это объяснение принципа, а не описание каждого шага реализации. В 7z можно выбирать разные методы: название контейнера не означает, что любой архив обработан одним и тем же алгоритмом. SDK выносит код из отдельной программы в библиотечные функции и примеры, которые другой разработчик может встроить в свой продукт. В Inno Setup это можно проверить по двум разным задачам. Для сжатия файлов установщика справка указывает значение Compression по умолчанию lzma2/max. Для извлечения дополнительных архивов режим basic использует 7z ANSI-C Decoder из SDK Павлова; авторы перечисляют свои изменения, включая поддержку Unicode и сообщения об ошибках. Более функциональные режимы используют другие библиотеки из 7-Zip. Открытый репозиторий jrsoftware/is7z показывает адаптацию кода для Inno Setup. Это прямые документы пользователя технологии. Они подтверждают внедрение, но не являются независимым испытанием превосходства 7-Zip над конкурентами. Размер архива — лишь одна часть инженерного выбора. В том же установщике доступны deflate и bzip2; скорость, память и степень сжатия имеют значение вместе. Например, таблица Inno Setup для LZMA max указывает примерно 8 МБ памяти при распаковке и 98 МБ при сжатии. Это параметры указанного режима, не замеры любого архива на любом компьютере. Отдельное ограничение режима извлечения basic: для файла размером 1 ГБ требуется как минимум 1 ГБ памяти. Его нельзя смешивать с памятью собственно LZMA-декодера. Редакция не проводила общего сравнительного теста и не выводит преимущество над ZIP или RAR из одного факта внедрения. Открытые условия помогли коду стать встраиваемым. LZMA SDK размещён автором в public domain. Полный 7-Zip имеет другие условия: LGPL, BSD и ограничения unRAR. Лицензионный файл также прямо называет сторонний вклад Apple, Facebook и Yann Collet в отдельные компоненты. Поэтому весь архиватор нельзя объявлять разработкой без иностранных технологий, а условия SDK нельзя автоматически переносить на весь продукт. Inno Setup остаётся самостоятельной зарубежной программой со своими авторами. У применения есть обратная сторона: вместе с полезным кодом можно унаследовать его ошибки. CISA 6 февраля 2025 года включила CVE-2025-0411 в каталог реально эксплуатируемых уязвимостей. По исследованию Trend ZDI, в сентябре 2024 года атаки использовали обход отметки Windows о происхождении вложенных архивов из интернета; исправление появилось в 24.09. Это подтверждённый эпизод безопасности, а не доказательство намеренной закладки. Указанные исследователем предположения о происхождении атак не устанавливают причастность разработчика. Есть и более свежий технический пример: GitHub Security Lab описала переполнение буфера в обработчике NTFS версии 26.00 и выпуск исправления 26.01 в апреле 2026 года. Это ошибка конкретного обработчика, её нельзя автоматически приписывать каждому использованию LZMA SDK или любому установщику Inno Setup. Журнал проекта перечисляет последующие исправления в 26.02–26.05; на дату проверки официальный сайт предлагает 26.05 от 21 октября 2026-го. Наличие новой версии само по себе не удостоверяет отсутствие иных ошибок. Редакционный вывод ограничен проверенным: российский вклад относится к разработчику и его коду, а зарубежное применение подтверждено документацией и исходниками Inno Setup. Это долгая инженерная история с продолжающимся развитием, а не новая технология, внезапно появившаяся в 2026 году.
На чём основан довод
В исходниках 7-Zip 26.05 указан copyright Игоря Павлова за 1999–2026 годы.
Igor Pavlov / ip7zThreatpost в публикации 12 мая 2016 года называет разработчика 7-Zip Игоря Павлова российским программистом.
Threatpost; Chris Brook10 января 2007 года Павлов написал на форуме проекта, что работает только над 7-Zip.
SourceForge; Igor PavlovОфициальный сайт предлагает 7-Zip 26.05 с датой 21 октября 2026 года.
Igor Pavlov / 7-zip.orgInno Setup создан Jordan Russell и Martijn Laan для подготовки установщиков Windows.
Jordan Russell и Martijn Laan / Inno SetupДокументация Inno Setup прямо указывает встроенную поддержку сжатия 7-Zip LZMA/LZMA2.
Jordan Russell и Martijn Laan / Inno SetupВ прочитанной справке Inno Setup значение Compression по умолчанию — lzma2/max.
Inno Setup, техническая документацияРежим basic в Inno Setup использует 7z ANSI-C Decoder из LZMA SDK Игоря Павлова с перечисленными авторами изменениями.
Inno Setup, техническая документацияДокументация Inno Setup предупреждает: режим basic распаковки файла размером 1 ГБ требует как минимум 1 ГБ оперативной памяти.
Inno Setup, техническая документацияРепозиторий jrsoftware/is7z содержит изменения 7-Zip для Inno Setup и сборку компактной библиотеки 7z.dll.
jrsoftware, репозиторий разработчиков Inno SetupВ документации 7z LZMA описан как улучшенная версия LZ77, а LZMA2 — как развитие LZMA.
Igor Pavlov / 7-zip.orgСогласно SDK, его C/C++-код является подмножеством исходников 7-Zip и доступен в public domain.
Igor Pavlov / 7-zip.orgВ таблице Inno Setup для режима LZMA max указаны примерно 8 МБ при распаковке и 98 МБ при сжатии.
Inno Setup, техническая документацияЛицензия 7-Zip отдельно называет код Apple для LZFSE, Facebook для ZSTD и Yann Collet для XXH64.
Igor Pavlov / 7-zip.orgЛицензия полного 7-Zip сочетает LGPL, BSD и специальные ограничения для кода unRAR; она отличается от public domain LZMA SDK.
Igor Pavlov / 7-zip.org6 февраля 2025 года CISA включила CVE-2025-0411 в каталог эксплуатируемых уязвимостей.
CISA; официальный бюллетень GovDeliveryTrend ZDI сообщил о наблюдении эксплуатации CVE-2025-0411 в сентябре 2024 года и исправлении в 7-Zip 24.09.
Trend ZDI / TrendAI; Peter GirnusGitHub Security Lab проверила NTFS-обработчик версии 26.00 и сообщает об исправлении GHSL-2026-140 в 26.01 от 27 апреля 2026 года.
GitHub Security Lab; Jaroslav LobačevskiЖурнал 7-Zip перечисляет дополнительные исправления уязвимостей в версиях 26.02, 26.03, 26.04 и 26.05.
Igor Pavlov / 7-zip.orgЕсть важный нюанс
Довод — подтверждённое применение кода в Inno Setup, без общего превосходства по сжатию. Российская связь относится к автору: точное нынешнее место разработки не установлено. Полный 7-Zip содержит сторонний код и имеет иные условия, чем LZMA SDK. Скорость и память зависят от режима. В старых версиях были реально эксплуатировавшиеся уязвимости; ошибки отдельных обработчиков не следует автоматически приписывать каждому встраиванию SDK.
Откройте и убедитесь
Threatpost, 12 мая 2016: Игорь Павлов — российский программист и разработчик 7-Zip
Threatpost; Chris Brook · 26.10.2026
Независимый источникОтветы Игоря Павлова о работе над 7-Zip и платежах из России, январь 2007
SourceForge; Igor Pavlov · 26.10.2026
Первичный источник7-Zip 26.05: авторство, LZMA SDK и сборка исходников
Igor Pavlov / ip7z · 26.10.2026
Заявление компании7-Zip: действующая версия 26.05 от 21 октября 2026
Igor Pavlov / 7-zip.org · 26.10.2026
Заявление компанииLZMA SDK: состав и передача кода в public domain
Igor Pavlov / 7-zip.org · 26.10.2026
Заявление компанииФормат 7z: LZMA, LZMA2 и другие методы
Igor Pavlov / 7-zip.org · 26.10.2026
Заявление компанииLZMA: интерфейсы кодирования, декодирования и память словаря
Igor Pavlov / ip7z · 26.10.2026
Заявление компанииЛицензия 7-Zip: LGPL, BSD и ограничения unRAR
Igor Pavlov / 7-zip.org · 26.10.2026
Первичный источникInno Setup: авторы и поддержка 7-Zip LZMA/LZMA2
Jordan Russell и Martijn Laan / Inno Setup · 26.10.2026
Первичный источникInno Setup: выбор сжатия, lzma2/max и расход памяти
Inno Setup, техническая документация · 26.10.2026
Первичный источникInno Setup: декодер из SDK Павлова и разные режимы распаковки
Inno Setup, техническая документация · 26.10.2026
Первичный источникis7z: исходники 7-Zip с изменениями для Inno Setup
jrsoftware, репозиторий разработчиков Inno Setup · 26.10.2026
Первичный источникGHSL-2026-140: переполнение буфера в NTFS-обработчике 7-Zip
GitHub Security Lab; Jaroslav Lobačevski · 26.10.2026
Первичный источникCISA, 6 февраля 2025: CVE-2025-0411 добавлена в Known Exploited Vulnerabilities
CISA; официальный бюллетень GovDelivery · 26.10.2026
Первичный источникCVE-2025-0411: наблюдавшиеся атаки и исправление 24.09
Trend ZDI / TrendAI; Peter Girnus · 26.10.2026
Первичный источникИстория 7-Zip: даты версий и исправления уязвимостей
Igor Pavlov / 7-zip.org · 26.10.2026
Заявление компанииУ хорошего довода есть история
Источники и изменения должны оставаться на виду.