На прошлой неделе завершил работу над своим первым небольшим коммерческим приложением, работающим в среде AIR (Apollo). Теперь буду с гордостью считать, что являюсь одним из первых российских девелоперов, начавших работать с этой платформой на коммерческой основе. =)
Работа приложения заключается в том, чтобы при помощи манипуляций пользователя на выходе получить определенным образом структурированный XML файл, который будет являться конфигурационным файлом уже для другого приложения. Т.е. по сути, мое приложение является своеобразным конфигуратором для другого приложения. Так что довелось поработать с файловой системой и немного с Window API. Но суть не в этом, а в том, что после создания приложения встал вопрос о том, как оно будет распространяться. Вынуждать конечного пользователя (наверняка далекого от компьютерных технологий) самостоятельно устанавливать среду исполнения AIR (Apollo), а затем и .air файл с приложением, как-то не хотелось, поэтому было решено упаковать приложение и среду исполнения в единый инсталляционный файл.
После непродолжительного поиска в Гугле и чтения тематических сайтов была найдена программа «Inno Setup Compiler», распространяющаяся свободно, т.е. кроме того, что вы можете бесплатно ее использовать, доступны еще и исходные коды программы на Delphi. На сайте разработчиков написано, что программа по возможностям и стабильности не уступает многим коммерческим инсталляторам. Что ж, охотно верим. По крайней мере, для наших целей ее возможностей будет более чем достаточно.
«Inno Setup Compiler» относится к классу программ, имеющих в своем распоряжении мастер, помогающий установить начальные характеристики инсталлятора, и редактор кода, при помощи которого можно отредактировать другие опции программы установки. Давайте сразу определимся, каким мы хотим видеть процесс установки нашего приложения:
- После принятия пользователем лицензионных соглашений заблокировать интерфейс мастера установки.
- Распаковываются установочные файлы AIR (Apollo) и нашего приложения. Тут необходимо решить вопрос с директорией, в которую будут распакованы файлы. Я решил в качестве целевой папки использовать директорию, в которой будет находиться инсталлятор (хотя это совершенно не годится, если инсталлятор будет растространяться на компакт-дисках).
- Устанавливается среда AIR.
- Устанавливается наше AIR приложение.
- Завершение установки. Снимается блокировка с окна мастера установки. Показывается единственная кнопка «Готово».
Еще нужно отметить, что совершенно не нужно, чтобы наша программа установки была прописана в реестре в качестве установленной на компьютере программы. Хоть «Inno Setup Compiler» и позволяет без труда организовать это, но это будет лишним, поскольку после установки деинсталлировать будет нечего — все распакованные файлы, возможно, будут еще нужны пользователю для произведения каких-либо манипуляций с ними «вручную».
И так, приступим. Для начала создадим новый файл описывающий процесс установки: File → New. Автоматически должен запуститься мастер создания файла установки. На втором экране мастера мы можем указать:
- название приложения;
- название приложения, включающее версию приложения;
- компанию-создателя приложения;
- сайт поддержки приложения.
На третьем экране мастера нужно указать папку установки программы. Т.к. наша программа не нуждается в оной, ставим галочку на пункте The application doesn’t need a folder. На четвертом экране мастера нам нужно прописать файлы, которые будут включены в инсталлятор. Поэтому при помощи кнопок Browse, указываем пути до файла установки Apollo Runtime и до файла нашего приложения. После этого нужно указать папку, в которую будет распакован каждый из этих файлов. Поэтому поочередно выделяем каждый файл, жмем на кнопку Edit и в выпадающем списке Destination base folder меняем значение на Setup source directory. На пятом экране мастера можно указать пути до файла лицензии, и до информационных файлов, которые будут показаны до и после процесса установки. На шестом экране мастера можно выбрать языки, на которых будет осуществляться процесс установки. Я указал английский и русский. На седьмом экране нужно указать папку, в которую будет помещен скомпилированный файл установки, название файла установки, и, если нужно, иконку файла установки и пароль. Нажимаем кнопку Готово. Мастер завершает свою работу, а мы переходим к непосредственному редактированию скрипта.
Сразу скажу, что с «Inno Setup Compiler» поставляется довольно подробный файл справки, поэтому за списком поддерживаемых секций, команд и флагов идем и смотрим справку. Если мы протестируем сейчас наш инсталлятор, то увидим, что на данный момент он только распаковывает входящие в его состав файлы и на этом завершает свою работу. Но нам нужно, чтобы автоматически запускалась установка среды AIR и .air файла нашего приложения. Для реализации этой задачи нам нужно добавить в скрипт установки секцию Run, в которой мы и опишем процесс установки этих файлов:
-
[Run]
-
Filename: "{src}\apollo_win_alpha1_031907.msi"; StatusMsg: "Installing Apollo Runtime Alpha..."; Flags: shellexec waituntilterminated
-
Filename: "{src}\App.air"; StatusMsg: "Installing Apollo Application..."; Flags: shellexec waituntilterminated
В этой секции указываются пути к файлам, запуск которых должен быть произведен. Я использовал префикс {src}, чтобы указать на папку, в которой находится инсталлятор. Добавил сообщение, которое будет описывать, что именно выполняется в настоящий момент, обозначив его в параметре StatusMsg. В качестве дополнительных флагов указал shellexec, который сообщит нашему инсталлятору, что запускаемый файл не является исполняемым .com или .exe файлом, а так же флаг waituntilterminated, который заставит инсталлятор дождаться полного прекращения работы запускаемого процесса и заблокировать при этом интерфейс окна инсталлятора.
Скомпилируйте инсталлятор и убедитесь в том, что все работает как надо. Конечный скрипт установки должен выглядеть следующим образом:
-
[Setup]
-
AppName=Apollo Application Installer Pack
-
AppVerName= Apollo Application Installer Pack 1.0
-
AppPublisher=CompanyName corp.
-
AppPublisherURL=http://www.companyname.com/
-
AppSupportURL=http:// www.companyname.com/support/
-
AppUpdatesURL= http:// www.companyname.com/update/
-
CreateAppDir=no
-
CreateUninstallRegKey=no
-
OutputDir=..\deploy
-
OutputBaseFilename=setup
-
Compression=lzma
-
SolidCompression=yes
-
-
[Languages]
-
Name: "english"; MessagesFile: "compiler:Default.isl"
-
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
-
-
[Files]
-
Source: "..\deploy\App.air"; DestDir: "{src}"; Flags: ignoreversion
-
Source: "..\assets\apollo_win_alpha1_031907.msi"; DestDir: "{src}"; Flags: ignoreversion
-
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
-
[Run]
-
Filename: "{src}\apollo_win_alpha1_031907.msi"; StatusMsg: "Installing Apollo Runtime Alpha..."; Flags: shellexec waituntilterminated
-
Filename: "{src}\App.air"; StatusMsg: "Installing Apollo Application..."; Flags: shellexec waituntilterminated
На этом создание программы установки завершено. На примере этой статьи мы убедились, что совсем немного нашего времени, потраченного на поиск программы и создание инсталлятора, могут заметно облегчить процесс использование нашего приложения пользователями, слабо разбирающихся в технической части. Давайте станем еще немного более гуманными по отношению к пользователям наших приложений. Удачных вам билдов.
Распространять "коммерческое" приложение до выхода собственно релиза продукта на котором оно написано? :-)))
Собственно из 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"
Думаю что это означает, что в релизе аполло (или как оно там будет называться) нативный инсталлятор это проблему решит