Windows installer зсередини, windows it pro

Реєстрація на конференцію

Пристрій і розгортання пакетних файлів

Якому адміністратору Windows не знайомі символи msi? Служба Windows Installer (програма msiexec.exe) і її пакетний файл .msi - фактично стандартна технологія для установки додатків Windows. Переваги пакета установки додатків Windows Installer загальновідомі. По-перше, при збоях в процесі установки пакет .msi скасовує виконаний фрагмент установки і відновлює початковий стан комп'ютера, тим самим запобігаючи пошкодження додатків і системи. По-друге. msi-упаковане додаток має здатність до самовідновлення, якщо користувач видаляє один з його файлів. І нарешті, Windows Installer забезпечує установку програм на комп'ютерах користувачів. Основні принципи роботи Windows Installer широко відомі, але більш глибоке розуміння внутрішніх механізмів Windows Installer і пакетів .msi дозволить будувати спеціалізовані пакети установки додатків і спростить діагностику збоїв в процесі розгортання. Нижче наводиться огляд технології Windows Installer, а потім мова піде про структуру пакетів .msi і їх взаємодії зі службою Windows Installer.

Технологія Windows Installer

Продукти, функції та компоненти

msi-файл являє собою складну базу інструкцій по установці додатків, яка містить десятки таблиць, сотні стовпців і іноді вкладені файли. У базі даних зберігається інформація про вимоги операційної системи до установки додатки, етапах установки і навіть діалогових вікнах, що виводяться на екран.

msi-файл має трирівневу структуру. Вищий рівень - продукт, власне додаток. Продукту присвоюється унікальний код - глобально унікальний ідентифікатор (globally unique identifier, GUID). На наступному рівні розташовуються функціональні блоки всередині продукту. Функціональні блоки мають імена і можуть бути додані за бажанням користувача. На екрані 1 показаний приклад функціональних блоків в додатку - в даному випадку Microsoft Office Access і Microsoft Office Excel в пакеті установки Microsoft Office. Функціональний блок - це єдиний блок для установки всередині пакету Windows Installer. Встановлюються (або видаляються) функціональні блоки пакета, а не окремі файли.

Windows installer зсередини, windows it pro

Екран 1. Функціональні блоки додатки, упакованого для Windows Installer

Функціональні блоки складаються з компонентів, які представляють третій рівень ієрархії .msi-файлу. Компонент - це базова одиниця пакета Windows Installer і будівельний блок програми. Компонент може бути файлом або групою файлів, параметром реєстру, ярликом або ресурсом (наприклад, піктограмою). З компонентом пов'язаний ключовий шлях (key path). Ключовий шлях визначає файл або параметр, без якого неможлива повна установка компонента. Ключовий шлях - основа механізму самовідновлення пакетів на базі Windows Installer. При ремонті .msi-упакованого додатки служба Windows Installer перевіряє повноту всіх ключових шляхів компонентів. Якщо ключовий шлях якогось компонента відсутня, служба Windows Installer визначає, якого функціонального блоку належить компонент, і повторно встановлює функціональний блок. Таким чином, час, необхідний для ремонту розгорнутого додатки, частково залежить від числа компонентів в пакеті і числа компонентів у функціональному блоці, що містить зіпсований компонент.

База даних Windows Installer

Windows installer зсередини, windows it pro

Екран 2. Таблиці бази даних програми, упакованого для Windows Installer

На екрані 2 показана таблиця LaunchCondition пакета Windows Installer для Group Policy Management Console (GPMC). У правій панелі таблиці представлені мінімальні вимоги до операційної системи і платформі для установки GPMC. У стовпці Condition містяться умови, які повинні бути виконані в процесі установки. У стовпці Description описані мінімальні вимоги для набору умов. Приступаючи до установки додатки, Windows Installer перевіряє, чи задоволені умови запуску, перш ніж продовжити установку.

Таблиці послідовностей (sequence table) представляють собою ядро ​​бази даних; в них перераховані дії, які служба Windows Installer повинна виконати в процесі установки, і порядок їх виконання. Наприклад, в таблиці послідовностей вказується, що механізм Installer повинен спочатку перевірити умови запуску в таблиці LaunchCondition, потім скопіювати вихідні файли в каталог призначення і підготувати набір елементів реєстру. Таблиці послідовностей бувають трьох типів: Admin, Advertisement і Install. Тип таблиці послідовностей, який використовується Windows Installer, залежить від типу виконуваної процедури установки. Описи типів таблиць послідовностей дані в таблиці 1.

З кожною таблицею послідовностей пов'язані дві допоміжні таблиці. Одна з них - InstallUISequence - визначає діалогові вікна користувальницького інтерфейсу, які повинні відображатися при інтерактивній (керованої користувачем) установці. Інша таблиця - так звана таблиця «виконавчої послідовності» (execute sequence; InstallExecuteSequence) - визначає кроки, необхідні для установки.

Таблиця Property - ще одна важлива частина бази даних .msi. Властивості є постійні величини, задаючи які можна управляти ходом установки. По суті, властивості є змінні середовища для .msi-файлу. В пакетах Windows Installer часто використовується властивість ALLUSERS, яке вказує процедурі установки, яким чином зберігається інформація про конфігурацію програми - для користувача або для комп'ютера. Імена властивостей чутливі до регістру і їх можна вказувати в командному рядку під час установки або використовуючи трансформацію.

Трансформації, виправлення і модулі злиття

msi-файл, отриманий від постачальника, часто вже не має все необхідне для розгортання пакета в конкретному середовищі. Наприклад, споживач може побажати розгорнути пакет автоматично за допомогою інструменту розгортання програмного забезпечення або встановити тільки певні функціональні блоки. У такій ситуації можуть стати в нагоді трансформації. Трансформація - це спеціальний тип файлу бази даних .msi, зазвичай має розширення .mst. Трансформації застосовуються до процедури розгортання програми під час установки. По суті, вони змінюють обрані за замовчуванням значення в пакеті .msi, керуючи процесом установки. Змінені значення в .msi-файлі не зберігаються; вони просто визначають, як буде протікати конкретна установка.

Файли виправлення (patch file або .msp-файли) відрізняються від трансформацій. Як правило, постачальник випускає файл виправлень, коли потрібно модернізувати продукт, не вдаючись до його глибокої переробки. Прикладом виправлень можуть служити оновлення безпеки. Після установки виправлення в екземплярі .msi-файлу, що зберігається в кеші робочої станції, виробляються постійні зміни. Щоб нові користувачі в майбутньому отримували оновлені файли, слід застосувати файли виправлення до початкового пакету додатки.

При підготовці нового пакета установки файли програми можна вставити в .msi-файл. Як правило, файли вставляються у вигляді вбудованих файлів .cab, які представляють собою стислі набори файлів, схожі на .zip-файли. У .msi-файл зручно вставляти .cab-файли не дуже великого розміру. Наприклад, в Office є окремі .msi- і .cab-файли, так як розміри .cab-файлів Office досягають декількох сотень мегабайт. Однак, упакувавши всі необхідні файли малого додатки в .msi-файл, можна отримати компактний файл, який зручно поширювати серед користувачів. Витягти вбудований .cab-файл з .msi-файлу можна за допомогою інструменту msidb.exe пакета Windows Installer SDK.

Служба Windows Installer

Служба Windows Installer забезпечує набір функцій, зручних для розгортання програм, особливо при використанні спільно з функцією Software Installation в Group Policy. Головна серед цих функцій - підвищення повноважень (privilege escalation). Коли звичайний користувач намагається встановити додаток на своєму комп'ютері, двічі клацнувши на .msi-файлі, його повноважень для виконання установки не завжди достатньо. Однак при розгортанні програми за допомогою функції Software Installation групової політики служба Windows Installer виконує установку в своєму контексті безпеки LocalSystem.

Зокрема, служба Installer створює новий процес msiexec.exe в контексті безпеки користувача для виконання тієї частини установки, яка проводиться в профілі користувача. Служба Installer використовує власний підвищений контекст безпеки (обліковий запис LocalSystem) для виконання специфічної для даного комп'ютера частини процедури установки, для проведення якої у користувача повноважень немає. Додатки, розгорнуті таким способом, називаються керованими (managed applications). Підвищення повноважень, що використовується Windows Installer для керованих додатків, як правило, можливо тільки при застосуванні групової політики, хоча метод доступний і поза процедур на базі Group Policy Object (GPO), через політику Administrative Template.

Зберігання файлів Installer на робочої станції

Розглянемо, що відбувається на робочій станції, коли служба Windows Installer встановлює пакет .msi. По-перше, щоб забезпечити скасування дій в разі збою, Installer робить резервні копії всіх замінених файлів, зберігаючи їх в тимчасовій папці на жорсткому диску користувача, зазвичай C: config.msi. Заглянувши в цю папку в ході установки, можна побачити в ній тимчасові файли з незвичайними іменами, створені службою Installer. Після завершення установки служба Installer видаляє тимчасові файли.

Закінчивши установку, Windows Installer зберігає екземпляр асоційованого .msi-файлу і будь-які трансформації, що використовувалися Windows Installer при установці додатка, в папці \% windir% installer, призначаючи файлів унікальні умовні імена (наприклад, 19fe9b79.msi). Файли в \% windir% installer насправді представляють собою кешированниє копії всіх .msi-файлів, оброблених службою Windows Installer на комп'ютері. Завдяки наявності кешованих копій користувач може змінити або видалити додаток, не звертаючись до оригінального пакету установки, який може знаходитися на разделяемом диску сервера, недоступному мобільному користувачеві. Windows відстежує всі розгорнуті додатки на базі .msi; наявні функціональні блоки, компоненти і виправлення, а також ім'я кешованого .msi-файлу в реєстрі.

Запуск Installer Files з командного рядка і в сценаріях

Властивість ADDLOCAL використовується даною командою, щоб вказати службі Windows Installer функціональні блоки пакета, які необхідно встановити. Метод командного рядка використовується замість вибору функціональних блоків користувачами або установки окремих блоків адміністратором за допомогою файлу трансформації.

Як було показано вище, завдання Windows Installer не обмежуються простим клацанням на .msi-файлі. Потужна технологія Windows Installer дозволяє гнучко і швидко встановлювати програми, але для ефективного використання служби необхідно розуміти принципи її роботи.

Типи таблиць послідовностей

Тип таблиці послідовностей

Схожі статті