¿Hay alguna manera de desinstalar programas sin la interfaz gráfica y hacerlo a través de CMD?
¿Hay alguna manera de desinstalar programas sin la interfaz gráfica y hacerlo a través de CMD?
Cada programa que se instala correctamente de acuerdo con las pautas de Microsoft realiza una entrada en el registro HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
. Por lo general, la clave del programa será su GUID o, de lo contrario, el nombre del programa. Dentro de esa clave habrá una entrada llamada UninstallString
. Este contiene el comando a ejecutar para desinstalar el programa.
Si ya sabe de antemano lo que va a desinstalar, debería ser bastante fácil simplemente poner eso en su archivo por lotes. Sin embargo, se vuelve complicado cuando intentas automatizar ese proceso. Puede usar el reg
comando para obtener datos del registro, pero devuelve una gran cantidad de texto alrededor del valor real de una clave determinada, lo que dificulta su uso. Es posible que desee experimentar con VBscript o PowerShell, ya que tienen mejores opciones para obtener datos del registro en una variable.
Puede invocar el desinstalador correcto sin conocer el GUID, etc. utilizando WMIC.
Para ver una lista de los nombres de los programas conocidos internamente por Windows:
wmic product get name
Busque el nombre de su producto. Probablemente coincida con el que figura en el panel de control "Programas y características" , pero no siempre.
Entonces puedes usar
wmic product where name="_my_product_name" call uninstall
para realizar la desinstalación, que AFAIK debe ser silencioso (según mi experiencia, pero pruébelo antes de apostar a la granja. El silencio puede depender de cómo se construyó su instalador / desinstalador).
Ver aquí para más:
También hay documentación de referencia para WMIC en microsoft.com.
/node:"<ComputerName>"
por ejemplo:wmic /node:"someuser-pc" product get name
. Asegúrese de usar "" alrededor del nombre o se encontrará con el error "Interruptor global no válido". También asegúrese de ejecutar esto desde un indicador de CMD y no desde un indicador de PowerShell, ya que la "" solución para el error "Interruptor global no válido" no funciona en el indicador de PowerShell.Si tiene instalado PowerShell 3 (o superior), puede emitir una llamada WMI para que todos los programas se denominen una cosa determinada (o 'me gusta', hacer búsquedas con comodines) y luego llamar al
Uninstall
método para cada uno de ellos:(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()
fuente
Si sabe dónde está el archivo de instalación de MSI, puede usar:
fuente
Si un programa usa Windows Installer, puede usar uno de los siguientes comandos:
Sin embargo, es probable que no tenga el código del producto ni el archivo MSI original utilizado para la instalación.
Aparte de eso, no existe un comando de desinstalación genérico, ya que los instaladores que no utilizan Windows Installer son "desconocidos" por el sistema operativo. Pueden proporcionar su propio ejecutable de desinstalación, pero si ese ejecutable incluye una forma de ejecutarlo sin GUI depende del paquete de software individual.
fuente
Un script VBScript lo ayudará a desinstalar el programa requerido.
Para usar este script, necesitará el nombre del software que se encuentra en su registro.
Simplemente ingrese el nombre de la aplicación en el script y ejecútelo con privilegios de administrador; desinstalará la aplicación. Pero esto solo funcionará para una aplicación basada en ventanas; para la configuración independiente o las aplicaciones que no ingresan en la cadena de desinstalación del registro, el script no funcionará.
Entonces, en ese caso, tendrá que encontrar otra forma de desinstalar la aplicación.
Código:
fuente
Mira esto, está usando un lote, encuentra la clave de registro UninstallString del software y luego desinstala el software silenciosamente, lo que es mucho más confiable en comparación con wmic que encontré. https://community.spiceworks.com/topic/2143980-deploy-or-upgrade-java-8-via-shutdown-script-remove-old-javas
fuente
La respuesta correcta está arriba, pero para las instalaciones de Windows X64 también deberá verificar:
fuente