Зіткнувся з цікавою помилкою 0x80073712 при установці оновлень в Windows Server 2016. Як з'ясувалося пізніше, ця помилка пов'язана з пошкодженням сховища компонентів Windows. У цій статті розглянемо, як виправити сховище компонентів в Windows 10 / 8.1 і Windows Server 2016/2012 R2 і відновити роботу Windows Update.
При спробі встановити оновлення у службі Windows Update з'являється помилка:
Деякий файли поновлення відсутні або є проблеми. Ми спробуємо завантажити оновлення пізніше.
Код помилки: (0x80073712)
Some update files are missing or have problems. We'll try to download the update.
Error code: (0x80073712)
В першу чергу я спробував скинути стан служби Windows Update і очистити каталог SoftwareDistribution за рекомендаціями зі статті "Повернення до початкових установок служби Windows Update", але це не допомогло.
За допомогою команди 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 встановлюються без помилки.