Вот варианты, с которыми я исследовал и экспериментировал:
Вариант 1: использовать элементы входа
Это метод, который я использовал. Это очень легко сделать из файла bash, добавив следующую строку в ваш постлет.
defaults write /Library/Preferences/loginwindow AutoLaunchedApplicationDictionary -array-add '{Path="/Applications/Your Application.app";}'
Примечание. Вам даже не нужно беспокоиться о добавлении дубликатов, если вы переустанавливаете приложение. Процесс loginwindow удаляет дубликаты, когда читает их.
Я проверял это на 10,5, 10,6 и 10,7
@ noa говорит, что это не работает с горным львом (10.8), лично не подтверждено.
Вариант 2: LaunchAgent
Уникальные последствия использования Launch Agent:
- Ваше приложение не отображается в списке элементов входа, поэтому
пользователь действительно должен знать, что он делает, чтобы избавиться от него
- Пользователь не может завершить процесс ваших приложений без запуска:
launchctl unload /Library/LaunchAgents/com.your.package.plist
Вот некоторый код, который вы можете использовать для создания агента запуска в вашем bash-файле:
cat > /Library/LaunchAgents/com.your.application.agent.plist << EOT
<?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>Label</key>
<string>com.your.application.agent</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Your Application.app/Contents/MacOS/Your Application</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOT
Вариант 3: скомпилировать код Obj-c в двоичный файл
Я никогда не заканчивал этот подход. По-видимому, это подход, который использует Novell. По сути, вы бы создали фундаментальное приложение, которое вызывает библиотеки, на которые ссылается это решение:
Как открыть приложение при входе в систему?
Другое
Не пробовал, но согласно этому посту, если вы хотите, чтобы он работал на тигре, вам нужно использовать AppleScript ..? Я не могу подтвердить или опровергнуть это, но подумал, что эта ссылка может быть актуальной.
Редактирование элементов входа в Mac OS X в Objective-C с помощью AppleScript