Sysprep Windows Server 2025 24H2 : résoudre l’erreur 0x80073CF2 liée à Microsoft.Winget.Source

Vous rencontrez un blocage Sysprep sur Windows Server 2025 24H2 ? Ce guide exhaustif explique pas à pas pourquoi l’erreur 0x80073CF2 se produit et comment la résoudre définitivement, y compris l’automatisation avec PowerShell.

Sommaire

Échec de Sysprep sur Windows Server 2025 (24H2 Build 26100.2314)

Vue d’ensemble du problème

  • Contexte : l’exécution de Sysprep en mode Generalize échoue systématiquement avec le code 0x80073CF2.
  • Cause identifiée : le package Microsoft.Winget.Source est installé pour l’utilisateur courant mais non « provisionné » pour tous les profils. Sysprep bloque dès qu’une application UWP (AppX) se trouve dans cet état hybride.
  • Symptôme observé : Sysprep se termine en quelques secondes, le journal setupact.log affiche : AppxSysprep.dll::SysprepPackageRemove: ... 0x80073CF2

Comprendre la mécanique interne

Sysprep applique trois règles immuables avant la généralisation :

  1. Toute application UWP présente dans l’image doit être soit provisionnée (disponible pour chaque nouveau profil), soit totalement absente.
  2. Si un seul paquet AppX figure dans l’état « Installé pour l’utilisateur A mais non provisionné », Sysprep s’abort. Il n’existe aucun paramètre caché pour outrepasser cette sécurité ; l’intégrité de l’image prime.
  3. Le composant interne AppxSysprep.dll réalise ce balayage très tôt dans la phase Generalize, avant le « système de mini-setup ». Tout échec lève le code 0x80073CF2.

Pourquoi Microsoft.Winget.Source pose problème ?

Depuis Windows 11 et Server 2025, le moteur d’installation WinGet s’appuie sur plusieurs AppX auxiliaires (dont Microsoft.Winget.Source) distribués via le Microsoft Store. Si vous avez lancé WinGet ou ouvert le Store avant la généralisation, ces paquets s’installent seulement pour votre profil interactif. D’où l’état « installé mais non provisionné ».

Solution détaillée pas à pas

ÉtapeCommande PowerShellObjectif
1 – Inventaire cibléGet-AppxPackage | Where-Object {$_.PackageFullName -like "*Winget.Source*"} Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like "*Winget.Source*"}Identifier la présence du package côté user et côté provision.
2 – Désinstallation tous profilsGet-AppxPackage -AllUsers *Winget.Source* | Remove-AppxPackageSupprimer chaque instance installée pour chaque utilisateur existant.
3 – Retrait de l’imageRemove-AppxProvisionedPackage -Online -PackageName Microsoft.Winget.Source_*Éliminer la version « provisionnée », empêchant toute future installation automatique.
4 – Vérification finaleGet-AppxPackage -AllUsers | Sort NameS’assurer qu’aucun résidu AppX n’est présent.
5 – Relance Sysprepsysprep /generalize /oobe /shutdownL’opération se conclut désormais sans erreur.

Script d’automatisation prêt à l’emploi

Intégrez ce bloc dans votre pipeline CI/CD, votre séquence MDT ou votre playbook Ansible pour automatiser la correction :

#Requires -RunAsAdministrator
Write-Host "▲ Suppression des applications UWP conflictuelles..." -ForegroundColor Cyan

\$Pattern = "*Winget.Source*"

# 1. Désinstaller pour tous les utilisateurs

Get-AppxPackage -AllUsers \$Pattern |
ForEach-Object {
Write-Host "  └─ Removing \$(\$*.PackageFullName)" -ForegroundColor Yellow
Remove-AppxPackage -Package \$*.PackageFullName -AllUsers
}

# 2. Retirer du provisioning

\$Prov = Get-AppxProvisionedPackage -Online | Where-Object PackageName -like \$Pattern
if (\$Prov) {
Write-Host "  └─ Deprovisioning \$(\$Prov.PackageName)" -ForegroundColor Yellow
Remove-AppxProvisionedPackage -Online -PackageName \$Prov.PackageName
}

# 3. Contrôle post‑action

Write-Host "▲ Vérification..." -ForegroundColor Cyan
\$Left = Get-AppxPackage -AllUsers | Where-Object Name -like \$Pattern
if (-not \$Left) {
Write-Host "  ✔ Aucun package \$Pattern restant." -ForegroundColor Green
} else {
Write-Host "  ✖ Des packages subsistent !" -ForegroundColor Red
\$Left | Format-Table Name, PackageFullName
} 

Bonnes pratiques avant exécution de Sysprep

  • Mettre à jour l’OS : appliquez les correctifs cumulés (Dism /Online /Add-Package) pour éviter d’autres incompatibilités.
  • Déconnecter du domaine : Sysprep échoue souvent si la machine est toujours membre d’un AD.
  • Désactiver la connexion Wi‑Fi ou LAN durant la phase préparatoire : empêche le Store de réinstaller de nouvelles UWP à la volée.
  • Désactiver les mises à jour automatiques du Microsoft Store via la stratégie : Computer Configuration → Administrative Templates → Windows Components → Store → Turn off Automatic Download of Updates.
  • Nettoyer les « Scheduled Tasks » WinGet/Store (\Microsoft\Windows\Management\WinGet) si vous ne prévoyez pas d’utiliser WinGet dans l’image finale.

FAQ – Questions fréquentes

Sysprep échoue toujours alors que Microsoft.Winget.Source est supprimé ?

D’autres AppX, comme Microsoft.DesktopAppInstaller ou Microsoft.VCLibs, peuvent présenter le même état hybride. Adaptez le script avec un motif générique (ex. *Winget* ou la liste complète obtenue par Get-AppxPackage). Puis‑je réinstaller WinGet après Sysprep ?

Oui. Dès que l’image est déployée et la phase OOBE terminée, exécutez winget install winget ou laissez le Store réinstaller les dépendances. L’exigence de Sysprep ne s’applique plus. Le retrait de l’AppX menace‑t‑il la sécurité ou la compatibilité ?

Non ; Microsoft.Winget.Source n’est qu’un fournisseur de catalogue. WinGet fonctionne encore en mode EffectiveUserSource ou via des sources Rest personnalisées. Toutefois, sans le package, la source officielle community reste inutilisable jusqu’à réinstallation.

Conclusion

L’erreur 0x80073CF2 n’est plus une fatalité ! En supprimant proprement le package Microsoft.Winget.Source (et tout autre AppX non provisionné), vous restaurez la compatibilité Sysprep sur Windows Server 2025 24H2. Automatisez le correctif, verrouillez le Microsoft Store, puis déployez vos images en toute sérénité.

Sommaire