1

他のアプリケーションにサービス メニューを提供する OSX アプリケーションがあります。これは今のところ問題なく動作し、ユーザーがアプリをインストールしてログアウトし、再度ログインすると、メニューがアクティブになり、利用できるようになります (同様の投稿を参照) 。

ターミナルを開いて/System/Library/CoreServices/pbsを実行することにより、サービスメニューエージェント(pbs)をトリガーして変更されたサービスをスキャンするときに、ログアウトして再度ログインする方法は廃止されていることを知っています(これは、新しいアプリケーションは一度でも起動されます)

そこで、インストール後のスクリプトとして「pbs」を実行するインストーラー (.pkg) を提供したいと思います。驚くべきことに、インストール後に "bps" を実行することは、アプリケーションが以前に起動された場合にのみ機能します。/bin/sh

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

残念ながら、(アプリケーション固有の理由により) インストーラーからアプリケーションを直接起動したくありません。インストール後のスクリプトがターミナルと異なる動作をする理由を知っている人はいますか?

4

2 に答える 2

0

最終的には、回避策として、アプリケーションを非表示で起動し、実行する前に再度停止しますpbs。より良い解決策を引き続き楽しみにしています。

于 2012-10-12T15:07:06.883 に答える
0

インストーラーが必要とする権限によっては、インストール後のスクリプトが root ユーザーとして実行される場合があります。試す:

sleep 3
su -l "${USER}" -c "open /Applications/MyApp.app"
sleep 3
su -l "${USER}" -c "/System/Library/CoreServices/pbs"
exit 0
于 2012-10-07T14:00:49.897 に答える