Introducing ChocTop

ChocTop packages and deploys any Cocoa application in a custom DMG, with generated Sparkle XML support.

Screencast

Download QuickTime Movie from Vimeo (275Mb)

Instructions

ChocTop is a command-line installer plus rake tasks (watch the screencast if this is confusing), bundled as a RubyGem:

sudo gem install choctop
install_choctop path/to/xcode/project

Your project is given a Rakefile, a release_notes.txt and a release_notes_template.html.erb

You edit the Rakefile with your custom DMG asset information and/or remote file locations for the rsync upload process. CommitChat’s Rakefile includes:

ChocTop::Configuration.new do |s|
  s.host     = 'commitchat.com'
  s.base_url = 'http://commitchat.com/secret_path_to_beta'
  s.remote_dir = '/opt/apps/commitchat/secret_path_to_beta'
  
  s.background_file = "dmgbg.png"
  s.volume_icon = 'VolumeIcon.icns'
  s.app_icon_position = [106, 83]
  s.applications_icon_position = [422, 83]
end

You also need to add Sparkle to your project, and the Info.plist properties such as SUFeedURL.

To generate a new DMG, run:

rake dmg

To generate a new DMG and push it up to the remote server, and subsequently have users automatically start downloading the latest + greatest automatically via Sparkle:

rake dmg upload

I’m very sorry. It is perhaps too easy. It probably should be harder to make it seem more useful.

The very cool part is that when the DMG is being designed + constructed from your Rakefile settings you actually can see it happening on the screen. The AppleScript that is executed actually operates upon the DMG whilst it is mounted, before unmounting it, compressing and read-only-ifying it. Its pretty to watch.

More information