|Home » Resources » Rants
Week of February 14, 2000
InstallShield is now giving courses in InstallShield and they have the tacit approval of Microsoft to do it.
InstallShield is an install program. It installs (and hopefully uninstalls when the time comes) software on your computer. The Microsoft Developer Studio suite, now a de facto standard in the industry, ships with a lightweight version of InstallShield. The idea is that you will find the lightweight version tempting but unsatisfactory and purchase the 'professional' edition instead.
(What really needs installing and uninstalling is another matter of course. It should be enough to double click on an executable to get it to run. But today, with all the hair brained ideas of application development, one no longer knows.)
Installing programs should be a breeze, yet the InstallShield Corporation (yes, we have another fiscal entity revolving entirely around a single software product) has turned it into a rocket science nightmare. Let's first consider what normally happens even if you succeed in building a satisfactory install program for your application:
- InstallShield creates an entry under HKLM/SOFTWARE which is not used for anything.
- InstallShield creates entries on the Start menu and normally on the desktop as well.
- InstallShield places an uninstall executable in the Windows directory and uninstall information in the install directory.
- InstallShield creates an entry under 'App Paths' so the application can be found at runtime.
- InstallShield creates an entry under 'Uninstall' so the application can be uninstalled from Control Panel.
Consider for a moment - perhaps you do not need to consider, perhaps you have 'been there' - that all install programs created entries on your Start menu. Normally these entries are bound by InstallShield's paraplegic technology which cannot see beyond the first hierarchical level of your Start menu, and everything gets lumped together in a sorry mush. And a quick look at the desktop of a 'newbie' and you can see what InstallShield does there as well - it's a mess, pure plain and simple.
The whole idea of having entries under 'App Paths' is questionable at best. If the idea was to help clueless users find their applications once they're installed, there are certainly better methods available. Installing software is a big deal, and being able to whiz by at an impressive lightning speed is not necessarily the best way to go about things. The user does have to accept or submit an install directory - it should not be too much to ask, either of the user or InstallShield, to have the user also opt for the location of Start menu shortcuts, or opt to have none at all (this alternative is almost never offered).
InstallShield is an old product. It began back in the days of Program Manager, when DDE calls were used to communicate with it and install programs in the various program groups. Microsoft provided a sort of bridge to the new technology with Windows 95 and unfortunately InstallShield still avails itself of this bridge. Program Manager is not hierarchical, and thus neither is InstallShield, even today.
Creating an InstallShield setup program is almost more effort than finishing the application to be packaged. It is intensely script-based where the complete process should be intuitive and matter of fact. The risk that junk files are left around after a supposed successful install is imminent - many applications coming from Redmond which use InstallShield in fact do this, and so the question becomes: if even Microsoft cannot effect a clean install with InstallShield, isn't something wrong with the product?
The answer must be a resounding 'yes', but there's more to it than that. The very existence of install programs is highly questionable. The following points hit hard:
- The user should be given complete control of the local machine, even during an install process.
- The user should be credited with a modicum of brains - marginally more than the powers that be at InstallShield and Microsoft Corporation would give them credit for.
- The user should be provided with a clean and easily read document which delineates exactly what has been done during the install process and what is involved in completely removing the product should that be desired.
- Nothing should transpire at all without the user's explicit permission, and only after every precaution has been taken to ensure that the user fully understands the situation and the alternatives offered.
Many users experience a cold sweat panic when they see an install program run and suddenly begin to copy files into their common (SYSTEM or system32) directories. The names whiz by so fast there is no way of keeping track of what is going on, what damage has been done. The only proper way to safeguard oneself against such potential disasters is to carefully mark everything on disk before attempting any install and to run a Registry monitor throughout the entire process. As things stand today, the user is given less credit than the people responsible for the install program deserve and minions of potentially catastrophic things are taking place with no recourse for the user to chart them and/or prevent them. This must simply not continue. The immediate parallel to 'NetBus' applications is frighteningly apparent.
There really is no reason to ever dump anything in a common directory anyway. Thousands of applications come with good intentions and tens of system DLLs which are installed in the user's SYSTEM and system32 directories with no regard for the user's private property. Perhaps some of these disastrous install programs do make the effort to check first whether their version of a vital system DLL is more up to date than the installed one, but they are still missing the point: the installed system DLL is the user's private property and should not be encroached ever. There are many cases where so-called 'updates' to vital system DLLs have proven to be bugged or in some other way undesirable, and a user may have intentionally regressed to an earlier and safer version, and it certainly is not the right of a clumsy install program to mess things up all over again for such a harried user.
The disadvantage of having multiple system DLLs on disk is nothing compared to the danger of a potentially corrupt operating system, and tools are already available which can ameliorate the former anyway. A simple 'find' operation will locate all instances of a file on disk; checking version information will tell a user which files are up to date and which are not; and finally it becomes the user's prerogative to delete these files or not.
Which simultaneously relegates the 'SharedDLLs' key in the Registry into oblivion where it belongs. All of this smoke and mirrors is so suspect, because it depends completely on the faultless cooperation of every install program ever used. Should one install program fail to register its use of any system DLLs, for any reason, any subsequent uninstall program may delete them - and again the user will normally have no control over the outcome.
With so much happening on a local machine it is obvious that the situation is tantamount to total chaos. A newbie computer user will have a mess on disk within 72 hours of turning the key for the first time. Registry files will inflate beyond human comprehension, the disk surface will be a jungle of fragmented files, the Start menu an unfathomable mess, and the desktop more like a Christmas tree at Bloomingdale's. It's very easy under the circumstances for a user to give up, to accept that control is unattainable, to resign oneself to the fact that this coveted machine which represented so many dear hours of long hard work is already not one's own again.
Microsoft's angle is not hard to understand. The more computers on kitchen tables around the world the more money they make. The more ISV software that is sold the more money they make (the old IBM paradigm from the beginning of the PC era). The easier it is for people to install programs the better. Should anything intimidating happen during an install process, the user might think twice about purchasing any new software in the future. InstallShield automates the entire process for us, so it's just best to go with InstallShield.
If every new computer user had to first go a three-day course in MS-DOS and Windows basics; learn about the instrinsics of modern UNIX-based hierarchical file systems; learn about the function and architecture of the Windows Registry; learn what files and deleting files is all about: then the number of PC users would be decimated, and Bill Gates, among others, would be without his billions. Microsoft's own focus group studies in Redmond do not speak well for the median intelligence level of a PC user. Results of these continual studies point in the direction of nearly Neanderthal abilities at the very most. PC users are never going to understand how a file system works; PC users will never be able to grasp more than two hierarchical levels of any file system directory tree; and so on. It must be wonderful for ordinary PC users to understand what Microsoft really thinks of them.
But above and beyond an intuitive disbelief in the literacy of the common populace, Microsoft refuses to amalgamate any technology which can advance as the users do so as well. Whereas UNIX might be largely inaccessible to any user not adept in the command arsenal at hand and the overall philosophy of the operating system, once the user has reached this impasse things go very fast indeed - UNIX is geared to work which in the long run becomes ultimately productive. Microsoft's operating systems are not geared to productive work at all - they are in fact not even geared toward work or the needs of the end user either - they are merely geared toward sales and more sales all the time.
The question ultimately becomes whether we will ever jump off this Wintel carousel and start doing things our own way, letting common sense have the upper hand once again. It seems inevitable that such must become the case sooner or later, yet with the unsurpressable monster Microsoft Marketing Machine, one can never know.
PS: Things have now progressed beyond this. Microsoft's 2K products sport the Microsoft Installer which promises to deal once and for all with 'DLL hell'. We shall see. The Microsoft Installer does more than install and take another chunk of your disk. Time will tell. Until then, Microsoft's own recommendation would surely be to sign up for a course with InstallShield Corporation.
PSS: InstallShield was singled out here, but InstallShield is not alone: all the installers endorsed by Microsoft for Win2K - WISE and the rest - are on the same level. You have to search far and wide to find an install program that is not totally clueless.
And that's assuming you've figured out what an installer is supposed to be good for. Because for all but the most hopelessly brain dead, a double click should suffice.