[mojosetup] Cocoa GUI...

Ryan C. Gordon icculus at icculus.org
Thu May 7 03:08:37 EDT 2009


This work is incomplete, but I just pushed it to my public hg 
repository, so here goes:

Cocoa GUI support! Now you can have your installers run on Mac OS X.


Here were the changes to the Duke3D example, for how to build a Mac 
application:

http://hg.icculus.org/icculus/mojosetup/diff/560554595141/examples/duke3d/make.sh

...as you can see, it's not a self-extracting .zip file. While it could 
probably be built as such with some effort, Macs expect to hide things 
like application metadata and icons behind a real directory structure 
that looks like a single icon. The Cocoa UI requires this, as Cocoa 
wants to pull that metadata from a real filesystem. Shipping Mac apps 
make this into a single file for download by packing it in a .dmg disk 
image. There are standard command line tools for this, but the make.sh 
doesn't do it.

MojoSetup should be able to support OS releases back to OS X 10.3 (and 
much earlier if we clean up a few details), and should work on both 
PowerPC and Intel processors.

Things that are still not working:
- The UI looks like ass. We should fix this in both the Cocoa and GTK+ 
targets, but I am just simply not a UI person. MojoSetup itself only 
cares about telling the UI "we're doing this part of the install now" or 
"pop up a yes/no prompt" or whatever, and doesn't enforce much about 
what the UI should actually _look_ like. Anyone who's good at this: 
please help!

- There are pages that aren't complete (like the destination and options 
pages). It runs, but you couldn't seriously ship an installer with this yet.

- There were a handful of new strings to localize for the Mac menu 
items. I'll post these to Launchpad soon.

- Bending Cocoa to my will was painful and scary, since MojoSetup 
expects to pump the event queue instead of having the event queue tell 
us when to continue on. If something looks wrong, it might be. If 
something looks nasty, it definitely is.

- CMake thinks Objective-C files are C++, and g++ just happens to 
compile my code right. Maybe the CMake Xcode target gets this right?

--ryan.



More information about the mojosetup mailing list