Tras instalar el acumulativo KB5042881 en Windows Server 2022, Windows Update insiste en reinstalarlo y falla con el error 0x80073701. WUSA tampoco permite quitarlo y no aparece en el historial. Aquí tienes un procedimiento completo para resolverlo sin perder roles ni datos.
Resumen del problema
En algunos servidores Windows Server 2022, el paquete acumulativo de septiembre de 2024 KB5042881 queda en estado “a medias”: Windows Update vuelve a ofrecerlo, la instalación falla con 0x80073701
y WUSA asegura que el KB no está instalado, por lo que tampoco figura en el Historial de actualizaciones. El código 0x80073701 (ERRORSXSASSEMBLY_MISSING)
apunta a un WinSxS dañado o a un componente requerido que no está presente.
Diagnóstico rápido
Síntoma | Qué sugiere |
---|---|
Windows Update vuelve a ofrecer KB5042881 tras “instalarse”. | Paquete parcialmente aplicado o detección inconsistente. |
WUSA /uninstall dice que el KB no está instalado. | El paquete no se registró en WUSA/Historial, pero sí en DISM/WinSxS. |
Error 0x80073701 en Windows Update/CBS.log. | Faltan manifiestos/assemblies en el almacén de componentes (WinSxS). |
Instalación manual .msu también falla. | Daño en imagen base o estado pendiente que bloquea la transacción. |
Causa técnica del 0x80073701
ERRORSXSASSEMBLY_MISSING se dispara cuando el motor de mantenimiento (servicing stack) no encuentra un manifiesto, catálogo o binario que el paquete requiere. Puede deberse a:
- Almacén WinSxS (component store) con archivos corruptos o incompletos.
- Actualización aplicada parcialmente (por ejemplo, reinicio pendiente interrumpido).
- Origen ausente durante
/RestoreHealth
(DISM no logra materializar los componentes). - Caché de Windows Update incoherente (
SoftwareDistribution
/catroot2
).
Antes de empezar
- Abre CMD o PowerShell como administrador.
- Programa una ventana de mantenimiento: habrá reinicios.
- Si el servidor está en clúster/producción (SQL, Hyper‑V, DCs), haz drain o failover según corresponda.
- Ten a mano un ISO de Windows Server 2022 que coincida con edición/idioma/build.
Ruta rápida de solución (TL;DR)
- Repara imagen y archivos con DISM y SFC.
- Resetea los componentes de Windows Update.
- Localiza y retira el paquete “a medias” con DISM.
- Fuerza una nueva detección e instala el KB de forma limpia.
- Si persiste: revisa logs y considera in-place repair.
Reparar la imagen del sistema y archivos
Ejecuta, en este orden:
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
Si /RestoreHealth
falla o no encuentra origen, utiliza un medio que coincida con tu server:
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:X:\sources\install.wim:INDEX /LimitAccess
- X: es la letra de unidad del ISO montado.
- INDEX: corresponde a la edición exacta. Para descubrirlo:
DISM /Get-WimInfo /WimFile:X:\sources\install.wim
- Si el medio usa
install.esd
:DISM /Online /Cleanup-Image /RestoreHealth /Source:esd:X:\sources\install.esd:INDEX /LimitAccess
Consejo: si el servidor no tiene acceso a Internet (WSUS/DMZ), /LimitAccess
evita que DISM busque orígenes externos.
Restablecer los componentes de Windows Update
Detén servicios, renombra cachés y vuelve a iniciarlos. En CMD elevado:
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptSvc
net start bits
net start msiserver
Esto fuerza a Windows a regenerar la caché de descarga y la base de catálogos.
Comprobar si el paquete quedó “a medias” y retirarlo por identidad
Aunque WUSA y el Historial no lo vean, DISM sí lista el estado real del paquete:
dism /online /get-packages /format:table | findstr 5042881
Si aparece un nombre del tipo PackageforRollupFix~31bf3856ad364e35~amd64~~20348.XXXXX.1.?
, copia el PackageName y retíralo:
dism /online /remove-package /packagename:PackageforRollupFix~31bf... /norestart
Después, prueba también (si procede) con WUSA en silencioso:
wusa /uninstall /kb:5042881 /quiet /norestart
Reinicia el servidor al terminar estos pasos.
Forzar nueva detección e instalación limpia
Vuelve a iniciar un escaneo de actualizaciones:
UsoClient StartScan
Alternativamente, instala manualmente el paquete descargado del Catálogo de Microsoft Update tras reparar la imagen:
wusa D:\ruta\windows10.0-kb5042881-x64.msu /quiet /norestart
Verificación posterior
- Consulta el estado del paquete en DISM:
dism /online /get-packages /format:table | findstr 5042881
- Comprueba Registros de Windows Update y que no haya nuevas ofertas del mismo KB.
- Opcional: valida con
Get-HotFix
en PowerShell (ten en cuenta que no siempre lista LCUs combinadas).Get-HotFix | Where-Object {$_.HotFixID -eq 'KB5042881'}
Qué mirar en los registros
- CBS.log –
C:\Windows\Logs\CBS\CBS.log
(filtros útiles:0x80073701
,CSI
,Manifest
,Missing
). Ejemplos:- “CSI Manifest Missing”: faltan manifiestos, confirma problema de WinSxS.
- “Failed to resolve package”: paquete inconsistente; retíralo con DISM.
- DISM.log –
C:\Windows\Logs\DISM\dism.log
para causas de/RestoreHealth
. - WindowsUpdate.log – genera con PowerShell:
Get-WindowsUpdateLog
Estados pendientes y reinicios
Verifica que no haya operaciones pendientes de CBS/servicing bloqueando la transacción:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"
Si existe la clave, reinicia. Evita borrar pending.xml
manualmente: DISM gestiona mejor estos estados.
Reparación in-place como último recurso
Si el daño del almacén es profundo, una instalación de reparación (in‑place) regenera WinSxS sin tocar roles/datos:
- Monta el ISO de Windows Server 2022 de la misma edición/idioma/build.
- Ejecuta
setup.exe
y elige mantener aplicaciones y datos. - Completa el asistente y aplica las actualizaciones después.
En Server Core puedes lanzar el asistente desde consola o usar parámetros de línea de comandos para una actualización desatendida. Planifica siempre downtime.
Escenarios especiales
Servidores unidos a WSUS o con proxy
- Haz la reparación de imagen con
/Source
local y/LimitAccess
para no depender del WSUS. - Tras el reset de cachés, fuerza detección (
UsoClient StartScan
) y asegúrate de que el servidor ve al WSUS correcto.
Controladores de dominio
- Coordina ventanas de mantenimiento para no dejar el bosque con un único DC disponible.
- Verifica SYSVOL/NTDS tras reinicios; no debería verse afectado por DISM, pero valida health con
dcdiag
.
Clústeres (Failover/Hyper‑V/SQL)
- Aplica drain roles y actualiza nodos de forma escalonada.
- Evita
/ResetBase
si necesitas poder desinstalar LCUs durante una ventana controlada.
Errores cercanos y cómo actuar
Error | Descripción | Acción recomendada |
---|---|---|
0x80073701 | Falta de ensamblajes/manifiestos. | DISM + fuente correcta, reset de WU, retirar paquete con DISM. |
0x800f081f | Origen no encontrado. | Usa /Source con install.wim/esd correcto + /LimitAccess . |
0x800f0922 | Fallo de instalación en fase final. | Revisar CBS.log; estados pendientes; reiniciar y reintentar con caché limpia. |
0x8024200D | Paquete descargado corrupto. | Reset de SoftwareDistribution y reinstalar manualmente. |
Buenas prácticas para evitar recurrencias
- Antes de LCUs críticas, crea un punto de restauración o snapshot (si es VM).
- Mantén actualizado el servicing stack (en Server 2022 viene combinado con la LCU, pero aplica siempre las últimas).
- Evita forzar apagados durante reinicios de mantenimiento.
- Ejecuta periódicamente:
DISM /Online /Cleanup-Image /AnalyzeComponentStore
- Tras estabilizar, puedes reducir el tamaño de WinSxS (con cautela):
DISM /Online /Cleanup-Image /StartComponentCleanup
Nota:/ResetBase
impide desinstalar futuras actualizaciones; no lo uses en entornos donde necesites rollback.
Script de ayuda (PowerShell)
Para automatizar el flujo (ajusta el $SourceWim
y el $Index
a tu medio):
$ErrorActionPreference = 'Stop'
1) Reparar imagen
dism /Online /Cleanup-Image /CheckHealth
dism /Online /Cleanup-Image /ScanHealth
\$SourceWim = 'X:\sources\install.wim'
\$Index = 1 # cámbialo tras consultar Get-WimInfo
dism /Online /Cleanup-Image /RestoreHealth /Source\:wim:\$SourceWim:\$Index /LimitAccess
sfc /scannow
2) Reset de Windows Update
Stop-Service wuauserv, cryptsvc, bits, msiserver -Force
Rename-Item -Path 'C:\Windows\SoftwareDistribution' -NewName 'SoftwareDistribution.old' -ErrorAction SilentlyContinue
Rename-Item -Path 'C:\Windows\System32\catroot2' -NewName 'catroot2.old' -ErrorAction SilentlyContinue
Start-Service wuauserv, cryptsvc, bits, msiserver
3) Retirar paquete "a medias"
\$pkg = (dism /online /get-packages /format\:table | Select-String '5042881' | ForEach-Object { $\_.Line })
if (\$pkg) {
Extrae el PackageName de la línea si es necesario editarlo manualmente
Ejecuta un remove-package con el nombre completo:
dism /online /remove-package /packagename:\ /norestart
}
4) Forzar nueva detección
Start-Process -FilePath "\$env\:SystemRoot\System32\UsoClient.exe" -ArgumentList 'StartScan' -Wait
Checklist operativo
- DISM OK con origen válido y SFC sin corrupción.
- Cachés de Windows Update regeneradas.
- Paquete KB5042881 retirado si estaba “Instalado”, “Pendiente” o “Instalación fallida” en DISM.
- Nueva instalación limpia del KB completada, sin reoferta.
- Logs sin entradas nuevas de
0x80073701
.
Preguntas frecuentes
¿Por qué WUSA no ve el KB si DISM sí?
Porque WUSA se apoya en el registro de paquetes “completamente instalados” para el Historial. Si una transacción quedó a medias, el paquete puede existir en WinSxS sin tener la marca de instalación final.
¿Puedo borrar SoftwareDistribution.old
y catroot2.old
?
Sí, tras verificar que todo funciona y no los necesitas para auditoría. Son solo copias renombradas.
¿Debo ejecutar SFC antes o después de DISM?
Primero DISM (repara el almacén) y después SFC (repara archivos del sistema desde el almacén). Así SFC tendrá una fuente sana.
¿Cómo sé qué INDEX
usar?
Con DISM /Get-WimInfo /WimFile:X:\sources\install.wim
. Debe coincidir con edición/idioma. Usar un índice distinto provoca 0x800f081f
.
¿Cuándo usar reparación in‑place?
Cuando DISM+SFC+reset no solucionan y los logs siguen evidenciando manifiestos faltantes o transacciones atascadas reiteradamente.
Conclusión
El error 0x80073701 con KB5042881 en Windows Server 2022 casi siempre se resuelve saneando el almacén WinSxS, reseteando la infraestructura de Windows Update y, si es necesario, retirando el paquete por identidad con DISM para reinstalarlo de forma limpia. Sigue los pasos anteriores y valida con logs; si el daño persiste, una reparación in‑place devuelve la coherencia del sistema sin reinstalar desde cero.
Comandos clave (chuleta)
Acción | Comando |
---|---|
Comprobar/escaneo/rehabilitar imagen | DISM /Online /Cleanup-Image /CheckHealth|/ScanHealth|/RestoreHealth |
Restaurar con origen WIM/ESD | /Source:wim|esd:X:\sources\install.*:INDEX /LimitAccess |
Comprobar/retirar KB5042881 | dism /online /get-packages | findstr 5042881 dism /online /remove-package /packagename:... /norestart |
Reset de Windows Update | net stop ... && ren SoftwareDistribution && ren catroot2 && net start ... |
Forzar detección | UsoClient StartScan |
Instalar/desinstalar MSU | wusa <KB>.msu /quiet /norestart | wusa /uninstall /kb:5042881 |
Notas útiles:
- Ejecuta todos los comandos en sesión elevada.
- Planifica al menos un reinicio tras los pasos de reparación y eliminación.
- No borres manualmente
pending.xml
ni claves de CBS salvo indicación explícita; DISM gestiona mejor los estados pendientes.