Sit, Ubu, Sit! Good Dog

Note to Macintosh developer community:

The days of the .sit file have passed.

StuffIt Expander isn’t even included by default anymore on new Mac OS X 10.4 “Tiger” systems. You have to download it separately.

Now, I will admit, this is easier than it was even just a year or two ago. Allume Systems (née Aladdin Systems) used to make it incredibly difficult on their Web site to even navigate to the free Expander download. And the download was in fact not Expander, but rather StuffIt “Standard,” which included several additional shareware products most people didn’t want. The philosophy seemed to be, “If we just piss off our users enough, maybe they’ll buy something from us!” Ugh.

When I just tried to download StuffIt Expander 10, however, I was able to get to the download in two clicks, and the resulting installation was Expander alone. So that has improved.

But you’re still requiring your users to find and download a third-party application just to get to your product.

If your product is Mac OS X 10.3 “Panther” and up, the solution is easy: use the operating system’s built-in “Create Archive” contextual menu in the Finder to build a .zip archive of the files you want.

Now, if you’d used the command-line zip utility on Mac OS X 10.2 “Jaguar” or earlier, you would’ve found that it ignored Mac-only filesystem attributes like resource forks. “Create Archive” is smarter than that. If you double-click such an archive in the Finder, it will extract the archive contents, resource forks and all.

The downside? “Create Archive” uses a custom directory layout (presumably in order to organize the extra bits) which will look strange if you attempt to open that archive with a more traditional command-line zip utility, even the zip utility at /usr/bin/unzip on that same OS X 10.4 “Tiger” box where you made the archive in the first place! (Not to mention the zip utility on 10.2 and earlier.)

This means that these .zip files, which by their suffix look nice ‘n’ cross-platform, really aren’t. They’re still primarily for delivering content to Mac OS X users. Your sole benefit is that the archive will be double-clickable on 10.3 and higher, without additional downloads.

If you need to support Mac OS X 10.2, well…I hear StuffIt Expander is easier to download than it used to be. Oops! You have to go back to StuffIt “Standard” 8.0.2 to get Mac OS X 10.2 support. It looks like they require you to join their mailing list just to download the damn thing. Tough luck….

My advice? Make a .dmg file.

4 comments

  1. Michel Fortin

    My prefered method is to make sure the application doesn’t need ressource fork (or any other special attribute), then make a plain zip file using the command line or any other tool that won’t try to encode these.

    The second best method is to make an internet-enabled dmg that will extract and copy it’s content to the download folder automatically.

    But I find most disk image to be confusing to the user who then, in order to keep the file, has to copy the content somewhere, unmount the disk, and then erase the image file. Compare that with Safari processing of zip or internet-enabled dmg which copy the content to the desktop and put the archive in the trash.

  2. Chris Hanson

    You can also use /usr/bin/ditto to create a Finder-style zip archive. This is useful for integrating generation of an archive into your build script. You can use xcodebuild install to generate a distribution root, /Developer/Tools/packagemaker to generate an installer package (if necessary), and /usr/bin/ditto to zip it up for single-file distribution.

  3. Bill Humphries

    This situation lead to learning how to script StuffitPro (you can use it to re-compress existing archives,) placing a mod_rewrite hack in a server’s configuration to map .sit to .zip, and writing an XSL transform to update 1,000+ XML files with references to .sit files.