Ned Batchelder shares a complaint about the Mac application installation process:
This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2007/07/whats-wrong-with-setupexe.html
Ned Batchelder shares a complaint about the Mac application installation process:
As others have pointed out over on Nedâs site, the case he gives is a fairly pathological Mac app. For most of the apps I download:
(a) the download is a direct download of a .dmg file, not of a .zip file containing it (or, as in this example, a .zip file containing a folder containing the .dmg file)
(b) my browser is set to automatically mount the .dmg file once it has downloaded.
So installation is two steps:
(1) switch to the Finder
(2) drag the application to the applications folder
(with an additional third step of entering an admin userid/password if the user is not an administrator).
And cleanup is one step: click the âunmountâ (âejectâ) button for the applicationâs disk image. Two if you count deleting the .dmg file.
But the real problem, of course, is the eternal tension between security and convenience.
Undeniably, the simplest possible interface for installing a downloadable app would be a web page with a button saying âDownload and install ThisAppâ whichâwhen clickedâwould handle the entire download and install process. You click on it, thereâs a slight delay, and the application is sitting in your applications folder (Mac) or Start Menu (Windows), ready to go.
Of course, if a known, responsible developer were capable of doing this, then a somewhat less reputable individual would be just as easily able to put the download-and-install code behind a button that said âCLICK HERE FOR HOT PIXXXX!!!â and have it install any and all sorts of stuff you really never wanted on your computer.
Jeff, still the average setup.exe seems to me far superior to the âmanualâ approach. At least you can just keep pressing ânextâ 5 times in a row.
@Dirty Davey: it seems to me that a click-to-install approach wuold be doable provided that the user enters his credentials. Two steps is the right balance between security and convenience: I think click-once technology does something similar, but I havenât played much myself.
I have a more cynical view. The installer is the last thing that any software engineer ever wants to work on. Itâs the last thing that the designer wants to specify. It suffers from a pathological testing mentality: 99% of the time the tester wants to test some feature in the latest drop, and needs to get through the installer to get to it, so the tester gets in the habit of following only a single use case unquestioningly.
Thereâs no glory in creating the worldâs best installer. In my experience, installer work is assigned to the most junior person in each group (development, spec/design, QA) and once it is minimally functional it is never refactored.
And if you thing installers are bad, check out uninstallers.
I have to say, this is on the extreme examples.
For example, I just installed Firefox 2.0.
Done.
I prefer the Linux way⌠I click the little checkbox next to the package I want installed. Then I hit Apply.
Of course the Linux way is more burdensome if the application isnât packaged by the distro.
Whatâs also nice is that uninstalling software is just as easy as installing it.
Strangely enough, Windows Mobile does exactly what you want. You download a .CAB file and run it. It automatically installs, doesnât ask a single question, doesnât make you accept license agreements, nothing.
As said above, your example of a Mac install is fatally (and, presumably, intentionally) flawed. Itâs usually a three-step process to install the app: click the download, click the âshow downloadâ once itâs done downloading, drag application to Applications folder (which is often linked in the Finder window; otherwise click the little âlozengeâ to show your side bar and drag it there ⌠so I suppose that would be four steps).
The Problem With Installers: itâs not installing the application. Itâs the configuration and setup that the installer does for you.
For instance, if you opt out of Visualization in the WinAmp installer, can you ever (after having used the application for a few seconds to figure out what the jargon means) opt back in? Does that involve re-running the Installer, or is it buried in the menus somewhere?
A Mac app offering optional extensions (and not using an installer; remember that Mac apps can use installers, and Apple even provides one free of charge) would usually guide the user through installing those extensions inside the application, which means the user can always go back to install them later if they decide not to at first, and more often than not they also know how to remove the options if they turn out to be more trouble than they are worth.
In effect, most Mac installs are the âone buttonâ âaccept all defaultsâ installs. If you want to deviate from the standard âinstallâ you are expected to let your preferences be known in the app itself.
Itâs a different way of doing things, yes. Windows is really hyper-big on âwizardsâ, and installation is just one example. In my opinion, though, most âwizardsâ are too stupid to do things right, and/or rely on the user to make decisions the user is incapable of making. Installers are no exception to that.
I believe that Mac mainly makes you go through âmanual hoopsâ to have some sort of standard.
With âSetup.Exeâ you will notice that there are thousands of different installer programs. Theres the standard Microsoft one, then each company does itâs own little thing. Most games come with a flashy one with all kinds of colors and buttons.
On Mac, itâs always the same process, and it always âlooksâ the same.
I believe that Mac mainly makes you go through âmanual hoopsâ to have some sort of standard.
Yet itâs NOT standard-- what happens if I run the app from the current location (running it from the DMG) without dragging it to the applications folder? Or what if they drag it to the desktop and run the app from there?
Why make the user run through this meaningless, repetitive step if the installer could do it for them? Why not make it standard and reduce work for the user? I donât understand why Mac users accept this with a reserved shrug of their shoulders and say âthatâs just the way it isâ, or worse, defend it as some sacred act of drag and drop busywork that somehow blesses the application.
Never mind that drag and drop itself is an utterly broken and user hostile GUI convention.
Yet itâs NOT standard-- what happens if I run the app from the current location (running it from the DMG) without dragging it to the applications folder? Or what if they drag it to the desktop and run the app from there?
Well, Iâd say that there are a standard set of choices. The simplicity of the application design (a âbundleâ with a .app extension) allows you to execute it from anywhere. I often download .dmg files to my Download folder and run them from there to try them out. If I donât like them, I dismount and delete the .dmg. Thatâs much more difficult in Windows given the odds that the app may not have an uninstaller or the uninstaller wonât really remove everything the installer added (ever look at the crap in your registry, or in System32?).
But I agree that the typical Mac installation process, while fairly consistent, does not live up to the simplicity and ease-of-use that Mac on whole is known for.
âNever mind that drag and drop itself is an utterly broken and user hostile GUI convention.â
I would like further elaboration on what you mean by that. (I canât even disagree because Iâm not sure what exactly you mean by it
Itâs possible to package your application as an MSI that can be installed and uninstalled very simply. Problem is, most applications have requirements that either go beyond the default UI that an MSI allows (afaik), or the MSI âcodeâ is just too much of a mess to figure out. Even Paint.NET has requirements related to updating and internationalization that made writing my own setup wizard in C# a better idea. Plus, that way itâs dead obvious and simple to customize and fine tune everything about the installer.
Iâm glad that Office 2007 has a much simplified installation experience. You insert the CD, click ârunâ, and then it eventually pops up with a big âINSTALL NOWâ button. Then it just goes.
In Paint.NET (not to toot my own horn here â okay maybe I am a little!) you only have to click Next twice to install it: the first page defaults to a radio button for âQuickâ (aka âDefaultâ) installation, the second is for a simple EULA (MIT License), then it just ⌠goes. I did this because I personally was getting tired of clicking through 3 pages of options over 10 times a day. And I thought, âHalf the people who install this probably donât understand most of the options. And, they probably donât even care about them. Letâs go ahead and optimize for the most common scenario âŚâ
However, that still canât get rid of the wonderful prelude to installing that IE7 puts in front of you: click to the download page, click the yellow infobar, reload the page, click the download link again, click Open, wait 30 seconds, click OK on the warning dialog from IE, click OK on the warning dialog from Windows (âthis came from the Internet zone, it might harm your cat!â), then click OK on the UAC prompt ⌠and if you downloaded it in a ZIP file youâve got another double-click in there.
I really dislike setup.exe-type installations. I hate not knowing what the installer is doing, for one. Is it copying a bunch of files all over the place? Where is it placing it? Iâm gonna have to hunt for it later, and itâs placing shortcuts all over the map. Sometimes I canât say ânoâ to those. Iâve little knowledge (and honestly I donât really care to spend the energy to investigate for every single app) about the automated process.
In the Windows world you have executables and DLLs and config files strewn about every which way, however the developer sees fit⌠I wonât even bring up the registry links, and other hidden files.
On the Mac side, a .app is a self-contained entity. So, Jeff, if you run an .app from within the mounted .dmg, it will work. Run it on the desktop? It will run. Preference files are kept in a standard location. By convention applications are kept in ~/Applications. Makes sense, no?
I like being in control of my system and knowing that I dragged that .app to my Apps folder. Donât do it for me, and donât make me click âNextâ 5 times, what a painful process.
âYet itâs NOT standard-- what happens if I run the app from the current location (running it from the DMG) without dragging it to the applications folder? Or what if they drag it to the desktop and run the app from there?â
I hardly ever drag applications into the Applications folder. You can run it out of the dmg if you want to try it before committing more disk. I typically have a totally different directory to run apps Iâve downloaded out of.
This directory is available on every finder window so I typically just drag the icon a little to the left and Iâm done. Getting wizards to allow me to change the install path is sometimes possible, but rarely easy enough that I actually bother putting things where I want them.
What was the point you were making here?
And can you be more specific about drag and drop being utterly broken? It seems to be useful enough for me in the applications where I use it and have implemented it.
I have been using a macbook for about a year now and I have to admit that at first installing applications slightly confused me. Now that I know your supposed to simply drag-n-drop I prefer the Macâs approach. It allows the user to easily install the application where ever they want as well as give it a test run before dropping it in the applicationâs folder (if thats where they intend to install it).
Also, in the time it takes a user to click through license agreements and install options in a windows approach, a mac user may have already dragged and dropped their app in their intended folder. This is why I donât find appleâs method entirely meaningless or repetitive.
I have to admit my opinion is slightly biased, I come from a gentoo linux background, which means I love to tweak and customize my installations until my fingers fall off.
For some strange reason I find installaion on OS X easier and âcleanerâ than on windows. Maybe because most setup programs ask too many questions and require to press too much âNextâ.
Draging app to the Applications folder on Mac seems like blessing then (especially if .dmg provides handy shortcut âdrag hereâ).
As for drag-and-drop: what were you smoking?
This is ridiculousâŚnone of these are apples to apples comparisons. You can find good and bad installation experiences for any OSâŚ
I love Portage (on Gentoo), its really well thought out. But have you tried installing KDE on that thing�
On Windows, how many of us have run into apps that try to install into C:\Windows(\system32)? Complaining about 10 steps where closing every folder is a step? Try getting rid of Symantecâs internet security suite a few years backâŚthat thing was effectively a rootkit (and might still be).
Fine, the Mac installation process isnât perfect, and has a lot of folder opening and closing. But if youâre whining about opening and closing folders, Iâd hate to see the state of your Documents folder. And the Mac model of the application-folder is generally better than the behavior of most Windows apps.
Youâre articles are almost always insightful and packed with understanding, so I donât understand the recent Mac OS hostility backed with fairly dubious facts of late.
Also, the rise of Windows Installer based MSI files and OneClick means that Setup.exeâs days are numbered anyway.
I agree about the linux install: any application targeted at beginners is generally included in the distro⌠and installing a program is as easy is checking the box next to it and clicking âapplyâ
Some of this might be redundant, but it took a while to write. And itâs long. So sue me.
Unless youâre using an application that requires you to put support files in the /library/ folder or elsewhere besides the userâs library, you can use the application from anywhere. You can, in fact, run Firefox from the setup disk if you want to. The application will stick the support files it needs in my user library. Some of the additional components may not work, because they need to write to disk, and thatâs not possible with a read-only disk.
The Applications folder is another misnomer. Unless there are specific application-specific dependencies, you can run any program wherever you want. They merely suggest the Applications folder becauseâŚyou knowâŚthatâs where everything else is.
I should also point out youâre not installing Firefox when you drag that folder over â youâre installing the Firefox.app package. Itâs just a special kind of folder that runs when you click it. On Windows systems, thereâs an *.exe file that runs the program with a zillion support files nobody really knows where goes.
As far as the complicated setup procedure, in the middle of this page youâll see what the typical user sees in the Finder, the place to get files (third image down):
http://docs.info.apple.com/article.html?artnum=304757
Now imagine, if you will, the next-to-the-last image being there, with a removable disk there. The default settings will have the user drag the application file over to the sidebar to drag-and-drop onto the Applications folder, then can eject the disk using the eject button you seen in that next-to-the-last image.
Hereâs the problem with Windows installers: they all look the same. They are so uniform in appearance, actually, that you could create an Internet Explorer webpage that closely resembles the installer.
Or, you could make an installer that doesnât install what it says it does where it says it does. Iâm sure thatâs never happened before, an installer putting rogue programs willy-nilly all over everywhere.
Because its difficult to tell what goes where, Iâm a little scared every time I install some new program. Last week I tried out GreatNews, just to see what the buzz was, and I have no idea what went where. Iâm a typical Windows users, sadly, so I donât know where the latest program files and dll files go.
While itâs nice to get that OKRecommended SetupFinish, but at least I know what I installed on my Mac.