A Modest Proposal: A New Way To Install

Currently, there are two main ways that Mac software is packaged. There are Installer packages and there are apps that you just drag and drop into their install location (usually /Applications). The latter has come into favor in Mac ISV circles because of a dislike of the former.

There are various reasons why some people dislike Installer packages. There is the perception that the software is not self-contained and that the installer can run random scripts and do weird things to your permissions. In contrast, taking a self contained bundle and dropping it in your Applications folder seems tidy, controlled and predictable. Nevertheless, it seems that there are a large number of users for whom this does not work. Now, the evidence I have is anecdotal (i.e. stories of people’s less technically savvy relatives and such) so take it as you will.

It seems as if the “drag app into App folder” style of installation is not as intuitive as many developers think. Even with instructions shown in the DMG background image, I’ve heard numerous stories of users running the app directly from the disk image indefinitely. The notion of installing the app is not clear to them. It seems that whatever icon is there just gets double-clicked. They do not care about installing your software. They want to run your software.

If that is the case, then when presenting user with your software, you have one chance to do what you need to do and that is when the user double-clicks on whatever icon you present. It appears that anything more involved will not be followed by many users.

In some ways, then, Installer packages are more ideal. The user will double-click them and are then led through the install process. But, as mentioned previously, the power-user segment is not found of Installer packages plus after the install, the user must still find the application and run it.

Now, let’s look at preference panes. When you double-click a preference pane file, you are asked where to install it and after that, it starts up System Preferences with your pane loaded. Simple. It does what you, the developer, want (get the app off the disk image and onto the user’s system) and what they, the users, want (which is just to run the thing).

My suggestion? When your app launches for the first time, check to see if it’s on a disk image. If so, offer to install it for them. If they accept, you copy it to Applications or wherever and restart. Done and done.

Of course there are details to figure out. To detect if you are running of a disk image, I suggest maybe playing with NSWorkspace’s -getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type: method. My guess is that an unwritable, removable and ejectable filesystem is sufficient to identify it as some sort of distribution medium but feel free to refine this and let me know. Also, you would have to deal with the situation of the app already being installed and such but these are all surmountable.

So, my proposal is for all you app-writing people to use this type of install. It’s straightforward and benefits both developers and users. Additionally, unlike someone else’s modest proposal, no children will have to be eaten (I’ll leave it to you to decide whether that is a good or bad thing).

If anyone already does this (I feel someone must have come up with this already), please let me know. I’m curious as to your experiences with it. Lastly, but not leastly, thanks go to the #macsb channel for the discussions on the topic.

Update:

I’ve had a few discussions with different devs via different channels on the topic. The one that carried the most weight was the email exchange I had with Dave Nanian. He’s the author of Super Duper which already does what I have proposed here. It appears that from his experiences, there is still confusion even with using this approach. It appears that users still are confused with disk images and end up copying them to their app folder as if they were the app itself. I’ll leave it to him to expound on this when he has time but seeing as this is empirical evidence, maybe people should consider internet enabled disk images.

For the record, this isn’t something I would have needed for my own product. Being a preference pane, System Preference’s way of automatically installing has provided for a smooth and trouble-free experience. Actually, I can see using internet-enabled disk images as being a liability for preference panes as it deposits the pane in your downloads folder tempting users to keep double-clicking it to launch it, installing it over and over again. So, I’m not the best person to spearhead this effort as I lack the actual need for it. While there is the “for the betterment of humanity”-type motivation, I feel someone else who is dealing with actual support emails on the topic should take up the cause.

In the end, you should assess the situation as it pertains to your own product. As mentioned in the comments. Rainer Brockerhoff’s PathProps category on NSWorkspace would be useful for anyone looking into implementing this. I’ve played around with it and it seems to work as advertised.

Thanks to all for the great feedback and comments.

Update #2 (May 25, 2007):

Just got a note from Michael Nickerson who has just released a framework for this. You can read all about it here.

Category: OS X, Software 53 comments »

53 Responses to “A Modest Proposal: A New Way To Install”

  1. Joe Goh

    For my app, I have a single line of text at the top of the DMG background image telling the user to drag the app into the Applications folder. The Applications folder also appears in the opened DMG file, and there’s an arrow pointing from the app icon to the Application folder. Sounds pretty fool-proof eh? And even so, i’ve received emails from users who are totally lost on what to do. :-/

    I’ve gone against using installers in the beginning because i’m one of those “power users” myself and I tend to distrust installers.

    You can’t blame the users for their behaviour, because many of them are recent switchers, or perhaps only use a Mac at work (running Adobe apps or Final Cut Pro) and rarely have the need to venture into installing 3rd party applications. The indie app that they’re installing now may be their first one.

    I don’t think that going the way of installing an application from double-clicking the icon in the DMG is the right way forward as it makes the user think that its okay to double-click icons in opened DMG files. It will work for the few apps that adhere to this protocol, but for the thousands of other apps out there, it will fail.

    I think the best solution is for all indie developers is to use installers. For the power users, a button can be provided for them to show the log of what exactly is copied, and what permissions were changed, if any. I will probably use this approach for my app soon, unless anyone has any better ideas.

  2. John Schofield

    Quicksilver already does this. But I agree, it’s an absolutely essential thing for developers to do.

    http://quicksilver.blacktree.com/

  3. Brian Webster

    The first thing that popped into my head would be to put some invisible file at the root level of the disk image that you ship. When your app launches, you can just find out what disk your app bundle is on and look for that invisible file at the root level. If the file’s there, you’re running from the disk image, otherwise you’re not.

  4. Peter Hosey

    Refinement: Don’t just look for any read-only ejectable file-system, because that includes CDs. If your app is ever included on a CD, the people who bought that CD will get nagged every time they run your app from the CD.

    I’m not sure whether that’s useful or not. The alternative is to check whether the file-system you’re on is /Volumes/nameofyourdiskimage, without worrying about whether it possesses the read-only or ejectable nature. If it is, then nag.

  5. Michael Buckbee

    I think you state and then run right past the main usability issue here: disk images.

    This is something that really threw me when switching from Windows to OS X. Why is my OS pretending that this collection of files I downloaded is some sort of psuedo-hard drive or CD?

    I’m 100% sure there is a very valid technical reason for doing so, but it’s a big blow to usability.

    - Mike

  6. Manton Reece

    I like your proposal, and plan to support this in my apps eventually too. It doesn’t get in the way of users who know what they are doing, but elegantly improves the experience for users who are confused.

    I’d love to see a framework similar to Sparkle that handled some of the trickier details of this approach. Perhaps it could be extracted from Quicksilver or released by the next developer who tackles this problem.

    As for Apple’s installer, the UI is fine but the architecture it is built upon is a complete mess. I’ve maintained installers in it for years (first using Apple’s tools, then writing my own scripts to automate building package files manually). I wouldn’t wish that technology on anyone.

  7. mr_noodle

    Joe: I think users are already trained to double-click whatever is on the DMG and they are not going to make the distinction between an installer package (which you want them to double-click) and an app (which you want them to drag). I think training them to do otherwise is asking too much. I still think users don’t think in terms of installation. They just want to run your app.

    John: Thanks for the heads up. Never tried double-clicking Quicksilver from the DMG.

    Brian: I thought of this as well. It does require an extra step when packaging but is a good last ditch mechanism if no other can be figured out. Also, I like what you suggested in chat which was maybe to shift the nag to when the user quits instead of at launch. That does allow the user to evaluate the app before deciding whether to keep it.

    Peter: If the volume name already exists, you have to be prepared to look for a numbered version of your volume name (MyApp-1). Also, I intended this as a first time launch thing only (you’d record a pref after first launch). If the user chooses to not install, they are at least made aware of the notion that maybe it should be. They can then install it on their own.

    Thanks for all the great comments.

  8. David Wareing

    We deal with a casual audience and routinely have to explain the concept of a “Disk Image” to customers, and what they have to do to properly install our software, and what to do with all the remains (zips, mounted Disk Images, .dmg file).

    This is not their fault. It’s the concept itself: “Disk Images” are neither Disks, nor Images. Even if you use the internet download option, which isn’t always a great idea, there isn’t a good way of making sure your app ends up in the right place, or installed at all!

    The current Installer concept doesn’t work well either. Whether validly or not, people don’t trust installers. So the process has to be seamless and transparent.

    I can’t second the Sparkle-esque suggestion enough. I’ve been thinking about this for a while, and will probably pester Andy about it. Ideally, clicking on the downloaded app should ask me where I want to install to, with the Applications folder as the default, with possibly a “Keep in Dock” option as well. Note: all this would (seen to) be done within the app itself: _no_ installer.

    For extra special rapture points: the framework could allow the app to include a “Uninstall Me” option. (But that can get tricky, and isn’t as important.)

    Lastly, a suggestion to all developers: please package up all your materials within your Application Bundle. That includes Read Me files, EULAs, help files, URLs, data files, whatever. If necessary, present that information when the user launches your app for the first time, or provide links to the information. I should be able to drag a single file, which should look just like your Application, to my HDD, or another volume or wherever, and know that I’ve got everything I need.

  9. Christopher Humphries

    I think your idea is interesting. I am just weary if the trouble spent with this feature is worth it. Is there enough of a need to add this (non-standard) method of installing application flow.

    Most non-techy users may not care. Techy ones may be ok with the non-standard behavior if documented. Yet, probably no one will notice.

    My only concern is the complexity in additional code, testing and support. If it is less than the existing troubles with users, then it may be appropriate.

    Either way, it is interesting and it is nice to hear solutions with pointing out problems instead of just complaining. I enjoyed reading this post :)

  10. Tom Harrington

    I agree that this is a good idea, and I wanted to make a suggestion regarding implementation.

    Depending on needs, you might want to consider using Rainer Brockerhoff’s new and excellent PathProps code (http://www.brockerhoff.net/src/index.html). This gives you a new category on NSWorkspace which adds a method that will tell you all kinds of interesting details about a given path, based on IOKit lookups. This could be used to specifically determine if you’re on a disk image, without resort to hacks like including hidden files or the potential errors of checking the path to your bundle and making assumptions based on that. It’ll even give you the full path to the disk image file that the image was mounted from.

    For those who also sell CDs with their software, they’d need to check for both disk image and CD, but the resulting code should be nice and reliable.

  11. Jesper

    All of this would be so much better if disk images were more obvious to the average person. There’s a reason Safari’s downloading abstracts them away.

  12. Drew Thaler

    “If your app is ever included on a CD, the people who bought that CD will get nagged every time they run your app from the CD.”

    Running an app from CD/DVD tends to be slow because of the drive seek time, and I’d think a CD/DVD is much more a distribution medium rather than a place you want to permanently keep your apps. So installing when you run from CD/DVD is okay … as long as you’re not booted from it. :-)

    The other case you’d want to watch for is network mounts. Often large sites will have applications available on a network share … which to the average user is read-only, removable, and ejectable.

    So there are quite a few caveats to this:
    – if the system booted from the same media you’re being run from, don’t install
    – if you do not have write permission to /Applications, don’t install
    – if you are run from a network mount, don’t install

    These are just some of the many reasons why it’d be better if zip (not dmg) files were the preferred distribution method for OSX apps. At least with a zip file your folder won’t disappear later unless the user actually does something to cause it.

  13. Diederik Hoogenboom

    I really like the idea.

    Maybe the following approach will be ok for most people:

    1. Detect if running on disk image/CD (using Rainer’s Category or an invisible file at your diskimage’s root)
    2. Give the user the option of installing the application in /Applications or custom location. Give the user a ‘don’t bother again’ option in case they really want to run from a diskimage.
    3. restart app (optional)

  14. Conor

    This sounds like an interesting idea; however I have never understood why internet enabled disk images are not more widely used; since I started doing so all support questions about DMGs have gone away. The biggest bulk of users and the ones you are concerned with use Safari and have the “open safe files after downloading” preference enabled (it’s on by default). They click download and the end result is a copy of the application in their downloads folder. If they move the app to the applications folder great, otherwise Spotlight will always find it for them. Users that disable the open safe files preference tend to be the same users that know what to do with a DMG (the same goes for non-Safari users), they do get a nice background with instructions. Internet enabled disk images are easier for a large percentage of users, they fit all your requirements minus being copied to the application folder.

  15. Joachim Bengtsson

    On topic: Excellent idea! I got the urge to write a framework after reading just a few lines, but it seems more people are as eager, so I’ll just wait until someone else does it ;)

    Slightly off topic: Can anyone explain how Internet enabled disk images are superior to just distributing zip archives? I can’t think of a single one…

  16. Conor

    I wouldn’t say they are superior, they are very similar; Safari will automatically expand both. A small difference is the DMGs can have a license agreement.

  17. Chris Ryland

    10.5 changes the picture, and may make installers more palatable to the ordinary user. We’ll see.

  18. Chris Ryland

    Doesn’t the zip file solution with a fully-bundled app (all auxiliary files in the bundle) solve the whole problem, anyway?

    You download a zip file, it (normally) gets unzipped and is sitting in your download directory (desktop, usually), you start it up, and you’re done. Nothing between you and your users. ;-)

    If the browser doesn’t auto-unzip it, then there could be some confusion, I guess, about what to do with that funny .zip file, but I think both Win and Mac users are used to zip archives and know what to do.

  19. mr_noodle

    Personally, I’m not big on things unpacking where they lie when it comes to installing software. One of the first reasons why I wrote Hazel was that it became harder and harder to find files deposited on the Desktop (now the newly added stuff is color coded but we can’t assume everyone is running Hazel). If the contents of the archive have multiple files or the name of the file differs too much from the archive name, it can cause confusion. One thing in defense of DMGs is that you at least get to see what all the files are before they get stuck on your drive. But go ahead and clutter the Desktop. More sales for me. :) I guess one could argue that it’s ok for users to run apps off the Desktop though…

    Also, Chris, you bring up Windows users and zip files. Doesn’t Windows treat zip files much like how OS X treats dmgs? Opening a zip on Windows brings up a separate window with the contained files. You still have to copy the files out.

    In the end, I feel this solution makes things much more foolproof. I don’t recall a single support incident about installation of my pref pane. Tom, maybe you can bolster or refute this with your own experiences. Also, I think relying on users to be running Safari with “Open Safe Files” enabled is not a safe assumption.

    As far as a framework, that would be a goal. Having a common tested code base available to all would help out greatly in getting a standard mechanism adopted by many developers.

    Thanks to all of you for the lively discussion.

  20. Chris Ryland

    Yep, you’re right about Windows & zip files; I was simply pointing out that people at least know theyy have to double-click (open) them to do anything with them.

    As far as unpacking things where they lie, it seems to me that if you’re downloading an app you want to try out, you’ll make a point of finding it after it’s downloaded, and running it from there (if it’s just a unzipped app, all you have to do is double-click it).

    Yes, I suppose you might start downloading, if you’re on a slow connection (like this danged EVDO card I’m using here in the wilds of shoreline CT for a while), and forget to try it out once it’s downloaded, thus losing it in the clutter that is most folks’ desktops. So, yes, Hazel would help out here.

  21. mr_noodle

    Well, to play devil’s advocate here, do developers have too much of a hangup regarding having apps run outside of the “proper” directories? I’ve heard reports of some Apple apps not liking it when you move them but most of us can prevent such dependencies in our own apps. In the end, though, is it really a big deal? Are internet enabled DMGs/zips enough?

    As for getting some code together, Tom, thanks for the link to Ranier’s stuff. I’ll definitely check it out. Also, Joachim and others, if you are itching to write some code, go ahead. I don’t think anyone has a particular claim on writing this.

    Also, as I mentioned in a previous comment, Brian came up with the idea in chat to not prompt the user until they quit. This makes sense in terms of allowing the user to try the app before making the decision on whether they make it a more permanent fixture in their system. What are peoples’ thoughts on that?

  22. Chris Ryland

    One of the big plusses of Mac OS X is that apps can live anywhere you want, at least IMNSHO. So, no, no hangups for leaving apps anywhere the user pleases.

    In fact, I tend to download stuff I want to play with to the desktop, and run it from there for a while, until I’m sure it’s going to be part of my normal toolbox, at which point I’ll move it to either /Applications or ~/Applications.

  23. Michel Fortin

    All my apps are packaged in a zip file, and that’s the way I like apps I download to be packaged. Why should I need to perform two extra steps (copy to hard drive; eject then delete the disk image) when I could just move it where I want (or leave it on the desktop while I’m evaluating it)?

    About the multiple files argument, I’d say Safari handle things pretty well. When there is more than one file in the archive (or the internet-enabled disk image), it unpacks it as a folder. That’s still more convinient than a plain disk image because it saves you the eject and delete steps, and because moving things around is way faster than copying them.

    And your “do you want to install” nag when opening from the disk image would get into may way too: I usually launch it from there first to test it. Then, if/when I decide to keep it, I copy/move it elsewhere.

  24. David M. Converse

    Former Mac Genius here who has dealt with lots of unsophisticated users. Disk image distribution is a huge problem- many many switchers (especially) don’t understand how DIsk Images work. I’ve seen customers with 15 or 20 disk images all over their drive, multiple copies of Firefox, running everything off the disk images, etc. As a power user myself, i don’t really like installers since I understand what problems they can cause.

    If you distribute a disk image, you should know the disk image volume size and name. You could also put an invisible file someplace to test for.

    Copying to /Applications is a problem for non-admin users. You don’t want to put files in that user’s Applications folder either, that is just confusing.

  25. Carl Jonard

    I absolutely agree that disk images are a confusing waste of time.

    I’m a power user; been using Apples since before the Mac. Up until Mac OS X, things made sense; you downloaded a compressed file (usually a StuffIt archive) and decompressed it.

    Why did everybody start putting their applications on disk images? Can anyone explain the logic behind this? Instead of one application icon sitting on our desktop, we get a .dmg icon that has to be thrown away, a new window containing the application icon, and this quasi-file quasi-disk icon that has to be “ejected” even though it doesn’t really exist. And you can’t just move the application to your Applications folder, you have to “copy” it because the system thinks it’s on a separate disk! This is supposed to be neater?

    How is this an improvement? Honestly, what is the point?

  26. Chris Ryland

    @Carl: There have been at least two major rounds discussions on the macsb mailing list about zip vs dmg vs installers. I suggest you look at the archives for .

  27. Chris Ryland

    Whoops, url got eaten: http://tech.groups.yahoo.com/group/macsb/ .

  28. nate

    Okay, but you can’t title something “A Modest Proposal” and then mean it. You just can’t. Blame Jonathan Swift.

  29. Adam Luikart

    It seems like what you’d want to couple with this new installation method is a new type of disk image that behaves more like how zip archives are handled in the windows world. No visible disk image on the desktop, and no need to unmount once the window is closed – but something you could still attach hooks, background images, etc to.

    I love the idea of waiting until quitting the app to prompt the user. Is it possible to only have this prompt appear when a user explicitly asks to quit? Unless there’s a risk of losing data, I don’t like apps that require input from me when I’m trying to do something like log out or shut down my system.

    Seems like you’d want options to either:
    a) permanently install the app (copy it to a destination folder)
    b) quit without installing
    c) quit and move the disk image to the trash (after unmounting, of course)

    my gut feeling is that b) would be the default option.

  30. VidKid

    You know, if developers didn’t hide the Finder Sidebar on their DMG images, it would be a heck of a lot easier for the user to drag the application to their Applications folder in the first place…

    (pet peeve)

    V.

  31. Daniel Axelrod

    David M. Converse brings up a similar point to one I thought of when reading your proposal. How do we distinguish between ~/Applications and /Applications ?

    The hardest part here might be how you word the dialog box, because I’m guessing most users don’t know there are both a systemwide Applications folder and a per-user Applications folder.

    The simplest might be to just assume that everybody uses /Applications (if they don’t have permissions to write there, attempt to escalate permissions the same way the Finder does if you were to drag to /Applications) under the assumption that anyone who has learned to use ~/Applications can also learn to drag manually.

    All this is only going to work if we’re *very* consistent about how we do this from app to app, though.

  32. Keith

    I love disk images! They are handy in many, many ways. However, for application distribution they are confusing. Every one of my casual mac using friends gets confused by the disk image and ends up running the app off the disk image, which usually leads to the app behaving oddly. I even find disk images _inside_ the Applications folder!

    One of the most beautiful aspects of the Mac is that most apps are self contained and can be moved and run from nearly anywhere on your disk, not to mention uninstalled with a simple drag to Trash. I believe the “disk image install routine” is one of the primary hurdles for new users adopting 3rd party software.

    If you, as a developer, want to attract more new users, then you need to simplify the installation process. I believe this Modest Proposal would be great for when a user runs the app off a disk image, but perhaps it would be eaiser to simply remove the disk image from the average user interaction process. The internet enabled disk image does just that, and retains the features of a disk image (like the license agreement.) I’d say the zip file is an acceptable alternative as well when those features are not nessicary.

    As mentioned before, during the Mac OS 9 days, a user typically downloaded a StuffIt file and doulble clicked it. I believe the disk image distribution model was adopted by many developers during the early years of Mac OS X as a way to avoid the StuffIt format. I rarely come across StuffIt files anymore and, as a matter of fact, I don’t even have StuffIt Expander installed on my new laptop.

    Personally, I’m going to read more about internet enabled disk images. Hopefully they are easier to implement than adopting a new framework.

  33. Daniel Parks

    I frequently run applications off disk images. For instance, I downloaded Tables yesterday, and started it up off the disk image to see if I wanted to keep it.

    There is a significant usability problem with having applications install themselves in /Applications — namely that users will not see where the application has gone. Even if they are asked, “can we moves this to your Applications folder?”, they won’t get nearly as good a sense of what just happened. In addition, it’s kind of patronizing to users.

    In general, I (as a user) would prefer that applications used Internet-enabled DMGs or zip files so that they just appear on the desktop. No disks to unmount, no .dmgs to throw out. Easy.

    Packaging license agreements, release notes, etc. within the application bundle is also desirable —  what do you do with those files otherwise? I used to keep all the miscellaneous files that VLC came with in /Applications/VLC/, but eventually I realized I would never need those files again —  hell, I didn’t need them in the first place. Why make me think about it?

    This all seems to boil down to removing false choices (do I throw out this .dmg?) and avoiding surprises (where did that application I downloaded just go?).

  34. Simone Manganelli

    I have to agree with the other commentators. I’ve been using internet-enabled disk images for a while now, and it makes the whole running-from-a-disk-image-without-realizing-it a complete non-issue. It’s also been in the OS in Panther also, so it’ll work one major release back. Also as mentioned, it keeps the application in the location the user expects: the download folder. The user can then move the app wherever she wants.

    By the way, if you don’t like internet-enabled disk images, you can turn them off for your machine. See this hint: http://www.macosxhints.com/article.php?story=20040210141030190&query=internet-enabled . For advanced users who know what disk images are, this preference might be for them. I’ve been using this preference for years so that I don’t have to fish disk images out of the trash.

  35. Rainer Brockerhoff

    Thanks, Tom, for referring to PathProps (http://www.brockerhoff.net/src/index.html) first. I came in a little late here. I should point out that if the user has FileVault on anything copied to ~/Applications will also be running from a disk image, so it would probably be a good idea to also check if the image is read-only, or isn’t mounted at the home folder path.
    FWIW, I hate Internet-enabled disk images… my download folder is too crowded to find stuff that appears magically in it, and none of my users complain about standard disk images.

  36. Robert Forsyth

    Can you change the icon of the packager to match your application?
    Can the last part of the package script run the application, after it has been installed?

    Perhaps a template document could be left on the desktop, to get the user started.

    Surely, if a user installs/runs, the app goes in ~/Applications, and if root installs, then the app goes in /Applications (or ~/Applications subject to licensing).

    Does Packager give the options to Install/Compress/Delete like in NEXTSTEP days?

  37. David Paul Robinson

    Interesting idea. Let’s face it – the whole DMG drag it yourself to your Apps directory is not the most intuitive thing for users. Neat yes. Obvious, no.

  38. Fred Priese

    Arclite and I chatted about this not long ago. I just posted an entry in my blog with some more thought on it. I am going with a variant of this. It will be a while before I do it though, but when I do I will seriously consider a welcome splash that will include this option (I did not reference this splash in my post.)

    The option will appear in the app menu if the app is not in the Apps folder or the ~/Apps folder. If the user wants to see the menu item, then they will be able to turn it on from the Preferences. Other options will be in the “installer” sheet too. Such as “uninstall” (or remove the app instance that is running, the prefs and the data file, as well as an option to back up prefs and data file and to reload backed-up prefs and data files.

  39. David M. Converse

    Internet-enabled disk images suck for those of us who like to archive the downloaded .dmg. A few times I’ve downloaded a disk image, double-clicked, and then WTF! How do I copy it to my Archives folder to save when it’s been deleted? DUH.

    Don’t EVER assume what the end-user wants to do with your application. If at all possible, make it work no matter what the situation. Admin user, power user, testing an app, Net-booted off a server, network or portable home directory, non-admin user, locked disk, unpatched systems, etc etc.

    Remember that a lot of “regular” users don’t read or understand directions, don’t have updated systems (or even know what computer or OS they are running), don’t make backups, can’t remember their passwords, don’t know what an applications folder is, don’t understand disk images, and yet expect it just to work.

    How about a startup check to see if the app is running off a disk image. Ask the user for permission to copy your app to their /Applications folder and unmount the .dmg. Don’t put it in ~/Applications, don’t automatically add an icon to the Dock, have a “don’t ask again” checkbox. Call it a built-in “mini-installer.”

  40. Michael Z.

    How about if ~/Applications already exists, then offer to install the app “for this user only?” Since this user has created the folder, there’s a good chance he’s using it. I would be grateful for this behaviour.

  41. ssp

    I completely fail to see the point of this. The proverbial standard user will run Safari in the default setup. Thus, you just serve an internet enabled disk image or a zip archive (depending on whether you value time or bandwidth higher) and magically your application will appear on their Desktop or whatever their download folder is. Being a good Mac application, it will of course work from there (although Cocoa and the help system seem to be a bit buggy when a running application is moved) and everybody is happy.

    If your user wants the application in some special folder, he can put it there. If he doesn’t, there’s no need to do that. Those disk images and first run questions are just an unnecessary hassle.

  42. simon

    Most of my application writing experience is in Windows, so please bear with me.

    If you are distributing your App via CD, why not include the Drag and Drop App Bundle, as well as a installer which is set to Auto-Run when the disk is inserted. When the script runs, simply check if the user has installed the program, then ask if they would like to A) install it themselves or B) have you install it for them.

  43. Simone Manganelli

    David:

    As I said, the disk image is put in the trash, so if you want to archive an internet-enabled disk image, just fish it out of the trash! Or, as I also said, you can disable special treatment of internet-enabled disk images by entering the Terminal command at this link: http://www.macosxhints.com/article.php?story=20040210141030190

    This is a complete non-issue and as ssp said, those first-run questions are completely superfluous.

  44. David Wareing

    If it’s not an issue for your customers, fine, no problem.

    But, it _is_ an issue for my customers, many of whom are casual users. That is, they represent the average Mac consumer: they are not power users, they most certainly don’t frequent blogs such as this one and they often do not understand concepts such as “Disk Images”. (And who can blame them?)

    We need to look at these issues from our customer’s (and prospective customer’s) perspectives. There is a huge gulf in experience and expectation between us as a minority of developers, and the greater Mac user base. Try to think back to when you were first starting out, before you knew about things like volumes and paths and directories. Back to when you thought of Java as a place instead of a language. Because that’s where the bulk of Mac users are, and that goes doubly for all the new “switchers”.

    Anything we can do to make life easier for this huge market, I’m all for it. Just because we know what a Disk Image is doesn’t mean our customers should have to.

  45. ssp

    There you say it David.

    If there is no need for your customers to know about disk images – and I agree with you on that – then you shouldn’t give them disk images. Problem solved.

  46. Brian

    Ditto on .zip. IIRC before 10.3 disk images were “required” because there was no reliable built-in unarchiver. (And Stuffit is just wrong). But now that Safari and Finder handle .zips transparently, there’s no benefit at all to disk images that I can see.

  47. Jay

    Isn’t there a way to eject the diskImage after the user clicks on the app, and subsequently the app is copied in their HD:applications folder?

    User first double-clicks app:
    App tests location:

    App copies over to the Apps folder:
    App folder opens to reveal file:
    Diskimage is ejected.

    j

  48. J Nozzi

    I personally like the idea of disk images, but I can see how zip files would be more alluring … I’m just not ready to take that plunge yet. For disk images, though, I take a two-pronged approach:

    First, the disk image I use has the now-fairly-standard background image with a box around the app icon and an arrow pointing to the Applications folder, with a prominent bar at the bottom that tells the user to drag the application into their Applications folder to install. This cleared up many of the typical support questions I’d get.

    Second, I added, on the download page, step-by-step installation instructions (with pictures for each step), demonstrating the dragging and dropping, mounting and ejecting, etc. This has reduced the number of “your app deleted itself – I paid for it – what the h***?!” type of support requests from about twice a month to about once every few months.

    For those few individuals who still have trouble, I generally send a canned response explaining the concept of disk images and repeating the installation instructions. They’re usually grateful for the new knowledge (but occasionally you always run across an individual who is quite simply angry at the world and is offended by receiving the instructions s/he asked for). I actually had one customer accuse my FAQ pages of condescending him (a first for me, actually), and referred to me as “His Majesty”. That was somewhat amusing … but I digress.

    My point is: Explain things thoroughly, explain them often. Use pictures. Give references to educational resources. Don’t worry about the angry, egocentric types; most people are grateful for the extra help.

  49. adrian

    I’m a switcher. I love disk images, and I’d hate to see them go.

  50. Alex Gordon

    You know, I was just thinking about this the other day. My solution is to provide a lightweight homemade installer that just copies the app into /Applications and then launches it. Not a full blown installer pkg, just a small app.

    A windows user recently tried out an alpha of my app. He may be new to OS X but he’s not new to computers (he a windows programmer), and he did have trouble with the concept of a disk image and “installing” my app.

    Also, the process of installing via disk image is quite messy:
    1) Double click dmg file to mount
    2) Click on mounted image in finder (is this done automatically)
    3) Open a new finder window with /Applications (if there is no alias in image)
    4) Alt-drag app to /Applications finder window
    5) Eject image
    6) Delete dmg
    7) Go back to /Applications window
    8) Double click your new .app

    That’s too much.

    (I personally have /Applications in my dock but it’s not default so I assume most people don’t.)

  51. Michael Ströck

    We just ship our product (the open source newsreader Vienna) as .zip-file now. I really don’t get what disk images are supposed to offer. I was happy to see that Panic’s new Coda, a pretty high profile app, is shipped in a plain .zip.

  52. Stephanie

    I’m a complete novice at using a mac. I have an imac and for instance, the reason i found this is because I am trying to upgrade my photoshop from 3 to 4 and I have no idea if I did it, or how to do it. lol It is on a CD, I put it in there, then an image of a dvd appeared on my desk top, says bundle dvd… so I clicked it, inside are several things one says “install” so naturally I double clicked it… it seemed to do something but I cannot find the program, and I have no idea if it did anything or not.

    haha so, I search for info… I think the real problem is just people switching like me from pcs to macs. It’s not that pc’s are intuitive, they’re not, but more people are using them, so more people know how to. I figure I’ll learn.. eventually.

  53. CptAnonymous

    Just to confirm you’re anecdotal evidence, I work on a very busy Genius bar in an Apple Retail store and yes, there are many, many people who run apps straight from the disk image. Skype seems to be the most common app for this, probably because it is the most popular app that doesn’t use an installer package.
    It does seem very easy to simply drag and drop an app into the app folder, and it’s easy to scoff at people who can’t/don’t do so, but if you approach this from the point of view of someone who simply does not care 1tiny bit about even the smallest detail about how computers work, and has a busy life and needs to make a Skype call then it’s easy to see how, once presented with the app icon this could come about.


Leave a Reply



Back to top