What is the best way in Cocoa (and Mac OS X) to schedule a program to be run:

* when the user logs in.
* at certain times of the day (for example: 12:00 noon).
* at certain time intervals (for example: every two hours).

Besides scheduling, it should also be easy to un-schedule the program and not cause errors should the user delete the application.

Essentially the program is a satellite command-line executable placed next to the main application's file within the same `.app` bundle. The program's purpose is to do some background data updates in the user's home directory (within `~/Library/Application Support/MyApp`.)

Is `crontab` a good candidate for this? The `man` page for `crontab` said that the functionality has been absorbed to `launchctl`, but I can't seem to find how to schedule specific times to run the utility.

Thanks.