Windows Server 2022: come risolvere l’errore “Impossibile installare l’aggiornamento cumulativo KB5046616” (SxS, Foundation package, SSU)

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.

Indice

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 o 0x800f0988.
  • Installazioni manuali .cab/.msu falliscono via DISM, wusa o Add-WindowsPackage.
  • I log CBS.log e DISM.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

AreaAzioneDettagli / Rationale
Aggiornare il Servicing StackAllineare 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 TroubleshooterEseguire lo strumento integratoRipristina permessi/chiavi/servizi WU che SFC/DISM non toccano.
Reset manuale WUStop servizi, rinomina cache, start serviziRimuove database/cache corrotti in SoftwareDistribution e Catroot2.
Controllo discochkdsk /f /rEsclude settori difettosi o errori NTFS che ostacolano l’applicazione dei pacchetti.
Analisi log CBS & DISMIndividuare pattern ripetutiAiuta 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

  1. Identificare la build SSU obiettivo: ad esempio 10.0.20348.2696 (o una equivalente/recente disponibile prima di KB5046616).
  2. Ottenere il pacchetto .cab dell’SSU corrispondente e copiarlo localmente (es.: C:\Temp\SSU-20348.2696.cab).
  3. Installare l’SSU: dism /online /add-package /packagepath:C:\Temp\SSU-20348.2696.cab shutdown /r /t 5
  4. 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/IndicazioneCausa comuneRimedio prioritario
0x800f0831Pacchetto di base mancante / catena SSU non soddisfattaInstallare SSU corretto, ripetere DISM /RestoreHealth con sorgente valida
0x80073701 (ERRORSXSASSEMBLY_MISSING)Assemblies mancanti nello store SxSsfc e DISM con WIM giusto; controllare i manifest nei log CBS
0x800f0988Servicing stack in stato incoerenteAllineare SSU, StartComponentCleanup, riprovare
Blocco su “Enumerating Foundation package”Richiami a Microsoft-Windows-Foundation-Package non risoltiVerificare 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:

  1. Edizione: Standard/Datacenter, Core/Desktop Experience.
  2. Lingua: la stessa del sistema installato.
  3. Index corretto: dism /get-wiminfo /wimfile:D:\sources\install.wim
  4. 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 /scannowDISM /RestoreHealth con sorgente valida.
  • Installazione di KB5046616 (MSU o CAB).
  • Validazione con Get-HotFix/wmic qfe.
  • Se persiste: analisi log CBS/DISM → StartComponentCleanuprepair 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.

Indice