Очікує на перевірку

Windows Installer

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Windows Installer
Типпрограмне забезпечення
Windows[d] і Інсталятор
РозробникMicrosoft
Версії5.0-1">[1]
ПлатформаWindows
Ліцензіябезкоштовне програмне забезпечення
Вебсайтdocs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal

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

Історія

[ред. | ред. код]

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

Перша версія 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) — це ієрархічна група компонентів і/або інших можливостей. Коли при встановленні показується діалог вибору встановлюваних частин програми, користувач керує вибором саме можливостей. Вибір можливості для встановлення тягне за собою встановлення всіх компонентів, які вона включає[5].

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

[ред. | ред. код]

Файл .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).

Відкочування

[ред. | ред. код]

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

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

[ред. | ред. код]

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

[ред. | ред. код]

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

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

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

[ред. | ред. код]

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

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

[ред. | ред. код]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
_1-0">↑ Released Versions of Windows Installer
  • Windows Installer, The .NET Framework, The Bootstrapper, and You — Chris Smith's completely unique view. Архів оригіналу за 5 лютого 2019. Процитовано 11 серпня 2021.
  • File Extension .MSI Details. Архів оригіналу за 11 серпня 2021. Процитовано 11 серпня 2021.
  • Rob Mensching. Inside the MSI file format. Архів оригіналу за 4 січня 2010. Процитовано 11 серпня 2021.
  • Windows Installer Components | Microsoft Docs. Архів оригіналу за 1 липня 2018. Процитовано 11 серпня 2021.
  • Rollback Installation | Microsoft Docs. Архів оригіналу за 1 липня 2018. Процитовано 11 серпня 2021.
  • Advertisement | Microsoft Docs. Архів оригіналу за 1 липня 2018. Процитовано 11 серпня 2021.
  • Installation-On-Demand | Microsoft Docs. Архів оригіналу за 1 липня 2018. Процитовано 11 серпня 2021.
  • Посилання

    [ред. | ред. код]