Самораспаковывающийся архив. Подготовка к созданию SFX

Е ще один, пожалуй, самый уникальный, тип архивов – самораспаковывающиеся архивы с расширениями .exe . Их уникальность необычна: sfx -архив содержит в себе и архивную часть, и специальный исполняемый код. Поэтому, он извлекается самостоятельно, и для его распаковки уже никакой архиватор, вообще, не нужен. Согласитесь, когда нет уверенности, что в нужный момент архиватор WinRAR окажется под рукой, такой архив – просто находка!

Зачем нужны sfx-архивы

Необходимость в самораспаковывающихся архивах, бывает, возникает совершенно неожиданно: для кого-то главное, чтобы упакованные в архиве данные в любой ситуации оставались бы доступными, а дискового пространства занимали минимум, другим же, важно чтобы архив извлекался автоматически, в заранее указанное место. Конечно же, области использования sfx -архивов вовсе не ограничиваются только этими случаями. Возможности этого типа архивов очень широкие, буквально до абсолютно полной автоматизации извлечения данных с заранее определенными ключами, вплоть до организации абсолютно закрытого для пользователя процесса инсталляции.

Создать sfx-архив в WinRAR - просто, как дважды два

Классический способ запуска программы WinRAR, - использование меню «Пуск» . Но все же, большее количество пользователей предпочитает делать это в два клика мышкой по иконке архиватора на рабочем столе или из контекстного меню.

В окне программы навигация по каталогам ничем не отличается от обычной навигации с обозревателем. Находим папку с файлами, подлежащими архивации, выделяем ее и нажимаем «Добавить» .

Дальнейшая процедура создания такого типа архивов в WinRAR ничем принципиальным не отличается, разнятся лишь некоторые параметры:
Прежде всего, указывается имя архива, например, sochi2014 . Хорошо, когда оно осмысленное, связанно с содержанием архива и состоит из цифр и латинских букв. Согласитесь, что многое сию минуту представляется абсолютно понятным, только вот уже через несколько дней легко забывается, так, что и комментарии не всегда помогают вспомнить.
Во-вторых, уточняем его расширение: rar , zip либо rar5 .
В-третьих, выставляем флаг рядом с настройкой «Создать SFXархив» .
В-четвертых, и в-пятых, в выпадающих списках определяем метод сжатия.

И уточняем оптимальный размер словаря.

А при необходимости ограничить доступ к архиву, заходим на вкладку «Установить пароль» , чтобы указать его или даже зашифровать сам архив.

Секреты конфигураций SFX-архивов

Теперь пора заняться конфигурацией параметров sfx -архива. Собственно для этого и существует на вкладке «Дополнительно» раздел «Параметры SFX» .

Прежде всего, уточняются общие параметры архива: следует указать конечную папку извлечения данных из будущего архива.

Конечно, это не всегда возможно, так, что если явного указания не будет, то перед извлечением sfx -архива его предложит вести инсталлятор.

Другие нужные настройки конфигурации задаются в окне «Режимы» : именно здесь возможно организовать весь процесс извлечения данных из sfx -архива. К примеру, предусмотреть необходимость извлечения всех файлов, составляющих архив, сначала в специальную временную папку, которую после завершения процесса удаляют.

Подобная необходимость возникает после инсталляции программ, чтобы не захламлять папки и диск компьютера уже ненужными файлами. Здесь же указывается заголовок окна запроса и сам текст запроса окна инсталлятора, а также режим отображения процесса: отображать все , без начального диалогового окна или скрыть все . Впрочем, чаще всего такой необходимости не возникает, и извлечение архива остается полностью прозрачным – так и проще, и привычнее.

Весьма полезной бывает также вкладка «Текст и графика» , здесь удобно формировать заголовок и текст окна SFX , кроме того, выбрать логотип и значок sfx -архива.

В общем, на вкладках можно найти еще немало полезных свойств и настроек архивирования, побродить по ним и немного поэкспериментировать Вы сможете чуть позже и сами. Когда все настройки определены, еще раз проверяем все ли сделано и нажимаем «ОК» . Через несколько коротких мгновений Вы получите необходимый sfx-архив .

Несмотря на обилие бесплатных архиваторов всех мастей, проприетарный WinRAR продолжает пользоваться широкой популярностью среди пользователей всего мира. Возможно это потому, что он единственный позволяет создавать архив...

Самораспаковывающийся (SFX, от англ. SelF-eXtracting) архив - это архив, к которому присоединен исполняемый программный модуль, позволяющий извлекать файлы самостоятельно без привлечения программы-архиватора. SFX-архив особенно удобен в тех случаях, когда его нужно передать кому-либо, но нет уверенности, что у адресата есть нужный архиватор.

Для создания нового SFX-архива необходимо при формировании архива включить опцию «Создать SFX-архив» в окне диалога ввода имени и параметров архива (Рис.5).

Если нужно создать SFX-архив из уже существующего обычного архива, то следует войти в архив и вызвать команду «Преобразовать архив(ы) в SFX» в меню «Операции» (либо нажать кнопку «SFX»).

При выполнении команды «Преобразовать архив(ы) в SFX» появляется окно, в котором предлагается выбрать тип SFX-модуля. По умолчанию используется модуль Default.sfx, связанный с русскоязычный Windows - интерфейсом. Остальные SFX-модули применяются лишь в редких особых случаях.

Извлечение файлов из SFX-архива происходит автоматически простым запуском файла архива в среде Windows (двойным щелчком, как обычной программы). Папка назначения извлекаемых файлов указывается в специальном окне, появляющемся после запуска файла архива. Имя папки можно ввести вручную или выбрать в дереве папок. Если введенная папка назначения не существует, она будет заранее создана перед началом извлечения.

Наряду с этим способом WinRAR позволяет извлекать файлы из SFX-архива по обычной схеме, как из обычного архива. Если нет желания запускать на выполнение SFX-архив (например, при отсутствии гарантий, что в нем нет вирусов), то можно в обычном режиме просмотреть этот архив или извлечь из него нужные файлы.

Упражнение. В текущей папке создайте SFX -архив WinRAR с именем MyArch 3 и поместите в него какую-либо группу файлов. Выйдите из WinRAR . Не входя в WinRAR , распакуйте архив MyArch 3 и поместите его содержимое в новой папке Files 3.

Многотомный архив

Многотомный архив - это архив, разделенный на несколько отдельных частей. Он используется при размещении архива большого размера на нескольких дискетах или иных сменных носителях. Тома - это части архива, каждая из них может находиться в виде отдельного файла на отдельном носителе. Тома поддерживаются только в формате RAR, создание ZIP-томов в WinRAR невозможно.

Для получения многотомного архива необходимо при создании архива ввести какое-либо конкретное значение в поле«Разделить на тома размером (в байтах)» в окне диалога ввода имени и параметров архива (Рис.5).

По умолчанию размер тома вводится в байтах, его также можно задать в килобайтах, в тысячах байт, в мегабайтах и в миллионах байт. Для этого нужно после числового значения поставить один из следующих буквенных идентификаторов (все буквы латинские):

k – килобайты (множитель 1024);

m – мегабайты (1 Мбайт = 1048576 байт);

M – миллионы байт (множитель 1 000 000);

g – гигабайты (1 Гбайт = 1073741824 байт);

G – миллиарды байт (множитель 1 000 000 000).

Размер тома можно также выбрать из связанного с указанным полем выпадающего списка, куда помещаются ранее использовавшиеся значения. Если требуется максимально заполнить свободное пространство на сменных дисках, следует выбрать в списке пункт «Автоопределение».

Созданные тома архива получают имена вида: ‘имя_архива.partN.rar’, где N – порядковый номер тома.

Многотомные архивы могут быть также самораспаковывающимися и непрерывными. Первый SFX-том имеет расширение, отличное от « .rar», например, для SFX-томов DOS используется расширение « .exe».

Уже созданные многотомные архивы не допускают изменений, в них нельзя добавлять, обновлять или удалять файлы.

Для распаковки многотомного архива необходимо начинать извлечение с первого тома. Если тома находятся на несменном носителе (например, на жёстком диске), то сначала необходимо переписать все тома в одну папку.

Упражнение. Выберите какой-либо файл (желательно – большого объема) и с помощью команды «Показать информацию» оцените возможный общий объем N архива этого файла. Создайте многотомный архив для этого файла, указав в качестве размера тома величину N /3.

И исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют отдельной программы для их распаковки (получения исходных файлов, из которых они созданы), если исполняемый код можно выполнить в указанной операционной системе. Это удобно, когда неизвестно, есть ли у пользователя, которому передаётся архив, соответствующая программа распаковки.

Основной способ использования самораспаковывающихся архивов - создание программ для установки ПО без использования систем управления пакетами .

Исполняемый код, присоединённый к архиву, может представлять собой полноценную программу распаковки. Так как существует вероятность выполнения кода распаковщика, самораспаковывающийся архив или замаскированный под него файл может использоваться для распространения вредоносного ПО.

Примеры

Примеры программ, способных создавать самораспаковывающиеся архивы:

7-Zip
  • Ненастраиваемые 7z SFX архивы для Microsoft Windows .
  • Существует сторонний настраиваемый модуль - тоже для Windows.
ARJ
  • Для различных платформ.
p7zip
  • 7zCon.sfx - ненастраиваемый, для указанной пользователем платформы; поддерживает просмотр, автоматическую перезапись файлов, проверку целостности и зашифрованные архивы.
PKZIP
  • Только в зарегистрированных версиях, начиная с 2.70.
RAR и WinRAR
  • Возможно создание настраиваемых самораспаковывающихся RAR (и ZIP в WinRAR) архивов с русским и английским интерфейсом. Настройка архива производится путем задания комментария или в окне "Дополнительные параметры SFX". Возможно изменение значка.
zipSfx
  • Настраиваемый, поддерживает ZIP формат. Настройка производится подготовкой текстового файла и последующей "склейкой" файлов.
  • Создание настраиваемых самораспаковывающихся архивов для Microsoft Windows с выбором компрессора (ZLIB , BZIP2 , LZMA)
  • Русскоязычный интерфейс программы
  • Настройка архива производится через графический интерфейс программы

Данная программа создана исключительно для создания многофункциональных SFX архивов / пакетов инсталляторов и обладает широкими возможностями в плане функционала и возможностей создаваемого архива

Также такие архивы в своих форматах для соответствующих платформ могут создавать StuffIt и WinZip .

Существуют также программы, которые создают архивы в виде сценариев оболочки UNIX . Это часто используется для создания программ установки коммерческого ПО для UNIX-подобных ОС . Примеры: makeself и более старая shar.

Совместимость

Так как программа для одной платформы часто не может выполняться на других, то и распаковка самораспаковывающегося архива, созданного для одной системы, на других может быть затруднена.

Самораспаковывающиеся архивы в некоторых форматах - например, RAR и ZIP - могут быть распакованы самостоятельной программой распаковки.

Также можно создать код, который будет поддерживаться без дополнительных программ сразу на нескольких операционных системах - например, DOS и OS/2 .

Или код, который будет поддерживаться стандартной поставкой одной ОС, и дополнительными средствами в другой - например, с использованием Python или shell (см. выше).

Архив с кодом под Win32 может потребовать дополнительных действий после распаковки с помощью Wine на UNIX -подобной системе - в частности, установки битов прав доступа.

мошенничество в России

В России такой тип ПО завоевал популярность у различного рода интернет мошенников. Под видом бесплатного ПО, либо фото и видео информации пользователям предлагалось скачать себе на компьютер самораспаковывающиеся архив, после в процессе открытия файла программа предлагала отослать "СМС" для завершения распаковки и получения нужной информации. Однако даже в случае отправки платного "СМС" пользователь в лучшем случае получал "пустышку" а в ряде случаев за место искомого файла на компьютер попадало вредоносное-вирусное ПО.

См. также


Wikimedia Foundation . 2010 .

Смотреть что такое "Самораспаковывающийся архив" в других словарях:

    Многотомный архив архив компьютерных программ и данных, разбитый на несколько частей (томов). В утилитах сжатия с возможностью задания объёма томов есть много преимуществ. Во первых, такое позволяет человеку скачать файл по частям в удобное … Википедия

    - (англ. solid archive) архив, упакованный таким образом, что все сжимаемые файлы рассматриваются как один непрерывный поток данных. При упаковке каждого файла (кроме первого) используется информация, содержащаяся в предыдущих файлах. К… … Википедия

    В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактиро … Википедия

    Заплатка, или патч (англ. patch /pætʃ/ заплатка) автоматизированное отдельно поставляемое программное средство, используемое для устранения проблем в программном обеспечении или изменения его функционала, а также сам процесс установки патча (… … Википедия

    См. SFX (значения) Самораспаковывающийся архив (англ. self extracting archive, сокращённо «SFX archive») файл, компьютерная программа, объединяющая в себе архив и исполняемый код для его распаковки. Такие архивы, в отличие от обычных, не требуют … Википедия

    Содержание 1 Классификация параллельных архитектур по Флинну 2 Суперскалярные и VLIW машины … Википедия

    Англ. SFX (/ɛs ɛf ɛks/) может означать: Спецэффекты (англ. Special effects /ˈspeʃəl ɪˈfɛkts/) Звуковые эффекты (например, семплы (англ. sample /ˈsɑ:mpl/)) (англ. sound effects /saʊnd ɪˈfɛkts/) Самораспаковывающийся архив (англ … Википедия


Самораспаковывающийся архив – это архив с файлами, который не требует для извлечения своего содержимого никаких посторонних программ. Это делает его более удобным для передачи информации между пользователями.

Значок самораспаковывающегося архива может быть разным, поскольку он зависит от программы-архиватора, в котором вы будут его создавать, а также от её версии.

Процесс создания
Для того, чтобы создать самораспаковывающийся архив необходимо проделать все те же операции, что и при . Для примера будем использовать архиватор WinRAR.

Выбираем папку или файлы, которые нужно заархивировать. Щелкаем по ним правой кнопкой мыши и в контекстном меню нажимаем «WinRAR »→ «Add to archive » (Добавить в архив).

Затем появится окно задания параметров для будущего архива. Вот тут-то и самое главное. Чтобы ваш архив был самораспаковывающимся необходимо установить флажок напротив «Create SFX archive » (Создать SFX архив).


Как вы видите на рисунке выше после установки этого флажка, рядом с названием будущего архива, стоит расширение.exe, о котором мы и говорили ранее в статье.

После того, как вы установите все параметры для архива – нажмите кнопку «ОК ». Начнется процесс создания непосредственно самораспаковывающегося архива. Поскольку я использую более новую версию архиватора WinRAR, то у меня значок его выглядит так, но опять таки не переживайте его у вас ярлык выглядит по-другому.

Установка параметров
Для задания параметров самораспаковывающегося архива существует специальная кнопка «SFX options » (Параметры SFX). Она находится во вкладке «Advanced » (Дополнительно).


Затем откроется окно, в котором вы можете изменить иконку архива, указать место распаковки, добавить лицензионные данные (особенно полезно, если вы при помощи самораспаковывающегося архива продаете свою программу, скрипт, плагин и т.д.), модули и многие другие параметры.

Процесс извлечения содержимого
Для того чтобы извлечь содержимое самораспаковывающегося архива необходимо дважды щелкнуть по нему левой кнопкой мыши. В открывшемся окне, используя кнопку «Browse », указываем место распаковки.


После чего жмем на кнопку «Extract » (Извлечь). Процесс извлечения файлов начнется в автоматическом режиме.


Такой метод архивирования файлов и их извлечения прост и не требует каких-либо особых знаний и умений. Область применения SFX не ограничивается приложениями, не требующими установки. Можно без проблем упаковать приложение, запакованное одним из распространенных инсталляторов и сконфигурировать SFX таким образом, что после распаковки будет запущена установка приложения с нужными ключами. Еще одним преимуществом SFX архивов является то, что в некоторых случаях они дают возможность не просто автоматизировать, но и полностью скрыть процесс и прогресс инсталляции от конечного пользователя. Для примера рассматривается упаковка Adobe Reader 7.0. Несмотря на то, что с относительно недавних пор приложение можно устанавливать без особых проблем, только SFX позволяет установить приложение абсолютно незаметно.

Подготовка к созданию SFX

Вне зависимости от того, что вы будете использовать для создания SFX, различий в подготовке не будет. Если вы просто хотите запаковать папку с файлами, то никакой подготовки не требуется. А вот приложения иногда приходится распаковывать. В случае с Adobe Reader 7 используется Install Shield с Basic MSI, причем все это еще и запаковано в некий FEAD Optimizer. Надо запустить исполняемый файл Adobe, дождаться пока FEAD Optimizer закончит распаковку и найти папку с файлом Adobe Reader 7.0.msi (она может быть в %ProgramFiles%\Adobe, например). Теперь нужно запустить файл setup.exe с ключом /a для создания административной установки. В появившемся диалоговом окне нужно указать папку, в которой по окончании будут находиться все нужные нам файлы. Теперь можно переименовать Adobe Reader 7.0.msi в, скажем, Adobe7.msi и приступать к упаковке в SFX архив. Мы рассмотрим создание SFX архивов при помощи

WinRAR

WinRAR - не нуждающийся в представлении архиватор. Он обладает широкими возможностями для создания бесключевых SFX. С его помощью можно создать незаметный (silent) инсталлятор, который распакует содержимое SFX в заданную папку, выполнит заранее указанную команду, а по окончании установки может удалить распакованные файлы. Помимо всего WinRAR умеет добавлять элементы в меню Пуск, помещать ярлыки на Рабочий стол, а также задавать архиву иконку по вашему выбору. Я рассмотрю только базовые возможности программы, а с остальными вы без труда разберетесь при помощи справки.

Итак, запустив архиватор, мы переходим в папку, в которой находится административная установка Adobe. Выделяем все файлы

и жмем Добавить

Именуем архив по желанию, отмечаем создание SFX и выбираем максимальный уровень сжатия. Теперь надо сконфигурировать параметры SFX. Для этого на вкладке Дополнительно жмем Параметры SFX .

На вкладке Общие указываем команду для распаковки

и переходим на вкладку Режимы :

Здесь мы указываем распаковку во временную папку (что повлечет за собой автоматическое удаление распакованных файлов по окончании установки), скрытый режим и перезапись всех файлов.

Перейдя на вкладку Комментарий , мы видим все параметры, которые только что сконфигурировали через графический интерфейс. В принципе, можно было сразу перейти на эту вкладку и напечатать комментарий вручную или загрузить из заранее подготовленного текстового файла.

Примечание Поскольку мы запаковываем приложение, имеющее собственный инсталлятор, то распаковка во временную папку вполне оправдана (параметр TempMode). Если же вы просто хотите распаковать файлы в нужную вам папку, то на вкладке Общие нужно указать путь (можно использовать системные переменные), и соответственно, не использовать TempMode.

Вот и все. Теперь осталось нажать ОК пару раз и спустя некоторое время у нас будет SFX, который совершенно незаметно установит Acrobat Reader.

Преимущества: абсолютно незаметная (silent) установка, возможность распаковки файлов в заданную папку, возможность добавления элементов в меню Пуск и ярлыков на рабочий стол, выбор иконки для архива.
Недостатки: стоит $30.

7-Zip

7-Zip - бесплатный архиватор, распространяющийся по лицензии GNU LGPL. Если вы с ним не знакомы, то более подробную информацию вы найдете на сайте 7-Zip. С его помощью можно создавать бесключевые SFX, хотя процесс их создания несколько длиннее, чем у WinRAR.

Для начала нужно запаковать содержимое нашей папке в 7-Zip архив. Сделать это можно через 7-Zip файл-менеджер. Запустив его, мы переходим в папку, в которой находится административная установка Adobe. В эту же папку нужно положить файл StartX.exe (его назначение я объясню ниже). Выделяем все файлы

и жмем Добавить

Именуем архив по желанию (скажем, Adobe7.7z ), выбираем формат 7-Zip, максимальный уровень сжатия и жмем ОК. На выходе получаем файл Adobe7.7z , из которого нам предстоит сделать SFX.

Теперь нужно создать конфигурационный файл для SFX. Его можно сделать в Блокноте. Единственное, но обязательное условие - он должен быть в кодировке UTF-8. В нашем случае он будет выглядеть так:

;!@Install@!UTF-8!

;!@InstallEnd@!

Выглядит сложно, но сейчас все прояснится. Первая и последние строки просто обозначают начало и конец конфигурационного файла. Средняя строка - команда, которая будет выполнена после распаковки архива. Непосредственно команда заключается в кавычки и помещается после RunProgram=. Утилита StartX.exe является эквивалентом консольной команды START и поддерживает такие же ключи. Ее наличие необходимо для установки MSI пакета, извлеченного из 7-Zip SFX. Если попытаться сделать нечто вроде RunProgram="Adobe7.msi /qn", то запуск завершится ошибкой. Два обратных слэша (\) просто предваряют кавычки, находящиеся внутри команды.

Сохраняем конфигурационный файл с именем config.txt в ту же папку, где Adobe7.7z , и переходим к завершающей стадии создания SFX.

Из инсталляционной папки 7-Zip нужно взять SFX модуль 7zS.sfx и скопировать его к файлам Adobe7.7z и config.txt . Можно сжать модуль утилитой . Это уменьшит размер модуля примерно со 131 кб до 58 кб. Делается это командой

upx --best 7zS.sfx

Достаточно это сделать один раз, и можно использовать сжатый модуль в дальнейшем.

Примечание . Примите к сведению, что некоторые антивирусные программы ошибочно воспринимают SFX модуль, сжатый при помощи UPX, как вирус. Если вам нужно гарантировать успешную распаковку SFX архива в любых условиях, не сжимайте модуль при помощи UPX.

Теперь, когда в одной папке собраны все три файла (adobe7.7z , config.txt и 7zS.sfx ), нужно из командной строки выполнить следующую команду

COPY /b 7zs.sfx + config.txt + adobe7.7z adobe7.exe

Через мгновение в папке появится файл adobe7.exe . Это и есть наш SFX. Его запуск инициализирует распаковку архива во временную папку, запуск команды из конфигурационного файла, и удаление распакованных файлов по окончании установки.

Модифицированный SFX модуль для 7-Zip

Оригинальный 7-Zip SFX модуль не дает возможности сделать распаковку абсолютно незаметной. В процессе распаковки пользователь видит вот такое диалоговое окно

и даже может прервать установку нажатием на кнопку Cancel. Этой проблемы можно избежать, воспользовавшись SFX модулем, который модифицировал участник конференции OSZone Олег Щербаков aka Oleg_Sch . Вы можете загрузить модифицированный модуль со страницы автора , где вы также найдете справку и исходный код. В справке описаны все новые функции и примеры использования (там много интересного). Так что на этой странице я ограничусь лишь примером конфигурационного файла, который полностью скроет диалоговое окно распаковки.

;!@Install@!UTF-8!
RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
GUIMode="2"
;!@InstallEnd@!

Вообще-то, для модифицированного модуля утилита StartX не нужна, и можно было бы обойтись RunProgram="Adobe7.msi /qn" .

Любопытно, что в данном случае 7-Zip продемонстрировал лучшее сжатие, чем WinRAR. Размер 7-Zip SFX (даже с утилитой StartX.exe) оказался 20893 кб против 23825 кб у WinRAR SFX. Oднако, недостатком родного SFX модуля 7-Zip является невозможность сконфигурировать бесключевую распаковку SFX в заданную папку. Модифицированный модуль Олега, позволяет указать папку распаковки в конфигурационном файле и избавляет 7-Zip от данного недостатка.

Преимущества: бесплатен, высокая степень сжатия; а с модифицированным SFX модулем доступны абсолютно незаметная (silent) установка и возможность распаковки файлов в заданную папку, добавление элементов в меню Пуск и ярлыков на рабочий стол, а также многие другие функции.
Недостатки: нет возможности выбора иконки для архива (планируется исправить в будущих версиях модифицированного модуля Олега).