3

このチュートリアルを使用して、ログイン項目をアプリケーションに追加しています。そのほとんどは期待どおりに機能します。サンドボックス化されたヘルパー アプリを作成し、それを起動サービスに登録することができたので、ログイン時に起動する必要があります。

ここでの問題は、このヘルパー アプリ内からメイン アプリケーション バンドルを起動する方法について、チュートリアルがあまり具体的でないことです。これだけが含まれています:

[[NSWorkspace sharedWorkspace] launchApplication:
@"/Path/To/Main/App/Bundle"];

しかし、NSWorkspace メソッドをフル パスでアプリケーションを起動しようとすると失敗します。これは、サンドボックスがこれを許可していないためです。

上記のメソッドの引数を自分のアプリ名だけに設定しようとすると、機能しますが、不思議なことに、アプリの古いバージョンが起動します (これらは HDD に保存されていますが、/Applications フォルダーにはありません。アプリの正しいバージョンは /Applications フォルダーにあります)

なぜこれが起こるのか、どうすればこれを修正できますか?

4

1 に答える 1

6

ヘルパー アプリには、バンドルへのパスではなく、実行可能ファイルへのパスが必要であることがわかりました。

だからあなたがそれを与えるなら: /Applications/My Great App.app 使ってみてください: /Applications/MyGreatApp.app/Contents/MacOS/My Great App

また、サンドボックス化されたアプリが Applications フォルダーにない場合、これはサイレントに失敗し、さまざまな権限エラーがログに記録されます。

于 2012-03-14T07:29:10.757 に答える