Unattended removal

Uninstall from the command line

Removing an MSI program without clicking through anything takes one command and one product code. Every guide on this teaches you to hunt for the code with Get-WmiObject or in the registry. You do not need to hunt: it is published in the installer manifest, and here it is for 38 programs.

The command

msiexec /x {PRODUCT-CODE} /qn /norestart
/x
Remove the product. Takes either a product code or the path to the original .msi.
/qn
No interface at all. Use /qb while testing so you can see it doing something.
/norestart
Never reboot on its own. Removing a program can request a restart, and without this it may take one while someone is working.
/l*v log.txt
Verbose log. With /qn there is nothing on screen, so this is the only way to find out why a removal failed.

Product codes, program by program

Each code belongs to the version we index. Read the warning below before you assume it matches what is on your machine.

ProgramProduct codeBuild
7-Zip{23170F69-40C1-2701-2602-000001000000}32-bit
blender{72D5FB89-E923-4FC7-B2DE-14ED7C4B104F}64-bit
CMake{8290B40E-B469-415C-9060-4AE4DE263642}32-bit
Dropbox{19E6620D-ECB8-55CC-9287-18856FCC08E8}64-bit, 32-bit, ARM64
Everything{B5F500BB-4625-445D-A2E7-E7FE5E1E7E85}64-bit
Figma{BDE063B2-459A-4ECE-876D-E449ACCAC237}64-bit
GitHub Desktop{77BE69BD-B847-4AAA-8D06-E6C6DDB4B68A}64-bit
Go Programming Language{4FFF969B-44D4-46E5-A73A-589331513BDF}32-bit
Google Chrome{2B4170D2-F59E-3B8A-BC2E-51DFCA8C25AE}32-bit
Inkscape{15D8477C-2591-49DF-B5E9-A69E1CDE95AD}64-bit
iTunes{C0E50EBD-FE23-42DE-84C0-D1B593278750}32-bit
Java 8{77824AE4-039E-4CA4-87B4-2F32180501F0}32-bit
LibreOffice{E32D32C0-1D1D-4C00-962D-2128A268B092}32-bit
Malwarebytes{35065F43-4BB2-439A-BFF7-0F1014F2E0CD}_is132-bit, 64-bit
Microsoft .NET SDK 9.0{43876a28-a466-4921-9710-4b889a11554f}64-bit
Microsoft .NET Windows Desktop Runtime 8.0{9999cc20-e1e8-4020-a22a-d027fef027c8}ARM64
Microsoft .NET Windows Desktop Runtime 9.0{b8f78406-caee-4944-aeb6-091410b4e365}ARM64
Microsoft Edge{2A194A05-233B-3CCD-AD9E-9164F1C47CAA}32-bit
Microsoft Visual C++ 2013 Redistributable (x64){042d26ef-3dbe-4c25-95d3-4c1b11b235a7}64-bit
MPC-BE{903D098F-DD50-4342-AD23-DA868FCA3126}_is132-bit
MPC-HC{2624B969-7135-4EB1-B0F6-2D8C397B45F7}_is132-bit
Node.js{16ACB226-F825-4982-A438-4E2A4D52BC44}64-bit
Notepad++{3281C7BA-0E6A-4A32-974C-3BEA51A4632F}64-bit
NVIDIA PhysX System Software{B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}_Display.PhysX32-bit
paint.net{B33D3774-736A-43FD-BE83-76733BE4CB10}64-bit
PDF24 Creator{2B4DC485-D730-49AB-BD17-9E67B2ADA492}64-bit
PeaZip{5A2BC38A-406C-4A5B-BF45-6991F9A05325}_is132-bit, 64-bit
PuTTY{A2D92841-A1FE-436A-8D2C-28EF20ABFCB5}32-bit
Python 3.13{6082f650-e200-4757-af66-d59ffd55a3cf}32-bit
Tailscale{88931C5D-EFD2-4A8F-B396-E4D7D19415E8}32-bit, 64-bit, ARM64
Transmission{9A6FE859-BC52-4324-B99A-9F8670C4F55B}32-bit
VLC media player{BB07A485-B145-41C5-B5AB-FDBDE0FBC69C}32-bit
WinDirStat{EC53D00A-1511-4EB7-A3A3-5E1439E345F4}32-bit
Windows Subsystem for Linux{497CB23D-8747-4047-A079-DD98E0EDFC18}64-bit
WinSCP{6B3B4018-4030-48D4-8924-F71537247E0D}32-bit
WireGuard{B90DE94F-FC4B-4FEF-ACDF-BD2BA2A545FB}32-bit
Wireshark{B38825E0-F358-4FEE-B997-A0235B64B2C8}64-bit
Zoom Workplace{D8B5D74C-9929-4EE0-BA5F-80D68082E388}64-bit

The product code changes with every version

This is the single thing that makes published codes go stale, and the reason most sites refuse to publish them at all. If the code above does not match what you have installed, msiexec reports that the product is not installed rather than removing the wrong thing, which is a safe failure. Read the code of what is actually on the machine and use that one.

Read the installed code · PowerShell

Get-Package -Name "*7-Zip*" | Select-Object Name, Version, FastPackageReference

Get-WmiObject Win32_Product is the command every older guide recommends, and it is worth avoiding: it triggers a consistency check on every installed MSI, which is slow and has been known to cause repairs to fire on their own.

When there is no product code

Plenty of programs are not MSI packages, so they have no product code at all. They ship their own uninstaller instead, and its path is in the registry under the UninstallString value.

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
  HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Where-Object DisplayName -like "*7-Zip*" |
  Select-Object DisplayName, DisplayVersion, UninstallString

Check both paths: a 32-bit program on 64-bit Windows registers under WOW6432Node, and looking in only one of the two is why a program you can plainly see in Settings appears to have no uninstall entry. The silent switch for that uninstaller follows the same rule as installing, so an NSIS program takes /S and an Inno one takes /VERYSILENT.

Questions

How do I uninstall a program from the command line?

For an MSI package, run msiexec /x followed by the product code, with /qn to suppress the interface and /norestart to stop it rebooting. For a program that is not an MSI, read its UninstallString from the registry and run that with the silent switch its installer builder uses.

Where do I find the MSI product code?

It is published in the installer manifest, which is where the codes on this page come from. To read the code of what is installed on a specific machine, use Get-Package in PowerShell rather than Get-WmiObject Win32_Product, which is slow and can trigger repairs.

What does error 1605 mean when uninstalling?

That the product code you passed is not installed on that machine. Almost always it means the installed version differs from the one the code belongs to, since the code changes with every release.

Does uninstalling remove my settings and data?

No. An uninstaller removes what it installed. Configuration and files created afterwards, typically under AppData, are deliberately left behind and have to be deleted by hand if you want them gone.

How do I force uninstall a program that will not uninstall?

First try the msiexec command with the correct product code, which works even when the entry in Settings is broken. If the entry itself is gone, the registry keys under CurrentVersion\Uninstall still hold the UninstallString. Deleting a program folder by hand is the last resort and leaves the machine thinking it is still installed.

Installing rather than removing? The silent install command for every program we index.