Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
MMB & SFX
lorentsДата: Среда, 27 Августа 2008, 00:13 | Сообщение # 1
Ветеран форума
Группа: Проверенные
Сообщений: 1082
Репутация: 7
Награды: 2
Статус: Offline
Нередко при работе над автоматической установкой приложений возникает необходимость создать бесключевой самораспаковывающийся архив (в дальнейшем я буду использовать "SFX", так короче). Как правило, SFX архивы позволяют значительно сэкономить место на CD. Например, если приложение не требует установки, то его можно поместить в $OEM$\Progs и оно будет автоматически скопировано в Program Files. Однако, аналогичной цели можно достичь запаковав приложение в 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 и 7-Zip

Добавлено (27 Август 2008, 00:12)
---------------------------------------------
WinRAR

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

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

WinRar Main

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

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

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

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

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

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

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

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

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

Добавлено (27 Август 2008, 00:12)
---------------------------------------------
7-Zip

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

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

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



Image Optimizer - сборник программ для оптимизации картинок без потери качества.

Сообщение отредактировал lorents - Среда, 27 Августа 2008, 00:11
 
as-masterДата: Среда, 27 Августа 2008, 19:34 | Сообщение # 2
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Спокойно, вот вторая половина сообщения лорентса:

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

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

Code
;!@Install@!UTF-8!
RunProgram="StartX.exe /WAIT \"msiexec /i Adobe7.msi /qn\""
;!@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. Можно сжать модуль утилитой UPX. Это уменьшит размер модуля примерно со 131 кб до 58 кб. Делается это командой

Code
upx --best 7zS.sfx

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

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

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

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

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

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

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

Данная статья была взята с сайта oszone.net

От себя скажу , что методом 7-zip + SFX пользуются такие компании как Adobe, Norton, Nero, Mozilla и многие другие компании
и еще на мой взгляд 7-zip на голову превосходит WinRaR в степени сжатия. В дальнейшем я остановлю свое внимание только 7-zip

Добавлено (27 Август 2008, 00:13)
---------------------------------------------
Если до этого все было понятно, тогда продолжим

1. прочтя выше представленную статью, могли обратить внимание, что было упомянуто о маленькой, но очень нужной программе UPX - упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов. Работает через командную строку, для тех кто с командной строкой на Вы, то есть так называемые "оболочки" на пример UPX X-Shell 1.4, еще автор статьи предупреждал, что некоторые антивирусные программы ошибочно воспринимают SFX модуль, сжатый при помощи UPX, как вирус, скажу честно ни разу за все вре использования UPX с этим лично не сталкивался, и еще статья была опубликована в 2005 году, и за это время UPX не раз обновлялся.

2. WinUpack - неплохая альтернатива UPX

3. как же изменять в модулях SFX диалоговое окно или иконку и т.д.? в этом случае подойдет любой редактор ресурсов, я лично использую Restorator 2007

4. 7zsfx.info - сайт посвяшенный 7-zip и SFX, так что настоятельно рекомендую его посмотреть и оязательно зайдите на страницы Примеры использования и Ссылки для загрузки

4.1 7z SFX Archive splitter - улита для вытаскивания модуля SFX из уже созданного самораспаковывающегося архива (.exe)

4.2 7z SFX Tools - Набор для работы с 7z SFX архивами. Состав: 4 модифицированных модуля, 7z SFX Archive Splitter, справочный файл. Все модули которые лежат в архиве не дают возможности изменять диалогов окно, только иконка и версия

5. Ultra7z Optimizer 0.03 - Программка для оптимизации (уменьшения) 7z-архивов за счёт выбора лучшего алгоритма сжатия PPMD/LZMA для каждого расширения файлов. Просто перетаскиваете нужный архив (7z, rar, zip) на exe-файл...
программа действительно увеличивает степень сжатия, но к этому архиву подходит только один модуль SFX и это 7ZSD_All.sfx который есть внутри архива пункта 4.2.

6. для тех кто общается с командной строкой на вы и не может соединить архив 7-zip и модуль SFX есть и плохо понимает что надо писать в txt файле есть специальная улита, GUI_7zS

ну и в конце добавлю еще свои модули, которые взял с других программ
http://webfile.ru/2186723

Добавлено (27 Август 2008, 19:34)
---------------------------------------------
Прошу прощения за то, что стал редактировать сообщение лорентса,
чтобы выделить там ссылку на первоисточник, а форумный скрипт не дал
сохранить его целиком из-за превышения лимита, и пришлось вторую
половину запостить вот так... Сорри smile


Да пребудет с вами ММВ!
 
  • Страница 1 из 1
  • 1
Поиск: