понедельник, 18 июня 2012 г.

Урок 49. Инсталлятор программы - это не сложно

Помните, на предыдущем уроке я поместил в отдельную папку необходимые файлы? 
Это были файлы, разработанные нами в процессе создания программы "Расходы", т.е. обеспечивающие заданный функционал программы. 

Еще раз отмечу, что мною выбран способ хранения настроек в файле ini, а не в реестре Windows, поэтому при создании установщика данный вопрос рассматриваться не будет (иными словами: все своё ношу с собой :-) )

И после этих заявлений, любознательные могут спросить: "Ну и зачем нам тратить время на написание инсталлятора, если достаточно просто скопировать эту папку на другой компьютер и - пользуйся на здоровье?"

Не так все просто.


В 46 уроке я говорил о создании сложного отчета, при проектировании которого был использован компонент, требующий наличия особой библиотеки. Т.е. теперь - самое время вспомнить о программах, библиотеках и прочих "сопутствующих товарах", которые обеспечивают работу созданной нами программы. 
Думаю, что надо по ходу создания установщика (инсталлятора) программы быть готовым, ответить на ряд вопросов, т.е. вспомнить, где хранится, например, скачанная библиотека midas.dll и как ее установить. Если бы функционал программы обеспечивал сканирование наиболее важных документов (чеков, счетов за услуги, товары и т.п.), я имею ввиду электронный архив, то для создания подобного функционала понадобилась бы еще одна библиотека и так далее.

Как я уже неоднократно утверждал, для решения любого вопроса почти всегда существует несколько путей. Можно написать программу инсталлятор собственно в среде Delphi. А можно воспользоваться уже готовыми программами. Я выбрал бесплатный вариант Inno Setup.

* * *

Википедия:

Inno Setup — open source система создания инсталляторов для Windows программ. Впервые выпущенный в 1997 году, Inno Setup сегодня конкурирует и даже превосходит многие коммерческие установщики по функциональности и стабильности.

* * *


Достаточно прелюдий.

После установки программы (а установка не должна вызвать никаких вопросов), загрузив программу, Вы получите вот такое окно с новым проектом:



Нажмите на самую левую пиктограмму - "Туц..." ой, извините: "New...", начнет работу визард-помощник, который существенно облегчит решение задачи. Не бойтесь что-то сделать неправильно, позже всегда можно внести изменения.



Оставив не отмеченным Check Box, нажмем Next и немного пофантазируем (или заглянем в опции проекта), чтобы заполнить поля в следующем окне:



В следующем окне я пока оставлю все без изменений:




Далее нужно указать главный исполняемый файл приложения (программы) и добавить в список все сопутствующие файлы (из той самой папки, которую я создал на предыдущем уроке):



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



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



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


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



Осталось только нажать кнопку "Finish" в следующем окне, чтобы получить готовый скрипт и вопрос "Хотите ли Вы сразу же совершить компилляцию проекта?"

Отвечаю утвердительно на этот и следующий вопрос о сохранении проекта перед его обработкой. Файл проекта получит расширение *.iss.

В результате работы Inno Setup в папке OutputFolder появится файл Setup.exe, это и будет первый вариант установочного файла.

Побалуйтесь, запустите его:



Если Вы ничего не меняли в процессе установки, то в папке C:\\ProgramFiles\Rashod появится не только весь набор необходимых файлов, но и файлы деинсталлятора:



Красота?

Не совсем... Все установится и будет работать на Вашем компьютере без проблем, поскольку на нем Вы вели разработку, следовательно, в системе имеются все необходимые библиотеки. Рекомендую ради эксперимента отправиться к знакомому, который не имеет понятия о Delphi и попробовать порезвиться у него на компе с его, разумеется, разрешения... Результат Вас разочарует.

Для исправления ситуации нужно добавить в папку For Install следующие каталоги и файлы, касающиеся библиотеки Midas.dll:



Теперь в окне программы Inno Setup необходимо добавить две строчки в секцию [Files]:

Source: "X:\Lessons\InternetBusiness\! VideoLessons\Les 49\For install\Необходимые библиотеки\Midas\Midas.dll"; DestDir: {app}; Flags: deleteafterinstall
и

Source: "X:\Lessons\InternetBusiness\! VideoLessons\Les 49\For install\ Необходимые библиотеки \Midas\RegisterMidas.bat"; DestDir: {app}; Flags: deleteafterinstall
и одну строчку - в секцию выполнения [Run], чтобы созданный нами когда-то *.bat файл сработал:

Filename: {app}\RegisterMidas.bat; WorkingDir: {app}; StatusMsg: wait
Обратите внимание, что после установки программы, файлы Midas.dll и RegisterMidas.bat в целевой папке с установленной программой больше не нужны, поэтому в указанных выше строчках присутствует метка (флаг) DeleteAfterInstall (удалить после установки).

Теперь после запуска вашего Setup.exe, в процессе установки будет повторно размещена в системе необходимая библиотека Midas, о чем пользователь в процессе работы установщика получит сообщение в виде:



А давайте еще ради интереса заглянем в "Панель управления" на страницу "Программы и компоненты". Мы ничегошеньки не писали в системный реестр, но знает ли при этом операционная система хоть что-то о программе "Rashod.exe"?






Вот она, "родимая"! В Windows - все под контролем :-) и даже - результат нашего творчества. И, если нажать на кнопку "Удалить", то сработает деинсталлятор и...

На этом рассказ о создании программы для учета расходов можно считать законченным.

Обещаю в ближайшее время выложить в разделе "Скачать" готовый работоспособный вариант программы, наделенный еще двумя-тремя полезными функциями, о которых я здесь лишь вскользь упоминал.

Всем - удачи. До новых встреч.


PS

В меню "Пуск" и на рабочем столе иконки работать не будут, пока Вы в секцию

[Icons]

не добавите ключевое слово WorkingDir


Name: "{group}\Rashod"; Filename: "{app}\Rashod.exe"; WorkingDir: {app}
Name: "{commondesktop}\Rashod"; Filename: "{app}\Rashod.exe"; Tasks: desktopicon; WorkingDir: {app}



PPS

Кто может ответить: после завершения работы деинсталлятора, что будет с библиотекой midas.dll. Останется она "жить" в системе или будет так же удалена? А?


Комментариев нет:

Отправить комментарий