Windows Installer

Windows Installer (встановлювач для Windows, кодова назва Darwin[1]) — підсистема Microsoft Windows, що забезпечує встановлення програм (інсталятор). Є компонентом Windows, починаючи від Windows 2000; може довстановлюватися й на раніші версії Windows. Вся необхідна для встановлення інформація (іноді й разом зі встановлюваними файлами) міститься у встановлювальних пакунках (installation packages), що мають розширення .msi[2].

Windows Installer
Тип програмне забезпечення і компонент Microsoft Windowsd
Розробник Microsoft
Платформа Microsoft Windows
Ліцензія Безкоштовне програмне забезпечення
Вебсайт microsoft.com

Історія

Windows Installer, розроблений у 1995—1998 роках, мав спочатку кодову назву Darwin. Ранні версії називалися Microsoft Installer, звідси й стандартне розширення файлу встановлювального пакунка .msi.[3]

Перша версія Installer'а вийшла на початку 1999 як встановлювач Microsoft Office 2000. Наприкінці того ж року Installer став частиною Windows 2000. Майкрософт всіляко заохочував перехід розробників на новий встановлювач, включивши в список вимог до програм, які бажали отримати так званий знак Windows 2000 Logo, вимогу встановлюватися за допомогою Windows Installer.

Windows Installer виявився значним кроком вперед відносно попереднього інсталятора Microsoft-setup API (ACME Setup): в ньому введено можливості GUI, підтримку деінсталяції та відкіт у будь-який момент встановлення (а також відкіт під час деінсталяції), коректну роботу з правами доступу у Windows та інші можливості, що зробило його сильною альтернативою різним наявним на ринку інсталяційним пакункам.

В майбутніх оновленнях буде представлено .MSIX, який стане своєрідним гібридом .APPX і .MSI, що дозволяє інсталювати UWP застосунки в систему (зараз це можливо тільки безпосередньо через Microsoft Store).[уточнити]

Логічна структура пакунка

Встановлювальний пакунок описує встановлення одного продукту і має свій GUID. Продукт складається з компонентів (components) (теж мають свої GUIDи), згруповані в можливості (features).

Компонент (component) — мінімальна неподільна встановлювальна одиниця, що являє собою групу файлів, значень реєстру, створюваних папок та інших елементів, об'єднаних загальною назвою (назвою компоненту) і або встановлюваних разом, або не встановлюваних. Компоненти приховані від кінцевого користувача. Кожен компонент має ключовий шлях (key path) — наприклад, ім'я свого головного файлу — за яким визначається наявність цього компоненту на комп'ютері користувача.

Можливість (feature) — це ієрархічна група компонентів і/або інших можливостей. Коли при встановленні показується діалог вибору встановлюваних частин програми, користувач керує вибором саме можливостей. Вибір можливості для встановлення тягне за собою встановлення всіх компонентів, які вона включає[4].

Фізична структура пакета

Файл .msi — це складений документ OLE (OLE compound document — в такому ж форматі-контейнері зберігаються документи Microsoft Word, Excel тощо), в якому міститься невелика реляційна база даних — набір з декількох десятків взаємопов'язаних таблиць, що містять різну інформацію про продукт і процес встановлення. При цьому всі рядкові дані в базі зберігаються разом в окремому потоці документа, а в таблицях бази на них є посилання; таким чином уникають дублювання рядків, що значно зменшує розмір бази.

Крім бази, структура файлу .msi передбачає вміщення туди користувацьких сценаріїв і допоміжних DLL, якщо такі потрібні для встановлення, а також самих встановлюваних файлів, запакованих у форматі .cab. Файли можна розміщувати й окремо від пакунка, в запакованому або розпакованому вигляді (зі збереженням структури папок).

Процес встановлення

Процес встановлення складається з декількох етапів — збору інформації, виконання (власне встановлення), а також, можливо, відкоту (в разі помилки або скасування встановлення користувачем).

Дії

Кожен етап встановлення складається з послідовності дій (actions), записаної в базі даних. Діям присвоєно номери, що визначають порядок їх виконання, а іноді — й умови, за яких дії виконуються або не виконуються.

Більшість дій — це стандартні дії, характерні для типового процесу збору інформації і встановлення. Всі ці дії задокументовані, крім них, користувач може визначити і свої дії (custom actions).

Дії, визначені користувачем, можуть бути або написані однією зі скриптових мов, вбудованих в операційну систему (JScript або VBScript так само і Eclipse, побічна мова від C++), або розміщуватися в спеціально створеній DLL (написаній такими мовами, як C, C++ тощо). Файли з цими діями поміщаються всередину файлу .msi і добуваються звідти на початку запуску встановлення. Ці DLL добуваються в папку Windows\Installer, при цьому їм присвоюються випадкові імена, наприклад MSIF65E.tmp.

Збір інформації

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

Цей етап називають також безпосереднім режимом (immediate mode).

Виконання

До початку цього етапу встановлювач генерує внутрішній сценарій, призначений для виконання без втручання користувача. Цей сценарій виконується встановлювачем у привілейованому режимі служби NT (конкретно — під обліковим записом LocalSystem). Привілейований режим потрібен через те, що встановлення міг запустити користувач, який не має прав, необхідних для змінювання системних параметрів і файлів (хоча право встановити програму йому надано).

Цей етап іноді називається відкладеним режимом (deferred mode).

Відкіт

Якщо будь-яка з дій, визначених у сценарії, закінчується невдачею, або встановлення в процесі скасовується Користувачем, усі дії, виконані до цього моменту, відкочуються, повертаючи систему в стан, що був до установки. Відкіт забезпечується наявністю для кожної дії, яка вносить зміну в систему, зворотної до неї. Уводячи в пакунок нестандартні дії, програміст має створити також зворотні до них для правильної роботи відкоту[5].

Інші можливості

Анонсування та встановлення на вимогу

Windows Installer може рекламувати продукт, а не встановлювати його[6]. Продукт з'явиться у користувача, але він фактично не буде встановлений доти, поки його не запустять уперше (за допомогою ярлика в меню «Пуск»). Адміністратор може оголосити встановлювальний пакунок з використанням групової політики Windows, або іншого механізму компілювання, або запуском виконуваного файлу msiexec за допомогою /jm (для реклами для кожного пристрою), або /ju (для реклами для кожного користувача). Деякі пакунки MSI, створені в InstallShield, можуть перешкодити використанню цих та інших вбудованих функцій MSI.

Щоб завершити рекламоване встановлення, користувачу потрібні права адміністратора.

Встановлення на вимогу

Подібно до рекламування продукту, встановлення на вимогу встановлює можливість, як тільки користувач намагається нею скористатись[7].

Інші системи встановлення

Див. також

Примітки

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.