Mac OS - добавить приложение в автозапуск с помощью launchctl - PullRequest
0 голосов
/ 31 августа 2011

Я могу запустить приложение с launchctl следующим образом: launchctl представить -l имя_программы - открыть -g -b com.company.ProgramName, и оно прекрасно работает!Я могу убить приложение, и оно будет перезапущено снова, даже если произойдет сбой.

Но когда я выхожу из системы или перезагружаюсь Mac, мой процесс больше не запускается.Или, в некоторых случаях, он запускается не с именем ProgramName (которое является именем моего приложения), а с именем исполняемого файла в ProgramName.app/Contents/MacOS/program_name

Такая ситуация с файлами plist.Я запускаю команду launchctl -w / Users / my_username / Library / LaunchAgents и процесс работает нормально!Но после перезапуска я не вижу его.

Я предпочитаю первый способ загрузки процессов, какие-либо предложения, почему процесс не загружается автоматически после перезагрузки?

1 Ответ

0 голосов
/ 12 сентября 2011

Я считаю, что вам нужно установить "RunAtLoad" в "true", чтобы оно запускало ваше приложение, когда пользователь входит в систему.

Но нет способа установить RunAtLoad из командной строки при использовании "submit",По крайней мере, не в той версии launchctl.c, которую я проверил онлайн.

Похоже, вам нужно создать файл .plist с "load" вместо использования "submit".

Что еще более раздражает, так это то, что "load" в launchctl не может принимать stdin в качестве входных данных для имени файла .plist, либо без аргумента, либо с именем "-".Позор, возможно, разработчики launchctl не из фона Unix.Это означает, что вы вынуждены засорять свой недолговечный файл где-то в файловой системе, по крайней мере, до тех пор, пока он не будет загружен.

...