Лекция № 32
Тема: «Создание инсталлятора программы»
План
1. Общие сведения
2. Создание установочного пакета
3.Вставка сценариев для создания БД
1. Общие сведения
Если проект создан, протестирован и готов к использованию, то его в принципе можно распространять в виде исполняемого файла, который просто нужно запустить на машине пользователя.
Очень часто проект состоит из более чем одного файла: исполняемый файл, файлы библиотек, файлы базы данных, файлы помощи и т.д. Такой проект нужно распространять в виде папки. Если хотя бы один из файлов будет удален или поврежден, то программа может оказаться нерабочей. Более того, такой набор файлов неудобно распространять через интернет или через почту.
Даже если проект распространяется в виде папки, то от пользователя требуются знания по копированию папки, вынесению ярлыка программы на Рабочий стол или в меню кнопки Пуск. Для удаления программы пользователь будет вынужден удалить папку с программой и все ярлыки. К сожалению, не все пользователи могут выполнить подобные операции.
Решением проблемы является создание установочного пакета - архива с перечнем всех необходимых файлов. При запуске такого пакета происходит автоматическое копирование программы в указанную папку, создание всех необходимых ярлыков и создание инструмента для удаления программы – деинсталлятора.
Создание таких пакетов не вызывает особых трудностей и выполняется с помощью специальных программ.
В качетве одной из них рассмотрим программу IndogoRose Setup Factory.
Программа имеет простой, но в то же время многофункциональный русифицированный интерфейс.
2. Создание установочного пакета
При запуске программы откроется окно, в котором нужно выбрать режим работы: создание нового проекта или открытие существующего. При выборе создания нового проекта, с помощью флажка можно указать, что необходимо запустить мастер создания пакета. Мастер позволяет в простом режиме задать нужные параметры проекта.
Шаги мастера
На первом этапе указывается информация о программе и ее автора (название продукта, компании, номер версии и сайт автора).

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

На третьем шаге выбирается стиль окна установки.

На четвертом шаге выбирается тема оформления окон проекта.

На пятом шаге выбираются языки, на которых можно выполнить операцию инсталляции программы.

На шестом этапе необходимо отметить библиотеки, необходимые для работы программы. Данные библиотеки нужны для работы программ, написанных на Visual Basic или Visual C ++. Если программа написана на Delphi, то ничего отмечать не нужно.

На седьмом шаге отмечают операционные системы, под которым будет работать ваша программа.

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

Главная команда - Изменить свойства файла. Эту команду нужно последовательно вызвать для каждого файла и задать ряд свойств: на закладке Ярлыки с помощью флажков укажите, где будет создан ярлык для файла (если ярлык не нужен, то все флажки снимите), в поле Описание введите название ярлыка, под которым ярлык с появится в указанном вами месте; в группе Значок с помощью переключателя Настройка можно указать файл иконки, которая будет присвоена созданному ярлыку (если параметр не задан, то отображается значок исполняемого файла).
Изменение настроек проекта

В группе Настройка находятся команды для выполнения следующих операций:
- Переменные сессии - позволяет задать значение для всех переменных проекта (информация о продукте и авторе, путь установки по умолчанию и т.п.);
- Фон окна - позволяет задать фон окна инсталляции, задать заголовки окон мастера установки;
- Системные требования - позволяет задать список допустимых операционных систем, а также требования к аппаратной части компьютера пользователя. На закладке Дополнительно можно указать режим «скрытой» установки, задать иконку для будущего файла инсталляции;
- Безопасность - позволяет ввести перечень серийных номеров для установки пакета, а также ограничения на использование пакета по времени или количеству запусков программы;
- Языки - позволяет добавить или удалить языки пакета инсталляции.
Работа с экранами

Группа Экраны содержит следующие команды:
- Темы проекта - позволяет выбрать тему оформления мастера установки. С помощью кнопки Исправление можно изменить параметры темы;
- Перед установкой - позволяет настроить параметры всех окон мастера, которые отражаются до начала установки программы. В списке окон с помощью кнопок со стрелками можно изменить их порядок, с помощью кнопки Удалить можно некоторые окна убрать из мастера, с помощью кнопки Исправление можно задать настройки окон. Особое внимание уделите окну с лицензионным соглашением. В этом окне нужно или ввести текст соглашения, или загрузить текстовый файл, но в этом случае файл должен быть включен в папку проекта;
- Во время инсталляции - настраивается окно отображения процесса копирования программы на компьютер пользователя;
- После инсталляции - задаются параметры окна, отображаемого по окончании процесса установки программы.
Создание деинсталлятора

В группе Деинсталляция находятся команды для задания параметров удаления проекта с компьютера пользователя. Группа имеет следующие команды;
- Настройки - с помощью флажка отмечается необходимость создания деинсталлятора. Без этого флажка все остальные параметры не имеют смысла;
- Фон - задаются параметры фона окна деинсталляции и текст надписей в окне;
- Панель управления - с помощью флажка указывается необходимость помещать программу в список Установка и удаление программ панели управления. В поле Режим значка можно указать ярлык для этой программы в списке;
- Ярлык - в поле Описание можно ввести имя, под которым деинсталлятор появится в меню кнопки Пуск и других указанных в проекте местах, в группе Значок можно указать файл иконки для ярлыка деинсталлятора;
- Экраны - можно настроить параметры окон мастера деинсталляции. Особенно обратите внимание на экран After Install, на котором некорректно отображается русский текст, и его нужно подправить.
Сборка пакета
После задания всех параметров сохраните проект и нажмите на кнопку Собрать на панели инструментов или выполните команду Издание - Сборка
. Запустится мастер. На первом этапе укажите размер файла, на который будет разбит ваш установочный пакет, на втором шаге укажите папку и имя будущего установочного файла.
По завершению процесса сбора вы получите установочный файл для вашего проекта.
3. Вставка сценариев для создания БД
Если ваш проект использует клиент/серверную базу данных, то ее невозможно просто поместить в папку с проектом для установки. Такая база данных находится на сервере в специальном формате и установить ее на сервер можно только с помощью специальных команд, записанных в файле скриптов.
Создание скриптового файла БД MySQL
Для создания скриптового файла можно воспользоваться программой SQL Manager for MySQL. В левой части выберите нужную базу данных и выполните команду Инструменты - Извлечение базы данных.
В окне мастера на первом шаге выберите БД для извлечения и установите флажок.

На следующем шаге укажите путь и имя файла для экспорта БД.

На следующем шаге установите все флажки. В результате будет создан скриптовый файл БД.

Создание скриптового файла БД SQL Server
В окне утилиты "SQL Server Management Studio" щелкните правой кнопкой мыши на нужной БД и выберите команду "Задачи - Сформировать сценарии". Появится окно мастера создания скрипта.
На первом этапе выберите переключатель "Внести в сценарий всю базу данных и все объекты базы данных" для переноса всех элементов БД.
На следующем шаге укажите путь и имя файла скрипта. Обязательно нажмите кнопку "Дополнительно" для настройки дополнительных параметров. К таким параметрам относятся версия SQL Server и типы данных. По умолчанию параметр "Типы данных" имеет значение "Только схема". Это означает, что к скрипта переносятся пустые таблицы без данных. Для переноса данных выберите значение "Схема и данные".

После задания всех параметров нажмите кнопку "Далее" и "Готово".
Замечание! В полученном файле обязательно УДАЛИТЕ пути к файлам БД. Для этого откройте полученный файл, найдите команду create database и удалите в ней пути к файлам, оставив только текст:
create database имя_БД
Использование скриптового файла для установки БД MySQL
Если у вас создан скриптовый файл MySQL, то выполнить его можно с помощью команды вида:
mysql.exe -h имя_сервера -u имя_пользователя –pпароль < имя_скриптового файла
Например, если файл скрипта имеет имя test.sql, то команда может иметь вид:
mysql.exe -h localhost -u root -p111 < test.sql
В этом случае установка выполняется на локальный компьютер (localhost) под логином root и паролем 111.
Обратите внимание, что в команде присутствует вызов программы mysql.exe. Данная программа должна находиться в одной папке с файлом скрипта. Если на машине установлена ??СУБД MySQL, то этот файл можно скопировать с папки C:\Program Files\Mysql\Bin.
В реальных условиях имя сервера, логин и пароль могут быть разными, поэтому эта команда должна выполняться с параметрами, с помощью которых будут передаваться регистрационные данные. Для решения этой задачи надо создать * .bat файл для выполнения экспорта скриптового файла. Этот файл может иметь следующий код:
cls
@echo off
mysql –h %1 –u %2 -p%3 < test.sql
if% errorlevel% == 0 goto m1
echo БД не установлена.
echo Проверьте параметры регистрации и наличие работающего сервера MySQL.
pause
goto end
:m1
echo БД установлена ??успешно.
pause
:end
Замечания. Убедитесь, что * .bat файл имеет кодировку MS_DOS.
Использование скриптового файла для установки БД SQL Server
Если у вас создан скриптовый файл SQL Server, то выполнить его можно с помощью команды вида:
sqlcmd.exe -S имя_сервера -U имя пользователя -P пароль -i имья_скриптового файла
Например, если файл скрипта имеет имя test.sql, то команда может иметь вид:
sqlcmd.exe -S pc01202 -U sa -P 111 -i test.sql
В этом случае установка выполняется на компьютер pc01202 под логином sa и паролем 111.
Обратите внимание, что в команде присутствует вызов программы sqlcmd.exe. Данная программа должна находиться в одной папке с файлом скрипта и не может работать без файла sqlcmd.rll (который тоже надо скопировать в папку с файлом скрипта). Если на машине установлена ??СУБД SQL Server, то эти файл можно скопировать с папки C:\ Program_Files\Microsft SQL Server\Tools\Binn
В реальных условиях имя сервера, логин и пароль могут быть разными, поэтому эта команда должна выполняться с параметрами, с помощью которых будут передаваться регистрационные данные. Для решения этой задачи надо создать * .bat файл для выполнения экспорта скриптового файла. Этот файл может иметь следующий код:
cls
@echo off
sqlcmd –S %1 –U %2 –P %3 -i test.sql
if% errorlevel% == 0 goto m1
echo БД не установлена.
echo Проверьте параметры регистрации и наличие работающего сервера SQL Server.
pause
goto end
:m1
echo БД установлена ??успешно.
pause
:end
Замечания. Убедитесь, что * .bat файл имеет кодировку MS_DOS.
Подготовка БД к инсталиции
Для корректной инсталляции БД MySQL рекомендуется в папке с проектом создать новую папку, в которой разместить: скриптовый файл БД, файл mysql.exe, созданный * .bat файл для установки БД на сервер.
Для инсталляции БД SQL Server аналогично в папке с проектом создать новую папку, в которой разместить: скриптовый файл БД, файлы sqlcmd.exe и sqlcmd.rll, а также создан * .bat файл для установки БД на сервер.
Добавьте все эти файлы в проект с помощью команды Добавить файлы из группы файлы.
Пример. Пусть в папке с проектом имеется вложена папка Baza, в которой находятся файлы mysql.exe, baza.sql (файл скрипта) и baza.bat (файл для запуска файла скрипта на выполнение).
Необходимо, чтобы после установки программы автоматически выполнился данный скрипт, а потом папка Baza удалилась с диска.
С начала в группе Файлы щелкните команду Добавить файлы и укажите все файлы из папки Baza. Проверьте, чтобы ни для одного из этих файлов не создавались ярлыки запуска.
Создание экрана ввода регистрационных данных
Установку БД надо выполнять после установки основной программы. При этом перед установкой необходимо указать регистрационные данные: сервер, логин и пароль. Ввод таких данных будем осуществлять с помощью вспомогательного экрана
В группе Экраны щелкните на команде После инсталляции. Нажмите кнопку Добавить и укажите тип экрана Custom.

С помощью кнопок со стрелками переместите созданную форму первой в списке.
С помощью кнопки Правка раскройте созданную формы и с помощью кнопки Вставка добавьте на форму текстовые поля, надписи и кнопки.

Двойным щелчком на текстовых полях откройте окно свойств, в котором укажите имя поля для обращения к нему в проекте и текст по умолчанию. Например, дадим следующие имена:% user%, % password%, % server%.

Значение по умолчанию для этих полей: root, 111, localhost.
Разместите созданные компоненты так, как показано на рисунке.

Создание кода для установки БД
Для ввода кода экрана перейдите на закладку Действия, а затем на закладку OnCtrlMessages. Эта закладка содержит код для обработки событий от двух кнопок. Наш экран тоже имеет две кнопки, поэтому нужно только ввести нужные команде в соответствующие ветви оператора if.
Для ввода нужного действия можно воспользоваться мастером, который вызывается кнопкой Добавить действие.
Для установки БД (код первой кнопки) удалите весь код в первой ветви оператора if, щелкните на кнопке Добавить действие. В окне выберите File.Run.

В следующем окне в поле FileName укажите * .bat файл для запуска. В поле Args укажите список аргументов в виде: SessionVar.Expand ("% server% % user% %password%"). В поле WorkingFolder укажите имя папки, из которой запускается * .bat файл. В списке WaitForReturn выберите значение true. Это означает, что установки не будет продолжаться пока не закончится работа * .bat файла.

После щелчка на кнопке Готово в коде появится команда:
result = File.Run(SessionVar.Expand("%AppFolder%\\Baza\\backup.bat"), SessionVar.Expand("%server% %user% %password%"), "%AppFolder%\\Baza" , SW_SHOWNORMAL, true);
Удаление папки с параметрами установки БД
После установки БД и ODBC драйвера нужно удалить папку Baza, в которой находятся файлы, необходимые для установки БД.
Для этого перейдите на закладку OnNext. На закладке будет находиться команда перехода на следующий экран инсталлятора. Установите курсор перед этой командой и нажмите кнопку Добавить действие. В окне выберите Folder.DeleteTree.

В следующем окне в поле укажите путь к папке Baza: "% AppFolder% \\ Baza"

После щелчка на кнопке Готово в коде появится команда:
Folder.DeleteTree("%AppFolder%\\Baza", nil);
После ввода всех параметров выполните сборку проекта и запустите созданный инсталлятор для проверки его работы.
Примечание: для установки БД необходимо, чтобы у пользователя уже был предварительно установлен и запущен сервер MySQL.
Вопросы для самоконтроля
1. В чем преимущества использования инсталляторов для распространения программы среди пользователей.
2. Опишите все шаги мастера создания проекта инсталляции в программе Setup Factory.
3. Опишите основные операции с файлами проекта в программе Setup fActory.
4. Опишите основные настройки проекта в программе Setup Factory.
5. Как выполнить настройки деинсталлятора в проекте программы Setup Factory?
6. Как добавить в проект программы Setup Factory новый экран, нанести на него компоненты и создать для них код?