General

Chat

Uninstalling programs leave behind their mess--why?

Why is it so difficult for applications to keep track of the files they've installed onto a computer so that when it's uninstalled, everything associated with the program gets deleted as well? I've always had this question, but I've decided to just do something about it on the internet (I just came across a corrupt Firefox session, had to manually open sessionstore.bak with a text editor, and spent several hours going through a bunch of scattered text and finding the URL of all the tabs of the session that were lost--I had ~70+ tabs open). Anyway, I decided to uninstall and re-install Firefox because I tinkered with the files in order to try to save the previous session. I found out that Mozilla-related stuff in the [i]AppData[/i] folder did not get deleted, which included the files I tinkered with--despite running CCleaner after the uninstall and selecting everything Firefox-related to be deleted.

Out of curiosity and as a result, I took a glance at the [i]Roaming[/i] folder in [i]AppData[/i] and found out that folders of uninstalled programs from long ago existed. At best they contain many tiny files taking up unnecessary space on the hard drive and at worst they conflict with programs that are re-installed. Had I not decided to check AppData for Mozilla leftovers, I'm sure that re-installing Firefox would cause problems in the future (based on what I've read when I tried to save the broken session).

For games, I read in patch notes that sometimes old files are removed when new ones come in, so an installer has that capability to not only add files to a system but delete them as well--surely it's not too difficult to keep track of a list of files installed?

The reason why I'm interested in this topic is because I started learning Linux and there is a similar situation where removing a package leaves behind its dependencies--even if the dependencies are unique to the package. I know there are ways to remove these dependencies, but the idea that useless files get left behind when uninstalling is a bit bizarre. Among programmers/software designers, there are certain philosophies to follow--this seems like such a basic one where "a thing can be done and then it can be undone." Is it reasonable for the average computer user to be expected to understand how to optimize his computer to maintain a certain level of performance and stability or else he will encounter problems?

September 12, 2014

10 Comments • Newest first

immortal192

I used to use Revo Uninstaller but then I realized that on their home page it stated that the paid version had more advanced algorithms to better remove traces of a program. I'm guessing the free version isn't going to do much more than what a user can do--going through AppData and the registry and deleting files with keywords. I have recently favored open source portable applications as a result, but by nature they are optimized for flash drives (programs are written to use less resources, reduce the extent of read/write, remain as light as possible, etc.). Also, I'm not even sure if they are fully compatible with their desktop counterparts--for example, Firefox Syncing the settings between desktop and portable version of Firefox may be problematic because the portable version has added/removed certain settings. I guess there will always be compromises when software companies have differing philosophies on the level of control they have over data.

Reply September 13, 2014 - edited
BobR

@immortal192 It's because of the way Windows treats what it considers "appdata" as opposed to locally stored files relating to a specific application, and because programs generally aren't designed (or able) to monitor everything Windows does.

A program can't keep track of where Windows is placing files unless it's running constantly in the background, monitoring everything that goes on and recording where files and data are being stored. To do this for a game, for example Maplestory, would require a Maplestory process to be running constantly in case Windows decided to store game related "appdate" in /user/application data/Maplestory instead of in c:/maplestory.

Same with Firefox. Unless Firefox has a process in the background monitoring everything constantly, it's going to miss where things end up being stored, whether it's in an appdata folder or in the registry.

Add a background monitoring process for every game and every program you have on your computer and pretty soon the whole computer will run as slowly as your excessively loaded browser does.

The multi-user architecture of Windows and the permissions system makes it even more complex, as Windows tries to maintain separate environments for different users each with different security levels, so not everything is allowed to see or modify things created by other users or users programs. While most people just run under Administrator, Windows still has an annoying habit of wanting to compartmentalize things for "security".

There ARE "installation monitoring" programs that try to do this on a global basis so when you install a program it keeps a list of what is installed and where, but these aren't 100% accurate, again because of the way Windows does things. When you want to uninstall a program that was monitored, it consults the list of locations and removes whatever is included on the monitored list, but it still can miss things that didn't get listed. (I used to use a Norton program like this that was part of a suite, but it went away when I decided the suite wasn't worth the annual upgrade fee.)

Something like Revo Uninstaller can scan through the registry and appdata folders looking for orphan files left after it runs the normal Windows uninstall for a program, but again there's no guarantee it'll catch everything.

The only way you can be sure of getting everything that was installed along with a program and all the data files it creates is to stick with "portable" applications which store all their files and info in the same folder as the application so it can all be removed with a single "delete".

Reply September 12, 2014 - edited
OhMahGun

Try Revo uninstaller. It scans for the program's files and deletes them.

Reply September 12, 2014 - edited
ox0Shad0w0xo

Not the point of the thread I know, but why the heck did you need to have 70 tabs open in the first place? Just bookmark pages you like until you need them again instead of keeping them all open while only actively using a dozen or so of them.

Reply September 12, 2014 - edited
Omegathorion

So I'm a high-level programmer, I don't know what goes on with the low-level stuff. What you said about compartmentalizing objects, making sure they don't get tangled up in each other, that's definitely a core tenet of the kind of programming I do (apps, games, interactive content). But I'm pretty sure that things get different when you go down to low-level programming, which is what operating systems and uninstalls work on. Low-level and high-level programming are as different as Java is to Javascript.

Basically, I don't know why it's so hard to make a clean uninstall, but there's probably a good reason for it that can't be found with high-level programming design patterns.

Reply September 12, 2014 - edited
halfway

@Anthorix: I honestly have no good reason. It's my laziness to stop what I'm doing at the time and restart my computer

Reply September 12, 2014 - edited
mitarumetaro

[quote=Anthorix]wuts preventing you from restarting? too slow? too many programs? =3=[/quote]

Just a minor inconvenience

Reply September 12, 2014 - edited
Anthorix

[quote=halfway]"[i]Program cannot fully uninstall without restarting your computer[/i]"
On second thought I'll just keep this then.[/quote]

wuts preventing you from restarting? too slow? too many programs? =3=

Reply September 12, 2014 - edited
halfway

"[i]Program cannot fully uninstall without restarting your computer[/i]"
On second thought I'll just keep this then.

Reply September 12, 2014 - edited
mitarumetaro

100% agree. Removing programs is absolute hell

Reply September 12, 2014 - edited