Mac OS X: обновление служебных меню работает в Терминале, но не в сценарии после установки.

У меня есть приложение OSX, предоставляющее сервисное меню другим приложениям. Пока это работает нормально, меню активировано и доступно после того, как пользователь установил приложение и вышел из системы и снова вошел в нее. (см. аналогичный пост)

Я знаю, что функция выхода и входа устарела при запуске агента сервисного меню (pbs) для сканирования измененных служб путем открытия терминала и запуска /System/Library/CoreServices/pbs (это также работает без нового приложение запускалось хоть раз)

Поэтому я хотел бы предоставить установщик (.pkg), который запускает "pbs" в качестве сценария после установки. Удивительно, но запуск «bps» после установки работает только в том случае, если приложение было запущено до, например: #! /бин/ш

sleep 3
open /Applications/MyApp.app
sleep 3
/System/Library/CoreServices/pbs
exit 0

К сожалению, (из-за особых причин приложения) я не хочу запускать свое приложение непосредственно из установщика. Кто-нибудь знает, почему скрипты после установки ведут себя иначе, чем Терминал?


person seb    schedule 28.09.2012    source источник


Ответы (2)


В зависимости от прав, которые требуются установщику, сценарии после установки могут запускаться от имени пользователя root. Пытаться:

sleep 3
su -l "${USER}" -c "open /Applications/MyApp.app"
sleep 3
su -l "${USER}" -c "/System/Library/CoreServices/pbs"
exit 0
person catlan    schedule 07.10.2012
comment
Спасибо за ответ. К сожалению, запуск pbs от имени пользователя в сценарии после установки по-прежнему не работает, если только приложение не было запущено ранее. - person seb; 12.10.2012

В конце концов, в качестве обходного пути, я собираюсь запустить свое приложение скрыто и снова остановить его перед запуском pbs. Все еще жду лучшего решения.

person seb    schedule 12.10.2012