Mac AppStore に提出するアプリを作成しました。SMJobBless API を使用してヘルパー ツールをインストールしていたため、何らかの理由で拒否されました。
このヘルパー ツールはアプリのほとんどの機能に必要ないため、削除しました。私のアプリケーションは承認されました。
そのため、現在、インターネットでダウンロードできるヘルパー ツールのスタンドアロン インストーラーをパッケージ化しています。
ただし、ファイルを所定の場所にインストールした後、ヘルパー ツールは実行を拒否します...ヘルパー ツールには、/Library/LaunchDaemons に入る plist と、/Library/PrivilegedHelperTools に入るバイナリがあります。
SMJobBless は、ファイルを所定の場所に移動するだけでなく、何をしているのでしょうか。自分のツールを launchctl に登録していますか? 手動でlaunchctlに追加するためにさまざまなことを試しましたが、成功しませんでした.ヘルパーツールは、チェックイン要求を要求した後に終了します。
ヘルパー ツールには次のものが含まれています。
@autoreleasepool {
launch_data_t req = launch_data_new_string(LAUNCH_KEY_CHECKIN);
launch_data_t resp = launch_msg(req); // AT THIS POINT, RESP IS NULL. Why?
launch_data_t machData = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_MACHSERVICES);
launch_data_t machPData = launch_data_dict_lookup(machData, [kHelperBundleName UTF8String]);
mach_port_t mp = launch_data_get_machport(machPData);
launch_data_free (resp);
launch_data_free (req);
// Prepare connexion.
NSMachPort *rp = [[NSMachPort alloc] initWithMachPort:mp];
PrivilegedHelperProxy
*phProxy = [[[PrivilegedHelperProxy alloc] init] autorelease];
NSConnection *con = [NSConnection connectionWithReceivePort:rp sendPort:nil];
[rp release];
[con setRootObject:phProxy];
[[NSRunLoop currentRunLoop] run];
}
return EXIT_SUCCESS;
このサービスは、SMJobBless API 経由でインストールされたときに問題なく実行され、ルート プロキシは APP 内からアクセスできました...
では、SMJobBless API の呼び出しと同様に、このヘルパー ツールを適切に機能させるために、インストーラーに必要な手順は何でしょうか?
ありがとう、ピエール。