Windows Installer справді має репутацію повільності. Є кілька речей, які сприяють цьому, і я їх вирішу нижче. Але в кінцевому підсумку слід запитати себе, чи справді одна, дві чи три хвилини викликають суперечки при встановленні та видаленні програмного забезпечення. Я забираю більше часу, ніж прогортаючи телеканали :)
Реєстр
Це винуватець номер один. Windows Installer широко використовує реєстр для своїх операцій. По мірі дозрівання вашої системи, коли ви встановлюєте та видаляєте програми, і коли реєстр збільшується в розмірах або стає фрагментарним, MSI стане повільніше. Цей самий додаток буде встановлено та видалено набагато швидше в незайманій установці Windows, ніж це буде у зрілої системи. Рішення тут полягає в тому, щоб спробувати зберегти реєстр в чистоті та дефрагментації.
Для очищення реєстру використовуйте один із багатьох інструментів, наявних там. Але для дефрагментації реєстру я не можу рекомендувати достатню кількість NTREGOPT для внутрішньої оптимізації вуликів та PageDefrag для фізичної дефрагментації файлів.
Причина, що операції MSI можуть стати повільними в реєстрі, пов'язана з тим, як MSI використовує її. Windows Installer використовує реєстр, щоб відстежувати, які продукти встановлені, які компоненти та в якому розташуванні він був встановлений. Оригінальні GUID установки використовуються у стисненому форматі. Інформацію про встановлення на окремих машинах можна знайти на веб-сайті HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, тоді як дані про кожного користувача знаходяться поруч із ним під HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
ключем та під ключем із користувацьким SID.
Обидва ці ключа можуть бути досить великими і містять численні підрозділи та значення. Вони контролюють Продукти, Компоненти та Ключові шляхи кожної встановленої програми. Вся ця інформація повинна бути прочитана та оброблена для правильної процедури видалення. Однак формат реєстру перераховує ключі в алфавітному порядку, що дозволяє виконувати двійкові пошуки. Але значення - ні. Вони зберігаються у міру їх створення, тому необхідно виконувати лінійну процедуру пошуку. Що уповільнює роботу алгоритму.
Загалом, MSI - це досить повний і точний метод установки та деінсталяції програмного забезпечення. Але це страждає від залежності її реєстру. Система відмінна. Саме реєстр Windows мав би давно провести капітальний ремонт :)
Для отримання додаткової інформації:
Для глибокого аналізу того, що робить MSI під час кожної процедури встановлення чи видалення, перегляньте цю статтю, яка пояснює, як налаштувати налагодження MSI. Або для менш, але все ж цінної інформації, ця, як активувати ведення журналу.