Error Sysprep 0x80073cf2 en Windows Server 2025 24H2: Solución completa

Al intentar generalizar una imagen de Windows Server 2025 (24H2 Build 26100.2314) con Sysprep, puede aparecer el código 0x80073cf2 casi al comienzo de la fase generalize. En el registro de Panther se observan mensajes que mencionan a Microsoft.Winget.Source y que indican que existen paquetes Appx instalados “por usuario” que no están aprovisionados para todos los usuarios. Este artículo describe en profundidad la causa, aporta un procedimiento paso a paso para resolverlo y ofrece buenas prácticas para evitar que el problema reaparezca en futuras compilaciones.

Índice

Comprender el error 0x80073cf2

Sysprep realiza varias comprobaciones antes de sellar una imagen. Una de ellas delega en el proveedor AppxSysprep la tarea de garantizar que no queden aplicaciones Appx instaladas exclusivamente para cuentas concretas. Si Sysprep detecta al menos un paquete con estado “Installed” pero sin su equivalente “Provisioned”, el proceso se detiene con el error:

Failed to remove apps for the current user: 0x80073cf2
Package Microsoft.Winget.Source_... was installed for a user, but not provisioned for all users

El mensaje indica que la tienda de Windows (o winget) instaló la fuente de repositorios como usuario corriente durante la fase de Auditoría o, peor aún, automáticamente tras conectar la máquina a Internet. Sysprep no puede desinstalar dicho paquete de forma limpia y finaliza con “FAIL”.

Criterios que activan el bloqueo de Sysprep

Para que el mecanismo de protección se dispare basta reunir estas condiciones:

  • Un paquete Appx (Xxx.appx, .appxbundle o .msixbundle) se instaló con la cuenta de Administrator mientras la imagen estaba en modo Auditoría.
  • El mismo paquete no figura como “aprovisionado” (estado Provisioned) en la imagen.
  • No existe una directiva de deprovisioning previa que autorice a Sysprep a quitarlo.

El resultado es que el proveedor AppxSysprep se niega a continuar porque no puede reconciliar la diferencia entre el registro per‑usuario y el catálogo per‑sistema.

Por qué winget suele ser el culpable

Desde Windows 11 22H2 y, por herencia, en Windows Server 2025, winget viene acompañado de un paquete auxiliar (Microsoft.Winget.Source_...) que registra los orígenes de la Store. La primera vez que el usuario lanza winget, dicho paquete se instala silenciosamente per‑user. Si la máquina está conectada a Internet durante Auditoría, la instalación ocurre de inmediato. Por tanto, cuando Sysprep llega a la fase de limpieza, se encuentra con un paquete Appx instalado que no figura en la lista de paquetes aprovisionados (dism /Get-ProvisionedAppxPackages). El resultado: el error 0x80073cf2.

Procedimiento de resolución paso a paso

Sigue el flujo recomendado por Microsoft (KB 2769827) para eliminar o reprovisionar el paquete:

Enumerar los paquetes afectados

Ejecuta estas líneas en una consola de PowerShell elevada. Importar los módulos facilita que los cmdlets funcionen tanto en versión Desktop como Server Core.

Import-Module Appx, Dism
Get-AppxPackage -AllUsers |
    Where-Object { $_.PackageFullName -like "Winget.Source" } |
    Select-Object PackageFullName, PackageUserInformation

La salida mostrará qué cuentas poseen el paquete y cuál es su estado (Installed, Staged, etc.).

Eliminar el paquete por usuario

Inicia sesión con cada cuenta listada (o elimina directamente el perfil de usuario si es prescindible) y después:

Remove-AppxPackage -Package <PackageFullName>

Repite la operación hasta que no queden instancias per‑user.

Desaprovisionar el paquete

Una vez limpio el inventario por usuario, queda borrar la entrada “fantasma” en la imagen:

Remove-AppxProvisionedPackage -Online -PackageName <PackageFullName>

Impedir reinstalaciones accidentales

Existen dos tácticas complementarias:

  1. Aislar la máquina de la red durante Auditoría, evitando que la Store descargue actualizaciones.
  2. Limpiar componentes para descartar versiones mixtas:
dism /Online /Cleanup-Image /StartComponentCleanup

Al terminar, verifica que Get-AppxPackage -AllUsers ya no devuelve entradas del paquete retirado.

Validación final antes de Sysprep

Estos chequeos rápidos reducen el riesgo de un nuevo fallo:

ComprobaciónCmdlet/ComandoDebe devolver
Paquetes Appx per‑userGet-AppxPackage -AllUsersNinguno con estado Installed
Paquetes aprovisionados huérfanosdism /Get-ProvisionedAppxPackagesSolo los intencionados
Estado del servicio AppXSVCsc query AppXSVCSTOPPED antes de Sysprep

Automatizar la limpieza con un script

En entornos donde se generan decenas o cientos de imágenes, conviene empaquetar la rutina en un script de PowerShell firmado. A continuación se muestra un esqueleto simplificado que:

  1. Detecta paquetes Appx que no estén aprovisionados.
  2. Los elimina para todas las cuentas.
  3. Desaprovisiona la imagen.
#requires -RunAsAdministrator
Import-Module Appx, Dism
$orphans = Get-AppxPackage -AllUsers |
           Where-Object { $_.PackageUserInformation.State -eq 'Installed' -and
                          (-not (Get-AppxProvisionedPackage -Online |
                                 Where-Object PackageName -eq $_.Name)) }
foreach ($pkg in $orphans) {
    Write-Host "Eliminando $($pkg.PackageFullName)..."
    Get-AppxPackage -AllUsers -Name $pkg.Name |
        Remove-AppxPackage -ErrorAction SilentlyContinue
    Remove-AppxProvisionedPackage -Online -PackageName $pkg.PackageFullName `
        -ErrorAction SilentlyContinue
}

Ejecuta el script al salir de modo Auditoría, justo antes del Sysprep definitivo.

Reprovisionar winget si realmente lo necesitas

Algunas organizaciones emplean winget durante la primera ejecución para instalar conjuntos de aplicaciones base. Si es tu caso, basta con aprovisionarlo de forma explícita para toda la imagen justo antes de Sysprep:

Add-AppxProvisionedPackage -Online `
    -PackagePath "C:\Fuente\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle" `
    -SkipLicense

De esta manera winget seguirá disponible para todos los usuarios finales, pero sin violar los requisitos del proveedor AppxSysprep.

Buenas prácticas para imágenes maestras estables

  • Desconexión total de red mientras preparas la imagen; una única sincronización con la Store puede volver a introducir paquetes per‑user.
  • Lista blanca de servicios: deshabilita temporalmente Windows Update, Store Install Service y Content Delivery Manager.
  • Política de grupo: “Turn off the Store application” y “Disable all apps from Microsoft Store”.
  • Snapshot antes de Sysprep: facilita repetir el proceso si surge un error diferente.
  • Documentación viva: anota los hashes de los bundles Appx usados; las compilaciones Insider pueden cambiar de número de versión cada pocas semanas.

Preguntas frecuentes

¿Puedo simplemente borrar la carpeta C:\Program Files\WindowsApps?

No. El sistema mantiene ACL estrictas y bases de datos internas. Borrar archivos provoca fallos de integridad y no resuelve la discrepancia de provisión.

¿Es válido /generalize /oobe /shutdown /mode:vm después de la limpieza?

Sí. Los parámetros clásicos de Sysprep no cambian. El punto crítico es ejecutar Sysprep en una sesión donde AppXSVC haya quedado inactivo y sin paquetes per‑user pendientes.

¿Qué ocurre con otras apps integradas, como Correo o Mapas?

El mismo razonamiento se aplica; si alguna app se instala solo para un usuario, Sysprep fallará. El procedimiento descrito funciona para cualquier paquete Appx.

Conclusión

El error 0x80073cf2 en Windows Server 2025 se debe casi siempre a paquetes Appx instalados solo para el administrador durante la fase de Auditoría, siendo Microsoft.Winget.Source el sospechoso habitual. Con un inventario cuidadoso, la eliminación de instancias per‑user y la desaprovisionación de la imagen, Sysprep puede ejecutarse sin contratiempos. Adoptar las buenas prácticas expuestas—aislamiento de red, limpieza de componentes y reprovisión controlada—garantiza imágenes maestras estables y repetibles.

Índice