Uninstalling programs silently via CMD

238,752

Solution 1

Every program that properly installs itself according to Microsoft's guidelines makes a registry entry in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Usually, the key for the program will be its GUID, or else the name of the program. Within that key will be an entry called UninstallString. This contains the command to execute to uninstall the program.

If you already know ahead of time what you will be uninstalling, it should be easy enough to just put that in your batch file. It gets tricky when you try to automate that process though. You can use the reg command to get data from the registry, but it returns a lot of text around the actual value of a given key, making it hard to use. You may want to experiment with using VBscript or PowerShell, as they have better options for getting data from the registry into a variable.

Solution 2

You can invoke the correct uninstaller without knowing the GUID, etc. by using WMIC.

To see a list of the names of the programs as known internally by Windows:

wmic product get name

Look for your product name. It probably matches the one listed in the "Programs and Features" control panel, but not always.

Then you can use

wmic product where name="_my_product_name" call uninstall

to perform the uninstall, which AFAIK should be silent (it has been in my experience, but try it before you bet the farm on that. Silence may depend on how your installer/uninstaller was built).

See here for more:

There's also reference documentation for WMIC on microsoft.com.

Solution 3

If you have PowerShell 3 (or higher) installed, you can issue a WMI call to get all programs named a certain thing (or 'like' a certain thing, to do wildcard searches), and then call the Uninstall method for each of them:

(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()

Solution 4

If a program uses Windows Installer, you can use one of the following commands:

msiexec /q /x <ProductCodeGuid>
msiexec /q /x <PathToMsi>

However, you're likely have neither the product code nor the original MSI file used for installation.

Other than that, there is no generic uninstall command, since installers that do not make use of Windows Installer are "unknown" by the operating system. They might supply their own uninstall executable, but whether that executable includes a way to run it without GUI depends on the individual software package.

Solution 5

If you know where the MSI installer file is you can use:

Msiexec /uninstall Application.msi /quiet

Share:
238,752

Related videos on Youtube

kb67
Author by

kb67

Updated on September 17, 2022

Comments

  • kb67
    kb67 over 1 year

    Is there a way I can uninstall programs without the graphical interface and doing it via CMD?

  • Juri Adam
    Juri Adam about 9 years
    You can run this against remote computers by adding /node:"<ComputerName>" ex: wmic /node:"someuser-pc" product get name. Be sure that you use "" around the name or you will run into the "Invalid Global Switch" error. Also be sure you run this from a CMD prompt and not a PowerShell prompt as the "" workaround for the "Invalid Global Switch" error doesn't work in the PowerShell prompt.
  • SmacL
    SmacL about 7 years
    Great answer, but small caveat is that WMIC can take a fair amount of time to execute a command. Listing products took about 3 minutes on my PC.
  • Carnot Antonio Romero
    Carnot Antonio Romero over 4 years
    Duly noted, @SmacL. I have only had occasion to use this a few times, and depending on what's on your system I can believe it would take a while.