Створення SFX архіву
Нерідко при роботі над автоматичною установкою додатків виникає необхідність створити безключовий архів, що саморозпаковується (надалі я використовуватиму "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 - архіватор, що не потребує представлення. Він має широкі можливості для створення безключових SFX. З його допомогою можна створити непомітний (silent) інсталятор, який розпакує вміст SFX у задану папку, виконає заздалегідь вказану команду, а по закінченні установки може видалити розпаковані файли. Крім того, WinRAR вміє додавати елементи в меню Пуск, поміщати ярлики на Робочий стіл, а також задавати архіву іконку на ваш вибір. Я розгляну тільки базові можливості програми, а з іншими ви легко розберетеся за допомогою довідки.
Отже, запустивши архіватор, ми переходимо до папки, в якій знаходиться адміністративна установка Adobe. Виділяємо всі файли

і тиснемоДодати

Іменуємо архів за бажанням, відзначаємо створення SFX та вибираємо максимальний рівень стиснення. Тепер потрібно налаштувати параметри SFX. Для цього на вкладціДодатково тиснемоПараметри SFX.
На вкладціЗагальні вказуємо команду для розпакування

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

Тут ми вказуємо розпакування в тимчасову папку (що спричинить автоматичне видалення розпакованих файлів після закінчення установки), прихований режим і перезапис усіх файлів.
Примітка Оскільки ми запаковуємо програму, яка має власний інсталятор, торозпакування в тимчасову папку цілком виправдане (параметр TempMode). Якщо ж ви просто хочете розпакувати файли в потрібну вам папку, то на вкладці Загальні потрібно вказати шлях (можна використовувати системні змінні) і, відповідно, не використовувати TempMode.
От і все. Тепер залишилося натиснути ОК пару разів і через деякий час ми матимемо SFX, який абсолютно непомітно встановить Acrobat Reader.
Переваги: абсолютно непомітна (silent) установка, можливість розпакування файлів у задану папку, можливість додавання елементів у меню Пуск та ярликів на робочий стіл, вибір іконки для архіву.Недоліки: коштує $30.
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! 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 кб. Робиться це командою
upx --best 7zS.sfx
Достатньо це зробити один раз, і можна використовувати стислий модуль надалі.
Тепер, коли в одній папці зібрано всі три файли (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 модуль не дає можливості зробити розпакування абсолютно непомітним. У процесі розпакування користувач бачить таке діалогове вікно
;!@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. Однак, недоліком рідного SFX модуля 7-Zip є неможливість сконфігурувати безключове розпакування SFX в задану папку. Модифікований модуль Олега дозволяє вказати папку розпакування в конфігураційному файлі і позбавляє 7-Zip від цього недоліку.
Переваги: безкоштовний, високий ступінь стиснення; а з модифікованим SFX модулем доступні абсолютно непомітна (silent) установка та можливість розпакування файлів у задану папку, додавання елементів у меню Пуск та ярликів на робочий стіл, а також багато інших функцій.Недоліки: немає можливості вибору іконки для архіву (планується виправити у майбутніх версіях модифікованого модуля Олега).
SFX Creator
SFX Creator - безкоштовна програма, написана одним із учасників конференції OSZone.net - K.A.V.

Програма написана спеціально для вирішення завдань створення повноцінного SFX архіву і має великі можливості для створення безключових SFX. З її допомогою можна створити як непомітний інсталятор, так і інсталятор з графічним інтерфейсом.
Можливості програми SFX Creator: