KB5046616 non si installa su Windows Server 2022? Questa guida pratica spiega perché l’LCU può bloccarsi su “Enumerating Foundation package” o con errori SxS, come verificare il disallineamento del Servicing Stack e i passaggi tecnici per riportare il sistema in uno stato aggiornabile e stabile.
Contesto e sintomi
Un amministratore (Casper Karlsen) segnala l’impossibilità di installare l’ultimo Latest Cumulative Update (LCU) KB5046616 su un server Windows Server 2022. L’installazione, sia tramite Windows Update sia da CAB/MSU, si blocca o fallisce con messaggi relativi a “Enumerating Foundation package” e/o errori SxS su componenti amd64
. L’analisi mette in luce un disallineamento degli SSU (Servicing Stack Updates) tra un server sano (build 10.0.20348.2750
e .2696
) e il server in errore (build 10.0.20348.1960
e .2750
), suggerendo una corruzione o una catena di dipendenze non risolta del Servicing Stack.
Perché accade
Da Windows Server 2022 gli SSU sono “accorpati” agli LCU mensili. Tuttavia, se il Servicing Stack è danneggiato, incompleto o fermo a una build non compatibile, il cumulativo non riesce a sostituirlo o aggiornarlo e l’intero processo si interrompe. Gli errori SxS (Side‑by‑Side) indicano spesso che mancano manifest, cataloghi o file nella cache componenti di Windows (Component Store), oppure che una foundation (es. Microsoft-Windows-Foundation-Package
) non è coerente con il pacchetto che si sta tentando di applicare.
Come riconoscere il problema
- Windows Update resta fermo per minuti/ore su “Enumerating Foundation package” oppure fallisce con codice simile a
0x800f0831
,0x800f0922
,0x80073701
o0x800f0988
. - Installazioni manuali
.cab
/.msu
falliscono viaDISM
,wusa
oAdd-WindowsPackage
. - I log
CBS.log
eDISM.log
mostrano richiami a pacchetti foundation, componenti mancanti o SSU non coerente.
Verifiche preliminari rapide
Eseguire queste verifiche prima di intervenire:
# 1) Versione OS
[System.Environment]::OSVersion.Version
2) SSU installati (nome e versione)
dism /online /get-packages /format\:table | findstr /i "Servicing Stack"
3) Stato component store
dism /online /cleanup-image /checkhealth
4) Errori nei log
findstr /c:"error" %windir%\logs\cbs\cbs.log > "%userprofile%\Desktop\cbs\_error.txt"
findstr /c:"error" %windir%\logs\dism\dism.log > "%userprofile%\Desktop\dism\_error.txt"
Riepilogo delle azioni proposte
Area | Azione | Dettagli / Rationale |
---|---|---|
Aggiornare il Servicing Stack | Allineare l’SSU alla stessa build del server sano (≥ 10.0.20348.2696) | Anche se gli SSU sono “bundled” negli LCU, una corruzione può impedire la sostituzione automatica: in questi casi l’installazione manuale dell’SSU risolve il collo di bottiglia. |
Windows Update Troubleshooter | Eseguire lo strumento integrato | Ripristina permessi/chiavi/servizi WU che SFC/DISM non toccano. |
Reset manuale WU | Stop servizi, rinomina cache, start servizi | Rimuove database/cache corrotti in SoftwareDistribution e Catroot2. |
Controllo disco | chkdsk /f /r | Esclude settori difettosi o errori NTFS che ostacolano l’applicazione dei pacchetti. |
Analisi log CBS & DISM | Individuare pattern ripetuti | Aiuta a capire qual è il foundation package o il componente che manca all’appello. |
Piano d’azione consigliato
Applicare i passaggi nell’ordine indicato. Ogni step può sbloccare la situazione senza dover arrivare a un repair install.
Allineare manualmente l’SSU
- Identificare la build SSU obiettivo: ad esempio 10.0.20348.2696 (o una equivalente/recente disponibile prima di KB5046616).
- Ottenere il pacchetto
.cab
dell’SSU corrispondente e copiarlo localmente (es.:C:\Temp\SSU-20348.2696.cab
). - Installare l’SSU:
dism /online /add-package /packagepath:C:\Temp\SSU-20348.2696.cab shutdown /r /t 5
- Dopo il riavvio, verificare:
dism /online /get-packages /format:table | findstr /i "Servicing Stack"
Nota: se l’SSU rifiuta l’installazione con errori di supersedence o applicabilità, controllare che l’architettura (amd64
), l’edizione (Standard/Datacenter, Core/Desktop Experience) e la lingua corrispondano.
Reset completo dei componenti Windows Update
Eseguire come Administrator da PowerShell o CMD elevato:
net stop wuauserv
net stop cryptsvc
net stop bits
net stop msiserver
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
net start msiserver
net start bits
net start cryptsvc
net start wuauserv
Facoltativo (re‑registrazione DLL WU comuni):
for %i in (atl.dll urlmon.dll mshtml.dll shdocvw.dll browseui.dll jscript.dll vbscript.dll scrrun.dll msxml.dll msxml3.dll msxml6.dll actxprxy.dll softpub.dll wintrust.dll dssenh.dll rsaenh.dll gpkcsp.dll sccbase.dll slbcsp.dll cryptdlg.dll oleaut32.dll ole32.dll shell32.dll initpki.dll wuapi.dll wuaueng.dll wuaueng1.dll wucltui.dll wups.dll wups2.dll wuweb.dll qmgr.dll qmgrprxy.dll wucltux.dll muweb.dll wuwebv.dll) do regsvr32 /s %i
Integrità componenti con SFC/DISM
sfc /scannow
dism /online /cleanup-image /restorehealth
Se /restorehealth
chiede sorgenti, montare un ISO di Windows Server 2022 della stessa edizione e lingua e indicare il WIM/ESD corretto:
dism /get-wiminfo /wimfile:D:\sources\install.wim
Identifica l'Index giusto (es. 2)
dism /online /cleanup-image /restorehealth /source:wim:D:\sources\install.wim:2 /limitaccess
Se l’ISO contiene install.esd
, usare /source:esd:
oppure convertire in WIM prima di procedere.
Installare KB5046616
Dopo SSU allineato e componenti sani:
# Opzione 1: .msu
wusa C:\Temp\windows10.0-kb5046616-x64.msu /quiet /norestart
Opzione 2: .cab
dism /online /add-package /packagepath\:C:\Temp\windows10.0-kb5046616-x64.cab
Opzione 3: lasciar fare a Windows Update
control /name Microsoft.WindowsUpdate
Al termine, riavviare e verificare la presenza del pacchetto tra gli aggiornamenti:
wmic qfe list brief | findstr /i 5046616
Get-HotFix | ? {$_.HotFixID -match "KB5046616"}
Se l’errore persiste
- Analizzare i log CBS/DISM: cercare voci su
Microsoft-Windows-Foundation-Package
e pacchetti mancanti.findstr /i /c:"Foundation" %windir%\logs\cbs\cbs.log > "%userprofile%\Desktop\foundation.txt" findstr /i /c:"error" /c:"failed" %windir%\logs\cbs\cbs.log | more
- Verificare l’ISO di riparazione: l’Index nel WIM deve corrispondere a edizione/lingua del server. Esempio:
dism /get-wiminfo /wimfile:D:\sources\install.wim
- Component Store cleanup (rigenera metadati e riduce dimensione):
dism /online /Cleanup-Image /StartComponentCleanup /ResetBase
Attenzione:/ResetBase
rende non disinstallabili gli aggiornamenti correnti. - Controllo disco e riavvio:
chkdsk C: /f /r shutdown /r /t 5
- In casi estremi: effettuare un in-place upgrade/repair utilizzando una ISO di Windows Server 2022 pari o superiore alla build 20348.2031, così da includere SSU/LCU più recenti e “risaldare” la catena dei componenti.
Mappa errori → cause probabili
Codice/Indicazione | Causa comune | Rimedio prioritario |
---|---|---|
0x800f0831 | Pacchetto di base mancante / catena SSU non soddisfatta | Installare SSU corretto, ripetere DISM /RestoreHealth con sorgente valida |
0x80073701 (ERRORSXSASSEMBLY_MISSING) | Assemblies mancanti nello store SxS | sfc e DISM con WIM giusto; controllare i manifest nei log CBS |
0x800f0988 | Servicing stack in stato incoerente | Allineare SSU, StartComponentCleanup, riprovare |
Blocco su “Enumerating Foundation package” | Richiami a Microsoft-Windows-Foundation-Package non risolti | Verificare ISO, Index ed edizione; riparare con /source: corretto |
Script operativo “tutto in uno”
Questo script PowerShell crea un runbook standard per: inventariare SSU, eseguire reset WU, riparare component store e installare LCU.
# Eseguire in PowerShell "Run as Administrator"
$ErrorActionPreference = 'Stop'
$log = "$env:ProgramData\KB5046616fix$(Get-Date -f yyyyMMdd_HHmmss).log"
Start-Transcript -Path $log -Force
Write-Host "== Inventario build e SSU ==" -ForegroundColor Cyan
\[System.Environment]::OSVersion.Version
dism /online /get-packages /format\:table | findstr /i "Servicing Stack"
Write-Host "== Reset Windows Update ==" -ForegroundColor Cyan
'msiserver','bits','cryptsvc','wuauserv' | ForEach-Object { sc.exe stop $\_ | Out-Null }
Rename-Item -Path "\$env\:systemroot\SoftwareDistribution" -NewName "SoftwareDistribution.old\_\$(Get-Date -f yyyyMMddHHmmss)" -ErrorAction SilentlyContinue
Rename-Item -Path "\$env\:systemroot\System32\catroot2" -NewName "catroot2.old\_\$(Get-Date -f yyyyMMddHHmmss)" -ErrorAction SilentlyContinue
'msiserver','bits','cryptsvc','wuauserv' | ForEach-Object { sc.exe start $\_ | Out-Null }
Write-Host "== Controllo SFC ==" -ForegroundColor Cyan
sfc /scannow
Write-Host "== DISM Check/Restore ==" -ForegroundColor Cyan
dism /online /cleanup-image /checkhealth
dism /online /cleanup-image /scanhealth
Se necessario adattare la riga seguente alla propria ISO/Index
dism /online /cleanup-image /restorehealth /source\:wim\:D:\sources\install.wim:2 /limitaccess
Write-Host "== (Opzionale) StartComponentCleanup ==" -ForegroundColor Cyan
dism /online /Cleanup-Image /StartComponentCleanup
Write-Host "== Installazione LCU KB5046616 se presente in C:\Temp ==" -ForegroundColor Cyan
\$msu = 'C:\Temp\windows10.0-kb5046616-x64.msu'
\$cab = 'C:\Temp\windows10.0-kb5046616-x64.cab'
if (Test-Path \$msu) { Start-Process -Wait -FilePath wusa.exe -ArgumentList "`"$msu`" /quiet /norestart" }
elseif (Test-Path \$cab) { Start-Process -Wait -FilePath dism.exe -ArgumentList "/online /add-package /packagepath:`"$cab`"" }
Write-Host "== Verifica hotfix ==" -ForegroundColor Cyan
Get-HotFix | ? {$\_.HotFixID -match "KB5046616"} | Format-Table -AutoSize
Stop-Transcript
Write-Host "Log salvato in \$log" -ForegroundColor Green
Controlli di coerenza dell’ISO di riparazione
Quando DISM
richiede una sorgente, l’errore tipico è usare un’immagine che non corrisponde all’installazione effettiva. Verificare con precisione:
- Edizione: Standard/Datacenter, Core/Desktop Experience.
- Lingua: la stessa del sistema installato.
- Index corretto:
dism /get-wiminfo /wimfile:D:\sources\install.wim
- Architettura:
amd64
per Server 2022.
Esempio di specifica della sorgente con Index 2:
dism /online /cleanup-image /restorehealth /source:wim:D:\sources\install.wim:2 /limitaccess
Procedure di emergenza
- Revert di operazioni sospese: se ci sono aggiornamenti in stato pending che impediscono nuove installazioni:
dism /online /cleanup-image /revertpendingactions shutdown /r /t 5
- Eliminazione BITS bloccati: talvolta download interrotti causano loop:
bitsadmin /list /allusers bitsadmin /reset /allusers
- Repair in-place: montare la ISO e avviare
setup.exe
mantenendo dati e ruoli. Su Server Core usare parametri silenziosi; su Desktop Experience procedere via interfaccia o con/auto upgrade
. Prima eseguire un backup o snapshot.
Domande frequenti
Gli SSU sono davvero inclusi negli LCU su Windows Server 2022?
Sì, per impostazione generale sono “bundled”. Tuttavia, se lo SSU è corrotto o non in catena con la vostra build, l’LCU non riesce a sostituirlo. In questi casi resta valido installare manualmente lo SSU giusto e poi riprovare l’LCU.
Qual è l’ordine giusto tra SSU e LCU?
SSU prima, LCU dopo. Se il cumulativo fallisce, tornare allo step SSU, allinearlo manualmente, verificare con dism /online /get-packages
, quindi ritentare l’LCU.
Quando usare StartComponentCleanup
?
Quando i log evidenziano incoerenze nel component store o la dimensione della cartella WinSxS
è abnorme. Eseguire prima senza /ResetBase
; usare /ResetBase
solo quando necessario e consapevoli che non sarà più possibile disinstallare gli aggiornamenti correnti.
Come capisco se la mia ISO è corretta?
Confrontare edizione, lingua e Index tramite dism /get-wiminfo
. Se l’Index non coincide, DISM
non troverà i componenti corretti e continuerà a fallire.
Checklist operativa rapida
- Backup/Snapshot della VM.
- Verifica SSU installato e sua build.
- Installazione manuale SSU target (≥ 20348.2696).
- Reset Windows Update e re‑registrazione DLL (se necessario).
sfc /scannow
→DISM /RestoreHealth
con sorgente valida.- Installazione di KB5046616 (MSU o CAB).
- Validazione con
Get-HotFix
/wmic qfe
. - Se persiste: analisi log CBS/DISM → StartComponentCleanup → repair in‑place.
Esempi di stringhe utili per i log
# Filtri rapidi sul CBS.log
findstr /i /c:"0x800f0" %windir%\logs\cbs\cbs.log
findstr /i /c:"package" /c:"servicing stack" /c:"foundation" %windir%\logs\cbs\cbs.log
Sommario errori più compatti
findstr /i /c:"error" /c:"failed" %windir%\logs\cbs\cbs.log | findstr /v "Info"
Best practice per evitare che il problema si ripeta
- Mantenere un golden image con snapshot pre‑patch e post‑patch.
- Programmare finestre di manutenzione con riavvio obbligatorio dopo LCU/SSU.
- Usare un local source testato (WIM) per
DISM
in ambienti isolati o con proxy restrittivi. - Monitorare la salute del component store su base mensile:
dism /online /cleanup-image /checkhealth
- Documentare build/SSU/LCU applicati su ogni server per facilitare confronti (come nel caso Casper vs. server problematico).
Conclusioni
Nel caso in esame, tutto punta a un Servicing Stack non allineato o danneggiato, che impedisce a KB5046616 di completare la fase di enumeration e applicazione. Allineare manualmente lo SSU (≥ 20348.2696), resettare i componenti Windows Update e rieseguire SFC/DISM porta nella maggior parte dei casi alla riuscita dell’installazione. Se l’LCU fallisce ancora, l’analisi mirata dei log CBS/DISM, la validazione dell’ISO e — solo come ultima spiaggia — un repair in‑place su build pari o superiore alla 20348.2031 hanno dimostrato di risolvere scenari analoghi con errori SxS e foundation package.
Comandi rapidi riassuntivi
# 1) Allinea SSU
dism /online /add-package /packagepath:C:\Temp\SSU-20348.2696.cab
2) Reset WU
net stop wuauserv & net stop cryptsvc & net stop bits & net stop msiserver
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
net start msiserver & net start bits & net start cryptsvc & net start wuauserv
3) Integrità
sfc /scannow
dism /online /cleanup-image /restorehealth
4) Installa KB5046616
wusa C:\Temp\windows10.0-kb5046616-x64.msu /quiet /norestart
oppure
dism /online /add-package /packagepath\:C:\Temp\windows10.0-kb5046616-x64.cab
In sintesi: porta lo SSU alla versione corretta, ripristina i componenti Windows Update e riprova l’installazione di KB5046616. Se necessario, approfondisci i log per identificare il foundation package mancante e valuta un repair install con ISO aggiornata prima di considerare un rebuild.