Створення 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: