Найти тему
WinITPro.ru - Блог админа

Как в 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 минут. Не самый, конечно, показательный случай, но все равно довольно долго.

-2

Подробную информация о всех действиях, которые выполняются системой при установке обновления можно получить из файла 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, а возможно и для чего-то еще. Поэтому такой метод не будет универсален.

-3

Проверяем время установки обновления — теперь установка заняла 17 минут, т.е. время установки обновления уменьшилось в 2 раза!

-4

Кроме того, если перед установкой 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 максимально быстро, и уложиться в выделенное окно обслуживания (что особенно критично для продуктивных серверов).

Windows
66,2 тыс интересуются