Friday, August 31, 2012

Windows Vista and Windows 7 Batch Uninstallation

One of my biggest gripes with Windows 7 is how long it takes to manage the install and uninstall of software packages.

I can be assured that when receiving a new Lenovo notebook for a client for example, I will spend 30 "active minutes" and 30 "waiting minutes" simply removing software I don't need--and babysitting the Windows installer. That's an hour of time when my average site visit is 4 hours in length, what a waste!

This is a job that should take 30 seconds of active time and maybe 5 minutes of waiting.

So, the Windows installer framework in Windows Vista and later:

  1. Has no concurrency (seems MS has still not figured out how to handle shared libraries and dependencies)
  2. Is doggedly slow
  3. Assumes I am too dumb and my time is worth nothing

Constrast to Windows XP

In Windows XP, application vendors often had uninstall links in their Programs folder on the Start Menu, allowing you to simulate some kind of concurrency.
In Windows 7 the trend seems to be that applications remove the uninstall links from their Start Menu folders, you must use "Programs and Features" in Control Panel.

Using uninstall links allowed you to work around the problem of uninstalling multiple programs at the same time.

The New Framework

The Microsoft Install framework is "too smart" and will not let you modify two software packages that both use Windows Installer, and this is just a real bummer.

Not to mention that Windows Installer is just damn slow, and insists on "Collecting the required information for like 5 minutes while there is no sign of the dialogs actually doing anything, and no disk or CPU activity. "Please wait while the current package is being configured." It seems like the developers at MS wrote this as part of their installer code:
if package.is_installing():
in an endless loop.

The Proper Solution

Contrast this with most Linux package management systems' process for removing firefox, gimp, libreoffice in one fell swoop:

Arch Linux
pacman -R firefox gimp libreoffice

apt-get remove firefox gimp libreoffice

sudo apt-get remove firefox gimp libreoffice
yum remove firefox gimp libreoffice

Do What Mac OS X does

Or we can even use Mac OS X and drag the applications from the Applications folder to the trash bin and get it over with. Thanks, Apple!

More time = more money

But after all this, the realization hits me: Microsoft is helping me to make money by bumping up my billable hours. To my clients: honestly, it's not me being slow, it's MS!

There is one way to address this, by writing a script to do the in

wmic product where name="" call uninstall /interactive:off


But there are flaws like half-removed programs, and there is no concurrency, you still have to uninstall one-at-a-time.

*Sigh* someday MS will get a clue.