Ошибка 0x80073701 — ERROR_SXS_ASSEMBLY_MISSING

Если столкнулись с такой ошибкой (а она у меня возникла при установке одной из ролей на Windows Server 2019), то необходимо заглянуть в «C:\Windows\Logs\CBS\CBS.log» и найти эту ошибку в логе. Рядом с этой ошибкой должна найтись информация о конкретном файле обновления, который поврежден. В моем случае такой файл нашелся, но в нем не было указано к какому KB он относится.
Package: Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd6410.0.17763.1, Identifier: Windows Foundation [HRESULT = 0x80073701 - ERROR_SXS_ASSEMBLY_MISSING]
Возможно я плохо искал, но мне помогло другое определить какая конкретно KB виновата. Я начал запускать стандартные команды в таких случаях:
sfc /scannow
dism /online /cleanup-image /scanhealth
dism /online /cleanup-image /restorehealth

и одна из команд вывела сообщение, что системные файлы повреждены. После этого я снова заглянул в CBS.log и там уже фигурировали конкретные KB, на которые ругалась система.
Сначала система ругалась на обновление kb5017315. Я скачал его с сайта Microsoft. Это обновление не ставится, если попробовать установить его в лоб. Чтобы установить его принудительно, надо выполнить команды:
expand -F:* "C:\путь\к\вашему\обновлению.msu" C:\temp\
dism /online /add-package /packagepath:"C:\temp\имяфайла.cab"

После этого я попытался заново поставить роль на ОС, но ошибка повторилась. В этот раз в логе CBS фигурировала другая KB, был такой текст Package_821_for_KB5027222~31bf3856ad364e35~amd6410.0.1.5.5027222-1596_neutral from file: (null) [HRESULT = 0x80073701 - ERROR_SXS_ASSEMBLY_MISSING]
Поэтому пришлось скачать еще одну KB и так же её распаковать и установить через cmd.
В моих проблемным обновлениях при распаковке оказывались два cab-файла. В первый раз я поставил тот, который больше по размеру. Во втором случае это не прокатило – после команды dism /online /add-package /packagepath:"C:\temp\имяфайла.cab" был вывод в консоль:
Processing 1 of 1 - Adding package Multiple_Packages~~~~0.0.0.0
[== 5.0% ]
An error occurred - Error: 0x800f0986

и что смотрите файл с логами «C:\Windows\Logs\DISM\dism.log». В нем был такие строчки
Failed finalizing changes. - CDISMPackageManager::Internal_Finalize(hr:0x800f0986)
Failed processing package changes - CDISMPackageManager::ProcessChanges(hr:0x800f0986)
Loaded servicing stack for online use only. - CDISMPackageManager::CreateCbsSession.

В моем случае сервер не имеет выхода в интернет, что подтолкнуло меня к мысли, что устанавливаемому пакету «Windows10.0-KB5027222-x64.cab» в моем случае не хватает еще «SSU-17763.4121-x64.cab», который лежал рядом после распаковки MSU пакета обновления. Поэтому я еще раз запустил команду dism, только с указанием на пакет с обновление Service Stack
dism /online /add-package /packagepath:"C:\temp\ SSU-17763.4121-x64.cab". Он установился и после этого еще раз запустил команду
dism /online /add-package /packagepath:"C:\temp\Windows10.0-KB5027222-x64.cab" и он со второго раза установился.
После этого попытался выполнить установку роли на Windows Server и она прошла успешно. Перезагружать сервер не понадобилось.