Перші кроки до створення sfx архіву
Перші кроки до створення SFX архіву *
Все більше користувачів вибирають для установки додатків архіви (далі "SFX архіви"), а в якості архіватора воліють використовувати архіватор 7-Zip. Це безкоштовний архіватор, що поширюється за ліцензією GNU LGPL. Якщо ви з ним не знайомі, то більш детальну інформацію зможете знайти на сайті 7-zip. Його відрізняє більш висока ступінь стиснення, а з модифікованим SFX модулем доступні абсолютно непомітна (silent) установка, можливість розпакування файлів в задану папку, додавання ярликів в меню Пуск і на робочий стіл, а також багато інших функцій.
Область застосування SFX архівів не обмежується додатками, що не вимагають установки. Можна без проблем упакувати додаток, запаковане одним з поширених інсталяторів і конфігурувати SFX архів таким чином, що б після розпакування була запущена установка додатки з потрібними ключами.
Ще однією перевагою SFX архівів є те, що в деяких випадках вони дають можливість не просто автоматизувати, але і повністю приховати процес і хід установки від кінцевого користувача. Для прикладу розглянемо упаковку "Adobe Reader 7.0". Хоча додаток можна встановлювати з відповідними ключами, але тільки SFX архів дозволяє встановити додаток абсолютно непомітно.
Підготовка до створення SFX архіву
Якщо ви хочете просто запакувати папку з файлами, то ніякої підготовки не потрібно. А ось додатки іноді доводиться розпаковувати. У випадку з "Adobe Reader 7" використовується "Install Shield" з "Basic MSI", причому все це ще й запаковано в якийсь "FEAD Optimizer". Процес вилучення потрібних файлів виходить за рамки цієї довідки. Просто скажемо, що все витягнуті файли необхідно помістити в одну папку.
Тепер потрібно запакувати вміст цієї папки в 7z архів. Зробити це можна через "7-Zip File Manager". Запустивши його, перейдіть в папку, в даному випадку "Archive", в якій знаходяться підготовлені файли "Adobe Reader 7", виділіть всі файли і натисніть Додати (значок у вигляді великого зеленого плюса).


У вікні введіть ім'я архіву (тут "Archive.7z") і виберіть:
- Формат архіву: 7z
- Рівень стиснення: Ультра
- Метод стиснення: LZMA
Якщо Ви надалі плануєте змінювати ваш SFX архів (додавати / змінювати / видаляти файли) то встановіть:
- Розмір блоку: За розміром файлу
Правда остання опція дещо зменшить ступінь стиснення, але за все треба платити. Тому, якщо розмір архіву для Вас головне, залиште цю опцію за замовчуванням - 4GB.
Потім натисніть кнопку ОК. В результаті отримаєте файл "Archive.7z", з якого нам належить зробити SFX архів.
Тепер потрібно створити файл конфігурації для SFX архіву. Його можна зробити в "Блокноті". У нашому випадку він буде виглядати так:
Виглядає складно, але зараз все проясниться.
Перша і останні рядки просто позначають початок і кінець файлу конфігурації.
Другий рядок - команда, яка буде виконана після розпакування архіву. Команда полягає в лапки і поміщається після параметра 'RunProgram'.
Третій рядок повністю приховує діалогове вікно розпакування.
Збережіть файл конфігурації (ОБОВ'ЯЗКОВО в кодуванні UTF-8) під ім'ям "config.txt" в папку, де перебувати "Archive.7z", і переходите до завершальної стадії створення SFX архіву.
Створення SFX архіву
Скопіюйте модуль "7ZSD_LZMA.sfx" в папку з файлами "Archive.7z" і "config.txt".
Тепер, коли в одній папці зібрані всі три файли ( "Archive.7z", "config.txt" і "7ZSD_LZMA.sfx"), виконайте з командного рядка наступну команду (порядок проходження файлів в команді НЕОБХІДНИЙ):
Через мить в папці з'явиться SFX архів - файл "AdobeReader7.exe". Його запуск зробить розпакування архіву в тимчасову папку, запуск команди з конфігураційного файлу, а по закінченні установки видалення тимчасової папки.
Заміна іконки 7z sfx архіву.
Мета заміни іконки полягає в тому, щоб мати вашу власну іконку, яка буде відображатися в діалогових вікнах SFX архіву, панелі завдань, а так само і в оболонці Windows. Нижче показано відображення файлу ( "Установка Total Commander") зі зміненою іконкою з прикладу №6 даної довідки.



Натисніть комбінацію клавіш [CTRL + S], щоб зберегти модуль зі зміненою іконкою. За замовчуванням "Resource Hacker" використовує для нового файлу первинне ім'я вихідного файлу, але перейменовує вихідний файл, додаючи до його імені "_original".
Все готово! Тепер всі ваші SFX архіви, створені з новим модулем, матимуть обрану Вами іконку.
Для ще більшого зменшення розміру SFX архіву можна стиснути модуль безкоштовною утилітою UPX. Однак, SFX архіви, створені за допомогою стислих модулів, МОЖУТЬ викликати помилкове спрацьовування деяких антивірусних програм, про що Ви тепер попереджені.
Якщо Ви вирішите і стиснути модуль UPX-му, і поміняти його іконку, то стискати модуль потрібно тільки ПІСЛЯ зміни іконки. Зворотній послідовність операцій (спочатку стиснення, а потім зміна іконки) неприпустимо тому приведе до створення непрацездатного модуля і створених на його основі SFX архівів.
Стиснення UPX-му зменшує розмір модуля приблизно в два рази. Для цього потрібно, щоб заздалегідь скачаний і розпакований UPX знаходився в одній папці з упаковувати модулем. Виконайте з командного рядка наступну команду:
В результаті Ви отримаєте стислий модуль. Досить це зробити один раз, і в подальшому використовувати стиснутий модуль.
Зміна наявного SFX архіву
Іноді виникає бажання подивитися, як влаштований "чужий" SFX архів або необхідність переробити його, щоб додати в нього нові команди або просто змінити зовнішній вигляд його діалогових вікон. Якщо досить тільки файлу конфігурації, то його можна витягти з SFX архіву за допомогою ключа '-sfxconfig'.

Тепер Ви можете зробити всі необхідні модифікації файлів.
Якщо Ви захочете додати / замінити / видалити файли в 7z архів, то можете зіткнутися з помилкою на кшталт "Чи не підтримується". Вона виникає, якщо 7z архів є Solid (безперервним) архівом тобто він був створений з параметром Розмір блоку: відмінним від За розміром файлу (див. Вище). (В старих версіях "Менеджера файлів 7-Zip" для створення Solid архіву була окрема опція Створити Solid архів.) Тут вихід тільки один - витягти весь вміст архіву в тимчасову папку, зробити всі зміни в ній, а потім запакувати все назад в 7z архів , як описано вище.
Припустимо, Ви хочете додати діалогове вікно з повідомленням про завершення установки і з таймером на 10 с. Файл конфігурації повинен виглядати так:
Після внесення змін до файл конфігурації можна було б упакувати все 3 файлу знову в SFX архів, але. SFX архів може і не вивести запропоноване повідомлення, тому що версія модуля, використана для упаковки вихідного архіву, може бути більш старої (або взагалі оригінальним SFX модулем 7-Zip) і просто не підтримувати нові можливості, описані в цій довідці.
Краще ЗАВЖДИ використовувати останню версію модифікованого модуля, щоб уникнути подібних помилок. Однак є аргументи і "за" використання "чужого" модуля:
- Модуль вже з потрібною іконкою
- Розмір модуля менше тому можливо вже стиснутий UPX-му
- "Копірайт" в ресурсах модуля приведені у відповідність з конкретним вмістом SFX архіву
- Проста лінь або незнання як все це зробити самостійно (хоча вище вже багато роз'яснено)

Якщо ці аргументи переважують, то хоча б дізнайтеся версію модуля за допомогою ключа '--sfxversion'.
Зверніть увагу на два знака "тире" перед ключем! У старих версіях модуля підтримувалося тільки таке написання ключа.
Тепер, перевіривши можливості цієї версії модуля в історії змін. Ви побачите, що параметр 'FinishMessage' з'явився тільки в збірці 457, а таймер для нього (префікс 'fmX') взагалі тільки в збірці 549!
Тепер Ви знаєте ВСЕ про створення 7z SFX архівів! Ну, або майже все.