Si Windows Update falla en varias máquinas durante meses con los códigos 0x800F081F, 0x800F0831, 0x800F0989 o 0x800F0991, el origen más frecuente es un almacén de componentes (WinSxS) incoherente. Esta guía ofrece un flujo probado para corregirlo en Windows 10/11 sin perder apps ni datos.
Panorama del problema
En entornos con Windows 11 (22H2/23H2) y Windows 10 22H2, pueden acumularse fallos de instalación del LCU (Latest Cumulative Update) durante varias rondas mensuales. Los códigos reportados con más frecuencia son:
0x800F0991
(PSFX/servicing)0x800F081F
(fuentes no encontradas)0x800F0989
(componentes no coincidentes)0x800F0831
(dependencias de un KB obsoleto no presentes)
El diagnóstico central: el almacén WinSxS contiene referencias huérfanas o manifiestos faltantes, a menudo de paquetes ya superseded. En un caso típico (Win11 23H2), la traza CBS muestra un componente ausente de una actualización de 31‑oct‑2023, lo que impide instalar el LCU actual (por ejemplo, KB5040442) en equipos como KULNBPF4QQ51Y.
Síntomas y códigos de error
Código (hex) | Código (decimal) | Descripción resumida | Indicios en logs |
---|---|---|---|
0x800F081F | -2146498529 | Fuentes no encontradas para reparar/instalar el componente requerido. | DISM/CBS reporta “source files could not be found” o incapacidad de resolver paquetes. |
0x800F0831 | -2146498511 | Dependencias faltantes de paquetes anteriores (KB superseded) bloquean el LCU. | “Failed to resolve package”, referencias a PackageforKBxxxxxxx sin presencia en WinSxS. |
0x800F0989 | -2146498167 | Error PSFX; WinSxS inconsistente tras quitar idiomas/FOd o cambios en componentes. | CSI/PSFX con “mismatch”, “cannot repair” y deltas que no aplican. |
0x800F0991 | -2146498159 | PSFX/servicing fallido por componentes no coincidentes o faltantes. | Entradas CBS con manifiestos ausentes y PSFX no resolubles. |
Diagnóstico central
- La corrupción de WinSxS y/o la ausencia de manifiestos de paquetes antiguos impiden que el LCU actual se instale.
- Tras varias rondas de parches, los restos de paquetes superseded pueden dejar stubs o referencias huérfanas.
- En equipos con paquetes de idioma o Features on Demand modificados, los deltas PSFX del LCU no siempre cuadran con el estado actual.
Flujo de corrección recomendado
Ejecute los pasos en el orden sugerido. En gran parte de los casos, StartComponentCleanup seguido de reintento del LCU resuelve el bloqueo. Si el CBS confirma manifiestos ausentes, aplique reparación dirigida o la reparación in‑place.
Confirmar la build exacta
Necesita saber la build para elegir fuentes/ISOs idénticas:
winver
O desde consola:
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"OS Build"
Anote la build completa, por ejemplo: 22631.xxxx
(Windows 11 23H2) o 19045.xxxx
(Windows 10 22H2).
Limpieza del almacén de componentes (WinSxS)
En cada equipo afectado, con CMD como administrador:
dism /online /cleanup-image /startcomponentcleanup
Objetivo: retirar restos de paquetes obsoletos que apuntan a componentes inexistentes. Puede complementar con:
dism /online /cleanup-image /analyzecomponentstore
No use /ResetBase
en endpoints, pues imposibilita desinstalar actualizaciones.
Reintentar la instalación del LCU
Tras la limpieza, reprocese la misma actualización (Windows Update o paquete offline):
- Si es un .MSU:
wusa <KBxxxxxxx.msu> /quiet /norestart
- Si es un .CAB:
dism /online /add-package /packagepath:<KBxxxxxxx.cab>
Si vuelve a fallar, recopile y revise C:\Windows\Logs\CBS\CBS.log
(solo ese archivo) y, si existe, C:\Windows\Logs\DISM\dism.log
.
Reparación dirigida de WinSxS (cuando hay manifiestos faltantes)
Si el CBS.log
muestra líneas como “Cannot find manifest …” o “Failed to resolve package PackageforKB…”, proceda:
Opción A (recomendada): copiar los archivos faltantes desde un equipo sano con la misma build exacta
- Identifique en
CBS.log
las rutas específicas (por ejemplo,\Windows\WinSxS\amd64_microsoft-windows-…\.manifest
o.mum
). - Arranque el equipo problemático en WinRE (entorno de recuperación) o abra un símbolo con privilegios de TrustedInstaller. Esto evita problemas de ACL al escribir en
C:\Windows\WinSxS
. - Copie exclusivamente las rutas ausentes/dañadas desde el equipo “donante” con la misma edición y build. Puede usar
robocopy
para preservar atributos:robocopy X:\WinSxS C:\Windows\WinSxS <rutarelativadetectada> /E /COPYALL
- Reinicie y reintente el LCU.
Opción B: DISM con fuente
Si usa origen (/Source:
), asegúrese de que la imagen coincide exactamente con su build. Ejemplo:
dism /get-wiminfo /wimfile:D:\sources\install.wim
dism /online /cleanup-image /restorehealth /source:wim:D:\sources\install.wim:6 /limitaccess
Advertencia: muchas ISOs base no incluyen los componentes de LCUs recientes; por ello, /RestoreHealth
puede no cubrir manifiestos surgidos de parches acumulativos modernos.
Reparación in‑place (cuando hay múltiples equipos o corrupción extensa)
Esta técnica reinstala el mismo Windows encima, conservando archivos y aplicaciones, y normaliza el almacén de componentes.
- Monte un ISO de la misma edición y build del equipo.
- Ejecute
setup.exe
y elija «Conservar archivos y aplicaciones». Opcionalmente, para un flujo controlado:setup.exe /auto upgrade /DynamicUpdate disable
- Tras completar, aplique el LCU más reciente y verifique.
Restablecimiento de componentes de Windows Update (complementario)
Útil cuando persisten fallos genéricos del agente WU:
net stop wuauserv
net stop bits
net stop cryptsvc
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start cryptsvc
net start bits
net start wuauserv
Comprobar integridad del sistema
Ejecute:
sfc /scannow
Si SFC informa reparaciones, reinicie y reintente el LCU. Puede combinar con:
dism /online /cleanup-image /checkhealth
dism /online /cleanup-image /scanhealth
dism /online /cleanup-image /restorehealth
Paquetes de idioma y Features on Demand (FOd)
Los errores 0x800F0989
/0x800F0991
aparecen a veces tras agregar o quitar idiomas/FOd. Estrategias:
- Reinstale los idiomas necesarios o elimine los no usados para estabilizar el estado.
- Sincronice FOd entre equipos afectados y donantes. Comandos útiles:
dism /online /get-intl dism /online /get-capabilities dism /online /remove-capability /capabilityname:Language.Basic~~~es-ES~0.0.1.0 dism /online /add-capability /capabilityname:Language.Basic~~~es-ES~0.0.1.0
Verificar reinicios pendientes
No intente instalar parches si hay operaciones de servicing pendientes. Compruebe:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
Ejemplo práctico: bloqueo por componente de KB superseded
Equipo Windows 11 23H2 (build 22631.xxxx) con fallos repetidos al aplicar el LCU KB5040442. En CBS.log
se observa “Cannot find manifest …” para un componente proveniente de un KB del 31‑oct‑2023, ya sustituido. Solución aplicada:
- StartComponentCleanup para retirar restos obsoletos.
- Reintento del LCU desde paquete offline.
- Resultado: instalación completada sin errores. En casos donde la limpieza no basta, la reparación dirigida con copia de manifiestos o la in‑place upgrade han resuelto de forma consistente.
Matriz de decisión rápida por código
Código | Causa probable | Acción clave | Comandos sugeridos |
---|---|---|---|
0x800F081F | Faltan fuentes de reparación o paquetes base. | Usar ISO/instal.wim exactamente de la misma build para DISM. | dism /restorehealth /source:wim:<ISO>:Index /limitaccess |
0x800F0831 | Dependencias de KB obsoleto no presentes. | Limpieza WinSxS y reintento; si persiste, reparación dirigida o in‑place. | dism /startcomponentcleanup → Reinstalar LCU → Revisar CBS.log |
0x800F0989 | PSFX/WinSxS no coincide tras cambios de idiomas/FOd. | Normalizar FOd/idiomas; reparar con DISM y SFC. | dism /get-capabilities & /add-/remove-capability |
0x800F0991 | PSFX fallido por manifiestos/componentes ausentes. | Copiar manifiestos desde equipo sano o reparar in‑place. | Copiar rutas de CBS.log a C:\Windows\WinSxS |
Checklist operativo
- Confirmar build exacta (
winver
). - Ejecutar StartComponentCleanup (
dism /online /cleanup-image /startcomponentcleanup
). - Reintentar el LCU (WU o paquete offline).
- Si falla: revisar
CBS.log
→ ¿manifiestos/paquetes faltantes?- Sí: Reparación dirigida (copiar manifiestos) o RestoreHealth con fuente.
- No o corrupción extensa: reparación in‑place.
- Complementarios: restablecer agente WU, SFC, normalizar FOd/idiomas, verificar reinicios pendientes.
Cómo leer CBS.log
con eficacia
- Busque “Failed to resolve package”, “Cannot find manifest”, “mismatch”, “CSI”, “PSFX”.
- Las líneas con
PackageforKBxxxxxxx~31bf3856ad364e35~amd64~~<versión>
indican el paquete “requerido”. Si no existe en WinSxS, hay que reintroducirlo (copiar o DISM con fuente compatible). - Note la arquitectura (x86/amd64) y la ruta exacta del archivo (por ejemplo,
.manifest
,.mum
,*.cat
).
Buenas prácticas para evitar recaídas
- Mantenga coherencia de paquetes de idioma y FOd entre equipos del mismo anillo.
- Evite cambios drásticos de idiomas/FOd justo antes de una ventana de parches.
- Automatice en su sistema de gestión (Intune/ConfigMgr/otros) la ejecución de
StartComponentCleanup
de forma periódica. - Conserve ISOs de referencia por build y edición para disponer de fuentes exactas cuando DISM lo exija.
Procedimientos listos para copiar
Reset del agente de Windows Update
@echo off
setlocal
echo [1/3] Deteniendo servicios...
net stop wuauserv
net stop bits
net stop cryptsvc
echo \[2/3] Renombrando carpetas de cache...
ren "C:\Windows\SoftwareDistribution" "SoftwareDistribution.old"
ren "C:\Windows\System32\catroot2" "catroot2.old"
echo \[3/3] Arrancando servicios...
net start cryptsvc
net start bits
net start wuauserv
echo Hecho. Reinicie y reintente Windows Update.
endlocal
Inventario rápido de paquetes y hotfixes
dism /online /get-packages /format:table > %userprofile%\Desktop\packages.txt
powershell -NoProfile -Command "Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 25 | Format-Table -AutoSize"
Detección de reinicios pendientes
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" >nul 2>&1 & if %errorlevel%==0 echo RebootPending activo.
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" >nul 2>&1 & if %errorlevel%==0 echo RebootRequired activo.
Qué aportar si vuelve a fallar
C:\Windows\Logs\CBS\CBS.log
del equipo afectado.- Captura de
winver
con la build completa. - El KB exacto que se intenta instalar y el método (WU vs paquete offline).
Preguntas frecuentes
¿Puedo usar una ISO “más nueva” que la build del equipo para /Source:
?
No es lo ideal. Debe coincidir la misma build y edición. Una ISO base suele carecer de componentes de LCUs recientes y no resolverá manifiestos ausentes originados por parches posteriores.
¿Basta con /RestoreHealth
sin /Source:
?
A veces sí, pero si el error es 0x800F081F
o 0x800F0831
, casi siempre se requiere una fuente coincidente. Si el CBS indica manifiestos faltantes, use donante o realice in‑place upgrade.
¿Qué hago si quitar un idioma desencadena 0x800F0989
/0x800F0991
?
Reintroduzca el idioma o retire por completo sus componentes residuales (FOd relacionados). Luego ejecute dism /restorehealth
y sfc /scannow
para normalizar WinSxS.
¿Cuándo pasar directamente a reparación in‑place?
Cuando hay varios equipos afectados, cuando el CBS lista múltiples manifiestos ausentes, o cuando DISM con fuente no puede resolver dependencias de paquetes superseded. La in‑place estandariza WinSxS en una sola operación y reduce tiempos de diagnóstico.
Resumen accionable
La combinación StartComponentCleanup → reintento del LCU soluciona la mayoría de bloqueos cuando el origen es un componente de un KB sustituido. Si el CBS.log
confirma manifiestos ausentes, aplique reparación dirigida (copiar exactamente lo que falta) o, si son varios equipos/afectación amplia, ejecute una reparación in‑place. Finalice con SFC, ajuste de FOd/idiomas y verificación de reinicios pendientes para evitar recaídas.