Столкнулся с интересной ошибкой 0x80073712 при установке обновлений в Windows Server 2016. Как выяснилось позже, эта ошибка связана с повреждением хранилища компонентов Windows. В этой статье рассмотрим, как исправить хранилище компонентов в Windows 10 / 8.1 и Windows Server 2016/2012 R2 и восстановить работу Windows Update.
При попытке установить обновления в Центре обновления Windows появляется ошибка:
Некоторый файлы обновления отсутствуют или имеются проблемы. Мы попытаемся скачать обновление позже.
Код ошибки: (0x80073712)
Some update files are missing or have problems. We’ll try to download the update.
Error code: (0x80073712)
В первую очередь я попробовал сбросить состояние службы Windows Update и очистить каталог SoftwareDistribution по рекомендациям из статьи “Сброс настроек Центра обновления Windows”, но это не помогло.
С помощью команды
dism /online /get-packages
я проверил, что все обновления находятся в статусе Installed.
DISM.exe /Online /Remove-Package /PackageName:Package_for_KB4485447~31bf3856ad364e35~amd64~~10.0.1.1 /quiet /norestart
Довольно долго решал, с какой стороны подойди к этой проблеме, но в рамках траблшутинга мне понадобилось установить на Windows Server 2016 компонент .Net Framework 3.5. При установке компонента .Net с помощью DISM появилась характерная ошибка, которая и натолкнула меня на дальнейшие действия:
The request to add or remove features on the specified server failed. Installation of one or more roles, role services or features failed. The component store has been corrupted. Error: 0x80073712.
Хранилище компонентов повреждено. Ошибка: 0x80073712.
При этом в файле CBS.log можно найти такую строку (%WinDir%\Logs\CBS\CBS.log):
[HRESULT = 0x80073712 - ERROR_SXS_COMPONENT_STORE_CORRUPT]
Как вы видите, по какой-то причине хранилище компонентов вашей системы повреждено, в результате чего Windows Update не может получить данные из манифеста CBS (Component-Based Servicing) необходимые для установки обновлений. Вы можете восстановить хранилище компонентов с помощью встроенного функционала DISM.
В самом простом случае при восстановлении хранилища компонентов вам не потребуется установочный диск с дистрибутивом Windows. В этом случае для восстановления система будет использовать файлы хранилища на локальном диске и сайт Windows Update (локальный WSUS сервер не может быть использован для восстановления компонентов).
В первую очередь проверьте состояние хранилища компонентов с помощью команды:
dism /online /cleanup-image /checkhealth
Если после выполнения анализа появилось сообщение “component store is repairable”, вы можете попытаться восстановить хранилище компонентов командой:
dism /online /cleanup-image /restorehealth
В некоторых случаях это достаточно. Но у меня утилита DISM выдала ошибку:
Error: 0x800f0906
The source files could not be downloaded.
В этом случае для восстановления Windows требуется установочный диск с вашим дистрибутивом Windows. Допустим, вы смонтировали ISO файл с вашим дистрибутивом Windows. Теперь нужно проверить список текущих редакций Windows в файле install.wim в подключенном образе (диске):
dism /Get-WimInfo /WimFile:e:\sources\install.wim
В моем случае установлена редакция Windows Server 2016 Standard (Desktop Experience), поэтому в следующей команде я использую ее индекс – 2.
dism /online /cleanup-image /restorehealth /source:e:\sources\install.wim:2 /LimitAccess
Еще раз проверьте состояние хранилища компонентов:
Dism /Online /Cleanup-Image /CheckHealth
DISM должна вернуть:
Повреждение хранилища компонентов не обнаружено (No component store corruption detected).
После восстановления хранилища достаточно перезагрузить Windows и проверить, что обновления и компоненты Windows устанавливаются без ошибки.