поиск

Распространение Apollo приложений вместе со средой исполнения

Намусорил: Юрий «Бармалей» Яровой
В категории: AIR, Компиляция

На прошлой неделе завершил работу над своим первым небольшим коммерческим приложением, работающим в среде AIR (Apollo). Теперь буду с гордостью считать, что являюсь одним из первых российских девелоперов, начавших работать с этой платформой на коммерческой основе. =)

Работа приложения заключается в том, чтобы при помощи манипуляций пользователя на выходе получить определенным образом структурированный XML файл, который будет являться конфигурационным файлом уже для другого приложения. Т.е. по сути, мое приложение является своеобразным конфигуратором для другого приложения. Так что довелось поработать с файловой системой и немного с Window API. Но суть не в этом, а в том, что после создания приложения встал вопрос о том, как оно будет распространяться. Вынуждать конечного пользователя (наверняка далекого от компьютерных технологий) самостоятельно устанавливать среду исполнения AIR (Apollo), а затем и .air файл с приложением, как-то не хотелось, поэтому было решено упаковать приложение и среду исполнения в единый инсталляционный файл.

После непродолжительного поиска в Гугле и чтения тематических сайтов была найдена программа «Inno Setup Compiler», распространяющаяся свободно, т.е. кроме того, что вы можете бесплатно ее использовать, доступны еще и исходные коды программы на Delphi. На сайте разработчиков написано, что программа по возможностям и стабильности не уступает многим коммерческим инсталляторам. Что ж, охотно верим. По крайней мере, для наших целей ее возможностей будет более чем достаточно.

«Inno Setup Compiler» относится к классу программ, имеющих в своем распоряжении мастер, помогающий установить начальные характеристики инсталлятора, и редактор кода, при помощи которого можно отредактировать другие опции программы установки. Давайте сразу определимся, каким мы хотим видеть процесс установки нашего приложения:

  1. После принятия пользователем лицензионных соглашений заблокировать интерфейс мастера установки.
  2. Распаковываются установочные файлы AIR (Apollo) и нашего приложения. Тут необходимо решить вопрос с директорией, в которую будут распакованы файлы. Я решил в качестве целевой папки использовать директорию, в которой будет находиться инсталлятор (хотя это совершенно не годится, если инсталлятор будет растространяться на компакт-дисках).
  3. Устанавливается среда AIR.
  4. Устанавливается наше AIR приложение.
  5. Завершение установки. Снимается блокировка с окна мастера установки. Показывается единственная кнопка «Готово».

Еще нужно отметить, что совершенно не нужно, чтобы наша программа установки была прописана в реестре в качестве установленной на компьютере программы. Хоть «Inno Setup Compiler» и позволяет без труда организовать это, но это будет лишним, поскольку после установки деинсталлировать будет нечего — все распакованные файлы, возможно, будут еще нужны пользователю для произведения каких-либо манипуляций с ними «вручную».

И так, приступим. Для начала создадим новый файл описывающий процесс установки: FileNew. Автоматически должен запуститься мастер создания файла установки. На втором экране мастера мы можем указать:

  • название приложения;
  • название приложения, включающее версию приложения;
  • компанию-создателя приложения;
  • сайт поддержки приложения.

На третьем экране мастера нужно указать папку установки программы. Т.к. наша программа не нуждается в оной, ставим галочку на пункте The application doesn’t need a folder. На четвертом экране мастера нам нужно прописать файлы, которые будут включены в инсталлятор. Поэтому при помощи кнопок Browse, указываем пути до файла установки Apollo Runtime и до файла нашего приложения. После этого нужно указать папку, в которую будет распакован каждый из этих файлов. Поэтому поочередно выделяем каждый файл, жмем на кнопку Edit и в выпадающем списке Destination base folder меняем значение на Setup source directory. На пятом экране мастера можно указать пути до файла лицензии, и до информационных файлов, которые будут показаны до и после процесса установки. На шестом экране мастера можно выбрать языки, на которых будет осуществляться процесс установки. Я указал английский и русский. На седьмом экране нужно указать папку, в которую будет помещен скомпилированный файл установки, название файла установки, и, если нужно, иконку файла установки и пароль. Нажимаем кнопку Готово. Мастер завершает свою работу, а мы переходим к непосредственному редактированию скрипта.

Сразу скажу, что с «Inno Setup Compiler» поставляется довольно подробный файл справки, поэтому за списком поддерживаемых секций, команд и флагов идем и смотрим справку. Если мы протестируем сейчас наш инсталлятор, то увидим, что на данный момент он только распаковывает входящие в его состав файлы и на этом завершает свою работу. Но нам нужно, чтобы автоматически запускалась установка среды AIR и .air файла нашего приложения. Для реализации этой задачи нам нужно добавить в скрипт установки секцию Run, в которой мы и опишем процесс установки этих файлов:

CODE:
  1. [Run]
  2. Filename: "{src}\apollo_win_alpha1_031907.msi"; StatusMsg: "Installing Apollo Runtime Alpha..."; Flags: shellexec waituntilterminated
  3. Filename: "{src}\App.air"; StatusMsg: "Installing Apollo Application..."; Flags: shellexec waituntilterminated

В этой секции указываются пути к файлам, запуск которых должен быть произведен. Я использовал префикс {src}, чтобы указать на папку, в которой находится инсталлятор. Добавил сообщение, которое будет описывать, что именно выполняется в настоящий момент, обозначив его в параметре StatusMsg. В качестве дополнительных флагов указал shellexec, который сообщит нашему инсталлятору, что запускаемый файл не является исполняемым .com или .exe файлом, а так же флаг waituntilterminated, который заставит инсталлятор дождаться полного прекращения работы запускаемого процесса и заблокировать при этом интерфейс окна инсталлятора.

Скомпилируйте инсталлятор и убедитесь в том, что все работает как надо. Конечный скрипт установки должен выглядеть следующим образом:

CODE:
  1. [Setup]
  2. AppName=Apollo Application Installer Pack
  3. AppVerName= Apollo Application Installer Pack 1.0
  4. AppPublisher=CompanyName corp.
  5. AppPublisherURL=http://www.companyname.com/
  6. AppSupportURL=http:// www.companyname.com/support/
  7. AppUpdatesURL= http:// www.companyname.com/update/
  8. CreateAppDir=no
  9. CreateUninstallRegKey=no
  10. OutputDir=..\deploy
  11. OutputBaseFilename=setup
  12. Compression=lzma
  13. SolidCompression=yes
  14.  
  15. [Languages]
  16. Name: "english"; MessagesFile: "compiler:Default.isl"
  17. Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
  18.  
  19. [Files]
  20. Source: "..\deploy\App.air"; DestDir: "{src}"; Flags: ignoreversion
  21. Source: "..\assets\apollo_win_alpha1_031907.msi"; DestDir: "{src}"; Flags: ignoreversion
  22. ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
  23. [Run]
  24. Filename: "{src}\apollo_win_alpha1_031907.msi"; StatusMsg: "Installing Apollo Runtime Alpha..."; Flags: shellexec waituntilterminated
  25. Filename: "{src}\App.air"; StatusMsg: "Installing Apollo Application..."; Flags: shellexec waituntilterminated

На этом создание программы установки завершено. На примере этой статьи мы убедились, что совсем немного нашего времени, потраченного на поиск программы и создание инсталлятора, могут заметно облегчить процесс использование нашего приложения пользователями, слабо разбирающихся в технической части. Давайте станем еще немного более гуманными по отношению к пользователям наших приложений. Удачных вам билдов.



Kомментариев - 8 к «Распространение Apollo приложений вместе со средой исполнения»

moksha [10 июня, 2007 в 20:28]

Распространять "коммерческое" приложение до выхода собственно релиза продукта на котором оно написано? :-)))

Собственно из Apollo for Adobe Flex Developers Pocket Guide:
"In a future build, you will be able to also create native installers that can first check for and install the Apollo runtime, before installing the application"

Думаю что это означает, что в релизе аполло (или как оно там будет называться) нативный инсталлятор это проблему решит :-)

Юрий Яровой [10 июня, 2007 в 20:45]

Честно говоря не вижу ничего смешного в том, чтобы уже сейчас начать делать что-то на Apollo. В приложении использовались только задукоментированные возможности, поэтому проблем с переходом на новые версии Apollo Runtime возникнуть не должно в 90% случаев. А сейчас приложение успешно справляется с теми задачами, которые на него возложены, не смотря на то, что Apollo находится только в стадии альфа версии.

А вот за цитату из Apollo for Adobe Flex Developers Pocket Guide огромное спасибо, я, например, об этом не знал. За то сейчас мы знаем по крайней мере один альтернативный способ самостоятельного создания такого инсталлятора под Windows. Которым можно пользоваться уже сейчас, кстати. =)

moksha [10 июня, 2007 в 21:13]

делать что то на аполло - разумно
распространять это на коммерческой основе - неразумно (думаю в лицензии на использование альфы чтото такое сказано... ну про крайней мере подразумевается)

не верь тому что "задокументированно" в альфе :-)

спешат они очень - корявенько все так работает - я вот полон подозрений что и в релизе будет кучка глюков (вот боюсь что подорву работодателей на аполло сделать ставки и выгребу потом по полной... впрчоем ответственность можно будет поделить :-)

Юрий Яровой [11 июня, 2007 в 08:41]

Хе-хе. Приложением будет пользоваться один, ну в крайнем случае, два пользователя. Поэтому я не сильно заморачивался по поводу лицензионных соглашений.

Rostislav Siryk [31 августа, 2007 в 14:29]

Юр, это - просто мега вещь. Ни мой респект, ни моя уважуха к этой публикации не поместятся в жалкий мой словарный запас. Выпускай английскую версию статьи!

Юрий Яровой [1 сентября, 2007 в 18:58]

Рост, на английском я пишу гораздо хуже, чем перевожу с него. Я просто постесняюсь самостоятельно перевести статью на английской. =)

_lexCoder [3 сентября, 2007 в 14:17]

Юра!
Большое спасибо, зарегился даже чтобы это сказать :).
Действительно, надо думать о пользователе!
Для меня бегло интуитивно все понятно и из help Inno Setup.
Но спасибо от ленивых :), что описал как пихнуть в инсталлятор "...apollo.msi".
Пока еще релиз выйдет, да и альтернатива -это здорово, плюс сейчас уже можно все фичи обсмаковать с инталлятором, думаю в release Apollo будут те же фичи ,что и в Inno Setup (как принципиальное решение).
Ну а про English - да, я тоже складно в терминах не смогу пожалуй быстро, но ведь почти все описано в hlp Inno Setup -все, тобой используемые термины. пробуй переводить если найдешь время - будешь первым альтернативщиком по инсталлятору!
Спасибо что потратил время!

Юрий Яровой [8 апреля, 2008 в 14:55]

В принципе после релиза могу сказать, что эта статья все еще актуальна. Нативного инсталлятора мы так и не имеем. Есть AIR Badge, но это другое. Распространять приложение одним цельным файлом вместе со средой исполнения, не прибегая к помощи других программ, позволяющих создавать инсталляторы, мы не можем.

Написать комментарий:

 

Bы можете использовать следующие теги для форматирования: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



User's collector

Внимание!
Эта опция станет доступной только после того как вы авторизуетесь.


 запомнить меня 
Я новый пользователь

На правах рекламы