Easy Access to the Applications Folder from a Disk Image
by Ben Artin09/02/2005
Disk images in Mac OS X provide developers with a powerful mechanism for packaging and delivering software on the internet. They enable developers to make a good first impression with users. A well-crafted disk image shows attention to detail, and signals that the software is designed well and with the user in mind.
In Mac OS X 10.2.3, Apple added support for internet-enabled disk images, which automatically replace themselves with their contents. While they have gained some acceptance, most software is not distributed this way, partly because internet-enabled disk images prevent the developer from making a strong first impression or including an introductory document with the application.
For all their strengths, disk images still have a remarkably annoying behavior. The one thing most users want to do with a disk image is drag something from it to the Applications folder, but most disk images provide no easy way to get at the Applications folder. For example, an early version of the Fetch 5 disk image looked like this:

Figure 1. A disk image with no easy access to the Applications folder
Even with the installation instructions right in the disk image background, this method can be problematic. Accessing the Applications folder in the Finder may obscure the disk image window, move parts of it off the screen, or make it too small to show its entire content. For example, on some disk images, the application icon is so close to the right edge of the window that showing the Finder sidebar causes the application icon to move beyond the right edge, requiring the user to use the scroll bar to find the application.
In designing the disk image for Fetch 5, we considered these options and found only one way to guarantee easy access to the Applications folder. Namely, we included an item (on the disk image itself) to which the user can drag our application in order to install it:

Figure 2. A disk image providing easy access to the Applications folder
To provide the drag target on the disk image, we used a symbolic link to the /Applications folder. The symbolic link can be created in multiple ways.
- To create a symbolic link in the Finder, first install SymbolicLinker. After relaunching the Finder, as per the SymbolicLinker install instructions, open the top level of your startup disk,
Control-click the Applications folder, and choose Make Symbolic Link from the contextual menu. The symbolic link will be created on your desktop and named Applications symlink. - To create a symbolic link from Terminal, use:
The symbolic link will be created on your desktop and named Applications.ln -s /Applications ~/Desktop
|
Related Reading
Mac OS X Tiger Pocket Guide |
Once you've created the symbolic link, you need to include it on your disk image as you would any other item. We use MindVision FileStorm to create our disk images, and I highly recommend it for its ease of use and ability to consistently create high-quality disk images. In FileStorm, adding the symbolic link is as easy as dragging it into the project window and positioning it as desired.
We had originally thought that the written instructions and the small arrow that's a part of the symbolic link icon would be sufficient to guide our users. After initial user testing, we decided to also provide a large arrow pointing from the application to the Applications folder symbolic link as an additional visual cue indicating what the user is supposed to do. This arrow is part of the disk image's background picture.
Our users' feedback so far indicates that the technique is effective and intuitive. Users who were confused by our disk image typically would have been equally confused if the disk image had not contained the Applications folder symbolic link. This leads us to believe that some of our users are unfamiliar with disk images, but that this technique improved usability for others.
Adding an Applications folder symbolic link to your disk image is a very simple and effective way to make your users' initial experience with your software more enjoyable. As a user who interacts with disk images on an almost daily basis, I look forward to seeing this technique used more widely.
Ben Artin has been a Mac programmer for about a decade. His past accomplishments include two MacHack awards. He has been working on Fetch since 2003 and is enjoying it very much.
Return to the Mac DevCenter
You must be logged in to the O'Reilly Network to post a talkback.
Showing messages 1 through 7 of 7.
-
or...
2005-09-13 16:23:12 harold_finsbury [Reply | View]
If you click the small grey blob in the top right hand corner, the window in which the dmg contents are shown becomes a standard, metal Finder window. Most people have Applications in the left hand shortcuts bar and can just drag the app across.
-
Disk Images/CD's and Spotlight
2005-09-04 12:57:57 maartensneep1 [Reply | View]
Hi, since there seem to be disk-image experts around here, I'd thought I just to ask here. I'd like to include a Spotlight database on a CD with some reference material, so that users can more easily search through the material (The disk is a TeX installer for Mac OS X, and includes introductory material).
How can I make sure that the disk can be searched?
Maarten
-
Installers vs. Packages
2005-09-03 12:59:37 innerbat [Reply | View]
I see a number of people proposing, essentially, that the app should use an installer instead of a drag-and-drop installation. An Apple Script installer, a package, and self-install code all amount to using an installer.
I am not opposed to using installers, however, Apple does clearly state their preference:
"Because most applications for Mac OS X are built as self-contained application bundles (defined below), users can install them in most situations just by dragging the bundle to a folder for which they have write permission. This drag-and-drop type of installation is the preferred method for installing Mac OS X software."
(Quoting from http://developer.apple.com/documentation/DeveloperTools/Conceptual/SoftwareDistribution/Concepts/sd_guidelines.html .)
This article is written under the assumption that you are past the point of debating whether to use an installer or a disk image, and provides a suggestion for how to make the disk image easier to use.
Also, to specifically address the suggestion for a self-installer: this is not a bad idea, but it's also pretty tricky to get it right. There are several failures that need to be handled very carefully, most notably what happens if the user does not have the permission to install in Applications folder, what happens if the user is already running an older version of the application, and whether to allow the user to keep an older version of the application around. With a drag-install the Finder takes care of all of those cases by asking the user the appropriate questions ("You don't have the permissions to modify Applications, do you want to authenticate?", "The item cannot be replaced because it's busy", and "An item of this name already exists, do you want to replace it.") It's not impossible, but it's far from trivial, and if I ever do it I am sure I'll be writing about that too.
This is easier to accomplish for plugins such as widgets for a variety of reasons. For example, the difficult case of the plugin needed to be replaced while it's already running can be handled much more easily for NNW styles and widgets because the process of unloading a NNW style or a widget (in order to replace it with a new one) is very simple. Unloading an already running application is much more complicated, and it involves bringing the application to the foreground, cancelling pending tasks, prompting the user to review unsaved documents, etc.
Ben
-
Applescript
2005-09-03 08:33:26 sinjin [Reply | View]
I've found this aspect of disk image installer to be a pain as well, and it would be nice to see some solution that gets around the problem that developers have no one consistent model for intuitive installation. It is great that you are thinking of ideas for Fetch, but few others are aware that non-power users take pause with these disk images (and the rest of us are frequently annoyed by them). Apple, are you listening?! I'm off to post feedback with them after this.
Anyhow, what I wanted to suggest instead of the alias is an Applescript or Applescript Studio "installer" application that does exactly what your alias does. Reason I think it would be better is people understand what an application called "Install Fetch" is going to do. Double click and relax as things go where they should. Such a script could even prompt with choices of where it should go or tell the user where it went, or open up the apps folder and highlight the app icon after installation.
For the more advanced users who know they can just drag the app anywhere they please, the app icon is also there waiting for it.
-
Nice idea
2005-09-03 04:12:10 kool [Reply | View]
I like this idea. Quite neat. I think that having a big arrow in there is very important indeed. Saves people from -without thinking- just selecting all and dumping it into the Applications folder themself. Ending up with a link to Applications in their Applications folder.
Many small applications such as services that install into the users Library would benefit from this idea as well. Is it possible to create a link to a ~/Library/Services folder where the ~ gets resolved on user's machine?
-
Nice idea
2005-09-03 04:11:39 kool [Reply | View]
I like this idea. Quite neat. I think that having a big arrow in there is very important indeed. Saves people from -without thinking- just selecting all and dumping it into the Applications folder themself. Ending up with a link to Applications in their Applications folder.
Many small applications such as services that install into the users Library would benefit from this idea as well. Is it possible to create a link to a ~/Library/Services folder where the ~ gets resolved on user's machine?
-
Why not copy it or create a package?
2005-09-02 22:33:12 DaleG [Reply | View]
The problem I have with the symlink approach is that a user will look at it and wonder why they have to do anything at all. Why doesn't the application just install into Applications itself, rather than making me just do a single drag to a folder in plain view?
Your application could run some auto-install code each time it starts. If it finds it's being launched from its own disk image then it copies itself to /Applications. If there's already a copy of itself in this folder, it can ask the user whether to overwrite it or cancel the operation. CaminoKnight and NightShift already do this. It'd be interesting to see how they do this programatically.
Alternatively, creating a simple package might be better. While it's a longer process, users are somewhat familiar with it.





