Иногда при установке обновлений Windows происходят ошибки, и иногда они влияют не только на одно конкретное обновление, но и начинают мешать в дальнейшем.
Ниже набросаю чеклист, для борьбы с этим неприятным явлением с примерами из моей практики
Симптом: не устанавливаются обновления Windows Update с ошибкой 800f0831. Это касается не всех подряд обновлений, а какой-то части из них. Проблемы с установкой могут тянуться месяцами, без особого влияния на сервер в целом.
- Проверьте логи CBS, они расположены тут:
C:\Windows\Logs\CBS\CBS.log
Обычно в них можно найти строку с упоминанием о проблеме поиском вхождения «, Error» (В нашем случае это: Failed to resolve package ‘Package_1103_for_KB4462926~31bf3856ad364e35~amd64~~6.3.1.5’ [HRESULT = 0x800f0831 — CBS_E_STORE_CORRUPTION]). Часто там ссылаются на ранее некорректно установленное обновление, или побитое хранилище. Запоминаем виновника торжества (в нашем случае это KB4462926 Конкретная часть Package_1103 — нам не принципиальна. Все равно удалять\лечить будем все KB целиком) - Пробуем установить разные обновления по отдельности, каждый раз проверяем CBS-лог, убеждаемся, что проблема именно в этом самом криво установленном обновлении
- Идем на http://catalog.update.microsoft.com и скачиваем интересующее нас обновление из первоисточника
- Распаковываем его из MSU до *.cab (можно обычным 7-zip, например)
- Дальше начинаем играться разными методами. Какой именно сработает — сложно предсказать
- Перенастраиваем источник обновлений на глобальный Windows update (отключаем от WSUS если он используется)
- Удаляем в WSUS запись для этого сервера (если он тянет обновления именно с WSUS). Это нужно, т.к. при настройке на WSUS могут некорректно отрабатывать ключи /Online в утилите DISM. Подробнее тут
- Пробуем полечить хранилище с помощью команд
DISM /Online /Cleanup-Image /CheckHealth (проверяет «флаг состояния хранилища». время выполнения 10-20 сек)
DISM /Online /Cleanup-Image /ScanHealth (собственно сканирует само хранилища на предмет онаружения в нем ошибок. Время выполнения 10-20 мин)
DISM /Online /Cleanup-Image /RestoreHealth (пытается полечить хранилище. время выполнения 10-20 мин) - Часто вышеприведенные команды не дают результата, поэтому идем далее. Пробуем удалить битое обновление командой DISM /online /remove-package /packagepath:E:\Distrib\KB4462926\unpack\Windows8.1-KB4462926-x64.cab Используем именно ключ /packagepath с полным путем к распакованному обновлению
- Если после удаления «битого обновления» нормальные все равно продолжают на него ругаться, что ж попробуйте заново установить это битое обновление. И тут есть нюанс: если просто жмакнуть на MSU файл, система ругается что обновление для нее неподходящее и не ставит его. А вот если запустить команду
DISM /online /add-package /packagepath:E:\Distrib\KB4462926\unpack\Windows8.1-KB4462926-x64.cab то обновление нормально добавляется в хранилище.