Se il Cumulative Update KB5048654 su Windows Server 2022 21H2 (build 20348) si blocca sempre con l’errore 0x800f081f – “The source files could not be found”, questa guida spiega come diagnosticare e risolvere il problema, fino al repair install che ha sbloccato l’LCU.
Panoramica del problema
In diversi ambienti, l’installazione della LCU KB5048654 si interrompe in modo sistematico intorno al 3‑4% per poi annullarsi con il codice 0x800f081f. I log DISM
e CBS
indicano che i source files necessari non sono disponibili: il motore di manutenzione prova a recuperarli da Windows Update (o dalla cache locale), non li trova e termina.
Il sintomo è ricorrente sia con Windows Update sia installando manualmente l’MSU/CAB con wusa.exe
o DISM /Add‑Package
. L’origine del problema è quasi sempre un component store (WinSxS) danneggiato o incoerente, che impedisce l’individuazione delle payload richieste dal pacchetto cumulativo.
Segnali e conferme nei log
Prima di intervenire, conviene raccogliere evidenze. Ecco i punti chiave da verificare:
- DISM – in
%windir%\Logs\DISM\dism.log
compaiono voci sul fallimento diadd-package
e richiami a “source files could not be found”. - CBS – in
%windir%\Logs\CBS\CBS.log
si vedono errori0x800f081f
, rollback, oStore corruption, manifest missing
. - Event Viewer – nel registro Setup e Servicing compaiono eventi di installazione non riuscita per il KB interessato.
- Progresso bloccato – Windows Update si ferma al 3‑4% (talvolta 20‑21%) e poi annulla.
[Esempio sintetico da CBS.log]
Exec: Processing complete. Session: 30968536XXXX, Package: Packagefor_KB5048654~31bf3856ad364e35~amd64~~20348.XXXX
Error: 0x800f081f - The source files could not be found.
CBSESOURCE_MISSING
Tentativi di correzione che non hanno risolto
Questi metodi, pur consigliati come prime azioni, non hanno rimosso la causa in tutti i casi analizzati:
Metodo provato | Dettagli operativi | Esito |
---|---|---|
Reset componenti Windows Update | Arresto servizi BITS/WUAUSERV/CRYPTSvc/AppIDSvc, rinomina di SoftwareDistribution e catroot2 , riavvio servizi | Nessun miglioramento |
Controllo integrità component store | DISM /Online /Cleanup-Image /StartComponentCleanup e /RestoreHealth , seguito da sfc /scannow | Nessun miglioramento |
Strumento di risoluzione problemi Windows Update | Rileva e “ripara” impostazioni, ma l’aggiornamento fallisce comunque | Nessun miglioramento |
Installazione manuale del pacchetto | Download dell’MSU dal Catalogo, estrazione CAB (expand -F:* … ), DISM /add-package | Stesso errore 0x800f081f |
Nuovo reset servizi (variante) | Sequenza di stop/start più completa (BITS, WUAUSERV, AppIDSvc, CryptSvc) | Nessun miglioramento |
In‑place upgrade tentato ma non riuscito | Reinstallazione sul posto fallita in alcuni ambienti, talvolta per problemi di rete durante la copia pacchetti | Non risolutivo |
Cosa significa davvero l’errore 0x800f081f
0x800f081f indica che il motore di manutenzione non riesce a trovare i file sorgente necessari per completare l’operazione (payload mancanti). Non si tratta necessariamente di un problema di connettività a Internet o al Catalogo: spesso il component store (WinSxS
) ha riferimenti corrotti o metadati incongruenti. In queste condizioni, anche puntare a un pacchetto locale (MSU/CAB
) non basta, perché la risoluzione delle dipendenze interne fallisce.
Percorso consigliato alla risoluzione
Per massimizzare i tempi di ripristino e ridurre i rischi, ecco una sequenza pratica:
- Eseguire le correzioni rapide (reset servizi, DISM, SFC, installazione manuale) per escludere problemi transitori.
- Se persiste 0x800f081f, tentare un ripristino del component store da sorgente locale con
/Source
e/LimitAccess
puntando ainstall.wim
/.esd
dell’ISO di Windows Server 2022. - Se anche questo non cambia l’esito, procedere con la riparazione sul posto (repair install/in‑place upgrade) usando l’ISO di Windows Server 2022 corrispondente (stessa edizione/lingua o più recente compatibile).
Soluzione collaudata: repair install sul posto
Questa è la soluzione che ha sbloccato l’installazione dell’LCU KB5048654 nella pratica. La riparazione sul posto sovrascrive i componenti di sistema preservando ruoli, impostazioni e dati. Dopo l’operazione, Windows Update torna a installare le patch correttamente.
Preparazione
- Backup/snapshot della VM o del server fisico.
- ISO di Windows Server 2022 corrispondente per edizione e lingua (stesso ramo 21H2/build 20348 o più recente compatibile).
- Spazio su disco adeguato (almeno 15–20 GB liberi su
C:
è una soglia prudenziale per evitare rollback). - Finestra di manutenzione per uno o più riavvii.
Procedura con interfaccia grafica (Desktop Experience)
- Montare l’ISO e avviare
setup.exe
. - Quando richiesto, scegliere “Conserva file e applicazioni”.
- Lasciare che l’installazione ripari i componenti e completi i riavvii.
- Al termine, eseguire Windows Update e installare nuovamente la KB5048654 (o la LCU più recente disponibile).
Procedura da riga di comando
In ambienti Server Core o quando si preferisce l’automazione, è possibile eseguire il setup da riga di comando:
D:\setup.exe /auto upgrade /dynamicupdate disable
In caso di blocchi dovuti a controlli di compatibilità o driver, è possibile aggiungere parametri di compatibilità. Valutare questi switch solo in ambienti testati, perché possono ignorare avvisi importanti. In alternativa, avviare il setup senza switch e seguire i prompt interattivi.
Risultato atteso
Completato il repair install, la struttura del component store risulta ripristinata: Windows Update torna a funzionare e l’installazione della KB5048654 si conclude correttamente. I ruoli e le feature restano intatti (ad esempio AD DS, DNS, File Server), così come le applicazioni e i dati.
Alternativa prima del repair: puntare a una sorgente locale
Se si desidera un tentativo meno invasivo rispetto al repair, si può ricostruire il component store puntando a una sorgente locale (install.wim
o .esd
) dalla ISO di Windows Server 2022.
Individuare l’indice corretto nell’immagine
DISM /Get-WimInfo /WimFile:D:\sources\install.wim
Annotare l’Index che corrisponde all’edizione installata (Datacenter/Standard, Core/Desktop Experience). Quindi:
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:\sources\install.wim:<INDEX> /LimitAccess
Se si dispone di install.esd
:
DISM /Online /Cleanup-Image /RestoreHealth /Source:esd:D:\sources\install.esd:<INDEX> /LimitAccess
Al termine, riavviare ed eseguire di nuovo Windows Update. Se l’errore persiste, passare al repair install.
Verifica del Servicing Stack Update
Prima di riprovare l’LCU, verificare la presenza dell’ultimo Servicing Stack Update (SSU) per il ramo in uso. È possibile elencare i pacchetti del servicing stack con:
DISM /Online /Get-Packages | findstr /i "servicing stack"
In molti rami recenti l’SSU è già integrato nella LCU; se non lo è, installarlo separatamente prima di ripetere l’aggiornamento cumulativo.
Checklist operativa
Per ridurre i tempi, applicare questa checklist dalla meno alla più invasiva:
- Reset Windows Update e cache:
net stop bits
net stop wuauserv
net stop appidsvc
net stop cryptsvc
ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak
ren %systemroot%\System32\catroot2 catroot2.bak
net start cryptsvc
net start appidsvc
net start bits
net start wuauserv
- Manutenzione componente e controllo file di sistema:
DISM /Online /Cleanup-Image /StartComponentCleanup
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
- Tentativo con sorgente locale (vedi sezione dedicata).
- Installazione manuale dell’MSU/CAB per escludere glitch di Windows Update.
- Repair install con ISO di Windows Server 2022.
Come interpretare i log durante la diagnosi
Comprendere cosa dicono i log aiuta a evitare tentativi alla cieca:
CBS.log
– cerca stringhe come0x800f081f
,Failed to resolve package
,manifest missing
. Errori ripetitivi indicano integrità del component store compromessa.DISM.log
– attenzione aSource files could not be found
e ai fallback di origine. Se DISM prova a contattare WU nonostante una sorgente locale, aggiungi/LimitAccess
.- Event Viewer > Applications and Services Logs > Microsoft > Windows > Servicing – utile per timeline e codici di rollback.
Considerazioni aggiuntive e buone pratiche
Aspetto | Suggerimento pratico |
---|---|
Causa probabile | Component store WinSxS danneggiato o incoerente; i file sorgente non sono reperibili né via Windows Update né da CAB locale senza ripristino del repository. |
Tentativo alternativo prima del repair | Montare l’ISO e usare DISM /RestoreHealth /Source:wim|esd:... con l’indice corretto; aggiungere /LimitAccess per forzare l’uso della sorgente locale. |
Verifica SSU | Assicurarsi che l’ultimo SSU coerente con il ramo sia presente prima di riprovare la LCU. |
Ambienti virtuali | Il repair in‑place funziona anche su VM (Hyper‑V, VMware, ecc.). Prima dell’operazione creare snapshot/backup e verificare lo spazio su disco. |
Post‑repair | Eseguire Windows Update, applicare tutte le patch pendenti, quindi rimuovere snapshot non più necessari e pianificare un cleanup del component store. |
Domande frequenti
Il repair install rimuove ruoli o dati?
No: la procedura con “Conserva file e applicazioni” mantiene ruoli, feature, impostazioni e dati. È comunque obbligatorio un backup/snapshot prima di iniziare.
Posso fare il repair senza connettività Internet?
Sì: montando l’ISO e disattivando gli aggiornamenti dinamici durante il setup, la riparazione procede usando esclusivamente la sorgente locale.
Come capisco qual è l’indice corretto in install.wim
?
Con DISM /Get-WimInfo /WimFile:D:\sources\install.wim
e scegliendo l’Index corrispondente all’edizione installata (Datacenter/Standard, Core/Desktop Experience).
Ha senso svuotare SoftwareDistribution
e catroot2
più volte?
È utile solo per problemi transitori di download/installazione. Se il component store è corrotto, la misura non basta e occorre il ripristino da sorgente o il repair install.
Quali rischi comporta DISM /ResetBase
?
Riduce lo spazio occupato dai componenti, ma rende impossibile disinstallare alcuni aggiornamenti preesistenti. È consigliabile non usarlo durante la fase di troubleshooting.
Posso indicare un percorso di sorgente alternativo via Criteri di gruppo?
Sì: tramite il criterio “Specifica le impostazioni per l’installazione di componenti facoltativi e la riparazione dei componenti”, impostando un percorso di origine affidabile (share con \sources\sxs
o immagine montata). È utile soprattutto in ambienti isolati.
Script pronti all’uso
Reset avanzato dei servizi Windows Update
@echo off
setlocal
for %%S in (bits wuauserv appidsvc cryptsvc) do (
sc query %%S >nul 2>&1 & if not errorlevel 1 net stop %%S
)
takeown /f %windir%\SoftwareDistribution /r /d y
icacls %windir%\SoftwareDistribution /grant administrators:F /t
ren %windir%\SoftwareDistribution SoftwareDistribution.bak
ren %windir%\System32\catroot2 catroot2.bak
for %%S in (cryptsvc appidsvc bits wuauserv) do (
sc query %%S >nul 2>&1 & if not errorlevel 1 net start %%S
)
echo Done.
endlocal
Raccolta rapida dei log
md C:\Temp\KB5048654-logs
copy %windir%\Logs\CBS\CBS.log C:\Temp\KB5048654-logs\
copy %windir%\Logs\DISM\dism.log C:\Temp\KB5048654-logs\
wevtutil epl Microsoft-Windows-Servicing/Operational C:\Temp\KB5048654-logs\Servicing.evtx
Verifiche post‑ripristino
- Windows Update – eseguire una ricerca aggiornamenti e applicare nuovamente la LCU. Verificare l’assenza di errori nei log.
- Integrità del sistema – ripetere
DISM /RestoreHealth
esfc /scannow
; entrambi dovrebbero completarsi senza violazioni. - Ruoli e workload – validare i servizi critici (AD DS, DNS, Hyper‑V, File/Print, applicazioni line-of-business).
- Cleanup e spazio – facoltativamente:
DISM /Online /Cleanup-Image /StartComponentCleanup
eDism.exe /Online /Cleanup-Image /AnalyzeComponentStore
per stimare l’ottimizzazione.
Prevenzione per i prossimi cicli di patching
- Sorgenti locali affidabili – mantenere una share interna con le immagini ufficiali allineate alla build in produzione per eventuali ripristini DISM.
- Monitoraggio spazio e salute WinSxS – integrare nei check di manutenzione l’analisi periodica del component store.
- Ordine di installazione – assicurarsi che l’SSU (se separato) preceda l’LCU; in molti rami è incluso, ma in ambienti isolati può essere necessario distribuirlo esplicitamente.
- Snapshot intelligenti – prima del Patch Tuesday creare snapshot sulle VM critiche da eliminare una volta stabilizzata la postura di patching.
Sintesi operativa
- Se KB5048654 fallisce con 0x800f081f, il problema è con alta probabilità nel component store.
- Prova reset WU,
DISM
,SFC
e installazione manuale. Se non basta, usa DISM con sorgente locale (install.wim/.esd
). - Se l’errore persiste, passa al repair install sul posto: conserva ruoli e dati e, in scenari reali, ha riportato l’LCU a installarsi regolarmente.
Appendice: comandi utili riassunti
:: Elenco pacchetti e stato
DISM /Online /Get-Packages /Format:Table
:: Verifica SSU
DISM /Online /Get-Packages | findstr /i "servicing stack"
:: Pulizia componenti
DISM /Online /Cleanup-Image /StartComponentCleanup
:: Ripristino salute (online)
DISM /Online /Cleanup-Image /RestoreHealth
:: Ripristino da sorgente locale (WIM)
DISM /Get-WimInfo /WimFile:D:\sources\install.wim
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:\sources\install.wim: /LimitAccess
:: Controllo file di sistema
sfc /scannow
:: Installazione manuale MSU
wusa.exe "C:\Path\windows10.0-kb5048654-x64.msu" /quiet /norestart
:: Installazione manuale CAB estratto
DISM /Online /Add-Package /PackagePath:"C:\Path\Windows10.0-KB5048654-x64.cab"
Perché questa strategia funziona
La LCU si basa su un database di componenti e manifest che devono essere coerenti. Quando il repository WinSxS è danneggiato, qualsiasi tentativo che non ripristini davvero i manifest e i payload fallirà con 0x800f081f. Il repair install ricrea il baseline dei componenti preservando configurazioni e dati: è per questo che, una volta completato, Windows Update torna a funzionare e l’LCU viene applicata senza errori.
Se gestisci decine o centinaia di server: automatizza la verifica della salute del component store e prepara in anticipo un percorso di sorgente locale (ISO o repository montato) per ridurre i tempi di diagnosi in caso di futuri 0x800f081f.