Как сделать самораспаковывающийся архив exe. Архиватор WinRAR: все секреты SFX-архивов

Как сделать самораспаковывающийся архив exe. Архиватор WinRAR: все секреты SFX-архивов

26.06.2019

Занимают намного меньше места. Как следствие, архивы быстрее передаются по сети. В последнее время популярностью пользуется так называемый SFX-архив, который обладает способностью к самораспаковке. Интересна эта функция тем, может быть распаковован на любом компьютере, даже при отсутствии программы архиватора. Достигается это за счёт включения в архив модуля самораспаковки, который лишь незначительно увеличивает размер архива в целом.

Создать SFX-архив можно перед сжатием файлов, в результате будет создан не обычный архив, а исполняемый файл с расширением *.exe. Программа распаковки запускается сразу после двойного клика по файлу. Окошко, хоть и скромное в большинстве случаев, но функции свои выполняет: есть возможность извлечь файлы в папку с архивом или задать требуемый путь вручную.

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

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

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

Подобные архивы применяются для распространения модификаций к играм. Иногда 7z SFX-архивы сбивают пользователей с толку - их принимают за вирусы, файлы игры и просто за лишние файлы. Всё потому, что сейчас встретить такой архив - редкость т. к. на данный момент больше популярен формат *.rar или *.zip.

Где SFX-архив незаменим, так это в Дело в том, что такой архив удобнее, если вы планируете распаковывать его редко и полностью. Антивирус не тратит ресурсы на постоянное сканирование доверенных exe-файлов, а в случае переноса данных или их восстановления вся процедура займёт всего пару кликов.

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

Самораспаковывающийся (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.

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

Начну с архивов SFX. Итак, что же это такое?

Аббревиатура SFX происходит от англоязычного наименования self-extracting archive и представляет собой ни что иное, как самораспаковывающийся архив, который можно распаковать без помощи архиватора.

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

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

Многотомный архив – это архив, состоящий из нескольких частей, называемых томами. Многотомные архивы используются в тех случаях, когда объем упакованных данных слишком велик и использование обычного архива становится по каким-то причинам неприемлемо.

Например, не так давно многотомные архивы активно использовались при необходимости запихнуть большие объемы данных на 3,5-дюймовые дискеты. Несмотря на то, что сегодня эти носители уже почти нигде не используются, современные архиваторы, предусматривающие разбивку архива на тома, имеют среди вариантов разбития объем 1457664 байта. Именно такой объем имели названные дискеты.

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

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

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

Многотомные архивы можно успешно использовать и просто для разрезки большого файла. Как я уже упоминал в статье , некоторые файлы имеют высокую степень сжатия и при архивации их объем особо не уменьшается. Но поделить такой файл на части нам ничто не мешает.

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

За образец я взял образ диска в формате ISO, который хоть и имеет высокую степень сжатия, но тем не менее занимает довольно много места. А именно 654636 килобайт. Я намеренно привожу размер в килобайтах, поскольку именно так он отображается в проводнике Windows.

Для начала рассмотрим создание интересующих нас типов архивов с помощью бесплатного архиватора 7-Zip. Как я ранее, работать с архивами можно из интерфейса архиватора или с помощью контекстного меню Windows. Я остановлюсь на втором варианте, поскольку для начинающего пользователя он, по моему мнению, наиболее прост.

Итак, нажимаем правой кнопкой мыши на файле, который мы хотим поместить в архив, после чего в появившемся контекстном меню выбираем пункт 7-Zip и в открывшемся меню функций выполняем действие «Добавить к архиву».

Из доступных в 7-Zip для создания форматов архивных файлов на части поделить можно любой. Что же касается самораспаковывающихся архивов, то здесь нам интересны исключительно архивы формата 7z, поэтому я остановлюсь именно на этом формате.

Взгляните на окно опций создания архива.

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

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

К сожалению, возможности формата 7z ограничены, поэтому он может быть либо многотомным, либо самораспаковывающимся. Если выбрать создание архива SFX, то опция деления на части сразу же станет неактивной. Из двух возможных вариантов я пока выберу самоизвлекающийся архив. Ставим птичку, нажимаем OK и дожидаемся окончания процедуры.

Взгляните на полученный результат.

Как видите, рядом с файлом образа появился исполняемый файл. Это и есть готовый SFX-архив.

А как же быть, если мы хотим получить непременно многотомный самораспаковывающийся архив?

Для этой цели идеально подходит формат RAR, который можно получить с помощью приложения WinRAR.

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

Вот так выглядит окно создания архива.

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

Область применения 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) установка и возможность распаковки файлов в заданную папку, добавление элементов в меню Пуск и ярлыков на рабочий стол, а также многие другие функции.
Недостатки: нет возможности выбора иконки для архива (планируется исправить в будущих версиях модифицированного модуля Олега).



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows