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

Извините, сайт в стадии реконструкции

............Excuse me, site in stage of the reconstructions.................

четверг, 17 июля 2008 г.

Использование InstallShield

Создание программы-установщика за 10 минут.

[29.08.2002, Денис Колисниченко, dhsilabs@mail.ru] 

Рано или поздно любой разработчик должен создать программу установки для своего программного продукта. Не запакуешь же программу вместе со всеми библиотеками в Zip-архив, а в файле install.txt не поместишь сведения – этот файл скопируйте туда-то, в реестре пропишите то-то? Некоторые разработчики пишут собственные программы-инсталляторы, однако это не очень удобно – для каждого нового проекта писать программу установки. А если попытаться сделать этот инсталлятор универсальным, то получится аналог того или иного уже написанного кем-то средства для создания дистрибутивов программного обеспечения. Зачем заново изобретать велосипед?

Программы создания дистрибутивов (или проще – инсталляторы) предназначены для автоматизации всего процесса установки программного обеспечения. Существуют два основных типа инсталляторов – скриптовые и те, которые основаны на бесскриптовой технологии. В первом случае вам нужно написать скрипт, иногда очень длинный, данный сценарий будет выполнен программой установки, то есть последовательность действий инсталлятора определяете вы сами. По-моему, это чем-то похоже на написание собственного инсталлятора. К первому типу относятся много программ, самой популярной из которых является, наверное, Wise.

Программы, основанные на бесскриптовой технологии, намного проще в использовании, однако имеют ряд ограничений, например, с помощью Borland InstallShield вы можете создать инсталлятор только для программы, разработанной в одной из IDE Borland, например, Delphi или CBuilder. Конечно, с их помощью можно создать программу установку и для любого другого exe-файла и набора библиотек, но это только при условии, что вы точно знаете, какие библиотеки использует программа. При создании с помощью старой версии (до версии 3) InstallShield инсталлятора для VisualBasic-проекта у вас непременно возникнуть сложности. Почему старой версии? Потому что новая версия поддерживает программы, разработанные на VB и VC. Более подробно об этом будет сказано чуть ниже.

К недостаткам скриптовых программ создания дистрибутивов нужно отнести сложность написания этого самого скрипта. В то время как с помощью InstallShield можно создать инсталлятор за какие-нибудь 5-10 минут – как говорится, дважды щелкнув мышью :). Кроме того, специфические проекты, например база данных, требует определенных знаний расположения системных файлов для того или иного проекта. Честно говоря, я до сих пор не знаю, сколько файлов (и какие именно) входят в состав BDE. Как я могу написать программу установки базы данных, не зная даже названия библиотек? Мне и незачем все это знать – InstallShield сама подготовит все необходимые файлы.

Итак, перейдем к непосредственному рассмотрению процесса создания инсталлятора. Как вы уже догадались, я буду использовать Borland InstallShield Express Limited Edition. Почему именно ограниченную версию (Limited), а не полную (Full)? Первая является бесплатной, а вот за вторую нужно заплатить. Поскольку платить деньги за инсталлятор, пусть даже довольно удобный и мощный, у меня особого желания нет, я выбрал Limited Edition. Но это не означает, что в статье не будут описаны возможности полной версии.

Прежде всего, надо определиться, какие файлы нам нужно поместить в дистрибутив и разбить их на группы. Это не первый этап создания инсталлятора – ведь мы еще не запустили InstallShield. Разбить файлы нужно для себя, как говориться, на бумажке, чтобы потом быстро создать нужные группы и поместить в них нужные файлы. Для определенности я использовал три группы:
Always Install – основные файлы, которые всегда должны быть установлены
Plugins – дополнительные возможности программы
Help – справочная система

Запускаем InstallShield и выбираем пункт меню Create a new project. После создания нового проекта в левой части окна InstallShield мы видим все этапы создания инсталлятора. Уже пройденные отмечаются красной птичкой
Переходим в раздел General Information и вводим общую информацию о программном продукте – авторские права, компания, название продукта, пиктограмма, путь для установки и т.д. Если параметр Disable Change button равен Yes, то кнопка Change (Изменить) будет недоступна. Кнопки Change (Изменить или Добавить/Удалить), Remove (Удалить) и Repair (Восстановить) появляются при запуске программы установки вашего программного продукта, если он уже был установлен на компьютере.

Затем нужно определить те самые группы файлов. В терминологии InstallShield эти группы называются Features (Функции). Поэтому переходим в раздел Features и создаем группы. Для создания группы активизируйте корень схемы, то есть надпись Features и нажмите кнопку Insert. Удалить группу можно с помощью клавиши Delete, а переименовать группы можно нажатием F2. Можно также воспользоваться контекстным меню (правая кнопка мыши) и выбрать соответствующие команды из него. Кроме групп вы можете создавать также и подгруппы.

Каждая группа имеет свои параметры Description, Required, Visible, Advertised и Comment. Параметр Описание (Description) задает описание группы файлов. Постарайтесь придумать понятные описания – их ведь увидит пользователь. Если значение параметра Требуется (Required) равно Yes, то данная группа файлов должна быть установлена всегда. Устанавливать значение Yes рекомендуется для основной группы файлов.

Параметр Visible определяет режим отображения группы файлов в режиме выбора компонент (Custom). Значение Visible and Collapsed означает, что данная группа будет отображена вместе со своими подгруппами в свернутом виде. Для ее раскрытия пользователю нужно будет нажать значок плюс рядом с названием группы. Значение Visible and Expanded означает, что данная группа будет отображена вместе со своими подгруппами в развернутом виде. Значение Not Visible запрещает отображение группы в режиме установки по выбору (Custom). Это значение нужно устанавливать для групп, которые всегда должны быть установлены: если нельзя отменить установку группы, так зачем сообщать об этом пользователю, чтобы он безрезультатно пытался снять птичку справа от названия группы?

В разделе Setup Types вы определяете типы установки (режимы) – Typical (Обыкновенная), Minimal (Сокращенная), Custom (По выбору). Для каждого типа установки можно определить группы файлов, которые будут установлены, при условии, что пользователь выберет соответствующую группу. Для типов Typical и Custom обычно выбирают все группы – в первом у пользователя даже и спрашивать никто не будет что устанавливать, а что – нет. А во втором – пользователь сам сможет выбрать, что ему устанавливать. При сокращенной установке обычно выбирается только группа Always Install, хотя это зависит от вашего желания.

В разделе Upgrade Paths можно указать пути для поиска предыдущих версий программы, если такая была установлена. Раздел Upgrade Path доступен только в полной версии InstallShield.

Теперь нужно указать, какие файлы должны входить в ту или иную группу. Перейдите в раздел Files. Окно данного раздела быдут разбито на четыре основные области: Source computer's folders (Каталоги компьютера-источника), Source computer's files (Файлы компьютера-источника), Destination computer's folders (Каталоги компьютера-назначения) и Destination computer's files (Файлы компьютера-назначения).
Обратите внимание на группу, с которой вы работаете (список Feature). Она указывается в верхней части окна раздела Files. Не спешите просто перетаскивать файлы из компьютера-источника на компьютер-назначения! Сначала нужно определить каталоги компьютера-назначения, в которые будут копироваться те или иные файлы. Щелкните правой кнопкой мыши на значке компьютера назначения и выберите команду Show Predefined folder (Показать предопределенный каталог). Выберите каталог INSTALLDIR. Вы должны обязательно выбрать его, иначе инсталлятор не будет знать, куда копировать выбранные вами файлы. Значение данного параметра определяется обычно так:
[ProgramFilesFolder]\\Default

Уточнить это (если вы еще этого не сделали) вы можете в разделе General Information, параметр INSTALLDIR.

После добавления предопределенной папки INSTALLDIR можно определить подкаталоги данного каталога, но обычно этого делать не нужно, так как вы можете просто перетащить нужные вам каталоги из компьютера-источника. Когда группа Always Install подготовлена, можно перейти к следующей группе, выбрав ее из списка Feature.

Раздел Files and Features предоставляет вам информацию о файлах, находящихся в той или иной группе, в виде списка. По сути, это информационный раздел, помогающий вам ориентироваться в проекте, поэтому сразу переходим к следующему разделу.

Раздел Object/Merge Modules очень важен – он позволяет импортировать в проект различные модули. Нам, как разработчикам баз данных, очень важен модуль BDE_ENT, который позволяет добавить BDE в наш проект установки.

После активизации данного модуля будет запущен мастер BDE designer. Сначала нужно указать существующий файл конфигурации BDE или создать новый. Затем нужно запустить Borland/Inprise BDE Merge module – просто нажмите на кнопку Launch. Запуск этого модуля необходим для определения псевдонимов (aliases) баз данных
Выберите драйвер баз данных, я использую базы данных в формате Paradox, поэтому отметил только этот драйвер. Затем нажмите кнопку Add для добавления нового псевдонима
Здесь все просто: укажите название псевдонима, выберите тип драйвера и укажите параметры, если необходимо. Параметры указываются в формате Параметр=Значение.

Осталось только заметить, что BDE не поддерживает сжатых дисков, поэтому если вы попытаетесь построить однодисковый сжатый SingleMedia-релиз, у вас ничего с этого не выйдет.

Нам также может быть полезен модуль BDEClientDataSet – локальный набор BDE.

Кстати, обратите внимание на модули, которые можно добавить в проект. Среди них не только компоненты, предназначенные для Delphi-проектов, но и компоненты, которые позволяют создавать программы установки для проектов MS Visual C и Visual Basic. Это Runtime-библиотеки С++, MFC и даже VB Virtual Machine. Не верите? Посмотрите примеры проектов программ установки и среди них вы найдете VB-проект. В предыдущих версиях InstallShield такого разнообразия не было: теперь я могу установить на компьютер клиента всю библиотеку классов MFC, но вот только зачем???

В версии 3 программы InstallShield появился очень полезный раздел – Dependencies (Зависимости). Зависимости – это связи программы с различными библиотеками (DLL). Существуют два режима определения зависимостей: статический и динамический. В первом случае сканируются все *.exe, *.dll, *.sys, *.ocx, *.com, *.cpl файлы и добавляются зависимости в проект. При динамическом режиме запускается приложение и отслеживается, какие DLL и OCX эта программа использует. По окончании проверки эти библиотеки добавляются в проект. К сожалению оба режима проверки зависимостей доступны только в полной версии программы.

В разделе Shortcuts/Folders определяются ярлыки и программные группы. Вы можете добавить ярлыки не только в меню Пуск, но и в меню SendTo (Отправить в) и Рабочий стол.

Раздел Registry содержит информацию о новых записях, которые будут добавлены в реестр после установки программы.

Выбрать нужные вам ODBC-ресурсы вы можете в одноименном разделе – ODBC Resources. Выберите нужный вам ресурс (я выбрал Paradox) и перейдите к следующему разделу.

Если вам нужно добавить записи в какой-нибудь INI-файл, например, system.ini, то это очень просто сделать в разделе INI File Changes.

Зарегистрировать расширение файла для своей программы можно в разделе File Extensions. В нашем случае в этом нет необходимости – мы используем только DB-файлы, а для их изменения предназначены куда более удобные средства, чем наша программа по начислению заработной платы.

Раздел Environment Variables предназначен для изменения переменных окружения. По правде говоря, я даже приблизительно не знаю как выглядит этот раздел, потому что он доступен только в полной версии.

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

Разделы BillBoards и Text and Messages доступны в полной версии программы. В первом разделе вы можете (или могли бы, будь у вас полная версия :)) определить BMP-файлы, которые будут показываться пользователю во время установки, рекламируя вас, вашу компанию и другие ваши продукты. В разделе Text and Messages вы можете редактировать абсолютно все сообщения, используемые программой-инсталлятором – вплоть до названия кнопки Next.

Раздел Requirements позволяет установить системные требования для вашей программы – операционная система, процессор, объем ОЗУ, разрешение экрана и глубина цветов.

Все, что нам осталось – это построить релиз, протестировать его и записать на какой-нибудь носитель информации. Все это можно сделать в разделе Prepare for Release. Сначала выберите предполагаемый носитель информации, например, CDROM, установите его параметры – объем, сжатие и другие. Будьте осторожны со сжатием: помните, что BDE не поддерживает сжатия.

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

Все ваши комментарии, вопросы и пожелания вы можете отправить по адресу dhsilabs@mail.ru

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