- Winget permite instalar, actualizar y gestionar aplicaciones en Windows desde la línea de comandos, con soporte para múltiples formatos de instalador.
- Los archivos de configuración YAML de Winget definen estados deseados de la máquina y se apoyan en PowerShell DSC para aplicar cambios de forma declarativa.
- La integración con herramientas como Intune y scripts de PowerShell facilita mantener software actualizado incluso en equipos sin permisos de administrador.
- Winget ofrece opciones de depuración, control por directivas y un ecosistema abierto en GitHub que permite extender y adaptar su uso a cada organización.

Si alguna vez has tenido que reinstalar todas tus aplicaciones tras formatear Windows, sabrás lo pesado que puede llegar a ser ir de web en web descargando instaladores. Winget llega justo para evitar ese suplicio: un solo comando y tu equipo empieza a montar tu entorno sin que tengas que ir haciendo clic como un autómata.
Además, más allá de instalar programas sueltos, hoy en día podemos automatizar instalaciones completas y la configuración de máquinas con Winget, tanto para un PC personal como para decenas de equipos en una organización. Y si lo combinas con PowerShell, Intune o DSC, puedes tener un sistema bastante serio de despliegue y actualización… sin gastarte un euro en licencias.
Qué es Winget y cómo encaja en Windows
Winget, o Windows Package Manager, es la herramienta de línea de comandos de Microsoft para gestionar aplicaciones en Windows. Permite detectar, instalar, actualizar, desinstalar y configurar software en Windows 10, Windows 11 y Windows Server 2025 usando comandos sencillos en la terminal.
En la práctica actúa como cliente del servicio Windows Package Manager, que es el que mantiene los repositorios de aplicaciones y los manifiestos con toda la información de cada paquete. De este modo, en lugar de ir a la web oficial de cada programa, escribes un comando y listo: Winget se encarga de localizar el paquete adecuado y lanzar la instalación.
Winget se distribuye como parte del componente Instalador de aplicaciones (App Installer), que llega a los equipos a través de Microsoft Store en Windows 10 y Windows 11, y mediante actualizaciones en Windows Server 2025. Al ser un componente del sistema, recibe actualizaciones de forma regular, incluyendo mejoras de seguridad y nuevas funciones.
Como herramienta, Winget es software de código abierto alojado en GitHub, en el repositorio oficial de Microsoft (winget-cli). El código está escrito en C++ y se compila con Visual Studio 2022 a partir de la solución incluida en la carpeta src. Cualquiera puede clonar el proyecto, compilar su propia versión y enviar contribuciones, siempre que firme previamente el Microsoft CLA (Contributor License Agreement).
Desde el punto de vista de uso cotidiano, lo importante es que, una vez instalado, basta con que abras PowerShell, el Símbolo del sistema o la Windows Terminal y escribas simplemente winget para empezar a trabajar con él.

Instalación de Winget en Windows 10, Windows 11 y Windows Server
En las versiones modernas de Windows 10 y en Windows 11, Winget suele venir ya incluido junto al Instalador de aplicaciones. Si tienes el sistema relativamente actualizado, es bastante probable que puedas abrir una consola y escribir winget sin hacer nada más.
Si no estuviese disponible, puedes instalar o actualizar el componente desde la Microsoft Store buscando “App Installer”. Tras la instalación, el comando winget quedará registrado en la ruta del sistema, de modo que cualquier consola pueda invocarlo sin configuraciones especiales.
En Windows Server 2025 el enfoque es similar, aunque el componente se distribuye a través de actualizaciones del sistema. En todo caso, la idea es que Winget pase a ser parte estándar del ecosistema Windows, no una herramienta aislada que haya que ir descargando manualmente cada vez.
Para quienes necesiten una versión concreta o quieran forzar la instalación, Microsoft mantiene también paquetes de lanzamiento en GitHub, normalmente en formato .msixbundle o .appxbundle, que se pueden descargar e instalar manualmente. Esta vía es útil si, por alguna razón, la Microsoft Store no está disponible o está bloqueada por políticas corporativas.
Instalar la versión preliminar de Winget (para desarrolladores)
Si te interesa probar las funciones más recientes antes de que lleguen al canal estable, puedes instalar una compilación preliminar (preview) de Winget. Estas versiones incorporan características en pruebas, nuevas opciones de comando y mejoras que aún no han pasado al canal general.
Hay dos formas principales de conseguir la versión preliminar. La primera consiste en descargar directamente el paquete preview desde la página de lanzamientos de Winget en GitHub. Allí encontrarás el último instalador con todas las notas de la versión detallando novedades, cambios y posibles problemas conocidos.
La segunda opción es apuntarse al Windows Insider Program en los canales Canary o Dev. Estos canales de Windows incluyen en sus builds las versiones preliminares de App Installer, y por tanto de Winget, que se actualizan automáticamente desde la Microsoft Store. Es el enfoque más cómodo si quieres tener siempre lo último sin ir comprobando manualmente cada nueva versión.
Conviene tener claro que, si instalas el paquete preview descargándolo por tu cuenta desde GitHub, no se activan las actualizaciones automáticas de esa rama. En ese escenario tendrás que repetir el proceso cada vez que quieras subir de versión. En entornos de pruebas o desarrollo suele ser aceptable, pero en producción es recomendable mantenerse en el canal estable salvo que una función concreta lo justifique.
Instalación de Winget en Windows Sandbox
Windows Sandbox proporciona un entorno de escritorio ligero y aislado donde puedes ejecutar software con menos riesgo para el sistema anfitrión. Es ideal para probar instaladores, configuraciones o scripts de automatización sin miedo a romper tu máquina principal.
El detalle importante es que Windows Sandbox no incluye ni Winget ni la Microsoft Store de serie. Por tanto, si quieres usar el gestor de paquetes en ese entorno tienes que hacer un pequeño bootstrap: o bien descargas el paquete más reciente desde GitHub, o utilizas el cmdlet Repair-WinGetPackageManager del módulo de PowerShell Microsoft.WinGet.Client.
Un flujo típico consiste en abrir una consola de PowerShell dentro de Sandbox y ejecutar una secuencia como esta:
$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
Write-Host «Done.»
Con ese script se instala primero el proveedor NuGet, después el módulo Microsoft.WinGet.Client desde la PowerShell Gallery, y finalmente se llama al cmdlet Repair-WinGetPackageManager con el parámetro -AllUsers para registrar Winget en el entorno de Sandbox.
Si quieres que el módulo esté disponible de forma global en la máquina (cuando no estamos en Sandbox) puedes añadir el parámetro -Scope AllUsers al cmdlet Install-Module. Y si lo que buscas es probar la versión preliminar, puedes incluir también -IncludePrerelease al lanzar Repair-WinGetPackageManager. Para consultar todos los parámetros disponibles, siempre puedes recurrir a Get-Help Repair-WinGetPackageManager -Full.
Consideraciones de seguridad y ejecución como administrador
Un aspecto clave al automatizar instalaciones con Winget es entender cómo se comportan los instaladores según ejecutes la herramienta como usuario estándar o con privilegios de administrador. Este matiz impacta directamente en despliegues corporativos, scripts desatendidos y escenarios como ONGs con usuarios sin permisos elevados.
Cuando ejecutas Winget sin privilegios de administrador, algunos instaladores requerirán elevación para poder escribir en rutas protegidas o modificar configuraciones de sistema. En esos casos, Windows mostrará el clásico cuadro de UAC pidiendo confirmación. Si el usuario no acepta elevar permisos, la instalación de esa aplicación en concreto fallará.
Por el contrario, si abres una consola con permisos de administrador y desde ahí lanzas los comandos de Winget, no verás las ventanas de elevación para cada programa. El proceso ya se ejecuta con privilegios suficientes y las instalaciones fluyen sin interrupciones. Eso sí, esto implica responsabilidad: hay que cuidar muy bien qué paquetes se instalan en ese contexto y desde qué orígenes.
En entornos gestionados con herramientas como Intune, scripts de corrección o plataformas de automatización, la ejecución suele hacerse con cuentas de servicio o contexto de sistema que ya disponen de permisos elevador. Eso permite implementar políticas de actualización y corrección de vulnerabilidades incluso cuando los usuarios finales no son administradores locales, algo especialmente útil para organizaciones con pocos recursos que quieren reforzar su postura de seguridad.
Comandos principales de Winget para automatizar instalaciones
Winget dispone de un conjunto de comandos bastante completo para cubrir todo el ciclo de vida de las aplicaciones: búsqueda, instalación, actualización, desinstalación, validación y hasta exportación de listas de paquetes para replicar entornos.
Entre los comandos más utilizados están:
- install: instala la aplicación especificada.
- show: muestra información detallada de un paquete.
- source: permite agregar, editar, eliminar o actualizar repositorios.
- search: busca aplicaciones por nombre, identificador u otros criterios.
- list: enumera los paquetes instalados en el equipo.
- upgrade: actualiza aplicaciones, bien una concreta o todas las que tengan nueva versión.
- uninstall: desinstala el paquete indicado.
- hash: genera el hash SHA256 para un instalador, útil para crear manifiestos.
- validate: valida un archivo de manifiesto antes de enviarlo al repositorio de la comunidad.
- settings / configuration: abre o gestiona la configuración de Winget.
- features: muestra el estado de las características experimentales.
- export: exporta una lista de paquetes instalados a un archivo.
- import: instala todos los paquetes definidos en un archivo exportado.
- pin: administra marcadores de paquete para fijar determinadas versiones.
- configure: aplica un archivo de configuración declarativo para dejar el sistema en un estado deseado.
- download: descarga el instalador de la aplicación especificada sin ejecutarlo.
- repair: repara una aplicación instalada cuando es compatible con este tipo de operación.
- dscv3: agrupa comandos relacionados con recursos de PowerShell Desired State Configuration (DSC) v3.
Para ver la lista de comandos disponible en tu versión concreta de la herramienta puedes usar winget –help, donde además aparecen las opciones globales y los parámetros básicos de cada subcomando.
Opciones globales y parámetros útiles
Además de los subcomandos, Winget soporta varias opciones globales que modifican el comportamiento de la herramienta, especialmente relevantes en entornos automatizados o de diagnóstico.
Algunas de las más interesantes son:
- -v, –version: muestra la versión actual del cliente Winget.
- –info: devuelve información detallada de la herramienta, enlaces de licencia, privacidad y políticas de grupo aplicadas.
- -?, –help: enseña la ayuda.
- –wait (o equivalente según localización): pide al usuario que pulse una tecla antes de salir.
- –logs, –open-logs: abre la carpeta donde se guardan los registros de Winget.
- –verbose, –verbose-logs: habilita el registro detallado, muy útil para depuración.
- –nowarn, –ignore-warnings: suprime determinadas salidas de advertencia.
- –disable-interactivity: deshabilita solicitudes interactivas, ideal para scripts desatendidos.
- –proxy: define un proxy específico para esa ejecución.
- –no-proxy: fuerza a no usar proxy en la ejecución actual.
En pipelines de CI/CD o scripts que corren sin supervisión humana es fundamental activar la ejecución no interactiva y gestionar previamente licencias o acuerdos, para que ninguna ventana de confirmación bloquee el proceso. Winget, en combinación con políticas de grupo y configuración adecuada, permite ajustar estos comportamientos de manera bastante precisa.
Formatos de instalador compatibles con Winget
Una de las grandes ventajas de Winget es su capacidad para trabajar con una amplia variedad de tipos de instaladores, lo que facilita incorporar prácticamente cualquier software habitual de Windows en tu flujo de automatización.
Entre los formatos soportados se incluyen:
- EXE (con las banderas Silent y SilentWithProgress).
- ZIP (para paquetes portátiles que se descomprimen en una ruta objetivo).
- INNO (instaladores basados en Inno Setup).
- NULLSOFT (NSIS y variantes).
- MSI (el instalador estándar de Windows).
- WIX (paquetes generados con WiX Toolset).
- APPX y MSIX (formatos modernos de aplicaciones empaquetadas).
- BURN (bootstrapper de WiX).
- PORTABLE (aplicaciones sin instalación tradicional).
- FONT (instalación de fuentes).
Gracias a este soporte diverso, el repositorio comunitario de Winget ha ido creciendo a buen ritmo, incorporando desde navegadores, reproductores multimedia y compresores hasta IDEs, clientes VPN o entornos Linux empaquetados para Windows. La idea es que puedas cubrir prácticamente todos los programas típicos de una estación de trabajo desde un único gestor.
Uso básico de Winget: búsqueda, instalación y actualización
El uso más habitual de Winget en el día a día consiste en buscar una aplicación, verificar que es la correcta e instalarla con el comando apropiado. El flujo típico sería algo así:
Primero lanzas una búsqueda con winget search <nombre>. Por ejemplo, winget search VLC para localizar el reproductor. El comando te devuelve una lista de coincidencias con el identificador oficial del paquete y otros datos.
Cuando tienes claro cuál es la aplicación que quieres, puedes instalarla escribiendo winget install <identificador o nombre>. En muchos casos basta con usar el nombre amigable, pero para automatizaciones es más fiable usar el ID exacto del paquete.
Winget descarga el instalador desde el origen definido, lo ejecuta con las opciones silenciosas o semi-silenciosas adecuadas y deja la aplicación instalada sin necesidad de que entres en asistentes gráficos. Este enfoque se puede encadenar fácilmente en scripts que montan de golpe todo tu entorno de trabajo.
Además de la instalación puntual, Winget facilita mantener el software al día: con winget list ves los paquetes instalados y con winget upgrade puedes actualizar de forma selectiva una aplicación o todas las que tengan nueva versión. Esto es especialmente interesante en proyectos orientados a reducir vulnerabilidades mediante actualización continua, por ejemplo combinando Winget con Intune para que las máquinas corrijan automáticamente software desfasado.
Automatizar instalaciones completas con Winget Configuration
Un salto importante en la automatización llega con Winget Configuration, una característica que permite describir el estado deseado de una máquina en un archivo YAML. En lugar de ir lanzando instaladores uno tras otro, defines en un único documento qué paquetes, versiones y ajustes de sistema quieres, y Winget se encarga de aplicar esa configuración.
El archivo de configuración de Winget es declarativo, no imperativo. Eso significa que no describes una secuencia de pasos, sino el resultado final que quieres: qué software debe estar instalado, qué variables de entorno configuradas, qué opciones del sistema activadas, etc. Winget, junto con los recursos de PowerShell Desired State Configuration (DSC), se ocupa de evaluar el estado actual y realizar los cambios necesarios.
Internamente, cuando ejecutas un archivo de configuración, Winget lo analiza para comprobar que la sintaxis es válida y que los recursos definidos existen. A continuación descarga los módulos de PowerShell asociados que contienen los recursos DSC necesarios para cumplir cada bloque de configuración. Solo después de verificar la confiabilidad del archivo comienza a aplicar el estado deseado.
Cada recurso del archivo puede tener un campo dependsOn que indica de qué comprobaciones o configuraciones previas depende. Las “aserciones” (asserts) actúan como verificaciones: por ejemplo, exigir que el sistema operativo tenga una versión mínima. Si una aserción falla, los recursos que dependen de ella no se ejecutan, aunque el resto de la configuración sigue adelante para llevar la máquina tan lejos como sea posible hacia el estado final.
Un detalle importante es que el orden en que están escritos los recursos en el YAML no es determinante. Gracias al carácter declarativo, Winget puede resolver dependencias y ejecutar tareas en paralelo cuando es posible. Eso simplifica mucho el mantenimiento de archivos grandes, ya que puedes añadir nuevos bloques al final sin tener que reestructurar todo.
Para aplicar una configuración tienes dos opciones: hacer doble clic sobre el archivo de configuración en el Explorador de archivos, lo que invoca el proceso de forma gráfica, o utilizar la línea de comandos con winget configure <archivo.yaml>. Ten en cuenta que esta funcionalidad requiere usar Winget v1.6.2631 o posterior.
Ventajas de usar archivos de configuración de Winget
Trabajar con configuraciones de Winget aporta varias ventajas claras en entornos profesionales, de desarrollo o incluso domésticos cuando te gusta tener tus máquinas “clonadas” con el mismo entorno:
- Instalación desatendida: basta con ejecutar winget configure para que el sistema se encargue de instalar aplicaciones, ajustar el sistema y dejar el equipo listo sin intervención constante.
- Procesos fiables y repetibles: dejas de preocuparte por recordar qué versión instalar de cada herramienta o qué parámetros usar; todo está descrito en el YAML, versionado y compartible.
- Colaboración y control de cambios: los archivos de configuración pueden alojarse en repositorios Git, asociarse a incidencias, revisarse mediante pull requests y mantenerse al día junto al código del proyecto.
- Integración con prácticas de infraestructura como código: las configuraciones se integran con pipelines de CI/CD, imágenes doradas (golden images) y procesos de onboarding de nuevos desarrolladores.
Además, estos archivos no solo limitan su alcance a instalar programas: puedes usarlos para definir variables de entorno, activar modos especiales del sistema (como Developer Mode), realizar comprobaciones personalizadas o ejecutar recursos DSC específicos que ajusten configuraciones avanzadas.
Buenas prácticas al crear y usar configuraciones de Winget
Un flujo de trabajo habitual para aprovechar Winget Configuration consiste en preparar primero una máquina de referencia, instalar en ella todo lo que utilizas y exportar ese estado inicial a un archivo que sirva como base de tu manifiesto.
A partir de ahí, es recomendable pulir el YAML a mano, eliminando paquetes que no quieras replicar, fijando versiones donde sea importante y añadiendo recursos DSC para aspectos de sistema que no dependan de Winget directamente. También puede ser útil separar configuraciones por roles (equipo de desarrollo, equipo de datos, máquinas de pruebas, etc.).
Cuando vayas a usar configuraciones en entornos automatizados o con datos sensibles, conviene mantener fuera del archivo público cualquier secreto, token o credencial. Es mejor integrarlos a través de almacenes seguros o mecanismos de configuración externos, evitando que un simple YAML subido a un repo contenga información delicada.
Microsoft publica ejemplos de configuraciones en el repositorio de DSC de Winget, accesible mediante la URL abreviada https://aka.ms/dsc.yaml. Y en la PowerShell Gallery puedes encontrar cientos de módulos que incluyen recursos DSC variados; si aplicas el filtro de “Recurso DSC” en “Categorías” podrás localizar módulos dedicados a servicios concretos, configuraciones de red, opciones de seguridad, etc.
En organizaciones que quieran limitar el uso de esta funcionalidad también existen objetos de directiva de grupo (GPO) específicos como EnableWindowsPackageManagerConfiguration y EnableWindowsPackageManagerConfigurationExplanation, que permiten desactivar Winget Configuration si la política corporativa así lo requiere.
Solución de problemas y depuración con Winget
Como cualquier gestor de paquetes, Winget puede encontrarse con fallos de instalación, conflictos de versiones o problemas de permisos. Para ayudar a diagnosticar estos casos, la herramienta genera registros detallados y ofrece opciones de logging avanzado.
Con las opciones –logs o –open-logs puedes acceder rápidamente a la carpeta donde se almacenan los registros, mientras que –verbose-logs incrementa el nivel de detalle de lo que se escribe en esos archivos. Esto es especialmente útil cuando un paquete se niega a instalarse o cuando una configuración declarativa falla sin un mensaje de error claro en la consola.
En el caso de Winget Configuration, una de las razones más frecuentes para que un recurso falle es que el recurso DSC subyacente necesite privilegios administrativos para aplicar el estado deseado. No todos los recursos muestran un motivo explícito de error, así que a menudo hay que revisar los logs o el resultado global para ver qué unidades de configuración no se han aplicado.
Microsoft mantiene en el repositorio winget-cli una lista de incidencias y errores comunes, con recomendaciones para resolverlos. Es un buen lugar donde buscar cuando un problema se repite o cuando sospechas que puedas estar chocando con un bug ya conocido.
Si una aplicación que necesitas no está en el repositorio comunitario, siempre puedes crear el paquete correspondiente y enviarlo. De esta manera no solo la tendrás disponible para tu propia automatización, sino que contribuirás a que otros usuarios se beneficien también.
Winget, Intune y actualización de aplicaciones sin privilegios de administrador
Una preocupación habitual en organizaciones, especialmente en ONGs o entornos con poco presupuesto, es cómo mantener las aplicaciones actualizadas cuando los usuarios no tienen permisos de administrador en sus equipos. Winget, combinado con Intune y scripts de detección/corrección, ofrece una solución bastante potente sin necesidad de licencias caras.
La clave está en que las tareas de instalación y actualización no se ejecutan en el contexto del usuario estándar, sino bajo cuentas de servicio o contexto de sistema que sí tienen privilegios elevados. Intune permite desplegar scripts de PowerShell que invocan Winget para instalar o actualizar determinados paquetes en segundo plano.
De este modo, aunque el usuario final solo tenga permisos limitados, su equipo puede recibir parches y nuevas versiones de software de forma programática y centralizada. Esto reduce significativamente la superficie de ataque al evitar aplicaciones obsoletas con vulnerabilidades conocidas, algo crítico cuando no se dispone de grandes equipos de seguridad o herramientas de pago.
En estos escenarios es importante diseñar bien los scripts de detección y corrección para comprobar qué aplicaciones están desactualizadas, decidir cuándo forzar una actualización y cómo gestionar casos en los que una versión nueva pueda romper un flujo de trabajo concreto. Winget pone la base técnica, pero la lógica de negocio y las políticas de despliegue las define cada organización.
Con un poco de trabajo inicial, es perfectamente viable crear una serie de automatizaciones y hasta vídeos formativos que permitan a organizaciones con pocos recursos implementar un nivel respetable de corrección de vulnerabilidades usando únicamente herramientas gratuitas como Winget, Intune y PowerShell.
Al final, Winget se ha convertido en mucho más que un simple sustituto de ir descargando instaladores a mano. Combinando su CLI, los archivos de configuración declarativos, los recursos DSC y la integración con herramientas de administración como Intune, es posible diseñar flujos de puesta en marcha y mantenimiento de equipos Windows que antes estaban reservados a soluciones de pago o a infraestructuras muy complejas. Para quien quiera automatizar instalaciones con Winget, ya sea en su PC personal tras un formateo o en decenas de máquinas dentro de una organización, el ecosistema actual ofrece prácticamente todo lo necesario para montar un sistema robusto, reproducible y bastante amigable con el bolsillo.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.