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 14 of 14.
-
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. -
or...
2005-09-14 14:05:15 innerbat [Reply | View]
This does not always work well. As I said in the article, the window may move partly off-screen or the item you want to drag to Applications may move past the right edge of the window. Exactly how the window resizes when you click that button varies between various Mac OS X versions, but so far I have not found any one in which it's always useful.
-
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. -
Why not copy it or create a package?
2005-09-03 14:06:17 cpruitt [Reply | View]
NOOOOOOOO!!!! For the love of everything holy, dont encourage people to write installers for single bundle apps.
Am I the only one that just hates installers with a passion? I totally dont trust them. I want to know every little thing that is installed on my system. I dont even like the fact that Applications can copy out bundle contents on first run without me knowing about it. Its not a matter of security as much as wanting to know where everything is and how to get it OFF my system. I'm always worried some plugin or service is being dunped in somewhere and will be hanging around long after I delete the app.
I just hate installers... hate them. They're forever putting things where I dont want them. I dont want ANYTHING installed into /Library unles its ABSOLUTELY required. I dont back up /Library. I do back up ~/Library. I want all my resources inside my home folder. Installers never seem to give me this option & I'm always having to track down contextual manu's, pref panes, services & the like & moving them into my own folder.
I could TOLLERATE installers if they were FORCED (even if it required me setting a "verbose install" option in the system preferences) to function as follows:
Double Click...
"You are about to install 'App Name'"
"The folliwing files will be installed..."
... Insert Text view with complete copyable/savable/printable list of files to be installed & destinations ...
"The Primary Application will be installed into /Applications. Would you like to change this?"
Prompt: Change / Continue
"Install resources for all users or ony the Current user?"
Prompt: Current / All
Also installers should ALWAYS offer an uninstall option. I'm so sick of having orphan files all over.
As they are I just get annoyed every time an app uses one. I far prefer a simple drag & drop. Sorry to sound like a complainer but this is just a hot button issue for me. -
Why not copy it or create a package?
2005-09-03 04:06:08 kool [Reply | View]
Auto-installing applications should be very careful, as not everyone installs into /Applications e.g. if you don't have privileges there. And how about the test-drive? I don't copy something into my Applications immediately, only after giving it a test-drive when its stlll on the diskimage for example.
If there is no need for an installer, do not use it. It's a bit of a black box to people. No idea what is going where. And also, I don't know what scripts it might be running before and/or after installation.
One big problem with the Installer is that after it's finished it's not always clear what to do next. The user needs to go find the application in the Finder and double-click it. -
Why not copy it or create a package?
2005-09-05 17:36:10 chris_barker [Reply | View]
Installers are something from the Bad Old Days of Classic. If I never see one again its too soon for me. Unfortunately since I'll probably have to buy some more Adobe product I know I'll end up subjected to another installer coded up by some mouth breathing troglodyte.
I'm also a member of the "test drive from Desktop" school. Partly because I've seen some updates to programs that broke features I liked so I dont always want to replace something that I know to be working.
Whereas I feel sorry for the users who are too stupid or lazy to drag A to B, I must say that the article demonstrates a great way of handling this. It gives people the choice of quickly putting something in Applications or not.
Draggable .App bundles are the best thing since sliced cheeze and I wish other OSen had the same concept. -
Why not copy it or create a package?
2005-09-03 07:00:37 DaleG [Reply | View]
That's right, not everyone installs every app into /Applications. I know I don't. Same with a test drive. I do these all from the Desktop while deciding whether to keep them.
But the assumption in this article is that the app will get installed into /Applications, and that you have to make it as simple as possible for less capable users to do this. So your concerns aren't addressed by the article either.
As far as users not knowing where to find the app in the Finder, the installer could either state where it's installed, or offer to start it automatically.
NetNewsWire plugins install themselves by double-clicking, as do Apple Widgets. -
Why not copy it or create a package?
2005-09-03 12:22:35 kool [Reply | View]
In my opinion it would be best if the Installer reveals the application in the Finder after the installation. That way the user also learns where the application is saved.
(for installations into different folders, it should be made possible to select the starting-point-file by the developer which the Installer can then reveal)





