Повільна установка оновлень Windows в * .msu форматі

Досить давно наголошую, що MSU файли оновлень Windows, викачані вручну з каталогу оновлень Windows Update встановлюються набагато повільніше, ніж ті ж оновлення, отримані системою через службу автоматичного оновлення (з сайту WU або локального сервера WSUS). В одному з випадків, який і підштовхнув мене до пошуку причини довгої установки оновлень, ручна установка достатнього великого Convenience rollup (SP2) для Windows Server 2008 R2 з msu файлу зайняла більше 5 годин (!!!). У той час, як на серверах, що обновляються через WSUS, те ж саме оновлення встановлювалося всього за 30-40 хвилин.

Служба авто-оновлення Windows буде оновлюватися в CAB форматі (подивіться вміст каталогу «C: \ Windows \ SoftwareDistribution \ Download»). У тому випадку, якщо ви хочете вручну завантажити конкретний патч, то на сторінці завантажень каталогу Windows Update будуть доступні тільки * .msu файли оновлення. Для установки оновлень в msu форматі використовується вбудована утиліта WUSA.exe (Автономний інсталятор оновлень Windows).

Повільна установка * .msu оновлень спостерігається як при ручній установці файлу оновлення (простим подвійним клацанням), так і при запуску установки через завдання SCCM або логон-скрипт групової політики через виклик wusa.exe.

Проблема повільної установки оновлень більш характерно проявляється в Windows Server 2008 R2 і Windows 7, але і в інших версіях Windows вона також спостерігається (хоча і в меншій мірі)

Спробуємо в Windows 10 1709 засікти час установки січневого виправлення KB4056892 (для захисту від вразливостей Meltdown і Spectre).

Запустимо установку поновлення командою

wusa "C: \ Distr \ windows10.0-kb4056892-x64.msu"

Дочекаємося закінчення установки патча (в Windows 7 установка msu оновлень йде ще довше, іноді здається, що wusa.exe просто завмирає на кілька десятків хвилин). Інформацію про час початку і завершення установки оновлення Windows можна отримати з системного журналу Setup (Установка) за допомогою графічної консолі Event Viewer -> Windows Logs -> Setup або такий PowerShell командою:

Get-WinEvent -FilterHashTable @ LogName = "Setup" | ? $ _. Message -match "4056892"

Як ви бачите, команда повернула кілька подій від різних джерел Microsoft-Windows-Servicing і Microsoft-Windows-WUSA. Відповідно, час початку установки (Initiating changes for package KB4056892) 10:02:21, час завершення установки оновлення 10:37 (Windows update «Security Update for Windows (KB4056892)» was successfully installed). Разом, установка поновлення зайняла близько 35 хвилин. Не самий, звичайно, показовий випадок, але все одно досить довго.

Детальну інформацію про всі дії, які виконуються системою при установці оновлення можна отримати з файлу CBS.log (Знаходиться в каталозі c: \ windows \ logs \ cbs). Якщо детально подивитися записи подій у ньому, можна виявити, що найбільше часу витрачається на ініціалізацію установки, пошук залежностей (таке відчуття, що виконується якась синхронізація з сервером WU / WSUS) і створення точки відновлення системи.

Спробуємо встановити те ж саме оновлення, але в CAB, форматі, попередньо розпакувати MSU файл за інструкцією зі статті про cab і msu файлах оновлень.

розпакуємо файл

expand _f: * "C: \ Distr \ windows10.0-kb4056892-x64.msu" C: \ Distr \ kb4056892

Встановимо оновлення безпосередньо в образ за допомогою DISM (не використовуючи wusa):

DISM.exe / Online / Add-Package /PackagePath:"C:\Distr\kb4056892\Windows10.0-KB4056892-x64.cab "

Примітка. Команду DISM.exe / Online / Add-Package можна використовувати і для установки * .msu файлів безпосередньо, без попереднього розпаковування. Однак, з якихось причин DISM не працює з msu оновленнями для IE 11, а можливо і для чогось ще. Тому такий метод не буде універсальний.

Перевіряємо час установки оновлення - тепер установка зайняла 17 хвилин, тобто час установки оновлення зменшилася в 2 рази!

Крім того, якщо перед установкою msu поновлення через wusa.exe, відключити службу Windows Update і службу тіньового копіювання (Використовується для створення точки відновлення Windows), швидкість установки оновлень сильно збільшується. Таким чином, якщо ви хочете як і раніше встановлювати оновлення в форматі msu, то для більш швидкого встановлення слід використовувати наступний скрипт:

net stop wuauserv
sc config vss start = disabled
net stop vss
start / wait wusa "C: \ Distr \ windows10.0-kb4056892-x64.msu" / quiet / norestart
sc config vss start = auto
net start vss
net start wuauserv

Звичайно, конкретне оновлення може викликати проблеми з системою, і через відсутність актуальної точки відновлення, доведеться видаляти оновлення таким способом.

Або потрібно попередньо розпаковувати оновлення та встановлювати їх в CAB форматі через DISM як описано вище.

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