To the people who make applications for Windows

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
I have a bone to pick with you.

Why is it that so many programs are pieces of junk? I'm not talking about niche applications made by one random person either, I'm talking about big name popular "AAA" programs and games made by big companies with big budgets. I'm not complaining of the functionality within the applications, for the most part they do what they advertise. What I am talking about is the presentation and implementation; the installer, uninstaller, and affiliated programs; what they do that they don't advertise.

Why is it that when I install a program, the uninstaller does not remove what it installed?

Sometimes it leaves behind an empty folder, sometimes it leaves behind a folder that still has several hundred megabytes or more worth of data. Sometimes there's more than one folder spread across all kinds of locations within the PC after an uninstall. Sometimes(all the time?) the uninstaller leaves registry entries behind.

Sometimes when the application is installed, it installs several other programs without asking or even informing you. The uninstaller from this same program does not uninstall the extra programs it installed.

Some programs I install insist on creating a process that runs at all times from bootup. Programs that have no use for something like this what so ever do it(Why would a game need a process running in the background 24/7 even if I play it only once a month?). These processes don't appear in the notification area. They often have no option for disabling within the program itself, nor do they show up in the startup area of msconfig to disable from there. I have even encountered scenarios where after uninstalling an application, it STILL leaves processes running that can be seen in the task manager(and they still appear upon reboot).

I've encountered some programs that leave right click context menus in place even after you uninstall the program completely. The only way to get rid of those is to edit the registry.

To conclude: People love to whine about how Windows sucks and it gets slow over time. Windows doesn't get slow over time because of Microsoft. It gets slow over time because of all you lousy programmers and your applications. If you can not make an uninstaller that makes the PC exactly the way it was before your program was installed, YOU SHOULD NOT BE PROGRAMMING.

/rant
 

sivart

Golden Member
Oct 20, 2000
1,786
0
0
LOL...one word to answer your question "Money" :D

Doing all of the things you ranted about take time and money and the product would take longer to get to market -- delaying revenue.

I always run ccleaner to clean my registry after removing any program. I have a 3 year old Windows XP Pro install that runs just as well as it did from day 1.
 

peasant

Banned
Nov 22, 2009
50
0
0
Yes, but it shouldn't be too difficult to form your uninstaller to remove what you install. Afterall, just take a system snapshot before install, compare to one after install, voila, you should have a complete image of all install paths, making a reverse should take little time,ergo little money.

The true answer may be one of pure laziness.
 

Red Squirrel

No Lifer
May 24, 2003
71,130
14,005
126
www.anyf.ca
Haha I totally agree. And why is it that every single video editing program for windows is so unstable? You try to make it work slightly too hard and it just craps out. I've tried ulead (by far the best featurewise, but worse stability), premiere (craps up with any videos over 30 minutes long) and now I'm on sony vegas, which also craps out in the "cutter" utility mode. I hate the idea of even having that mode - let me cut directly on the time line! I could go on about video editing programs alone... need a mac for that kind of stuff.

And yes uninstallers, why do they always leave crap behind? Then again in linux there are NO uninstallers, so guess Linux needs work in that department too, and is worse then windows for spreading stuff across the system. Some programs even require to recompile the kernel. wtf? Just make your own folder, keep all the stuff in there, and leave the rest of the system alone MMMMkay?
 

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
I use Ccleaner too but it still doesn't get rid of everything. It is ultra conservative and safe about what it removes from the registry, it definitely doesn't get everything. I'm not saying it's impossible to keep your OS install running in tip top shape for years of time, I do it myself. But the only reason it stays that way is because I go out of my way to pick up the slack that crappy developers leave behind. The fact remains that your PC will not remain clean over time if you rely on uninstallers. We shouldn't have to go through all of this effort to clean up the PC. Pretty sure programmers missed kindergarten or at least the part where they are supposed to learn to pick up after themselves.
 
Last edited:

BlueWeasel

Lifer
Jun 2, 2000
15,944
475
126
Anyone have any thoughts about Revo Uninstaller?

I've just recently started using it and it seems to have a fairly advanced removal procedure, including registry scans for left over items.
 

konakona

Diamond Member
May 6, 2004
6,285
1
0
Anyone have any thoughts about Revo Uninstaller?

I've just recently started using it and it seems to have a fairly advanced removal procedure, including registry scans for left over items.

Wow. You just beat me to it, I was going to post just that :p
I installed it on my secondary rig to be safe, seems to get the job done well without any side-effects noticed by NOD32 and anti-malware.
 

MrChad

Lifer
Aug 22, 2001
13,507
3
81
In general, uninstallers only remove files that were created/added during the installation process. Many programs add files and folders or create registry entries after the installation process. This is why you'll often see "remnants" of a program after it has been uninstalled. I generally like uninstallers that at least present the user with the option of cleaning up these remaining "post-install" files, but they have to be specifically built that way.
 

bruceb

Diamond Member
Aug 20, 2004
8,874
111
106
Can't say about Revo, but they say it is a good Uninstaller. I use a copy of UnClean, an uninstaller from PCMag utilities. Works nice.
 

yinan

Golden Member
Jan 12, 2007
1,801
2
71
Things are headed the way you want with portable/virtualized applications. Aka ThinApp/App-V/XenApp
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
People love to whine about how Windows sucks and it gets slow over time. Windows doesn't get slow over time because of Microsoft. It gets slow over time because of all you lousy programmers and your applications. If you can not make an uninstaller that makes the PC exactly the way it was before your program was installed, YOU SHOULD NOT BE PROGRAMMING.

Agreed but it'll never until MS has proper package management and with the way the Windows Installer works now I doubt that'll ever happen. Although it would be nice because it would make a Server Core installation a lot more usable too.

Yes, but it shouldn't be too difficult to form your uninstaller to remove what you install. Afterall, just take a system snapshot before install, compare to one after install, voila, you should have a complete image of all install paths, making a reverse should take little time,ergo little money.

The true answer may be one of pure laziness.

Your snapshot idea falls apart when you take into account any other changes to the system made after the install that weren't part of it. Files from other installs, user data changes, etc would all still have to be accounted for in that.

Then again in linux there are NO uninstallers, so guess Linux needs work in that department too, and is worse then windows for spreading stuff across the system.

Linux package managers are the uninstallers. If you're installing something from source it's assumed you know what you're doing and can uninstall it yourself. And they spread it across the system because it makes sense. Having separate directories for binaries, shared libraries, icons, documentation, etc all makes much more sense than whatever random crap each particular developer might come up with and makes it easier for the system to find everything.

Some programs even require to recompile the kernel. wtf? Just make your own folder, keep all the stuff in there, and leave the rest of the system alone MMMMkay?

The things that require a kernel compile are few and far between and generally have good reason. If you don't understand why, that's not the developer's fault and is just another reason why it's better to trust someone else to package it for you.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
It is because there is no standard for how an application looks, installs or how the interface works. So you have a convoluted mess of software that is designed however the developer thinks it should work. I worked with a custom linux OS that a studio had made in house. It was beautiful . All the applications performed exactly alike, the layout and menus all meshed. They wrote everything themselves and before starting had planned out how it all would work and look so the programmers had a set template they had to follow or the application would not be used.

Linux suffers like windows here in that applications are written however the programmer wants and that breaks the feel of the OS.
 

peasant

Banned
Nov 22, 2009
50
0
0
@nothinman, the snapshot idea does holdup, you are assuming that you maybe run your system for 2-3days maybe a week or more on your system, I assume. I assume a decent developer would test their product on their own machine, taking their own snapshot, as I would, immediately before install, and again immediately after install. User data isn't part of the install routine and can be discounted, in exactly the same way as any text file I write in notepad, and save to desktop, is not part of the notepad installation process.

I am also assuming, one installer/uninstaller per product, as seems to be the current fashion, as has been for the last ummmmmmmmmmmmmm at least 4 Windows offerings.

On another note, I think you'll find that the vast majority of products come with their own installer/uninstaller wrap, the windows installer being native to windows, and other installers using the msi scripting functions of windows installer. Again, it would fall to the developer to correctly identify the uninstall paths, not the windows installer package. Windows cannot be held responsible for error of say for example, Apple and their iTunes, Quicktime, Safari etal software suite, that is solely at the discretion of Apple, and the fault ergo lies there.

Again, I could pull the rest of your argument apart, but there is no need to, nor is that my intention, you have a valid opinion, and a valid right to express it, even if for some unknown reason, you believe Windows to be responsible for managing other software vendors activities.

I apologise if this upsets you, or you view this in any other way than trying to express to you a different view other than the malign Windows one.

At this point, maybe it would help if a definition of whether an installer of x product, needs to uninstall only x product, and IT'S associated data, or whether it needs to be able to mind read where you may put any saved data if you don't use a default location, and then make a decision by itself, whether or not your saved data is deletable from within an uninstaller, or at least give you the option of whether or not to, if in a default location.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
At this point, maybe it would help if a definition of whether an installer of x product, needs to uninstall only x product, and IT'S associated data, or whether it needs to be able to mind read where you may put any saved data if you don't use a default location, and then make a decision by itself, whether or not your saved data is deletable from within an uninstaller, or at least give you the option of whether or not to, if in a default location.

I think that is where the problem lies. There is no requirement of how someone installs , uninstalls, or default locations required only suggestions. There really should be a set of rules that a program is required to follow, but there isn't , just a bunch of 'if it isn't too much trouble, please program this way'
 

her209

No Lifer
Oct 11, 2000
56,336
11
0
What I absolutely hate is programs that require administrative privileges to correctly run. I mean, what the fuck!? Why are you trying to write back to files in the Program Files directory? Why are you trying to write back registry info into the HKEY_LOCAL_MACHINE!?
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
@nothinman, the snapshot idea does holdup, you are assuming that you maybe run your system for 2-3days maybe a week or more on your system, I assume. I assume a decent developer would test their product on their own machine, taking their own snapshot, as I would, immediately before install, and again immediately after install. User data isn't part of the install routine and can be discounted, in exactly the same way as any text file I write in notepad, and save to desktop, is not part of the notepad installation process

I thought you meant using the snapshot as a means to uninstall from an end user's machine, not the developer himself. For testing uninstalls by the developer it's fine, but if the developer isn't good enough to handle the uninstaller for a program he just wrote then snapshotting will just be another tool for him to misuse and most likely won't help at all.

I am also assuming, one installer/uninstaller per product, as seems to be the current fashion, as has been for the last ummmmmmmmmmmmmm at least 4 Windows offerings.

Actually Windows has offered the Windows Installer for several years now which is kind of a package management system but it's not complete and too many people still write their own crap.

Again, it would fall to the developer to correctly identify the uninstall paths, not the windows installer package.

If the Windows Installer was a proper package management suite then that wouldn't be the case.

At this point, maybe it would help if a definition of whether an installer of x product, needs to uninstall only x product, and IT'S associated data, or whether it needs to be able to mind read where you may put any saved data if you don't use a default location, and then make a decision by itself, whether or not your saved data is deletable from within an uninstaller, or at least give you the option of whether or not to, if in a default location.

That's why a lot of uninstallers will ask if you want them to remove any personal data related to that program and if so will just remove the preferences, etc that are in the program's directory below your profile. Anything you put outside of that is up to you to deal with.

I think that is where the problem lies. There is no requirement of how someone installs , uninstalls, or default locations required only suggestions. There really should be a set of rules that a program is required to follow, but there isn't , just a bunch of 'if it isn't too much trouble, please program this way'

MS, Gnome, Apple, etc all have a HIG that covers most of the how things should look and where things should default to putting data. It's just impossible to enforce and too many developers want to try and make their product standout by making it work differently.
 

Red Squirrel

No Lifer
May 24, 2003
71,130
14,005
126
www.anyf.ca
What I absolutely hate is programs that require administrative privileges to correctly run. I mean, what the fuck!? Why are you trying to write back to files in the Program Files directory? Why are you trying to write back registry info into the HKEY_LOCAL_MACHINE!?

Yeah I HATE that, especially in a corporate environment. ARG

@ Nothinman: and how is it that it makes sense to spread everything accross the system in linux? That just makes it disorganized and if you're stuck uninstalling manually it makes the job that much harder.

In all the apps I've coded everything stays in it's own folder. No reason to have to spread stuff accross the whole system. Lot of Windows apps are bad for that too.
 

peasant

Banned
Nov 22, 2009
50
0
0
If the Windows Installer was a proper package management suite then that wouldn't be the case.
.

That is a misconception. The windows installer is the windows installer, designed with only windows in mind. It is not for Microsoft to design an installer for say e.g Roxio.

Onwards, the Windows installer, in order to enable other software vendors to make use of the windows installer, offer a scripting service, if you've ever wondered what the .msi extension was, that is it.Also refers to MST files as well, I believe.

This is why, if you ever check your hidden install or uninstall folders you will find loads of these extensions, and I mention Roxio, because they seem to use an inordinate number of them to script their own installer, Norton/Symantec is also pretty atrocious, and lets not forget Nero, however strangely enough, the install process for MS Office, which seems to take an inordinate length of time to configure the installer, actually leaves very little garbage behind. I can only assume from that, that Microsoft know how to configure the installer, and everyone else doesn't, but do know how to use it to install.

As someone mentioned early, it's like picking up after a 2 yr old at kindergarten. The developers are skilled enough to code some, in cases, exceptional programming, and to configure the installer to install, so why not, just that little bit extra and do the job properly.

Back to my original solution, laziness.


BTW, I do actually agree about having a decent uninstaller for Windows, after all if Revo can put one out at 1MB, the there is no excuse for Microsoft not being able to at least compete with that, and improve add/remove, or whatever it's fancy new name may be.
 
Last edited:

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
In all the apps I've coded everything stays in it's own folder. No reason to have to spread stuff accross the whole system. Lot of Windows apps are bad for that too.

I have never understood why programmers feel the need to hold on to the past idea of using shared libraries and things like the registry. A lot of that stuff was put in place because of computer limitations of the time. You used shared libraries because storage space was tiny and so was memory. That isn't the case anymore.

I see no reason for a program to not be able to run entirely from its own directory placing all its configuration data in a .cfg file inside that directory. It makes it all nice and neat and very easy to manage and remove. Unzip it to the directory to install, delete the directory to uninstall.

I use a bunch of portable apps for that reason now. They require no installation and run from only their directory. No install, no uninstall.
 

bruceb

Diamond Member
Aug 20, 2004
8,874
111
106
That does sound like the best way and some apps do run that way. Too bad most of them don't.
 

Red Squirrel

No Lifer
May 24, 2003
71,130
14,005
126
www.anyf.ca
I have never understood why programmers feel the need to hold on to the past idea of using shared libraries and things like the registry. A lot of that stuff was put in place because of computer limitations of the time. You used shared libraries because storage space was tiny and so was memory. That isn't the case anymore.

I see no reason for a program to not be able to run entirely from its own directory placing all its configuration data in a .cfg file inside that directory. It makes it all nice and neat and very easy to manage and remove. Unzip it to the directory to install, delete the directory to uninstall.

I use a bunch of portable apps for that reason now. They require no installation and run from only their directory. No install, no uninstall.

Yeah exactly. Shared libraries are nothing but a huge hassle, and also cause a dependency so the program will not work if that dependency does not exist, or may not run well if the dependency is a different version or has a bug in it. Not cool at all.
 

MrChad

Lifer
Aug 22, 2001
13,507
3
81
Yeah exactly. Shared libraries are nothing but a huge hassle, and also cause a dependency so the program will not work if that dependency does not exist, or may not run well if the dependency is a different version or has a bug in it. Not cool at all.

Static libraries are wasteful and make patching (especially for security vulnerabilities) much more tedious.

The issue with shared libraries as they exist in Windows (the traditional COM flavor) is that it's difficult to manage multiple versions of the same DLL simultaneously. .NET fixes a lot of these problems with the Global Assembly Cache, but unmanaged COM DLLs will be a part of Windows for a long, long time.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Yeah I HATE that, especially in a corporate environment. ARG

@ Nothinman: and how is it that it makes sense to spread everything accross the system in linux? That just makes it disorganized and if you're stuck uninstalling manually it makes the job that much harder.

Because you always know that binaries are in /usr/bin or /bin, shared libraries are always in /usr/lib and /lib, documentation is always in the man pages and /usr/share/docs/packagename, etc. Organization is a good thing.

Doing it your way would require something like /usr/packagename/bin, /usr/packagename/lib, /usr/packagename/docs, etc. And now documentation viewers, the dynamic linker, Gnome menu, etc all have to scower dozens or hundreds of disconnected directories to find everything they need.

And I can guarantee you that not all developers are going to follow that, we've still got crap software out there that wants to go into /opt for no good reason.

In all the apps I've coded everything stays in it's own folder. No reason to have to spread stuff accross the whole system. Lot of Windows apps are bad for that too.

But that only makes sense when looking at it from the perspective of a single app. For instance, how do you get your app into the system PATH? Do you force people to edit their environment or put a symlink in /usr/bin/?

When looking at it from the perspective of building a cohesive operating system you want stuff to be easily findable and having every package have it's own directory structure below /somerandom/place/packagename kills that.

There's a reason the FHS was written that way.

Windows apps are bad about overwriting files in system32 without checking if the libarary exists or what version it is. Those are two completely separate things.

That is a misconception. The windows installer is the windows installer, designed with only windows in mind. It is not for Microsoft to design an installer for say e.g Roxio.

No, it's a generic service that's mean to be used by anybody. Which is why InstallShield generates MSIs now.

Onwards, the Windows installer, in order to enable other software vendors to make use of the windows installer, offer a scripting service, if you've ever wondered what the .msi extension was, that is it.Also refers to MST files as well, I believe.

MSIs are installers, MSTs are transforms and MSPs are patches, but I don't see how that's relevant.

I can only assume from that, that Microsoft know how to configure the installer, and everyone else doesn't, but do know how to use it to install.

Exactly, it comes back to sloppy developers.

BTW, I do actually agree about having a decent uninstaller for Windows, after all if Revo can put one out at 1MB, the there is no excuse for Microsoft not being able to at least compete with that, and improve add/remove, or whatever it's fancy new name may be.

Except that they've already given developers the tools and they just don't use them properly.

I have never understood why programmers feel the need to hold on to the past idea of using shared libraries and things like the registry. A lot of that stuff was put in place because of computer limitations of the time. You used shared libraries because storage space was tiny and so was memory. That isn't the case anymore.

It's not just about disk and memory usage, it's about code reuse and a central location to update that code. If one developer spend X hours writing a library to do Y, why should I waste my time doing the same? And then later if a security hole is found in that library I only have to update one file instead of figuring out every single binary on my system that has it's own copy and updating them all.

And the registry is a whole other beast. Lots of apps can get away with ignoring it but it (or something similar) is necessary for apps to register things like COM servers with the OS.

I see no reason for a program to not be able to run entirely from its own directory placing all its configuration data in a .cfg file inside that directory. It makes it all nice and neat and very easy to manage and remove. Unzip it to the directory to install, delete the directory to uninstall.

And I see no reason to worry about little things like that and not manage them all with a package manager. I don't worry about where they put files because it doesn't really matter to me.

Yeah exactly. Shared libraries are nothing but a huge hassle, and also cause a dependency so the program will not work if that dependency does not exist, or may not run well if the dependency is a different version or has a bug in it. Not cool at all.

What's not cool is people who don't understand them and fight against a system that works perfectly fine and was designed a certain way for a reason.

he issue with shared libraries as they exist in Windows (the traditional COM flavor) is that it's difficult to manage multiple versions of the same DLL simultaneously.

Which is exacerbated by said bad developers. It's not terribly hard to check the version of a DLL before overwriting it in your installer, if all installers did that from the start the term "DLL hell" would never have come up.