Вы можете зарегистрировать любое приложение с помощью launched
для запуска в качестве пользовательского агента.
В этом примере приложение с именем «При запуске» будет запускаться всякий раз, когда пользователь входит в систему.
Шаг 1
Вам нужно будет создать файл «launchd.plist», чтобы описать службу. В этом примере вы создаете файл с именем com.yourdomain.onstartup.plist
со следующим содержимым:
<?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.yourdomain.onstartup</string>
<key>LimitLoadToSessionType</key>
<string>Aqua</string>
<key>Program</key>
<string>/Applications/On Startup.app/Contents/MacOS/On Startup</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Ключевым моментом является свойство RunAtLoad
, которое указывает launchd запускать процесс при загрузке сеанса пользователя.
(Примечание: вы можете создать этот файл, создав словарь и записав его в виде списка свойств.)
Шаг 2:
Установите этот файл в ~/Library/LaunchAgents
. Здесь launchd ищет файлы конфигурации запуска для каждого пользователя.
Шаг 3:
Выполните команду
launchctl bootstrap ~/Library/LaunchAgents/com.yourdomain.onstartup.plist
или просто дождитесь перезагрузки системы.
Команда bootstrap
сообщает launchd, что новую службу необходимо зарегистрировать и активировать немедленно, но все файлы в LaunchAgents
будут зарегистрированы автоматически при следующем входе пользователя в систему.
Если вам нужно, чтобы ваше приложение работало все время, рассмотрите возможность добавления свойства KeepAlive
. И есть около миллиарда других вариантов.
Шаг 4:
Чтобы ваше приложение больше не запускалось при входе в систему, удалите файл com.yourdomain.onstartup.plist
.
Если вы установили свойство KeepAlive
, вы также захотите вызвать команду launchctl bootout gui/501/com.yourdomain.onstartup
, чтобы остановить службу и немедленно отменить ее регистрацию. (Примечание: это убьет ваше приложение.)
Видеть
man launchd.plist
man launchctl
Демоны и службы macOS
person
James Bucanek
schedule
25.05.2019
LSSharedFileList
для установки запуска при входе в систему; Я только что протестировал его, и он хорошо работает в моей системе Mojave 10.14.4. - person TheNextman   schedule 25.05.2019