Практична автоматизація cоздание майстрів установки додатків

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Практична автоматизація

Слідкуйте за виходом нових статей цієї серії.

Протягом більшої частини своєї кар'єри я брав участь у всіх фазах розробки ПО - не тільки в уточненні вимог, дизайні, розробці та тестуванні, але також займався такими речами, як розгортання, управління складанням, документування і установка. В даний час, коли все більшої популярності набуває гнучка методологія розробки (Agile development), подібне широке поле діяльності є скоріше нормою. Проте мій досвід участі в Agile-проектах говорить про те, що ефективність розгортання і встановити програму іноді розглядається як завдання другорядної важливості. У цьому є частка іронії, оскільки якщо користувачі не зможуть легко змусити ваше додаток працювати, то ви їх просто втратите. Таким чином, надання простого способу установки ваших додатків життєво важливо для залучення і збереження користувачів.

Про цю серії

Оскільки ми є розробниками, наше завдання полягає в автоматизації праці кінцевих користувачів. При цьому багато хто з нас не приділяють достатньо уваги автоматизації своєї власної праці. Серія статей Практична автоматизація присвячена практичним принципам автоматизації процесу розробки та відповідає на питання, коли і як їх слід застосовувати.

За роки своєї кар'єри я перепробував безліч інсталяторів. У великому проекті, над яким моя команда почала працювати в цьому році, було кілька дуже специфічних вимог до створення корпоративних інсталяторів. Ми випробували такі продукти, як Antigen, AntInstaller, Denova, install4j, InstallAnywhere, IzPack, NSIS і деякі інші. Керуючись вимогами до нашого продукту, ми вирішили використовувати IzPack з наступних причин:

  • він працює на декількох платформах. Нам необхідно було підтримувати Windows®, Linux® і Macintosh;
  • IzPack написаний на Java ™, з яким у наших розробників є великий досвід роботи;
  • він вміє виконувати скрипти Apache Ant. Раніше ми витратили багато часу на написання скриптів Ant для розгортання додатків;
  • IzPack - це безкоштовний продукт.

Завантаження і установка IzPack

документація IzPack

Одним з перших каталогів, в які необхідно заглянути, є doc. У ньому міститься документація в форматах HTML, PDF і Javadoc. Вона може стати постійним джерелом інформації на тему написання скриптів в IzPack.

Завантаження і установка IzPack не таїть в собі ніяких проблем. Не дивно, що для інсталяції IzPack використовує себе самого. Зайдіть на сайт IzPack і завантажте JAR-файл IzPack (див. Розділ Ресурси).

Для установки IzPack у вас повинна бути запущена Виконавча Java (JRE). Відкрийте командний інтерпретатор і виконайте команду java -jar IzPack-install-4.1.0.jar (при необхідності змініть номер версії).

В результаті запуститься майстер і запросить базові параметри установки, зокрема, в який каталог повинен бути встановлений IzPack. Після цього вам не важко буде запустити сам IzPack.

Редагування демо-скриптів

В поставку IzPack входить повний набір демонстраційних скриптів установки. При створенні свого інсталятора найпростіше використовувати ці скрипти в якості базових. В каталозі установки IzPack знаходяться кілька підкаталогів, в тому числі bin, doc та lib. Приклад інсталятора знаходиться в підкаталозі sample, в якому також знаходиться практично все, що може вам знадобитися для створення власних інсталяторів. Найкраще зробити копію цього каталогу, щоб потім його можна було модифікувати без остраху зіпсувати початкове вміст, яке показано на малюнку 1.

Малюнок 1. Список файлів в каталозі sample

Практична автоматизація cоздание майстрів установки додатків

Практична автоматизація cоздание майстрів установки додатків

На малюнку 1 представлені наступні файли:

  • antActionSpec.xml. за допомогою цього файлу виконуються складальні скрипти Ant;
  • install.jar. інсталяційний JAR-файл, згенерований у процесі компіляції IzPack. Саме цей файл буде запускатися користувачами;
  • install.xml. головний інсталяційний скрипт IzPack. Всі ресурси, що використовуються інсталятором IzPack, починаються з цього скрипта;
  • Licence.txt. ліцензійний файл інсталятора;
  • Readme.txt. файл довідки по встановлюється додатком;
  • userInputSpec.xml. XML-скрипт, який використовується IzPack для опису поведінки (перевірок, значень за замовчуванням, розмірів полів і т.д.) при введенні користувачем значень на панелі інсталятора.

Далі ми розглянемо IzPack більш детально, заглибившись в деталі скрипта install.xml

Ресурсами є різні скрипти, зображення, ліцензії та інші файли, з яких буде складатися інсталятор. В скрипті install.xml міститься елемент . всередині якого можна описувати файли, які будуть потім використовуватися інсталятором. Приклад приведений в лістингу 1.

Лістинг 1. Опис файлів ресурсів в install.xml

Ресурси в IzPack представляють якийсь перелік основних матеріалів, в них описується кожен файл, який буде використовуватися майбутнім інсталятором.

Панелі - це те, що користувачі будуть спостерігати на кожному кроці майстра установки. IzPack надає безліч варіантів стандартних панелей, які ви можете видозмінювати на свій розсуд. На малюнку 2 показаний модифікований варіант HelloPanel. на яку виводиться вступна інформація для користувачів.

Малюнок 2. Модифікований варіант панелі майстра графічної установки додатків

Практична автоматизація cоздание майстрів установки додатків

Практична автоматизація cоздание майстрів установки додатків

До стандартних панелям відносяться LicensePanel. UserInputPanel. PacksPanel і деякі інші. Крім того, можна описувати власні панелі в файлі install.xml. Для цього служить елемент . за яким повинні слідувати шаблони, які будуть використовуватися в скрипті інсталятора. У лістингу 2 наведено приклад опису шаблону панелі.

Лістинг 2. Перелік панелей, які будуть використовуватися при установці

З великою часткою ймовірності можна стверджувати, що найчастіше ви будете використовувати панель UserInputPanel. Вона являє собою шаблон, який можна видозмінювати таким чином, щоб користувачі могли вводити будь-яку важливу інформацію, наприклад, контактні дані, параметри аутентифікації, розташування каталогів і т.д. Залежно від ситуації користувачі можуть вводити дані в декількох панелях. У нашому випадку панелі використовувалися для введення користувачами інформації про підключення до бази даних і конфігурації контейнерів JBoss.

У лістингу 3 показаний приклад, взятий з файлу userInputSpec.xml, який є одним з ресурсів в лістингу 1. У цьому прикладі описується панель для збору інформації про підключення до бази даних.

Лістинг 3. Опис атрибутів панелі інсталятора

Значенням атрибута order в цьому прикладі є 0. що відповідає номеру UserInputPanel в наборі панелей в лістингу 2.

У панелях можна визначати інформаційні повідомлення для користувачів. Крім того, ми додали опис перевірки NotEmptyValidator. яка вимагає введення непорожньої значення в цьому полі. Таким чином можна запобігти помилкам при установці, які можуть виникнути, якщо користувач забуде ввести обов'язкову інформацію. Зовнішній вигляд панелі з лістингу 3 показаний на малюнку 3.

Малюнок 3. Панель для введення інформації користувача

Практична автоматизація cоздание майстрів установки додатків

Практична автоматизація cоздание майстрів установки додатків

Думка користувачів про ефективність інсталятора часто може ґрунтуватися на тому, наскільки легко він дозволяє вводити дані і наскільки інформативні його повідомлення. Внаслідок цього слід подбати про те, щоб з панелями було легко працювати.

У термінології IzPack під терміном пакет (pack) розуміються всі компоненти, які займаються безпосередньо установкою розроблених програм. Всі інші компоненти IzPack - панелі, призначені для користувача дані, валідатори і т.д. - служать лише для підготовки до запуску пакетів. У нашому проекті пакети використовувалися для виконання декількох дій: завантаження архіву ZIP, що містить інсталяційний дистрибутив, заздалегідь написаний на Ant, і запуску його установки. Завдяки такому підходу нам вдалося повторно використовувати раніше розроблені компоненти, запустивши їх з командного рядка. Пакети описуються елементами (Лістинг 4).

Лістинг 4. Приклад елемента в файлі install.xml

Вікно стану процесу установки показано на малюнку 4.

Малюнок 4. Виконання пакета

Практична автоматизація cоздание майстрів установки додатків

Практична автоматизація cоздание майстрів установки додатків

Пакети - це центральна ланка IzPack. Якщо ви виконали всі попередні дії по частині перевірки користувальницького введення, діагностики та отримання інформації про оточення, то запуск пакетів повинен бути легкою "прогулянкою" для користувачів.

Запуск скриптів Ant

Наша команда вклала багато часу в створення інсталяторів на основі дистрибутивів за допомогою Ant. Зрозуміло, нам не хотілося повторно реалізовувати всю цю функціональність на IzPack. На щастя, IzPack підтримує можливість виклику існуючих скриптів Ant. Як ви пам'ятаєте, одним з файлів ресурсів, перерахованих в лістингу 1. був antActionSpec.xml. Фрагмент даного скрипта приведений в лістингу 5.

Лістинг 5. Приклад пакета, що виконує запуск скрипта, в файлі antActionSpec.xml

Найцікавіше в цьому скрипті - це те місце, в якому відбувається виклик build.xml. Він являє собою існуючий складальний скрипт Ant, який виконує дії по завантаженню та розпакування ZIP-архіву інсталятора, встановлення та налаштування Web-контейнерів та інших етапів установки програми. Таким чином, завдяки antActionSpec.xml можна повторно використовувати раніше написані скрипти Ant.

компіляція інсталяторів

Останнім етапом реалізації інсталятора за допомогою IzPack є компіляція. Після того як написаний install.xml і всі необхідні скрипти, прийшов час згенерувати сам інсталятор. У лістингу 6 наведено приклад однорядковою команди, виконавши яку ви сгенеріруете install.jar (при бажанні ви можете змінити ім'я файлу).

Лістинг 6. Компіляція інсталятора

У лістингу 6 мається на увазі, що ви запускаєте цю команду з підкаталогу bin настановної директорії IzPack. Ім'я sample вказує на підкаталог sample, який міститься в стандартному постачанні IzPack. Згенерувавши інсталятор, ви можете протестувати його, виконавши команду java -jar install.jar в каталозі, в якому знаходиться install.jar.

Інсталятори для всіх

У цій статті розповідалося про роботу з різними компонентами IzPack для створення простих у використанні інсталяторів. З ними можуть працювати користувачі клієнтських програм, користувачі на віддалених сайтах, яким необхідно встановити і конфігурувати кілька серверів, або навіть технічні фахівці, які встановлюють і налаштовують корпоративні пакети та програми. Проста установка ваших додатків значно полегшує життя користувачів, особливо при роботі з системами, сумно відомими своїми складними сценаріями установки ПО. Ви можете втратити користувачів просто через їх роздратування або втрати впевненості в якості додатку, якщо його установка вимагає виконання безлічі ручних дій або практично нездійсненна. Таким чином, спрощуючи роботу з інсталяторами за допомогою засобів на кшталт IzPack, ви потенційно можете залучити нових і зберегти існуючих клієнтів.

Ресурси для скачування

Схожі теми