Так уж вышло, что пришлось дообновлять старые продуктивные сервера, работающие на Windows 2012R2, на которые по каким-либо причинам не установились последние патчи безопасности. Задача была установить последнее [свободно-распространяемое] обновление безопасности KB5031419 (в контексте нашей статьи будем называть его устанавливаемым). На все сервера кумулятивное обновление устанавливалось в штатном режиме, но в какой-то момент под руку попалась система, на которой установка обновления из KB завершалась с ошибкой "following updates were not installed" (обновления не установлены) с указанием нашего обновления. Попытка обновиться через Центр Обновления была более информативной и подсветила ошибку обновления 800f0831:
Очевидно, что у нас в компонентной модели ОС имеются ошибки и их следует исправить. Алгоритм действий следующий:
- Сразу после попытки установки обновления и возникновения ошибки, открываем лог-файл [компонентной модели] C:\Windows\Logs\CBS\CBS.log и производим поиск по ключевой фразе "error" или по коду ошибки "800f0831":
123456789101112131415..., Info CBS Exec: Package: Package_1841_for_KB5031419~31bf3856ad364e35~amd64~~6.3.1.12 is already in the correct state, current: Installed, targeted: Installed..., Info CBS Exec: Skipping Package: Package_1841_for_KB5031419~31bf3856ad364e35~amd64~~6.3.1.12, Update: 5031419-3141_neutral because it is already in the correct state...., Info CBS Store corruption, manifest missing for package: Package_2435_for_KB5009624~31bf3856ad364e35~amd64~~6.3.1.12..., Error CBS Failed to resolve package 'Package_2435_for_KB5009624~31bf3856ad364e35~amd64~~6.3.1.12' [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Mark store corruption flag because of package: Package_2435_for_KB5009624~31bf3856ad364e35~amd64~~6.3.1.12. [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Failed to resolve package [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Failed to get next package to re-evaluate [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Failed to process component watch list. [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Perf: InstallUninstallChain complete...., Info CSI 0000052a@2024/10/31:18:15:18.848 CSI Transaction @0x1980ece290 destroyed..., Info CBS Not able to read when the last time auto repair was attempted. [HRESULT = 0x80070490 - ERROR_NOT_FOUND]..., Info CBS Exec: Store corruption found during execution, attempting auto repair...., Info CBS Exec: Automatic repair feasibility evaluation:..., Info CBS Exec: Network Cost API is not available on this SKU, continue...., Info CBS Exec: Network detected as Unknown, continue - На сайте Каталога центра обновления Майкрософт, в поле поиска вбиваем упомянутое в логе "битое" обновление (KB5009624), ищем его и скачиваем.
- Распаковываем содержимое скачанного .MSU-файла в произвольный каталог (например, при помощи штатного WinRAR, 7zip и прч.). В целевом каталоге должно появиться примерно такое вот содержимое:
12345Windows8.1-KB5009624-x64-pkgProperties.txtWindows8.1-KB5009624-x64.cabWindows8.1-KB5009624-x64.xmlwindows8.1-kb5009624-x64_ae9f21e6bcae6274ea54ed380ab0a961aa7d6377.msuWSUSSCAN.cab - Теперь попытаемся произвести восстановление хранилища компонентов;
- После окончания процесса восстановления пробуем опять произвести установку [изначального, устанавливаемого] обновления (напоминаю, у меня это KB5031419).
- Если обновление опять вылетает с ошибкой, и в логах у нас снова ругается на то же "битое" обновление, то удаляем его командой:
DISM /online /remove-package /packagepath:C:\TEMP\Windows8.1-KB5009624-x64.cab
- Еще раз пробуем установить изначальное [устанавливаемое] обновление. Если опять получаем ошибку и всё-равно система в логах продолжает ругаться на то же "битое обновление" (которое вроде как только что мы удалили из системы), то теперь уже устанавливаем "битое" обновление (у нас это KB5009624) двойным щелчком по .MSU файлу. Если получаем ошибку "Обновление не применимо к этому компьютеру", то ставим его через DISM из распакованного ранее .cab-файла:
DISM /online /add-package /packagepath:C:\TEMP\Windows8.1-KB5009624-x64.cab
- Опять пробуем установить устанавливаемое изначально обновление (KB5031419).
- дополнение: если на каком-либо из этапов будут попадаться другие "битые" пакеты без привязки к какому-либо обновлению. например:
123456789101112131415161718192021..., Info CBS FinalCommitPackagesState: Started persisting state of packages..., Info CBS SQM: Reporting package change for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12, current: Staged, pending: Default, start: Staged, applicable: Installed, target: Installed, limit: Installed, hotpatch status: DisabledBecauseNoHotpatchPackagesInitiated, status: 0x0, failure source: Execute, reboot required: False, client id: WindowsUpdateAgent, initiated offline: False, execution sequence: 1411, first merged sequence: 1411 reboot reason: REBOOT_NOT_REQUIRED RM App session: -1 RM App name: N/A FileName in use: N/A..., Info CBS SQM: Upload requested for report: PackageChangeBegin_Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12, session id: 142859, sample type: Standard..., Info CBS SQM: Ignoring upload request because the sample type is not enabled: Standard..., Info CBS SQM: Reporting package change completion for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12, current: Staged, original: Staged, target: Installed, status: 0x800f0831, failure source: Execute, failure details: "(null)", client id: WindowsUpdateAgent, initiated offline: False, execution sequence: 1411, first merged sequence: 1411, pending decision: InteractiveInstallFailed, primitive execution context: Interactive..., Info CBS SQM: execute time performance datapoint is invalid. [HRESULT = 0x80070490 - ERROR_NOT_FOUND]..., Info CBS SQM: Failed to initialize Win SAT assessment. [HRESULT = 0x80040154 - Unknown Error]..., Info CBS SQM: average disk throughput datapoint is invalid [HRESULT = 0x80040154 - Unknown Error]..., Info CBS SQM: Upload requested for report: PackageChangeEnd_Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12, session id: 142862, sample type: Standard..., Info CBS SQM: Ignoring upload request because the sample type is not enabled: Standard..., Info CBS FinalCommitPackagesState: Completed persisting state of packages..., Info CBS Enabling LKG boot option..., Info CBS Exec: Processing complete. Session: 31140938_3403951456, Package: Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12 [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION]..., Info CBS Trusted Installer is shutting down because: SHUTDOWN_REASON_AUTOSTOP..., Info CBS TiWorker signaled for shutdown, going to exit...., Info CBS Ending the TiWorker main loop...., Info CBS Starting TiWorker finalization...., Info CBS Ending the TrustedInstaller main loop...., Info CBS Starting TrustedInstaller finalization...., Info CBS Ending TrustedInstaller finalization...., Info CBS Ending TiWorker finalization.
то тоже удаляем их такой вот командой:
DISM /online /remove-Package /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~9600.21620.1.12
*соответственно, в качестве аргумента PackageName указывайте найденный в вашей системе "битый" пакет.