[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