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