On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Инсталлятор-переинсталлятор

Masm

Инструменты для создания инсталляций в нашей стране знакомы многим. Давно уже не секрет, что у нас каждый второй человек, работающий за компьютером, считает себя программистом (а все остальные считают себя хакерами). В этом нет ничего плохого: ну как же не считать себя программистом, если ты способен оснастить свой компьютер всеми новейшими средствами разработки от MS Visual Studio до Borland Kylix. Да и как его всем этим хозяйством не оснастить, если на все про все придется потратить порядка 30$ (сэкономив при этом 40000-50000$ от заявленной разработчиками стоимости). А какая программа сегодня не имеет инсталляции? Но ниже речь пойдет не о программистах, а о несколько необычном способе использования пакетов для создания программ-инсталляторов.

Пару лет назад очень модной темой для дискуссий была установка и переустановка операционной системы Windows. Десятки страниц газет, журналов и интернет-сайтов были исписаны советами, как лучше проделать эту нехитрую операцию. За это достаточно короткое время многое изменилось. Windows от года к году растет над собой. Синий экран смерти уже не является ежедневной нормой, добавляющей в кровь адреналина. Системы линейки NT не дадут просто так надругаться над своими системными файлами или переписать какую-нибудь библиотеку более ранней версией. К Windows ME просто прикрутили универсальное средство под названием System Restore, позволяющее ей (так, во всяком случае, задумано) восставать из пепла, как птице Феникс. Растут над собой и разработчики программного обеспечения. Программы тестируются куда как более тщательно, чтобы свести риск "убийства" пользовательской системы к минимуму.
Изменилось многое, но еще далеко не все. Тот же System Restore уже неоднократно показывал свою несостоятельность в выполнении возложенных на него обязанностей. Да и наши пользователи его не очень-то полюбили, о чем свидетельствует то обилие советов, как безболезненно удалить эту поделку из системы. Программы, вроде Second Chance или 9 Lives, позволяющие произвести откат всей системы назад, тоже не слишком популярны: драгоценные ресурсы едят, работать мешают, а практической пользы от них не видно. Поэтому, для кого-то раньше, а для кого-то позже (это уже зависит от количества и качества устанавливаемого программного обеспечения и некоторых менее существенных факторов), встает проблема переустановки системы. А здесь все, как и раньше, - ставить свежую систему лучше с нуля, подчистую снеся полуживую ее предшественницу. Правда, оговорюсь, что счастливых пользователей Windows 2000/XP эта проблема может так никогда и не настигнуть, но, как известно, раз в год и палка стреляет, так что исключать их из потенциальных читателей не будем. Тем более, все, что будет сказано ниже, справедливо для любой Win32 платформы.
Не пугайтесь, давать советов по установке ОС я не стану. Об этом и так написано гораздо больше, чем нужно, к тому же задача эта не настолько сложна, чтобы не разобраться в ней по подсказкам инсталлятора. Поговорим о другом: при переустановке системы неизбежно придется столкнуться с проблемой сохранения своих старых настроек с последующим переносом их на новую систему. Естественно, что в наше время руками такие вещи делать совсем не хочется, и неплохо было бы процесс этот максимально упростить и автоматизировать. Не сомневаюсь, что уже существует целый ряд программ, способных делать нечто подобное. Но не много сомнений вызывает и тот факт, что их универсальность (а работать они должны со всеми системами, а к тому же со всеми пользователями и со всеми пользовательскими настройками и приложениями) ограничивает их же функциональность. Поэтому попытаемся придумать что-нибудь более подходящее.
Далее я буду исходить из предположения, что предыдущая система будет полностью удалена, а точнее, что из режима MS-DOS будут стерты папки Windows (или как она у вас называется) и Program Files. Предполагается также, что установлен будет примерно тот же набор программ и инсталлированы они будут в те же директории, что и раньше. В довершение всего предположим, что вы не пользуетесь уже упомянутыми выше программами Second Chance и 9 Lives и что вы не создавали "слепок" своего диска при помощи Norton Ghost, в тайной надежде вернуться к нему впоследствии. Этот вариант в действительности является идеальным, и если это именно ваш случай, то едва ли стоит всерьез беспокоиться об обсуждаемой проблеме. Если же нет, что отнюдь не редкость, то приведенный ниже способ может сохранить вам немного времени и несколько скрасить унылую процедуру переустановки операционной системы.
Задача ставится вот какая:
- сохранить, а впоследствии и восстановить все пользовательские документы или иные уникальные файлы, которые оказались в вышеуказанных директориях. Вопреки обычной практике не хранить документы в папках с программами, так по умолчанию поступает весьма популярный мейлер The Bat, да и многие другие программы. Что же касается "иных" файлов, то таковыми вполне можно назвать антивирусные базы AVP, хранимые где-нибудь по адресу Program Files\Common Files\AVP Shared Files\AVPBASES или шаблон MS Word по имени Normal.dot.
- сохранить и восстановить содержимое рабочего стола, со всеми ярлыками для запуска программ и документов, меню QuickLunch и Главного меню, с установленной там иерархией папок.
- сохранить и восстановить файлы конфигурации программ.
- сохранить и восстановить файлы шрифтов, установленных дополнительно к стандартному набору.
- сохранить и восстановить ключи реестра, отвечающие за пользовательские настройки.
- сохранить и восстановить что-нибудь еще, если вдруг это кому-нибудь будет нужно.
Итак, с задачами определились. Теперь попробуем найти некоторое программное решение, удовлетворяющее перечисленным выше требованиям. Ну, что же, Think Different1 (как выяснилось, слоган Apple можно с успехом применять к детищу компании Microsoft, их некогда злейшего врага и конкурента). Попытаемся решить поставленные задачи при помощи какого-либо профессионального пакета для создания инсталляторов. Ведь, по сути, нам нужно лишь сохранить множество файлов из различных мест жесткого диска и ключей реестра, а потом распихать все это по своим местам. А для чего служат инсталляторы? Собственно, для этого и служат. И кто сказал, что инсталлятор обязательно должен устанавливать какую-то программу? Ведь есть программы без инсталлятора, а теперь вот будет инсталлятор без программы.
Каким именно пакетом пользоваться, по сути, не важно. Желательно, чтобы он был поновее и, по возможности, обладал максимальной функциональностью. То есть, при желании, с поставленной задачей можно справиться и с помощью бесплатного Ghost Installer, только количество времени, потраченного на работу с программой, будет сопоставимо с проведением всех нехитрых действий по восстановлению предыдущих настроек системы вручную, какая уж тут автоматизация?! Пример, описанный в статье, сделан на Wise InstallMaster 8.1, возможностей которого для наших целей более чем достаточно, к тому же он далеко не так требователен к месту на жестком диске и ресурсам компьютера, как популярный сегодня среди разработчиков больших программных пакетов InstallShield.
Далее составим исключительно демонстрационный пример, который каждый сможет впоследствии менять в соответствии со своими нуждами и предпочтениями. Процесс создания инсталлятора разделен разработчиками Wise Installer на 6 логических шагов: файлы и компоненты, добавки к системе, проверки системы пользователя, внешний вид инсталлятора, дополнительная функциональность и последние штрихи. Каждый шаг, в свою очередь, включает несколько подразделов. В данном материале мы не будем долго останавливаться на устройстве программы, также оставим за рамками статьи те ее подразделы, которые нам не понадобятся. Нас также не будет интересовать, что результатом всей вашей деятельности станет инсталляционный скрипт, скомпилировав который, вы и получите файл с именем Setup.exe. Теперь открываем приложение - и в бой, к созданию проекта.
Первый шаг создания проекта является осиновым. Именно здесь определяются все файлы, которые будут установлены программой-инсталлятором. Здесь же эти файлы можно разбить на категории, каждую из которых можно будет затем установить отдельно от других. Сразу же хочу отвлечься и переключиться на раздел Setup Information шага 4, дабы сделать дальнейшие шаги по созданию проекта более понятными. В этом разделе есть два поля для ввода данных и один флаг. Первое поле - это имя вашего инсталлятора, здесь можно написать нечто вроде "Установка системных настроек" и забыть про него. Гораздо больший интерес для нас представляет второе поле, отвечающее за путь директории по умолчанию для устанавливаемого приложения. В силу того, что никакую программу мы ставить не собираемся, поле это оставляем пустым. Но чтобы впоследствии мы имели возможность записывать файлы, скажем, в Program Files\Common Files\, флаг Place default directory under Program files оставляем включенным. Тем самым, папкой по умолчанию у нас стала папка WinDisk:\Program Files. Теперь можно смело вернуться к первому шагу. Для начала перейдем на закладку Components и определим имена групп для всех настроек, которые мы собираемся восстанавливать. Тем самым мы получаем большую гибкость: при инсталляции компоненты, которые следует установить, можно будет выбирать. Я сделал 5 групп: Ярлыки рабочего стола, Шрифты, Ярлыки главного меню, Базы AVP и Настройки программ. Далее в разделе Files наполняем файлами полученные группы. В частности, для баз AVP в папке Application создаем папку Common files\AVP Shared Files\avpbases и наполняем ее содержимым одноименной директории, находящейся в Program Files. Аналогично поступаем с остальными группами, создавая нужные нам директории внутри папок Windows и Application. Группу Шрифты оставляем пустой. В разделе Uninstall отключаем поддержку деинсталляции, так как смысл ее в рамках нашего проекта не совсем понятен. В разделе Fonts выбираем шрифты, установленные на нашем компьютере, и назначаем им группу "Шрифты" из выпадающего меню. Теперь указанные шрифты будут установлены только в том случае, если при инсталляции выбрана данная группа. Остальные разделы первого шага касаются поддержки баз данных и других приложений; нас они интересовать не будут.
Шаг 2. В разделе Registry добавляем необходимые нам ключи реестра. Происходит это аналогично процессу добавления файлов на первом шаге. Имеет смысл добавлять сюда те ключи, которые отвечают непосредственно за настройки операционной системы. В частности, если какому-нибудь твейкеру, наподобие X-Setup или WinBoost, вы предпочли ручное изменение ключей, смело добавляйте все измененные ключи к проекту. Что касается ключей, создаваемых установленными программами, о них беспокоиться особо не стоит: они будут созданы теми же программами вновь. В разделах Autoexec.bat и Config.sys можно добавить несколько строк к одноименным файлам. А ими еще кто-нибудь пользуется? В разделе Install Log создание этого самого log'а отключаем. Хотя, если он вам нужен, можете оставить...
Раздел Configuration шага 3 определяет конфигурацию компьютера, на котором будет запущен инсталлятор. Т.к. расположение системных директорий у Windows 9x и Windows NT несколько различается, то, создавая инсталлятор для Win9x, поддержку WinNT лучше отключить и наоборот. При этом, будучи запущенной на "неверной" системе, установка не будет завершена аварийно, но пользователь получит сообщение, текст которого можно указать в этом же разделе.
Шаг 4. В разделе Dialogs оставляем только Welcome, Select Components, Start Installation и Finished. Остальные окна вам, видимо, не понадобятся. В разделе Screen выбираем вид окна инсталлятора - оставляю на ваш вкус. В разделе Progress Bar ставим флажок возле надписи Do not allow installation to be cancelled.
Шаг 5. Пропускаем за ненадобностью...
На шаге 6 в разделе Version Resource вводим информацию о себе, все остальное оставляем без изменений.
Вот и все. Осталось только сохранить файл проекта, а потом нажать на кнопку Compile. После нескольких секунд раздумья WiseInstaller выплюнет нам файл с иконкой, как у обычного файла инсталляции. Он-то нам и нужен. Сохраняем его в безопасном месте, при желании тестируем, перегружаемся в DOS и del *.*. На создание инсталлятора потрачено всего 15 минут, а использовать его можно будет и в дальнейшем, внося в проект самые незначительные изменения. Расширяемость практически безграничная: сюда же можно добавить файлы ключей регистрации к разным программам, утилиты, которые не требуют инсталляции и многое другое. Самым трудным будет определить, в каких файлах у программ хранятся необходимые настройки. Но в этом я помочь, к сожалению, не смогу.
Соглашусь, способ несколько притянут за уши, но при этом вполне рабочий. Если дело уже дошло до переустановки Windows, то, при его помощи, можно действительно существенно сократить временные затраты на этот не самый приятный процесс. Принимайте на вооружение и Think Different.



Языки программирования: разное