§3. Типы архивов Самораспаковывающийся архив
Самораспаковывающийся или самоизвлекающийся архив (англ. self-extracting archive, сокращённо «SFX arсhive») — файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют отдельной программы для их распаковки (получения исходных файлов, из которых они созданы), если исполняемый код можно выполнить в указанной операционной системе. Это удобно, когда неизвестно, есть ли у пользователя, которому передаётся архив, соответствующая программа распаковки.
Основной способ использования самораспаковывающихся архивов — создание программ для установки ПО без использования систем управления пакетами.
Исполняемый код, присоединённый к архиву, может представлять собой полноценную программу распаковки. Так как существует вероятность выполнения кода распаковщика, самораспаковывающийся архив или замаскированный под него файл может использоваться для распространения вредоносного ПО.
Примеры:
Примеры программ, способных создавать самораспаковывающиеся архивы:
7-Zip
Ненастраиваемые 7z SFX архивы для Microsoft Windows.
Существует сторонний настраиваемый модуль — тоже для Windows.
ARJ
Для различных платформ.
p7zip
7zCon.sfx — ненастраиваемый, для указанной пользователем платформы; поддерживает просмотр, автоматическую перезапись файлов, проверку целостности и зашифрованные архивы.
PKZIP
Только в зарегистрированных версиях, начиная с 2.70.
RAR и WinRAR
Возможно создание настраиваемых самораспаковывающихся RAR (и ZIP в WinRAR) архивов с русским и английским интерфейсом. Настройка архива производится путем задания комментария или в окне "Дополнительные параметры SFX". Возможно изменение значка.
zipSfx
Настраиваемый, поддерживает ZIP формат. Настройка производится подготовкой текстового файла и последующей "склейкой" файлов.
Также такие архивы в своих форматах для соответствующих платформ могут создавать StuffIt и WinZip.
Существуют также программы, которые создают архивы в виде сценариев оболочки UNIX. Это часто используется для создания программ установки коммерческого ПО для UNIX-подобных ОС. Примеры: makeself и более старая shar.
Совместимость
Так как программа для одной платформы часто не может выполняться на других, то и распаковка самораспаковывающегося архива, созданного для одной системы, на других может быть затруднена.
Самораспаковывающиеся архивы в некоторых форматах — например, RAR и ZIP — могут быть распакованы самостоятельной программой распаковки.
Также можно создать код, который будет поддерживаться без дополнительных программ сразу на нескольких операционных системах — например, DOS и OS/2.
Или код, который будет поддерживаться стандартной поставкой одной ОС, и дополнительными средствами в другой — например, с использованием Python или shell (см. выше).
Архив с кодом под Win32 может потребовать дополнительных действий после распаковки с помощью Wine на UNIX-подобной системе — в частности, установки битов прав доступа.