При установке или удалении компонентов или ролей в 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.