При установке или удалении компонентов или ролей в Windows Server или десктопных версиях Windows 10/11 может появится ошибка:
The referenced assembly could not be found. Error: 0x80073701.
Не найдена сборка, на которую имеется ссылка. Ошибка: 0x80073701.

Аналогичная ошибка при попытке установить компонент (WSL в этом случае) с помощью PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature : The referenced assembly could not be found.

Данная ошибка указывает на то, что файлы указанного компонента в образе Windows отсутствуют или повреждены.
Прежде чем продолжить диагностику, проверьте, есть ли обновления, которые требуют перезагрузки хоста (статус
Pending Reboot
):
dism /online /get-packages /format:table | Select-String "Pending"
Если после установки каких-то компонентов или пакетов нужно выполнять перезагрузку, сделайте это.
Затем проверьте целостность образа Windows с помощью команды DISM:
DISM /Online /Cleanup-Image /CheckHealth

Если команда вернет The component store is repairable, выполнить восстановление хранилища компонентов:
DISM /Online /Cleanup-Image /RestoreHealth
После этого восстановите целостность системных файлов (восстановленное хранилище будет использовать в качестве источника исходных файлов):
sfc /scannow
Если после восстановления системных файлов, компоненты Windows также не устанавливаются, проверьте ошибки в логе
%windir%\Logs\CBS\CBS.log
.
В моем случае на Windows Server 2022 в логе CBS содержалась ошибка, указывающая на отсутствующие системные файлы ранее установленного обновления KB5012170:
CBS Failed to pin deployment while resolving Update: Package_for_KB5012170~31bf3856ad364e35~amd64~~20348.880.1.1from file: (null) [HRESULT = 0x80073701 – ERROR_SXS_ASSEMBLY_MISSING]
В этом случае нужно вручную скачать указанное обновление Windows из каталога обновлений Microsoft и установить MSU обновление на проблемной системе.
Если обновление отказывается устанавливаться из MSU файла, нужно распаковать его и установить в образ Windows в виде CAB пакета:
Распаковать MSU пакет:
expand -f:* windows10.0-kb5012170-x64 c:\temp
Добавить пакет в онлайн образ Windows:
DISM.exe /Online /Add-Package /PackagePath:c:\Temp\Windows10.0-KB5012170-x64.cab
Если скачать пакет нельзя (он не доступен) или пишет, что обновление неприменимо к вашей версии Windows, можно сделать так, чтобы Windows игнорировала поврежденный пакет
- Откройте раздел реестра
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing - Назначьте себя владельцем ветки (владелец по умолчанию – TrustedInstaller) и предоставьте себе полный права на все вложенные разделы

- Найдите ветку реестра с пакетом, который нужно игнорировать
- Измените значение параметра CurrentState на 0. Это указывает системе обслуживания Windows, что данный компоненте не установлен или не активен.В нашем примере предыдущее значение состояния пакета
112(Installed), мы изменили на0(Absent).
- Верните исходные права на ветку реестра, оставив для администратора только ReadOnly.
- Перезагрузите компьютер и проверьте, что компоненты (роли) Windows теперь добавляются успешно.
ERROR_SXS_ASSEMBLY_MISSING
встречается для нескольких пакетов, возможно придется выполнить указанные действия для каждого из них. Все пакеты с ошибками из лога CBS.LOG можно вывести, выполнив поиск в файле с помощью Select-String:
Select-String -Path "c:\windows\logs\cbs\cbs.log" -Pattern "Failed to pin"
Если и это не помогло, попробуйте выполнить In-place обновление текущего билда Windows с помощью последней версии установочного ISO образа с вашей редакцией ОС. Запустите мастер setup.exe с установочного образа Windows и при выборе режима обновлении, выберите Keep personal files and apps.



В пункте 4 на скрине видно, что строк в реестре ответственных за обновление KB5012170 две штуки. Это с каждой строкой нужно менять параметр CurrentState?
Сам написал — сам потом внимательно прочитал пост, что в каждой строчке. А если их прям много, можно ли их просто удалить?
Можно, но не нужно 🙂 Что будет с системой — не понятно.
Если много, наверно проще автоматизировать исправление для каждого пакета скриптом.