La herramienta WinGet (Windows Package Manager) ha ganado popularidad como una forma eficiente de instalar y gestionar software desde línea de comandos en Windows. No obstante, algunos usuarios pueden encontrar errores al intentar instalar o reparar su instalación usando el módulo de PowerShell Microsoft.WinGet.Client
.
Uno de los errores más comunes al intentar ejecutar el siguiente comando:
Repair-WinGetPackageManager -AllUsers
es el siguiente:
Repair-WinGetPackageManager : El método especificado no es compatible.
En línea: 1 Carácter: 1
+ Repair-WinGetPackageManager -AllUsers
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Repair-WinGetPackageManager], NotSupportedException
+ FullyQualifiedErrorId : System.NotSupportedException,Microsoft.WinGet.Client.Commands.RepairWinGetPackageManagerCmdlet
Análisis del error
Este error indica que la función Repair-WinGetPackageManager
no puede ejecutarse en el entorno actual. La causa principal suele estar relacionada con una falta de compatibilidad del sistema operativo o del entorno de ejecución de PowerShell.
Pasos realizados previamente
A continuación se detalla un ejemplo típico de ejecución en PowerShell:
$progressPreference = 'silentlyContinue'
Write-Host "Installing WinGet PowerShell module from PSGallery..."
Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-Null
Write-Host "Using Repair-WinGetPackageManager cmdlet to bootstrap WinGet..."
Repair-WinGetPackageManager -AllUsers
Este script intenta instalar el módulo de cliente WinGet desde PowerShell Gallery y luego repara la instalación. Sin embargo, en algunos sistemas devuelve la excepción mostrada anteriormente.
Causas comunes
- Versión incompatible de Windows
Repair-WinGetPackageManager
requiere Windows 10 1809 o superior, con ciertas actualizaciones acumulativas ya instaladas.- Windows Server y versiones LTSC suelen tener compatibilidad limitada.
- Módulo de PowerShell incompatible o desactualizado
- El módulo
Microsoft.WinGet.Client
puede no estar alineado con la versión del ejecutablewinget.exe
instalada (o no instalada) en el sistema.
- El módulo
- Políticas o restricciones del sistema
- Algunos entornos (como empresas o sistemas gestionados) pueden tener restricciones de ejecución de scripts o deshabilitar ciertas funciones.
- Falta de ejecución elevada
- El cmdlet requiere ejecución como administrador para funcionar correctamente.
Soluciones recomendadas
1. Verifica la versión de Windows y PowerShell
Ejecuta los siguientes comandos para validar tu entorno:
Get-ComputerInfo | Select-Object OsName, OsVersion, WindowsProductName
$PSVersionTable.PSVersion
Asegúrate de estar en una versión compatible de Windows (idealmente Windows 10 21H2 o superior, o Windows 11) y una versión moderna de PowerShell (7.x).
2. Instala WinGet desde Microsoft Store
La forma más directa y estable es instalar la aplicación App Installer, que incluye WinGet:
- Abre este enlace a App Installer en Microsoft Store.
- Haz clic en "Obtener" y permite la instalación.
Después, comprueba que winget
esté disponible:
winget --version
3. Descarga manual desde GitHub (opcional)
Si no puedes usar Microsoft Store, puedes instalar WinGet manualmente:
- Accede a la página de Releases de winget-cli.
- Descarga el archivo
.msixbundle
más reciente de App Installer. - Instálalo haciendo doble clic.
4. Actualiza o reinstala el módulo de PowerShell
Si deseas seguir usando PowerShell:
Uninstall-Module Microsoft.WinGet.Client -AllVersions -Force
Install-Module Microsoft.WinGet.Client -Force -Repository PSGallery
También puedes listar las versiones disponibles:
Find-Module Microsoft.WinGet.Client
5. Ejecuta PowerShell como administrador
Muchos cmdlets relacionados con el sistema, como Repair-WinGetPackageManager
, requieren permisos elevados. Asegúrate de hacer clic derecho en PowerShell y elegir "Ejecutar como administrador".
Alternativa: instalar software con WinGet (si ya está presente)
Si ya tienes WinGet operativo, puedes utilizarlo directamente:
winget install vscode
winget upgrade --all
Puedes integrar esto en tus scripts en lugar de depender del módulo de PowerShell si solo necesitas la funcionalidad básica de gestión de paquetes.
Conclusión
El error El método especificado no es compatible
al usar Repair-WinGetPackageManager
suele deberse a un desajuste entre las versiones del sistema, la herramienta y el módulo PowerShell. Aunque el módulo Microsoft.WinGet.Client
es útil para entornos automatizados, en muchos casos es preferible instalar WinGet directamente desde la Microsoft Store para asegurar su correcto funcionamiento.
Si no puedes usar el módulo por restricciones del sistema, considera utilizar directamente winget.exe
en scripts tradicionales de PowerShell.