I finally managed to configure launchd on Mac OS X to launch an old project of mine, a news server written in C#, at boot time. The original code was written for .NET 1.1 and MSDE 2000 on Windows XP, and the current version runs on Mono 1.2.6_5 with MySQL 5.0.45 on Mac OS X Leopard.
Here’s what the .plist file for launchd looks like (it is actually stored in /Library/LaunchDaemons):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>net.wmaus.nomad</string> <key>ProgramArguments</key> <array> <string>/usr/bin/mono</string> <string>/Users/Winni/Main.exe</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
I use the filename net.wmaus.nomad.plist, and changed its owner via
sudo chown root /Library/LaunchDaemons/net.wmaus.nomad.plist
Then I loaded my daemon via
sudo launchctl load /Library/LaunchDaemons/net.wmaus.nomad.plist
After a reboot, I was able to connect to my NNTP daemon via Telnet:
telnet localhost 119 200 Welcome to the Digital Nomad News Server (GPL version).
YES! 🙂
For the record: I can now also work the same magic with a daemon written in BlitzMax.