Existe uma maneira de desinstalar programas sem a interface gráfica e fazê-lo via CMD?
Existe uma maneira de desinstalar programas sem a interface gráfica e fazê-lo via CMD?
Todo programa que se instala adequadamente de acordo com as diretrizes da Microsoft faz uma entrada no Registro HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
. Normalmente, a chave do programa será seu GUID ou o nome do programa. Dentro dessa chave, haverá uma entrada chamada UninstallString
. Este contém o comando a ser executado para desinstalar o programa.
Se você já sabe com antecedência o que desinstalará, será fácil colocar isso no arquivo em lotes. Fica complicado quando você tenta automatizar esse processo. Você pode usar o reg
comando para obter dados do registro, mas ele retorna muito texto em torno do valor real de uma determinada chave, dificultando o uso. Convém experimentar o uso do VBscript ou do PowerShell, pois eles têm melhores opções para obter dados do registro em uma variável.
Você pode chamar o desinstalador correto sem conhecer o GUID etc. usando o WMIC.
Para ver uma lista dos nomes dos programas conhecidos internamente pelo Windows:
wmic product get name
Procure o nome do seu produto. Provavelmente corresponde ao listado no painel de controle "Programas e Recursos" , mas nem sempre.
Então você pode usar
wmic product where name="_my_product_name" call uninstall
para executar a desinstalação, que o AFAIK deve silenciar (isso ocorreu na minha experiência, mas tente antes de apostar no farm. O silêncio pode depender de como o instalador / desinstalador foi criado).
Veja aqui para mais:
Também há documentação de referência para o WMIC no microsoft.com.
/node:"<ComputerName>"
ex:wmic /node:"someuser-pc" product get name
. Certifique-se de usar o nome "" ou o erro "Invalid Global Switch". Verifique também se você executou isso em um prompt do CMD e não no PowerShell, pois a "" solução alternativa para o erro "Invalid Global Switch" não funciona no prompt do PowerShell.Se você tiver o PowerShell 3 (ou superior) instalado, poderá emitir uma chamada WMI para obter todos os programas nomeados como uma determinada coisa (ou "curtir" uma determinada coisa, para fazer pesquisas de caracteres curinga) e, em seguida, chamar o
Uninstall
método para cada uma delas:(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()
fonte
Se você souber onde está o arquivo do instalador MSI, poderá usar:
fonte
Se um programa usa o Windows Installer, você pode usar um dos seguintes comandos:
No entanto, é provável que você não tenha o código do produto nem o arquivo MSI original usado para instalação.
Fora isso, não há comando de desinstalação genérico, pois os instaladores que não usam o Windows Installer são "desconhecidos" pelo sistema operacional. Eles podem fornecer seu próprio executável de desinstalação, mas se esse executável inclui uma maneira de executá-lo sem a GUI depende do pacote de software individual.
fonte
Um script VBScript ajudará você a desinstalar o programa requerido.
Para usar esse script, você precisará do nome do software localizado em seu registro.
Basta digitar o nome do aplicativo no script e executá-lo com privilégios de administrador; desinstalará o aplicativo. Mas isso funcionará apenas para um aplicativo baseado em janela; para configuração autônoma ou aplicativos que não fazem uma entrada na cadeia de desinstalação do registro, o script não funciona.
Portanto, nesse caso, você terá que encontrar outra maneira de desinstalar o aplicativo.
Código:
fonte
Verifique isso, está usando um lote, localize a chave de registro UninstallString do software e desinstale-o silenciosamente, o que é muito mais confiável comparado ao wmic que encontrei. https://community.spiceworks.com/topic/2143980-deploy-or-upgrade-java-8-via-shutdown-script-remove-old-javas
fonte
A resposta correta está acima, mas para instalações no Windows X64, você também precisará verificar:
fonte