# Cómo desinstalar una aplicación MSI de forma desatendida en Windows

- Link: https://binariocero.com/windows/como-desinstalar-una-aplicacion-msi-de-forma-desatendida-en-windows
- Published: 2025-07-05T11:16:39+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

En entornos corporativos o automatizados, es habitual necesitar la **desinstalación
silenciosa** (o "desatendida") de aplicaciones instaladas mediante archivos `.msi`.
Este procedimiento es común en despliegues masivos, scripts de mantenimiento, o 
tareas de remediación vía RMM o sistemas de gestión remota.

A continuación, te explicamos cómo hacerlo de forma genérica usando PowerShell o
la línea de comandos de Windows.

## Desinstalación silenciosa con `msiexec`

El comando base para desinstalar una aplicación `.msi` es:

    ```wp-block-preformatted
    msiexec /x {PRODUCT-CODE} /qn
    ```

 * `/x`: indica que se desea desinstalar.
 * `{PRODUCT-CODE}`: es el GUID (IdentifyingNumber) único de esa instalación.
 * `/qn`: modo silencioso sin interacción del usuario ("quiet no UI").

## ¿Cómo obtener el ProductCode de una aplicación?

El `ProductCode` o GUID puede encontrarse con PowerShell utilizando la clase `Win32_Product`:

    ```wp-block-preformatted
    Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*NombreApp*" } | Select-Object Name, IdentifyingNumber
    ```

Este comando busca aplicaciones instaladas cuyo nombre contenga la cadena `"NombreApp"`
y devuelve el nombre y su GUID asociado.

Por ejemplo:

    ```wp-block-preformatted
    Name                          IdentifyingNumber----                          -----------------MiAplicacionEjemplo           {12345678-ABCD-1234-ABCD-1234567890AB}
    ```

## ¿Es siempre igual el GUID del producto?

**No necesariamente.** Aunque a veces el `ProductCode` se mantiene constante en 
todas las instalaciones si se usa exactamente el mismo `.msi`, hay varios factores
que pueden hacer que este código varíe:

 * Cambios de versión del software.
 * Personalizaciones durante la creación del instalador.
 * Diferentes instaladores generados desde consolas de administración o herramientas
   RMM.

Por lo tanto, **lo más recomendable es detectarlo dinámicamente** en cada máquina.

## Script genérico en PowerShell para desinstalar de forma segura

A continuación, un ejemplo de script en PowerShell que detecta el producto por nombre
y lo desinstala silenciosamente:

    ```wp-block-preformatted
    $nombreApp = "NombreApp"$producto = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*$nombreApp*" }if ($producto) {    Write-Host "Desinstalando $($producto.Name)..."    Start-Process "msiexec.exe" -ArgumentList "/x $($producto.IdentifyingNumber) /qn" -Wait    Write-Host "Desinstalación completada."} else {    Write-Host "No se encontró ninguna aplicación que coincida con: $nombreApp"}
    ```

Este script:

 * Busca la aplicación cuyo nombre contenga una cadena específica.
 * Extrae el `ProductCode`.
 * Lanza `msiexec` en modo silencioso.
 * Informa del resultado.

## Consideraciones adicionales

 * Si la aplicación tiene **protección contra desinstalación** (como contraseñas
   o tokens), es posible que necesites usar su propio desinstalador o herramienta
   oficial.
 * En entornos empresariales, algunas aplicaciones registran un desinstalador alternativo,
   por ejemplo: 
   `& "C:\Archivos de programa\MiApp\uninstall.exe" /S` donde `/S`
   o `/silent` suelen ser los modificadores silenciosos más comunes (según el framework
   del instalador: NSIS, Inno Setup, InstallShield, etc.).

## Conclusión

La desinstalación desatendida de paquetes MSI es un proceso eficaz y sencillo siempre
que se disponga del `ProductCode` correcto. Usar scripts dinámicos que busquen por
nombre es la mejor práctica para entornos donde los GUID pueden variar.
