Технология Windows Installer. Часть I. Обзор возможностей

Андрей Алифанов

Windows Installer - новое слово в технологиях инсталляции

 

 

Глоссарий

Прежде, чем продолжить, необходимо ввести минимально необходимый для понимания дальнейшего текста набор терминов, используемых в Windows Installer. Таблица ниже включает список, достаточный для понимания текста данной статьи, в следующих статьях при необходимости будут добавлены новые термины.

Термин Краткое описание
Внешний пользовательский интерфейс Пользовательский интерфейс, не использующий встроенные возможности Windows Installer. Такой интерфейс использует, например, инсталлятор Microsoft Visual Studio.NET.
Встроенный пользовательский интерфейс Пользовательский интерфейс, основанный на встроенных возможностях Windows Installer. Инсталляторы с таким интерфейсом работают в режиме Мастера , то есть инсталляция выполняется пошагово. Такой интерфейс используют, например, инсталляторы Microsoft Office 2000 и XP.
Патч (заплата) Метод обновления файлов на уровне изменения байтов, а не замены файла целиком. Применяется при мелких обновлениях.
Инсталляционная база данных Реляционная база данных, содержащая всю необходимую логику и данные для установки приложения
Инсталляция по требованию Служба Installer, позволяющая устанавливать приложение или его опции только, когда их запрашивает пользователь или другое приложение
Код пакета Глобально уникальный идентификатор (GUID) пакета (модуля инсталляции)
Компонент Наименьшая часть инсталляции, обрабатываемая инсталлятором, а также часть функциональности приложения с точки зрения программиста
Обновление Установка самой последней версии приложения
Операция Инкапсуляция некоторой типичной функции, выполняемой во время инсталляции или обновления приложения.
Опция Часть функциональности приложения, видимая со стороны пользователя
Оценка стоимости Метод, используемый Windows Installer для оценки дискового пространства, необходимого приложению
Откат Автоматическое восстановление оригинальной конфигурации компьютера при сбоях в установке
Пакет (модуль) инсталляции Состоит из .msi -файла и внешних, связаных с ним файлов. Содержит всю логику, необходимую для установки и удаления приложения.
Подключаемый модуль База данных, содержащая наборы компонентов. Позволяет создавать пакеты инсталляции из готовых наборов компонентов. Отдельно устанавливаться не может.
Пользовательская операция Операция, определенная разработчиком пакета инсталляции.
Свойство Глобальная переменная, используемая Windows Installer при интсалляции приложения
Стандартная операция Встроенная в Windows Installer предопределенная операция, например, CreateShortcuts или InstallFiles .
Таблицы последовательности установки Таблицы в инсталляционной базе данных, задающие правила установки
Трансформация Шаблон изменений, используемый для добавления или замены элементов исходной базы данных. Применяется, например, для замены языка приложения.
Уровень базового пользовательского интерфейса Уровень, при котором Windows Installer обеспечивает простой пользовательский интерфейс с немодальными диалогами. На этом уровне недоступно использование пользовательских диалогов.
Уровень инсталляции Уровень, задаваемый для каждой инсталляции. Приложение устанавливается только если его уровень меньше или равен уровню инсталляции. Таким образом, можно управлять инсталляцией наборов приложений.
Уровень полного пользовательского интерфейса Уровень, при котором можно задействовать все встроенные возможности пользовательского интерфейса Windows Installer
Уровень сокращенного пользовательского интерфейса Уровень, при котором Windows Installer обеспечивает интерфейс с немодальными пользовательскими диалогами. Также могут использоваться встроенные модальные диалоги для сообщений об ошибках.
SQL (Structured Query Language) Язык запросов, используемый для работы с реляционными базами данных. Windows Installer поддерживает ограниченное подмножество языка.

Итак, продолжим. Что же такое технология Windows Installer, о которой я написал уже десяток абзацев, но еще ничего так толком и не сказал? Чем она так замечательна? Что в ней нового по сравнению с уже существующими решениями?

 

Что такое Windows Installer?

Windows Installer - это сервис установки и конфигурирования программных продуктов. Он поставляется как неотъемлемая часть операционных систем Windows 2000 и Windows Me, а также может устанавливаться в ОС Windows 95, Windows 98 и Windows NT 4.0 вместе с пакетами обновления этих операционных систем или в качестве отдельного дистрибутива.

Появилась эта технология в результате усилий фирмы Microsoft по созданию инсталлятора, удовлетворяющего требованиям корпораций к развертыванию и сопровождению программного обеспечения (не забывайте, что основными потребителями продукции Microsoft являются корпоративные клиенты). Но возможности, предоставляемые данной технологией, естественно, востребуются не только корпорациями.

Основная цель этой технологии: уменьшение так называемой совокупной стоимости владения (TCO - Total Cost of Ownership) для пользователей программных продуктов за счет эффективных средств развертывания и конфигурирования ПО. Надо отметить, что Windows Installer - это только часть (хотя и очень важная) усилий Microsoft по снижению стоимости развертывания, использования и сопровождения ПО для персональных компьютеров.

На каждом компьютере, использующем Windows Installer, хранится единая база данных с информацией о каждом установленном с помощью этой технологии приложении. Эта информация включает файлы, записи в реестре и компоненты. При удалении приложения с машины Installer проверяет базу данных, чтобы удостовериться в том, что не будут удалены файлы, ключи реестра и компоненты, от которых зависят другие приложения. Таким образом, удаление приложения становится практически безопасным для других программ, имеющихся на компьютере.

 

Выгода от использования Windows Installer для пользователей

Выгода от использования модулей инсталляции для Windows Installer заключается в том, что они облегчают процесс установки и обновления программных продуктов пользователям. Эти модули могут работать на любой 32-хбитной платформе Windows, начиная от Windows 95 и заканчивая Windows XP. Пользователи этих операционных систем получают много преимуществ от использования технологии Windows Installer, а именно:

• Более простая и быстрая установка программного обеспечения. Так как вся информация об установленном приложении содержится в одном месте, разработчик может предугадать ответы на многие вопросы пользователя, освобождая тем самым пользователя от принятия сложных решений во время установки или обновления программного продукта.

• Возможность установки по требованию. Информация о неустановленных компонентах приложения также хранится в одном месте. Значит, если вдруг пользователь захочет использовать компонент, который еще не установлен, ему не придется снова запускать весь инсталляционный пакет только для того, чтобы добавить еще одну возможность в программу. Когда пользователь решает использовать новый компонент, приложение просто проверяет инсталляционные данные и извлекает нужную информацию, позволяя добавлять нужную функциональность по требованию.

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

• Мощные возможности отката. Windows Installer позволяет отменять любые изменения в конфигурации как устанавливаемого продукта, так и операционной системы. Это делает установку программ, поддерживающих технологию Windows Installer, намного более безопасным и предсказуемым занятием, чем каких-либо других. Если при установке программы пользователь сталкивается с фатальной ошибкой, которая прерывает процесс инсталляции, у него остается возможность вернуться к предыдущему устойчивому состоянию. Причем это состояние будет в точности таким, каким было до попытки установки нового программного продукта. Такое поведение программ очень сильно отличается от того, к которому мы привыкли за много лет. Сбой или ошибки в программе инсталляции любого продукта (особенно заменяющего системные динамические библиотеки) могли нарушить работоспособность всей системы, причем это было справедливо не только для практически незащищенных операционных систем типа Windows 9x, но и для Windows NT. Я сам не раз сталкивался с подобными проблемами, особенно при отладке инсталлятора для довольно большого продукта, созданного с использованием пакета InstallShield Professional.

 

Выгода для пользователей Windows 2000 и более новых систем

Пользователи этих систем получают еще больше преимуществ, а именно:

• Публикация приложений

• Установка приложений на "закрытых" машинах

Публикация приложений

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

Администраторы систем Windows 2000 могут использовать эту возможность для добавления иконок приложений в меню Пуск сразу на многих машинах без установки программ до тех пор, пока они реально не понадобятся пользователю. Это позволяет системным администраторам поддерживать единую рабочую среду на множестве компьютеров под управлением Windows 2000, а пользователям иметь доступ ко всем приложениям, и в то же время не устанавливать ненужные на данный момент программы.

Установка приложений на "закрытых" машинах

Администраторы систем Windows 2000 могут разрешать пакетам инсталляции запускаться с привилегиями администратора на пользовательских машинах. Это позволяет устанавливать программное обеспечение на "закрытых" Windows 2000 компьютерах, то есть на таких компьютерах, где обычные пользователи не имеют привилегий делать то, что позволяется делать программе инсталляции.

 

Выгода от использования Windows Installer для разработчиков

То, что пользователям выгодно использовать данную технологию, сомнений не возникает. Но мы-то с вами не рядовые пользователи, мы - разработчики программного обеспечения (на мой взгляд, это должно звучать гордо). Что нам дает Windows Installer, кроме еще одной головной боли от необходимости изучать нечто новое? А вот что (и это немало):

• Легкость использования. Гораздо легче создать пакет инсталляции, основанный на том, что надо инсталлировать, чем на инструкциях о том, как это делать.

• Централизованное сопровождение и обновления. Мы, как разработчики, можем управлять приложением и конфигурациями инсталляций из одного общего набора данных, вместо того, чтобы работать с множеством копий. Это позволяет более просто и вместе с тем гибко поддерживать и распространять приложения и обновления к ним.

Я думаю, тот, кто работал с InstallShield Professional (пакет для создания инсталляций, управляемых скриптом) и InstallShield Developer (пакет для создания инсталляций на основе Windows Installer),

Раньше InstallShield Developer назывался InstallShield for Windows Installer поймет, насколько более гибко последний позволяет управлять созданием разных инсталляций на основе единого набора данных.

ПРИМЕЧАНИЕ Раньше InstallShield Developer назывался InstallShield for Windows Installer

Что касается первого утверждения, непонятного на первый взгляд, то в нем все просто. Посмотрите на следующий заголовок - он все объясняет.

 

Инсталляция, управляемая данными

Традиционно программы инсталляции используют для управления процессом установки программ скрипты. Каждая инсталляционная программа содержит скрипт, то есть набор инструкций по установке конкретного программного продукта. Эти жестко закодированные инструкции могут прекрасно работать для данной конкретной инсталляции, но они же могут вызывать проблемы в случаях переустановки или удаления продукта, а также установки новых версий. Более того, эти проблемы могут возникнуть при инсталляции других программ, о которых вы даже не подозревали, когда писали свой скрипт. К тому же, так как информация о приложениях не разделяется между скриптами, администраторам и пользователям трудно управлять инсталляцией приложений.

Новая, управляемая данными технология Windows Installer позволяет решить многие проблемы инсталляторов, управляемых скриптами. В модели инсталляции, управляемой данными, создается набор инсталляционных таблиц, в которых каждый ресурс (файлы, ключи реестра и т.д.) явным образом привязан к компоненту или опции приложения, которые его используют. При создании этих таблиц разработчик больше думает о том, что он устанавливает, вместо того, чтобы думать о том, как это устанавливать. То есть разработчик фокусируется на объектах, которые нужно установить и на местоположении этих объектов на целевой машине, а Windows Installer обеспечивает всю остальную функциональность. Тем не менее, это не освобождает разработчика от необходимости думать о том, как же будет устанавливаться приложение.

ПРИМЕЧАНИЕ Все вышесказанное взято из документации Microsoft. Многие разработчики (в том числе и я) не во всем согласны с этими утверждениями. Но нельзя отрицать и того, что технология Windows Installer все-таки здорово облегчает жизнь системным администраторам и разработчикам.

Таким образом, мы плавно переходим от общих тем к более конкретным вопросам. В данной статье я ограничусь рассмотрением Пакета инсталляции. Остальные вопросы, а именно: интерфейс пользователя, последовательность выполнения инсталляции, свойства, стандартные и пользовательские операции, включаемые модули и многие другие, будут рассмотрены в следующих статьях.