Помилка 0x80073712 при установці оновлень і компонентів в Windows Server 2016 і Windows 10

Зіткнувся з цікавою помилкою 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.

Якщо у деяких оновлень вказано Install Pending, ви з можете коректно видалити за допомогою команди DISM (використовуйте ваш Package Identity):

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 встановлюються без помилки.