loginItems によって実行される xpcservices を使用して、os x アプリケーションのプロジェクトを作成します。つまり、サービスはアプリのパス {APP_NAME}.app/Contents/Library/LoginItems に作成され、サービスの実行を担当するのはメイン アプリです。
NSXPCConnection *connection = [[NSXPCConnection alloc] initWithLoginItemName:@"{SERVICE_NAME}.app" error:&error];
インストールしたすべてのファイルを削除するために、アンインストーラーを作成しました。サービスを削除する必要があります。私がそれに使用したコマンド:
launchctl remove SERVICE_NAME
これは、ターミナルから実行すると正常に動作しますが、スクリプトから実行すると、「アクティビティ モニター」からサービスが削除されますが、サービスはまだステータス -5 の launchctl リストにあります。したがって、新しいバージョンをインストールすると、インストールされた以前のバージョンが使用されます。
スクリプトを xcode から実行しますNSTask
。エラーはありません。それはスクリプトがすべきことをします。管理者権限も設定しました:
/usr/bin/osascript -e 'do shell script \"SCRIPT_NAME args 2>&1 etc\" with administrator privileges'
ターミナルで行ったように削除しないのはなぜですか?
ps:Xcodeから実行すると機能します(アプリがリリースモードであっても)