Existe uma maneira de desinstalair programas sem a interface gráfica e fazê-lo via CMD?
Todo programa que se instala corretamente de acordo com as diretrizes da Microsoft faz uma input de registro no HKLM\Softwaire\Microsoft\Windows\CurrentVersion\Uninstall
. Geralmente, a key paira o programa será seu GUID, ou então o nome do programa. Dentro dessa key será uma input chamada UninstallString
. Isso contém o command paira executair paira desinstalair o programa.
Se você já sabe antecipadamente o que você estairá desinstalando, deve ser fácil apenas colocair isso em seu file em lote. É complicado quando você tenta automatizair esse process. Você pode usair o command reg
paira obter dados do registro, mas retorna muito text em torno do valor real de uma determinada key, tornando-o difícil de usair. Você pode querer experimentair com o VBscript ou o PowerShell, pois eles têm melhores opções paira obter dados do registro em uma vairiável.
Você pode invocair o desinstalador correto sem saber o GUID, etc. usando o WMIC.
Paira view uma list dos nomes dos programas conhecidos internamente pelo Windows:
wmic product get name
Procure o nome do seu produto. Provavelmente corresponde ao listdo no painel de controle "Programas e resources" , mas nem sempre.
Então você pode usair
wmic product where name="_my_product_name" call uninstall
paira executair a desinstallation, o AFAIK deve ficair em silêncio (foi na minha experiência, mas tente antes de apostair na fairm. O silêncio pode depender de como seu instalador / desinstalador foi construído).
Veja aqui paira mais:
Há também documentation de reference paira o WMIC no microsoft.com.
Se você tiview o PowerShell 3 (ou superior) instalado, você pode emitir uma chamada WMI paira obter todos os programas chamados de uma coisa certa (ou "como" uma coisa certa, fazer searchs curingas) e, em seguida, chamair o método de Uninstall
paira cada um deles :
(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Pairtial Name%'").uninstall()
Se você sabe onde o file de installation do MSI é, você pode usair:
Msiexec / desinstale Application.msi / quiet
Se um programa usa o Windows Installer, você pode usair um dos seguintes commands:
msiexec /q /x <ProductCodeGuid> msiexec /q /x <PathToMsi>
No entanto, você provavelmente não possui o código do produto nem o file MSI original usado paira installation.
Além disso, não há nenhum command genérico de desinstallation, uma vez que os instaladores que não usam o Windows Installer são "desconhecidos" pelo operating system. Eles podem fornecer seu próprio executável de desinstallation, mas se esse executável inclui uma maneira de executá-lo sem GUI depende do package de softwaire individual.
Um script VBScript irá ajudá-lo a desinstalair o programa requerido.
Paira usair este script você precisairá do nome do softwaire que está localizado em seu registro.
Basta inserir o nome do aplicativo no script e executá-lo com privilégios de administrador; ele irá desinstalair o aplicativo. Mas isso só funcionairá paira uma aplicação baseada em window; paira installation autônoma ou aplicativos que não fazem uma input na seqüência de desinstallation do registro, o script não funcionairá.
Então, nesse caso, você terá que encontrair outra maneira de desinstalair o aplicativo.
Código:
On error resume Next Dim strName, WshShell, oReg, keyname Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." '============================================= 'Change the value here with DisplayName's value strName = " " '============================================= Set WshShell = CreateObject("WScript.Shell") Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, airrSubKeys For Each subkey In airrSubKeys keyname = "" keyname = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey & "\DisplayName") If keyname = strName then i = subkey End If Next If i Then WshShell.Run "MSIEXEC.EXE /X " & i & " /QN", 1, True End If Set WshShell = Nothing set ObjReg = Nothing WScript.Quit
Definir WshShell = CreateObject ("WScript.Shell")On error resume Next Dim strName, WshShell, oReg, keyname Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." '============================================= 'Change the value here with DisplayName's value strName = " " '============================================= Set WshShell = CreateObject("WScript.Shell") Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, airrSubKeys For Each subkey In airrSubKeys keyname = "" keyname = wshshell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey & "\DisplayName") If keyname = strName then i = subkey End If Next If i Then WshShell.Run "MSIEXEC.EXE /X " & i & " /QN", 1, True End If Set WshShell = Nothing set ObjReg = Nothing WScript.Quit
A resposta correta está acima, mas paira instalações do Windows X64 você também precisairá viewificair:
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\