Thoughts on application deployment
I remember the early days/years of Mac OS X where Apple supplied the Installer.app and probably every software out there used it to install itself in the system. Then some day i noticed that more and more apps ship as a dmg, which was a big confusing in the beginning. After the years I now arrived to a point where I absolutely dislike installers.
Installers have a big downside: they take too long. Even though they’re really easy to use one has to click several times here and there, agree to agreements and even enter a password in most cases. Having to enter a password is a total no go on my side and i usually end up looking up where the files are copied to.
Disc images on the other hand download, maybe show an agreement, and then mount. The user just has to drag and drop the app to some folder he likes or by default just onto the application folder icon that is usually linked just next to the application icon. The user unmounts the image and is done installing. The disk images also have a very nice background pictures which makes it even more fun to install apps. Using a tool like FileStorm even makes it as easy as it might get to create disc images that look good. (Thanks to this post I just notice that it got updated just some days ago!!)
Some developers also deploy in a zip file, or in any other compressed file. The usage is as easy as with disc images: unpack and copy. But there’s a tiny little detail here that always drives me mad when downloading an app that ships as an archive: I always end up searching for the decompressed file. Thing is my download folder is pretty damn huge as I tend to not clean it up, so with a lot of archives and uncompressed files in that folder it’s pretty hard to guess how the files are called that just unpacked. Disc images open the window with the just mounted image right away and it’s totally easy to find the single one file that needs to be copied.
While disc images seem to be a perfect winner here, there’s a pretty annoying issue with Sparkle and disk images: if the disc image has a disclaimer it wouldn’t work with Sparkle. This little detail is really annoying unless one either changes to a disc image without agreement or to an archive like zip.
Uninstalling an Application is usually also easier if one moved just the application to the applications folder. Uninstalling an application that installed via installer is a bit tricky unless on knows which files were installed to which location.
I for myself usually think twice before installing an app using the installer (except if the app is from Apple 😉 ). If I download an application as archive I’m typically a bit annoyed to search for the decompressed file. Fortunately enough the disc images are used by most apps so it’s typically fun to install most apps!
I think for developers its probably the best to ship a disc image and provide a zip file for sparkle. Only if the application goes a bit deeper into the system and has to install files to somewhere other than the application folder, it should use an installer. What do you think?
Karsten
February 22nd, 2008 at 19:09
Starting with Leopard, Apple has shifted its guidelines and now recommends using Installer even for applications. Likely the goal is to move the ecosystem to Installer in order to have a usable Installer database on the system for uninstalling applications.
It should be noted Installer is far more powerful on Leopard than before. There’s a new flat package format that’s suitable for direct downloads, better and easier scripting, home folder or system wide installs, upgrade and downloadable packages (e.g. the user only downloads a metapackage, selects what he or she wants to install, then Installer grabs what is needed from the tubes).
I agree the experience of a carefully crafted disk image is probably a bit better than a carefully crafted Installer package. I’m not sure if that trumps a usable Installer database.
February 22nd, 2008 at 21:48
I doubt there is a real advantage for using an Installer when none is needed. It would become pretty dangerous, even with an installer database to have every app use installers. Developers may start installing Frameworks outside the application package (with the new metapackages doing that may even save some bandwidth to the developer, which makes the risk even more plausible) and that may be the beginning of the DLL hell we all want to avoid.
Even if applications would remain self-contained (everything in its package) the installer would be one more step between you and your work and sincerely I don’t see why an Installer Database would bring joy to the user.
March 20th, 2008 at 18:14
isn’t sparkle’s usage to the discretion of the developer. Sparkle is an UPDATING framework isn’t it? If you’ve already deployed the app with the disclaimer then the updates shouldn’t require the same disclaimer.
March 20th, 2008 at 18:18
sure thing, but always creating two disc images is a bit of a pain. If diskutil could just decompress those disc images with a declaimer, then the user wouldn’t see it again anyway. But somehow this is not possible, so one either creates two disc images or one disc image for deployment and one zip for updating.
Karsten