Запустите приложение пользователя с графическим интерфейсом от Launch Daemon - PullRequest
1 голос
/ 19 сентября 2011

У меня есть Launch Daemon, который запускается как root вне контекста пользователя.Этот демон всегда работает и контролирует сервер.Иногда мой демон получает команду от сервера, которая сообщает что-то для пользователя.Очевидно, что я не могу сделать это с помощью Launch Daemon, поскольку он не работает в среде «WindowsServer», поэтому другой вариант - создать отдельный процесс для каждого пользователя, у которого есть доступ для отображения графического интерфейса.

Один из вариантов, который у меня есть, - это запустить Launch Agent и заставить ОС запустить его для меня.Затем агент запуска может связаться с демоном запуска, чтобы определить, когда что-то нужно отображать.

Проблема заключается в следующем: иногда сервер будет предоставлять обновления реальных двоичных файлов.Таким образом, сервер отправит Launch Daemon серию файлов, которые, как ожидается, будут скопированы поверх существующих файлов.Если у меня запущен Launch Agent, как я могу выключить его, чтобы сам агент мог быть обновлен?Аналогично, как я могу запустить Агента для резервного копирования после обновления?

1 Ответ

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

Не говоря о манжете, я бы сказал, что вы должны организовать для своего демона запрос на запуск агента запуска по требованию так же, как вы бы организовали его запуск по требованию. Как только вы узнаете, что агент вышел, ваш демон сможет продолжить обновление.

Обратите внимание, что ваш агент, вероятно, не должен жить вечно, и он определенно не должен опрашивать демона на работу. Вместо этого вам следует настроить его таким образом, чтобы при попытке подключения демона к агенту launchd запускал агент. Это можно сделать, подключив демон к доменному сокету Unix, зарегистрированному от имени агента, например, launchd.

Вы могли бы лучше посмотреть, как Google UpdateEngine обрабатывает обновления программного обеспечения. Я верю, что у него тоже есть демон запуска, который выполняет обновления приложения. Поскольку это уже работает на многих компьютерах, решение проблем с обновлением программного обеспечения является проверенным. ( Решение Sparkle также полностью проверено, но оно основано на взаимодействии с пользователем, которого вы, похоже, хотите избежать.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...