(Notes) Notes (2003 год)
Еремин В.В.

Windows Installer.

Пока написано только самое начало...    
Голова беременна еще на 26 разделов...
Содержание.
1. Уникальная технология Windows.
          Служба Windows Installer.
          Централлизованная база данных.
                    Доступ к базе инсталлера из своей программы.
                    Windows Installer API.
                    Технологии, связанные с Windows Installer.
          Технология, управляемая данными.
                    Семь конструкторов инсталляционных пакетов.
                    Семь деинсталляторов.
          Управляемая инсталляция.
2. Механизмы инсталляции.
          Инсталляции, непосредственно инициируемые действиями пользователя компьютера.
                    Шесть основных способов самому запустить Windows Installer.
          Инсталляции, выполняемые минуя желание пользователя или администратора компьютера.
                    Systems Management Server.
                    Механизм групповых политик.
          Автоматические инсталляции, связанные с отсутствующим файлом.
3. Служба Windows Installer.
          Разграничение доступа для службы Windows Installer.
          Настройка службы Windows Installer.
          Журнал инсталляции и журнал ошибок.
          Проблемы, которые случаются при работе с Windows Installer'ом.
4. Управление процессом инсталляции на примере MS Office 2000.
          Параметры инсталлятора Оффиса.
          Свойства, управляющие инсталляцией оффиса.
          Приоритет свойств инсталляции.
5. Windows Installer Roadmap.
          Windows Installer SDK.
6. Installer Database - MSI-файл..
          Изучаем простейший пакет с помощью ORCA.
          Формат базы инсталлера.

Самое главное потребительское качество любой операционной системы - легкость установки в нее программного обеспечения и, соответственно, полное удаление из нее уже ненужного приложения. В UNIX эта проблема отсутствует начисто - т.к. программное обеспечение (вместе со всеми своими настройками) просто копируется в конкретный каталог типа /USR/LOCAL/BIN/virus1, а затем в любой момент этот каталог можно просто удалить... То ли дело - Windows. Там все настройки всех когда-либо установленных программ хранятся в одном месте - в реестре. Отсюда вырастает огромная-преогромная проблема, из-за которой любая Windows-система со временем начинает тупить, перегреваться и вылетать с сообщением "Access violation...". Вот эта статья как раз и рассказывает о тех усилиях, которые предпринимались разработчиками Windows, чтобы не допустить этого...

В принципе в Windows возможно несколько способов установки приложений:

1. Уникальная технология Windows.


2. Механизмы инсталляции.


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

В принципе, технологии инсталляции можно разделить на три большие группы:


4. Управление процессом инсталляции на примере MS Office 2000.

В этом разделе на примере Оффиса 2000 мы рассмотрим ,что такое управляемая инсталляция и зачем она нужна. Хочу сразу сказать, что управление инсталляциями - отнюдь не досужие домыслы, а самая актуальная ежедневная проблема. Чтобы активизировать ваше внимание на этой проблеме я расскажу одну поучительную историю.

Однажды для клонирования операционной системы для учебных классов я сделал эталонный компьютер. Как обычно, я стер на нем уникальные GUID'ы с помощью утилиты SYSPREP и GHOST'ом ,склонировал 60 экземпляров операционной системы (в которой я по ошибке установил Office 2000 с компакт-диска). Однако, студенты в учебных классах работать не смогли. Как оказалось, оффис запомнил свойство инсталляции INSTALLLOCATION в виде "D:\". При клонировании это свойство не изменилось. Но когда студенты вошли в Оффис под своими пользовательскими именами, Оффис потребовал наличие инсталляционного пакета DATA1.MSI в устройстве чтения CD-ROM. Так все и зависло на всех машинах в бесконечном цикле. Конечно занятия на всех 60 машиных оказались сорванными. И только когда я перезапустил с помощью групповой политики процесс инсталляции Оффиса с параметром INSTALLOCATION="сетевой_ресурс", Оффис вышел из бесконечного цикла, получив с сетевого ресурса нужный ему файл. Этот сбой заставил меня намного тщательнее относиться к административным установкам и свойствам, задаваемым при инсталляции.

Если мы запустим Setup.Exe из Оффиса с параметром /?, то увидим знакомые параметры Windows Installer'а со следующими изменениями:

Обратите внимание, что если этих параметров много, то инсталлятор Оффиса дает нам возможность задать их в файле SETUP.INI совместно с параметром /Setting. При этом файл SETUP.INI имеет свой специальный, но понятный синтаксис, описанный в шаблоне SETUP.INI, поставляемом в дистрибутиве Оффиса.

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

Перед тем, как начать изучать Windows Installer подробнее, давайте посмотрим какие именно параметры можно задать Оффису непосредственно при инсталляции.

В инсталляционном пакете Office 2000 задано 158 свойств. (настроек) процесса инсталляции. Еще 64 свойства могут быть заданы при инсталляции оффиса 2000 в командной строке или в переменных среды - статья KB270920. Интересно, что эксплорер предлагает установить для MSI-файла совсем другие свойства.

Обратите внимание, что задаваемые из командной строки параметры, не могут быть напрямую отредактированы в MSI-файле - параметры командной строки являются переменными, на основании которых вычисляются значения значения ключей в таблицах MSI-файла. Для того, чтобы показать это, я экспортирую из MSI-файла Оффиса все 77 таблиц и ищу в результирующих текстовых IDT-файлах параметр INSTALLLOCATION. Как видите, он упоминается в правой части, т.е. на основании его значения определяются другие переменные (в данном случае _BrowseProperty), управляющие процессом инсталляции. Вот так всего-то 65 параметров и управляют всем огромным процессом инсталляции - а он действительно впечатляет, 77 таблиц, причем некоторые из них, например Registry содержат 7490 записей - устанавливаемых для работы Оффиса ключей реестра.

Пока не сталкиваешься лично и конкретно с этими параметрами, то такое их количество может показаться досужим домыслом. Однако это далеко не так - именно обилие этих параметров и обеспечивает гибкость системы, завоевавшей заслуженное признание в мире. А что касается количества параметров, то альтернативные технологии инсталляции получаются еще более громоздкими даже при более скромных возможностях настройки. Например, только инсталляционный скрипт скромного текстового редактора PrimalScript, который инсталлируется не MSI-файлом, а непосредственно InstallShield'овским скриптом составляет 17214 строк. Скажу больше, скорость Windows Installer API меня, как профессионала, просто впечатляет! А развитый сервис Windows Installer API - типа SQL запросов к инсталляционным базам - просто фантастика!

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


How Setup.exe Bootstraps the Windows Installer when Installing Office 2000 ms-help://MS.VSCC/MS.MSDNVS/msi/app_4puv.htm

5. Windows Installer Roadmap.


Теперь мы знаем достаточно, чтобы перейти непосредственно к изучению Windows Installer'a. Для того, чтобы дальнейшее усвоение материала прошло легче, вам потребуется отсюда сгрузить и установить Windows Installer SDK (размер - 85Mb).

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

После установки Windows Installer SDK вы получите полное описание Windows Installer'а, 95 исполняемых файлов, 25 замечательных и чрезвычайно важных VB-скриптов и еще 11 отдельных инсталляционных пакетов, в одном из которых будет Windows Installer 2.0 Table Editor - та самая ORCA.

Также с моего сайта можно сгрузить отдельно Орку и скрипты. С документацией сложнее, поскольку она поставляется Microsoft в формате MSHELP 2, который Microsoft не документирует. Саму документацию сгрузить отсюда - а вот как создать пространство имен для доступа к ней и воспользоваться Dexplore без установки Студии - об этом написано здесь. Таким способом вы получите все основные удовольствия от Windows Installer SDK потратив всего 4,7 Mегабайт трафика.

ПРИМЕЧАНИЕ. С некоторых пор страничка INSTALLER'а переехала сюда.

6. Installer Database - MSI-файл.


Изучим MSI-пакет, моей утилиты дампирования состояния системы. При изготовлении инсталляции, как видите, он весьма прост и состоит из:

Открываем с помощью ORCA MSI-файл, который получился в итоге инсталляции. Наблюдаем в таблице Property те самые свойства проекта, которые мы и устанавливали в студии. Но для того, чтобы понять, какие именно файлы будут установлены на целевую машину пользователя, экспортируем из MSI-файла три таблицы - Component, Direcory и File и открываем их в Excel. Теперь мы видим, как все три указанных файла устанавливаются в директорию TARGETDIR.

Мы посмотрели на самый минимально возможный MSI-пакет, созданный без CUSTOM-action, ключей реестра и прочих изысков. В более сложных инсталляционных проектах эти действия преусмотрены и, соответственно, в MSI-файле появляются таблицы Custom-action.


Теперь посмотрим подробнее формат MSI-пакета. База состоит из нескольких таблиц, которые логически сгруппированы:


Для манипулирования данными MSI-пакета существует библитека MSI.DLL, которая имеет для этого все необходимые функции. Я не раз использовал эту библиотеку в своих приложениях. Пример такого приложения, которое я выложил на свой сайт со всеми исходными текстами можно посмотреть здесь.


31. Альтернативные технологии.


В Windows есть еще одна вcтроенная технология инсталляции программ - инсталляция драйверов. Эта технология называется Setup API и ее описание находится в том же разделе MSDN - "Setup and System Administration", что и описание Windows Installer.

Кратко суть этой технологии такова: подготавливается текстовый файл специальной структуры - INF-Файл. На этом рисунке красной стрелкой показана секция, в которой копируются нужные файлы и устанавливаются ключи реестра, а синей стрелкой - уникальный идентификатор hw_id, которым идентифицируются Plug&Play устройства - в данном случае видеокарта моего компьютера. А на этом рисунке хорошо видны Plug&Play идентификаторы для флоппи-дисковода, CD-ROM'а, сетевой карты и жесткого диска моего компьютера. С этим инталляционным файлом возможны два режима работы:



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/windows/installer/index.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>