This turns out to be a surprisingly difficult question to answer.
As you’ve discovered, software installation is not simple. That some programs share components with other programs is only the tip of the iceberg.
Perhaps the answer is easier than I thought: how can you completely uninstall a program? You can’t.
Let’s look at what you can do, though.
Become a Patron of Ask Leo! and go ad-free!
Installation is complicated
Let’s start by looking at all the different things that may get copied or created when you install software.
- The files that make up the software itself. Examples include “excel.exe” for Microsoft Excel, or “chrome.exe” for the Google Chrome browser.
- The files that make up components that may be shared with other programs. An example here is the infamous “Microsoft Visual C Runtime”, which is a library of software used by many other applications.
- The files that include templates, configuration files, default documents, and more used by the application once installed. Microsoft Word’s default templates are a great example.
- Registry settings that control the behavior of the application, or store the settings you make as part of the setup process or as you use the program.
- Registry settings or other information accumulated by the application as you use it. For example, many applications include their own “recent documents” list.
There are probably more that I’ve overlooked, and almost certainly more that are unique to some applications. There are many, many different things that could be installed, and many different places to keep them.
Worst of all, while there are guidelines, they’re not enforced. There’s really no standard that an application need adhere to.
Most programs provide an uninstaller, which is, of course, the first approach to … well … uninstalling.
Presumably the uninstaller has the same knowledge the installer had: what things were put where. Even if things were placed in completely random, non-standard locations, the uninstaller for a specific program should know what all those locations are.
Unfortunately, uninstallers aren’t a high priority to most application developers. Uninstallers are for people who want to stop using an application, so that’s no real priority here — don’t let the door hit you on the way out.
The net result is that uninstallers often don’t uninstall everything that was installed. They typically fall far short of a “complete” uninstall.
Even when they’re well written and thought out.
Did you want to save that?
One of the scenarios uninstall authors need worry about is this: an uninstall followed by an immediate reinstall.
This is a common debugging technique when we’re fighting a misbehaving application. I often advise people to completely uninstall an application and then reinstall it again from scratch.
The scenario, though, leaves us with a dilemma: whether configurations, modifications, and settings should be preserved. In other words, when you reinstall that application, should all of your configuration changes have been lost?
There’s no right answer. It depends. On rare occasions, an uninstaller will even ask if you want to preserve things — but most do not. Most often, an uninstaller removes the program but leaves behind those customizations, settings, and who knows what else, just in case you reinstall and want all that preserved.
Once again, a “complete” uninstall is uncommon.
Will the last person leaving please turn out the lights?
Shared components present yet another level of complexity.
Here’s the scenario:
- Program A uses and installs Library Z.
- Program B also uses Library Z, but sees that it’s already installed, so it need not bother installing it again.
- You uninstall Program A.
Uninstalling Program A should not uninstall Library Z, even though it installed it. Doing so would break Program B. (Apparently you experienced this at some point.)
In an ideal world, it’s only when Program B is also uninstalled that Library Z could be safely uninstalled — as long as no other program had been installed also using Library Z. Here’s the problem: there’s really no recordkeeping of who might still be relying on Library Z, and to the extent there is, it’s unreliable.
The result is that Library Z is never uninstalled, even if no application is left to use it. (To be very clear, this is an extreme over-simplification of what actually happens. Interdependencies like this can become frighteningly complex, and most uninstallers don’t want to take the risk of being blamed for breaking another program if it made the decision wrong.)
Dedicated uninstall applications
Applications like Revo Uninstaller (and several others) take an interesting approach to uninstalling applications. By using them to initiate the uninstall, rather than the traditional method, the process to uninstall Program A looks more like this (using Revo as an example):
- Revo runs Program A’s own uninstall program, which uninstalls what it knows to uninstall.
- Revo may monitor what it sees Program A’s uninstaller uninstall.
- Revo goes looking for leftovers that “look like” they might be associated with Program A. This might include registry entries, files, or folders matching Program A’s characteristics. Revo removes what it finds.
- Hopefully it’s correct, and doesn’t remove something important for some different application.
That last point is why dedicated uninstall applications often allow you to set a level of “aggressiveness” for their scans for leftovers. Set low, only safe things are removed. Set more aggressively, the program is allowed to remove things that might be slightly risky.
As I said, there are no standards that are universally followed. Revo can only hunt and make educated guesses based on what it finds.
Even then, it may leave things behind. It’s still not a “complete” uninstall.
100% guaranteed complete uninstall
You won’t like this.
The only way to really, truly, completely uninstall an application is to reinstall Windows from scratch. By erasing the hard disk as part of that operation, you are guaranteed that all traces of the application are gone.
Fortunately, it’s extremely rare that you need go to such lengths. Even if there are leftovers, a normal uninstall — even using the application’s own uninstaller — is typically sufficient.
And a lot less work.