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

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

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:

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:

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:

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:

$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.

Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.