On Mar 30, 2011, at 11:36 AM, Greg Neagle wrote:
preinstall:
#!/bin/bash
LAUNCHD=/Library/LaunchDaemons/edu.caltech.autonomy.foo.plist
if [ -e "$LAUNCHD" ]; then
launchctl unload -w "$LAUNCHD"
fi
This unloads the launchd job defined in /Library/LaunchDaemons/edu.caltech.autonomy.foo.plist only if it already exists. This is useful for reinstalls and installs of new versions of your software. The file does not need to exist.
Here you should be checking if the target volume is '/'. This is simple in this case, just replace the appropriate line with this:
if [ -e "$LAUNCHD" ] && [ "$3" == "/" ]; then
And secondarily I don't understand why you would use the '-w' flag. That is going to have the effect of causing this to never get launched (automatically) again. And remember on 10.6 this flag has moved to separate file. It happens later you are also using the 'load -w', so this will get undone. But it is not needed, and could lead to unexpected side-effects in odd cases.
postinstall:
#!/bin/bash
launchctl load -w /Library/LaunchDaemons/edu.caltech.autonomy.foo.plist
Since this is a postinstall script, the payload has been installed, which presumably includes your launchd plist.
This script simply tells launchd to load the plist.
Same change for this, but you only need to test if $3 is what you expect. I also don't think you need the '-w' here either. That would mess with the settings the user may have made.
So I don't see why you need the plist file anywhere other than your package payload.
Agreed.