...
...

Созвездие инсталляторов Gentee

Созвездие инсталляторов Gentee
Никогда не обращали внимания, насколько прост процесс установки практически любого программного обеспечения на компьютер под управлением Windows? Кликаем на setup.exe, изредка правим некие настройки по умолчанию и снова кликаем, даже не вчитываясь в сопутствующие пояснения. Исчезает сине-голубое окно инсталлятора, и на рабочем столе и в меню старт оказываются иконки новорожденного приложения. Все до предела стандартизировано, понятно, удобно для конечного пользователя. А никогда не интересовались, как на этот процесс смотрят сами разработчики программ? Вот как раз-таки о процессе создания инсталляционного пакета, инструментах, для этой цели предназначенных, я и расскажу в этой статье.

Итак, решив однажды заняться распространением собственной программы через Интернет, задумался я об удобстве пользователя — довел до ума интерфейс, написал хелпы, внедрил поддержку нескольких языков, ну и, как водится, не оставил без внимания сам процесс (будущий) инсталляции программы. Собственно, о разного рода генераторах инсталляционных пакетов я знал давно, да и вы, уверен, назовете больше одного: монстр Microsoft Installer (тот, что помогает ставить Office), Install Shield (с теми тремя вертикальными индикаторами), VBSetup c огромной, но от этого совсем неприметной кнопкой Default/Custom, ну и еще много менее известных рядовому пользователю программ-инсталляторов. Я же решил поискать решение альтернативное трем вышеприведенным, и вот по каким причинам.
Первое — размер инсталляционного пакета. Если для большой программы, издающейся на компакт-диске, лишний мегабайт не повредит, то для программ, распространяемых по Сети (как раз мой случай), этот фактор весьма актуален, и меньший размер пакета означает более высокую скорость распространения программы. Взгляните на главное меню вашей Windows — если вы не отъявленный геймер и на вашей машине ничего, кроме игрушек и драйверов для видеокарты, нет, то вы увидите ярлыки множества программ, размер инсталляционного пакета которых не превосходит и мегабайта: WinRar, Windows Commander, UltraEdit, Winamp, MouseImp и т.д. А программы в большинстве, между прочим, вовсе не такие маленькие, как кажется на первый взгляд.
Вторая причина — данные продукты отнюдь не бесплатны, и довольно проблематично для жителя Беларуси отыскать сумму в "лишних" $xxx для своего маленького проектика. Использовать пиратские копии вообще-то не очень хотелось.
Просто самораспаковывающийся архив меня и, еще более вероятно, конечного пользователя тоже не устраивал из-за отсутствия возможности создания ярлыков, ключей в реестре, показа readme и всего обычно сопутствующего процессу инсталляции. Вот и решил я для своей задачи искать альтернативное решение. А искать принято в мировой паутине.
www.gentee.com — на них я наткнулся совершенно случайно (настолько случайно, что даже не помню, что меня туда привело — то ли один из shareware-сайтов, то ли поисковая машина). После изучения инструментов по интересующей меня теме, найденных на этом сайте, я от дальнейшего поиска вообще немедленно отказался. На сайте уютно расположилось целое созвездие генераторов инсталляционных пакетов (младший Setup Generator, средний Setup Generator Pro и старший брат CreateInstall2000). До чего же меня удивили эти три "сына" Gentee своими возможностями и ценой (особенно Setup Generator, который вообще бесплатный!). И возникло у меня желание поделиться с уважаемыми читателями. С удовольствием подробно расскажу о каждой программе.
Setup Generator. Начнем с самого маленького (но от этого ничуть не теряющего в функциональности) — малыш Setup Generator. Версия, которая попала ко мне в руки (самая свежая), — 2001.1.0 (несколько необычная, но информативная нумерация). Начинающему разработчику/распространителю программного обеспечения понравится тот факт, что этот продукт бесплатный. Сначала, как водится, общее впечатление о программе. Выглядит сие творение рук Gentee (рис. 1) довольно просто и на самом деле, как пишут сами авторы, способно сделать инсталляционный пакет средней программы за три минуты. Бросается в глаза — поддержка целого ряда языков. Наверное, это должно немало обрадовать человека, не владеющего английским. Язык программы меняется прямо на ходу: выбрал интересующий пункт меню Russian — и все надписи (меню, кнопки, метки и т.д.) перевелись на соответствующий язык. Редко увидишь такую прелесть. Как и у всякой послушной программы, присутствует (ну еще бы!) справочная информация, которая как бы и не нужна, так как интерфейс отлично продуман, везде всплывают хинты с пояснениями, все поля хорошо подписаны, надписи достаточно информативны. Лишь один раз довелось мне воспользоваться справкой в этой программе, но об этом я скажу позднее.
Работа с программой напоминает "программирование wizard-a". Вы просто указываете, что за чем должно выполняться при инсталляции, следуя направляющему меню (левая часть окна программы) — и все. Итак, все по порядку.
Пункт General позволяет: описать, собственно, имя выходного файла инсталляционного пакета (лучше придумать что-то более оригинальное, чем setup.exe) и директории, в которой он расположится; позволяет выбрать язык инсталляции (6 шт.) — на этом языке будут подписаны все поясняющие тексты, появляющиеся во время установки (подтверждения, комментарии, вопросы пользователю и т.д.); указать, включать ли в инсталляционный пакет программу деинсталляции. Здесь же можно попросить Setup Generator показать произвольную картинку — обычно логотип компании — создателя продукта или самого продукта.
В секции At the beginning можно показать пользователю лицензию. Настройки этого раздела отвечают за внешний вид окна инсталлятора во время установки программы (шрифт, которым пишется название устанавливаемой программы, разные копирайты и комментирующий текст). Так как эта маленькая программка не предназначена для установки монструозных проектов, то скромного комментария, что инсталлируемая программа, к примеру, строит графики математических функций, будет достаточно, что здесь сделать и позволено.
Назначение следующего раздела — Files — тоже очевидно. Здесь программе нужно будет указать директорию, которая будет упакована в дистрибутив целиком и позднее, при инсталляции, будет скопирована полностью в директорию установки. Что же делать, если нужно положить в C:\Windows\System отдельный файл (часто, между прочим, возникающая задача)? Эту проблему авторы программы решили следующим образом: кроме целой директории, в пакет можно добавлять и отдельные файлы. В качестве имен файлов программа воспринимает не только оные, но и шаблоны (например, *.bmp, *.dll, *32.* и т.д. — пользователь может выбирать по вкусу). Для каждого такого отдельного файла указывается место назначения на диске машины (конечного пользователя). Здесь уместно упомянуть такой "классный трюк", как макросы. Проблема следующая — при создании инсталляционного пакета заранее не известна ни системная директория конечной машины, ни даже сама директория инсталляции. Куда в таком случае можно запихнуть, к примеру, MFC40.dll или MSVBVM50.dll? В таких ситуации Setup Generator работает с макросами. Например, если уж нужно поместить злосчастный .bpl/.dll/.ocx в системную директорию, то путь для этого отдельного файла можно написать так: #syspath#. И все! Таких макросов я насчитал больше 20 штук. С их помощью можно получить всю необходимую информацию — начиная от системной директории и путь к CD-ROM и заканчивая показаниями системных часов. Кстати, макросы — это и есть тот единственный раз, когда мне пришлось залезть в хелпы программы. Далее — обычная проблема инсталляторов — затирание более новых совместно используемых различными приложениями файлов более старыми их версиями, отчего многие приложения перестают работать. Здесь такой проблемы нет — для каждого файла устанавливается собственная политика поведения при копировании: пропускать, спрашивать пользователя, молча писать поверх, и последние два — спрашивать пользователя, если инсталлируемый файл новее, чем уже существующий, и overwrite if newer.
Перейдем к секции INI/Registry. То, что каждая уважающая себя программа хранит данные в системном реестре или ini-файлах, известно всем. Для того чтобы о вновь поставленной программе узнала операционная система и просто для собственных нужд, необходимо создание ключей в реестре. Setup Generator делает эту задачу простой. Описываем, на какой ветке реестра будут созданы нужные ключи, их имена, значения. То же самое — если нужно подправить какой-либо ini-файл. Немного возни, зато потом легко и просто ставится программа на конечную машину. Единственное нарекание, которое мне пришло в голову за время работы с программой, — под Windows NT, если злобный админ запретил создание ключей в HKLM и иже с ним, ничего не выйдет с реестром, но по словам авторов для углубленного копания в подобных "платформенного характера" нюансах существует Setup Generator Pro — средний сын Gentee, Inc. Но о нем позже.
Название пункта Shortcuts все того же меню говорит само за себя. Здесь можно просить Setup Generator создавать иконки в главном меню Windows и ставить их в соответствие с задаваемыми программами. Интересно обратить внимание, что для вызываемых посредством этих шорткатов программ можно задавать параметры командной строки: к примеру, есть файл hmgraph.exe и при вызове его (hmgraph.exe /language) вызывается диалог смены языка абстрактной программы hmgraph., то специально для удобства пользователя лучше всего не пудрить ему мозги (может, кто-то вообще не знает, кто такая командная строка) — создать ярлык с соответствующим вызовом.
Вот и добрались до конца — закладка At The End. Хорошо бы показать пользователю, что мы очень рады, если он поставит программу, и напомнить о регистрации. Это позволяется сделать здесь — final text. Как водится, после инсталляции показывается readme.txt и запускается приложение. Все соответствующие настройки доступны на этой последней закладке. После того, как все поля программы заполнены, можно преступать к созданию самого дистрибутива — Make. До генерации можно запустить его и проверить, все ли в порядке. На самом деле, если проект по размерам в распакованном виде сравним с мегабайтом, то на изготовление дистрибутива понадобится меньше минуты. В три раза меньше! И довесок к упакованным файлам составит всего 36 килобайт! Еще раз напомню — программа полностью бесплатная и не требует регистрации. В общем, очень рекомендую.
Ну, что же, двигаемся дальше. Средний сын Gentee, Inc. — Setup Generator Pro — улучшенная версия младшего Setup Generator, является уже shareware, т.е. появилась кнопочка Buy и ядовитая (красное на сером) надпись unregistered (рис. 2 — скриншот уже зарегистрированной версии, поэтому эти два момента исчезли). На все про все у вас всего 30 дней апробации, потом, следуя лицензии, программу надо или купить, или удалить с винчестера. Все дистрибутивы, созданные с помощью незарегистрированной версии программы, будут страдать nag-screen-ом в начале инсталляции, что для простого пользователя некритично, но разработчику неприятно. Других ограничений (отличий между зарегистрированной и незарегистрированной версиями) я не обнаружил. Ну, и чем же так понравился мне Setup Generator Pro? Все по порядку. Разного рода украшения я, конечно, описывать не буду — остановлюсь на главных деталях. Интерфейс программы во многом (если не полностью) схож с Setup Generator-ом. Основные различия сосредоточены внутри программы.
Появилась вкладка Output с возможностью настройки уровня компрессии файлов и пометка "не сжимать файлы с расширениями .rar, .zip и т.д.". Самое важное на мой взгляд в этом разделе — возможность разбивки инсталляционного пакета на тома, на случай если планируется распространять продукт на носителях малого объема. Это особенно актуально для проектов, умещающихся на 2-3 дискетах. Компакт-диск писать для этого накладно, а вот на дискеты не каждый инсталлятор сможет написать так, как это сделает Setup Generator Pro. Размер тома, естественно, настраивается. Еще одна мелкая, но "фирменная деталь" — возможность сопоставить самой программе инсталляции (результат работы Setup Generator Pro) собственную, фирменную, иконку.
Раздел General пополнился опцией выбора сразу нескольких языков инсталляции (конечный пользователь потом сам выберет, на каком он хочет производить установку). Еще одно не менее интересное (полезное?) нововведение — пароль, устанавливаемый. Прежде чем запуститься, пакет спросит пароль и продолжит свою работы только при введении оного.
Куча разного рода "красоты" наводится в пункте At the Beginning, касательно размеров, положения, цвета окна инсталляции, шрифтов. Это позволяет довести до ума даже внешний вид программы инсталляции вашего продукта (от этого зависит первое впечатление на конечного пользователя — встречают по одежке). Время работы программы-инсталлятора — это самое время рассказать пользователю о функциональности устанавливаемой программы, показать логотип фирмы, ну, и всякого рода рекламу.
Один весьма профессиональный штришок — можно попросить программу закрыть любое Windows-окно (поиск ведется по его названию или, как вариант, части названия). Если пользователь устанавливает новую версию некой абстрактной программы HammerGraph v.1.2, а в это время запущена одна (точно не известно какая) предыдущая его версия, то по постоянной части названия HammerGraph можно приложение закрыть (у пользователя об этом предварительно вежливо испросят на то его милостивого согласия). Можно также проверить совместно используемые ресурсы (файлы, mutex, окна (опять же по названию)) на доступность (не занятость) и отреагировать соответствующим сообщением.
Целый косметический набор расположился на вкладке Process Window. Здесь можно настроить цвет Progress Bar-a (или вообще отключить его), указать Setup Generator Pro, что нужно закрывать свое окно после инсталляции, не дожидаясь, пока пользователь нажмет OK. Ну и, конечно, можно заставить программу показать (определенный вами) splash screen, продержать его на экране n-ое количество секунд, продемонстрировав, к примеру, логотип фирмы разработчика. Setup Generator-у Pro все равно, что показывать, ему от вас нужная только bmp — картинка.
В меню INI/Register малюсенькое, но в точку, дополнение. Теперь ключи реестра можно оставлять нетронутыми, если они уже существуют. Представьте себе картину, когда пользователь настроил предыдущую версию программы HammerGraph "под себя" — цвета, шрифты, размеры окно, а тут новая версия пришла и... на тебе — полностью сохранила все настройки! Впечатляет? Просто Setup Generator ключи переписывал новыми значениями без всяких лишних разговоров.
Shortcuts. Все описать сложно (много), а, в общем, все, что Windows позволяет творить над иконками, можно заказать здесь. Из всего самое интересное — извлечение иконки из исполнимого файла по индексу, да опция создания этой самой иконки для всех пользователей машины (каждого профайла) или только для текущего. Ну, и пользователь может сам решать, куда эти иконки создавать (Автозапуск, Главное Меню, Рабочий Стол).
Предпоследний этап — At The End (but not yet!). Настройка деинсталлятора: его имя, иконка, нужен ли он вообще. Полезным я нашел возможность запуска любого указанного приложения до непосредственно запуска самого процесса деинсталляции. Этакий шанс связаться через Интернет с отцом-разработчиком деинсталлируемой программы и поплакаться, мол, меня стирают — примите меры, ну, или произвести другие более вразумительные действия. Во время деинсталляции и, как вариант, в конце можно запустить целый ряд исполнимых файлов (в том числе и dll). Так же можно вызвать и ShellExecute(). Программистам эта штуковина будет понятна, а для начинающего скажу, что эта функция Windows API позволяет запускать все, что может быть запущено в Windows (если передать ей некий URL — открывается браузер и загружает соответствующую страницу, *.doc — Word, и т.д.). Напоследок можно дать прочитать пользователю о том, как плохо он поступил, удалив программу, — финальный текст. Можно еще и readme.txt показать (только вот я не припомню, чтоб я после деинсталляции программы читал о ней еще что-нибудь).
Наконец, пункт Advanced. Самое интересное для разработчика, программа которого работает хоть с какими-то файлами, — возможность регистрации расширения в системе, дабы пользователь смог запускать программу и загружать в нее файл, просто кликнув на его значке. Здесь же находится несколько запоздалая опция "не спрашивать пользователя о том, в какую директорию инсталлировать программу" (вольный перевод). Напоследок — еще одна критичная опция. Если программа использует нестандартные шрифты (или что-то отличное от Times, Sans Serif и иже с ними), коих на конечной системе может и не оказаться, то их можно таскать с собой — Setup Generator Pro все сделает за вас. Укажите ему шрифты — и они будут успешно установлены и зарегистрированы в системе конечного пользователя.

Александр Муравский
alexander@cradlefieds.com

Продолжение следует


(c) компьютерная газета




© Компьютерная газета

полезные ссылки
Ремонт ноутбуков, компьютеров, мониторов