Технологія windows installer

Джерело: rsdn.ru

Передмова

Технологія Windows Installer виникла не на порожньому місці, тому, перш ніж зануритися в її вивчення, оглянемося назад років на 10-15.

Трохи історії

"Золоті" часи DOS

Якщо ми повернемося в "золоті" часи DOS, то виявимо, що в той час кожна фірма-постачальник програмного забезпечення перекручувалися по-своєму. Не було ніякого загального інтерфейсу користувача, ніяких уніфікованих прийомів роботи з ПО (я не розглядаю щасливих власників комп'ютерів від фірми Apple з єдиним вже в той час призначеним для користувача інтерфейсом). Тому не дивно, що не було і єдиної технології інсталяції програмних продуктів.

Час минав - з'явилася перша версія Windows (на мій погляд - просто цікава іграшка), за нею - друга. Миру ПК спробували дати уніфікований користувацький інтерфейс (поки невдало), але з точки зору технології інсталяції нічого не змінилося: кожен виробник ПО продовжував дивувати нас різноманітними несумісними один з одним інсталяторами.

Ситуація трохи почала змінюватися на краще з виходом Windows 3.0, яка нарешті стала стандартом де-факто для користувача інтерфейсу для ПК. Але ... з точки зору інсталяції нічого не змінилося. Як і раніше не було єдиної бази програм, встановлених на комп'ютері, і не було ніякого API для створення уніфікованих, несумісних один з одним і, найголовніше, надійних програм інсталяції.

Тому цілком природно, що відсутність інтегрованого рішення від постачальника операційної системи дозволило зайняти цю нішу стороннім компаніям-розробникам. Найбільш відомі з них - InstallShield Software і WiseSolutions. Ці компанії принесли уніфікований інтерфейс в світ програм-інсталяторів і зіграли чималу роль у формуванні у користувачів уявлення про те, як повинна виглядати і вести себе програма інсталяції складного програмного продукту.

Windows 95

Але, крім зберігання списку встановлених програм і можливості запуску зовнішніх програм інсталяції, ця версія Windows нічого більше не запропонувала. В результаті залишилася невирішеною проблема з різними версіями бібліотек динамічного компонування (далі по тексту - DLL), з переписуванням системних DLL і т.д.

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

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

Ця таблиця зберігає 128-розрядне хеш-значення для вихідних файлів в пакеті інсталяції 4

Таблиці записів в реєстрі Windows

Ця група містить таблиці, що описують різні види інформації в реєстрі Windows.

Уважний читач, звичайно ж, зауважив, що на малюнку присутні таблиці з інших груп, такі, як Component. Feature і File. Ці таблиці включені сюди для того, щоб більш ясно показати логіку роботи цієї групи. Крім того, тут присутні таблиці, вже згадувані в інших групах, але тут грають трохи іншу роль (це таблиці SelfReg і Environment).

Таким чином, ця група включає 11 таблиць, короткий опис яких дано нижче:

Ця таблиця містить операції, що виконуються при активізації високорівневою операції ADVERTISE 4

ПРИМІТКА
  1. Всі операції в послідовності інсталяції, аж до InstallValidate і діалогів виходу, поміщаються в таблицю InstallUISequence. Всі операції від InstallValidate і до кінця інсталяції - в таблицю InstallExecuteSequence. Так як остання таблиця може використовуватися незалежно від першої (наприклад, якщо призначений для користувача інтерфейс відключений), вона включає всі операції ініціалізації, такі як LaunchConditions, CostInitialize, CostFinalize і ExecuteAction.
  2. Всі призначені для користувача операції, що виконуються в цій послідовності, при необхідності використання призначеного для користувача інтерфейсу повинні користуватися функцією API MsiProcessMessage. замість діалогів з таблиці Dialog.
  3. Всі операції в послідовності інсталяції, аж до InstallValidate і діалогів виходу, поміщаються в таблицю AdminUISequence. Всі операції від InstallValidate і до кінця інсталяції - в таблицю AdminExecuteSequence. Так як остання таблиця може використовуватися незалежно від першої (наприклад, якщо призначений для користувача інтерфейс відключений), вона включає всі операції ініціалізації, такі як LaunchConditions, CostInitialize, CostFinalize і ExecuteAction.
  4. Таблиця AdvtExecuteSequence може містити тільки обмежений набір стандартних операцій. Призначені для користувача операції не повинні міститися в цій таблиці.

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

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

Наступна група таблиць розширює можливості інсталятора з маніпулювання файлами і каталогами в процесі інсталяції.

Схожі статті