Software uninstalls are a tricky business. People seem to think that a software uninstall program is simply an install program running backwards to remove everything they’ve put onto the system. Reality however, is very different. To get a better understanding of the issues surrounding the removal of software, we should look at what a computer does during install.
Back in the early days of programming, all there was to programs were files in a directory. Simply deleting a directory wiped out the entire program. As programming advanced, this system of storing entire programs within a single directory began to show an expensive flaw. Programs use very similar code to perform standard functions so exact copies of code were found in multiple programs. As disk space was bulky and very expensive, finding ways to save space became an industry priority and one solution to this was to find the program commonalities and store them in a single location for use by multiple programs. In order to make this work, programs need to know where the files they require were located. The operating system was updated to track directory paths that programs could use to track where the files they required were located.
This system of creating files that contained commonalities in programs was further enhanced to include the ability to store configuration information in separate files. Programs could use configuration files to pass program specific information to the called files. User names, dates, and all kinds of information specific to the particular installed program would store its information in these configuration files.
This was then further enhanced with the creation of initiation files that stored information that the operating system (Windows®) needed to know in order for it to take over the duties of tracking machine and user specific information that the programs could use to function.
Initiation files were used by Microsoft for many years and they worked well but as programs became more advanced and the amount of programs created for its operating system grew, issues began to arise. It was difficult for programmers and support personnel to sift through all the different configuration and initiation files as well as track the program’s files and their respective names. The term “DLL Hell” came from support personnel and programmers trying to keep the configuration files and file names ordered without affecting other programs that used common files whose names were the same as other programs.
To combat the confusion that the configuration, initiation and common files (DDL or dynamic link libraries) were causing, Microsoft implemented a new system called the Registry into its operating system that was basically a repository or storage area for all the information needed by the programs.
The Registry was created with all kinds of bells and whistles to make programs run efficiently and was very much forward thinking. It was however, very complicated to the point where access to it was meant to be limited to only the programs that used it and advanced support personnel. Because the Registry is a repository of common information, changing entries within it can have repercussions across the entire system. A single error could cause a program, several programs, or even the entire operating system to fail.
Due to the fragility of the information in the Registry and the tracking of common files, simply removing files and registry entries can cause far-reaching repercussions. As the registry holds user specific information as well as program information gathered from the running of the program itself it is very difficult or even impossible for a simple uninstall script to decipher which common registry entries or common files can be removed from a system without affecting other programs or the operating system.
The solution was to create uninstall scripts that simply leaves behind any file or entry that was deemed common to the system. If the entry was not needed it would not be called and would cause minimal repercussions in the registry searching process.
With several hundred junk entries in the registry and a couple of leftover files the drag on the system is minimal and unnoticeable. The problem is when there are several thousand or even hundred thousand junk entries or if any of these junk entries are erroneously active or interfering with other entries actively being used. The system can slow significantly and programs can begin to show issues or even fail completely.
So we’re left with an efficient system to install and run programs but no way to remove software. What do we do?
Large corporations spend a lot of money simplifying the program installation process to the point where it becomes easier to format the hard drive and rebuild the system than to try to get rid of all the junk. A machine can be rebuilt in less than an hour where a single program can take support person hours to investigate an issue.
A home user usually does not have the ability to easily rebuild a system. Even so, home users have been known to do it any way spending hours or even days rebuilding their system after a bad uninstall or overwhelming junk causes system issues and crashes.
Microsoft has built systems and restore programs into its operating system trying to combat problems caused by junk but the underlying issue remains and can still be persistent.
Third party companies have recognized this issue and have addressed it in a unique way. While everyone searches for an easy answer to the problem these companies have spent the time studying the issue and have created programs to analyze the entire system file by file, entry by entry then track what links to where. With this information, the programs can uninstall software much more thoroughly leaving no or minimal junk behind.
Finally it is now possible to reliably uninstall software saving time and money.