Нерідко при роботі над автоматичною установкою додатків виникає необхідність створити бесьключевой саморозпаковується (надалі я буду використовувати "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 | SFX Creator
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!
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
Досить це зробити один раз, і можна використовувати стиснутий модуль надалі.
Примітка. Звертаємо увагу, що деякі антивірусні програми помилково сприймають 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) установка і можливість розпакування файлів в задану папку, додавання елементів в меню Пуск і ярликів на робочий стіл, а також багато інших функцій.
Недоліки: немає можливості вибору іконки для архіву (планується виправити в майбутніх версіях модифікованого модуля Олега).
SFX Creator - безкоштовна програма, написана одним з учасників конференції OSZone.net - KAV
Програма написана спеціально для вирішення завдань по створенню повноцінного SFX архіву і володіє великими можливостями для створення безключового SFX. З її допомогою можна створити як непомітний (silent) інсталятор, так і інсталятор з графічним інтерфейсом.
Можливості програми SFX Creator:
- Підтримка всіх (ну або практично всіх) змінних системних / користувальницьких директорій
- Вибір типу стиснення (LZMA - даний тип компресії застосовується в архіваторі 7-Zip), BZIP2, ZLIB
- Створення ярликів для файлів
- Імпорт REG-файлів після розпакування файлів
- Виконання програм до і після розпакування ваших файлів
- Виконання операцій в реєстрі (запис / видалення параметрів, видалення розділів)
- Виконання файлових операцій (копіювання / видалення файлів, створення / видалення директорій)
- Можливість створити програму видалення (з зручним додаванням інформації в аплет "Установка і видалення програм")
- Можливість встановити свою іконку на SFX архів
- Можливість додати інформацію про версії файлу
- Можливість виконати власні функції, написані на мові NSIS перед і після розпакування файлів
- Можливість перед розпакуванням ваших файлів перевірити наявність встановленого ПО і виконати певні дії, якщо вас не устравівает результат перевірки (наприклад якщо версія ПО нижче необхідної, можна припинити установку і / або показати повідомлення користувачу)
- Можливість розпакувати ваші файли в каталог, який вказаний в будь-якому ключі реєстру
- Реєстрація бібліотек при розпакуванні файлів (і можливість скасувати реєстрацію при видаленні додатка)
- Можливість при запуску / завершення показати користувачеві інформаційне повідомлення
- Ви можете створювати распаковщик (практично вже пакет інсталятора) з графічним інтерфейсом. Вам пропонується використовувати 2 типу інтерфейсу на вибір
- Можливість показу вашого зображення перед запуском процесу розпакування файлів
- При створенні проекту з графічним інтерфейсом, ви можете додати відображення зображення на задній план