Installing applications on a Mac can be confusing. Anecdotally, I’ve observed friends and family struggle with it, and it makes sense that they would. Luckily, it doesn’t have to be that way: app developers can make it easier, though few have.
Background
Traditionally, software applications are installed via an installer: a script that copies files to your computer and performs any configuration necessary to get the app up and running. Typically (and especially on Windows), files are dumped all over your hard drive. The program itself, yes, but also various supporting files: help files, images, libraries, etc. Deleting one of these files may cripple the application. To remove the app, you need to know exactly what was installed or you need an uninstaller.
With Mac OS X, Apple introduced application bundles to improve this situation. (Actually they were introduced with NeXTSTEP several years earlier and OS X inherited them.) An application bundle is a specially structured folder that looks to the user like single file. If you’re a Mac user, you can see what I mean: open your Applications folder and Ctrl-click (right-click) on an app there such as iCal or Mail. Select Show Package Contents and you’ll see what the app is made of.
Why is this important? Because now a double-clickable app can contain all its supporting files. Installing an is as simple as dragging it to your hard drive. To uninstall, drag it to the Trash. And applications are less fragile: because they’re self-contained they’ll run from anywhere (not just Applications), and the chances of destabilizing an app by deleting a depenency are low.
Current Practice
Since apps don’t require an installer, the simplest way to distribute one is simply in a zip archive. Unzip it and you’re done. If you drag to /Applications, great; if not, it’ll still work. Many apps are indeed distributed this way.
However, the de facto standard is to put the app on a disk image, compress the disk image, and distribute that. It’s also standard to include either an image or an alias of /Applications to indicate the need to drag the app there.
There are several advantages to this approach:
- You can distribute auxiliary files (plug-ins, extras, manuals) without dumping them all on the desktop or obscuring the app in a folder.
- When the disk image is mounted its window can open automatically, providing helpful feedback to the user.
- It enforces the idea of dragging the app to /Applications.
- It allows you to present a license agreement to the user when the DMG is mounted.
- You can include branding in the DMG’s window.
The Problem
The trouble is, this approach works too well. Because apps can run from anywhere, a user can launch the app from the mounted DMG, resulting in the following scenario:
- A user downloads your app.
- He double-clicks until the app appears in a window (that of the mounted disk image).
- Accustomed to installers or just to double-clicking on things to make them go, he double-clicks. Or, he drags the app to the Dock and clicks on it there.
- The app launches. Everything is great.
- Later, the user restarts his computer. The Dock icon turns into a question mark and the app’s window disappears. The user is confused and sad.
In other words, if a user misses or misunderstands the drag-and-drop cue, everything works so well that he fails to install the app, causing confusion later on. And it’s not a far-fetched scenario: many apps do still use installers and double-clicking on things tends to work. People’s visual focus can be very narrow, so some users will certainly miss the drag-and-drop cue. Aliases are arguably somewhat of an advanced concept, so the idea of dragging the app from one place in the window to another may not make much sense; and users who interact with apps exclusively via the Dock may not know the location or role of /Applications.
Luckily, this problem isn’t hard to solve.
The Apple Solution
The ideal solution would probably come from Apple. With Leopard (Mac OS 10.5), apps launched from DMGs already produce a warning:
Apple could simply replace “Open” with “Install” and copy to /Applications before launching:
A context menu item or modifier-click would allow advanced users to run directly from the DMG. References in the Dock would be updated as well.
The Developer Solution
Of course we can’t rely on Apple to implement this. Nor do we have to. In the absence of an OS-level answer, individual vendors can provide the same functionality themselves.
How aggressive should vendors be? Delicious Library – which is not distributed by DMG – prompts users when the app is anywhere outside /Applications:
The disadvantage of this broader approach is that it must be presented as a warning or choice rather than a natural part of the install process. By only prompting for DMG-launched apps, we can make it a simple (and expected) “Proceed with installation?” confirmation rather than a more complex “Should I put this someplace else?” choice. And while Delicious Library’s prompt keeps a user’s desktop clean, it’s an extra and entirely optional step: downloaded apps scattered all over the desktop may be irritating to some, but it doesn’t prevent the user from launching them.




Excellent points. I’ve always found it ironic that the decision to simplify application installation on OS X ends up confusing a lot of unsophisticated users since some Mac apps still require running a Windows-style installer, and users don’t know which behavior to expect from a given app (other than via the drag-and-drop cue, when present and understood).
Another aspect of this is that I like to make subcategories (via folders) for my third-party software under Applications, which is a problem for apps that self-update, since almost all of those just plop the new version directly into Applications and leave the obsolete version under the subfolder. Windows actually handles this aspect better since the registry records where the user chose to install any given app.
Buy:Actos.Nexium.Zovirax.Arimidex.Synthroid.100% Pure Okinawan Coral Calcium.Zyban.Petcam (Metacam) Oral Suspension.Lumigan.Mega Hoodia.Accutane.Human Growth Hormone.Valtrex.Prednisolone.Retin-A.Prevacid….