when uninstalling an app on Windows, why do some files get left over?

374 views

I’ve mainly used OSX/MacOS tho right out my life, but have used Windows for work. From my understanding, installing an app on Windows scatters files throughout the OS and makes it sometimes difficult to fully uninstall an app. Often times there are files that are leftover.

In macOS it’s super easy because with a lot of apps, the files are bundled within the app itself making it easier to remove.

In: 32

12 Answers

Anonymous 0 Comments

Some of those files may not have been installed when originally installed, as in they were created when you were using the app so the uninstaller isnt looking for them.

Anonymous 0 Comments

Configuration files and things like saved games are often left behind because the uninstaller isn’t looking for them.

The idea is that if you reinstall the app the saved games and config will still be there

Anonymous 0 Comments

.DLL files are files that can be used all across an operating system by different apps. They each are there for very specific tasks, such as allowing the app to change volume.

When downloading an app, it will check if any .DLL files it needs are already on the computer, and not download a duplicate. So when uninstalling, it may have a file that a different app requires, and the app is saying to windows “keep that file, I still need it!”. And you get left over files.

If you do delete the left over files, the app should have a program that checks for the presence of all the .DLL files and if one isn’t found, it reinstalls it.

Anonymous 0 Comments

Installers and uninstallers for Windows software can really be written any way the developer likes.

Typically the point of having an installer in the first place is that you need to do more than just dump all the files in one self-contained folder (aka “portable application”, because you can easily install it eg. on a USB drive and run it on any compatible machine). Sometimes that’s just adding a shortcut to the Start menu or desktop, sometimes it’s modifying the registry or creating background services, sometimes it’s putting different types of files in different places.

It’s typical for applications to be written using reusable software components like libraries or frameworks. Rather than having to reinstall those components for every application that uses them, the developer can choose to install in a way such they can be reused and shared by other applications. This isn’t a Windows specific thing either, MacOS has a similar concept with eg. the `/Library/Frameworks` directory.

The benefit is that these components take up less space on disk, you don’t need to always redownload/reinstall them when installing new software, and they can be configured and updated more easily in a single location.

The drawback is that you can end up with situations where different apps use different incompatible versions of the same common component, making it difficult to maintain them (it was called “DLL Hell”). Another drawback is that when you uninstall the app, it would be unwise to remove these common components, because there’s no way of knowing if another app on the same system still needs them. So they typically won’t be removed by the uninstaller.

Other reasons for an uninstaller to not remove files is that it’s deliberately keeping user data (config files, profile data, save games etc) so you don’t lose it. That way you can back it up, transfer it, or reuse it when you reinstall the app later.

It’s also possible for the uninstaller to be poorly written, and not remove all the files it should.

Anonymous 0 Comments

Mac is more strict/standardized on how apps get installed and uninstalled, especially if they are in the app store. Apple is in general a much more closed system.

Windows is really the same way… for apps in the app store, but traditionally most Windows apps are not from the app store and those can be written in any way that the developer wants them to work. There really is no standard at all. Windows is in general a much more open system.

Anonymous 0 Comments

Short answer, lazy developers. A well written uninstaller will do something like drop a script/scheduled task to be run on next restart to delete the directory structure for the program. Many can’t do it as part of the actual uninstall process because some of the resources are still protected and will continue to be until the next reboot.

Anonymous 0 Comments

Developers not writing proper cleanup for their software. Anecdotally, windows software tends to shit out config / registry edits / other files all over the place at a much higher rate than Linux; can’t speak for OSX because I barely use it, but OSs that use FHS are usually easier to manually clean.

Anonymous 0 Comments

Mac apps do leave stuff behind too. ~/Library/Application Support/ will have remains of old apps, a few other folders too that I can’t remember right now.

Anonymous 0 Comments

There’s generally 2 categories of files left over.

Configuration files, these are tiny, and are left behind so that when you re-install, all your settings are as you left them.

The second is dependencies. Say your program needs “CoolGraphics.DLL”, a popular graphics framework. So you install, check if its there, if not you install it in the central framework location

But when you uninstall, you have to be careful, you can’t just mindlessly remove it. That could break other programs that also use CoolGraphics So you can check if any other program uses it, and only delete it if there’s none or… you just ignore it and don’t take the risk. You don’t wanna make the news that uninstalling your program breaks people’s computers

Anonymous 0 Comments

There’s no hard technological difference between desktop operating systems in this. Much like Linux or Mac, Windows also allows the entire filesystem to be accessed by programs, and so what these programs leave there gets left there. And just like on your Mac, deleting programs on Windows generally goes just fine.

What there is a difference in is the preferred approach despite this technological background. Both on Mac and Linux programs tend to come in the form of “”””self contained”””” packages that are more standalone. This typically makes the process a bit more reliable (but it’s still not great by far).

On Windows, uninstallers of heavier programs will especially be more brittle, because they tend to roll their own custom code for vanity reasons. And since it’s something you can do well, it’s also something you can do unwell.