2011-08-07 10 views
1

私は自分の製品にサンドボックスを追加しました。ワークフローの最後のステップがデスクトップを設定することを除いて、完全に機能します。これはNSWorkspaceで行います。私はココアのサンドボックス用メッセージの宛先を確認する

[[NSWorkspace sharedWorkspace] setDesktopImageURL:[NSURL fileURLWithPath:imagePath] 
             forScreen:screen 
              options:nil 
              error:&error]; 

を呼び出すとき、私は、次のエラーが表示さ:

*** attempt to post distributed notification 'com.apple.desktop' thwarted by sandboxing. 

右をので、私はそうのような一時的な例外必要があります。私が行くかを把握する必要があるので、最終的に

<key>com.apple.security.temporary-exception.apple-events</key> 
<array> 
    <string>XXXXX</string> 
</array> 

をXXXXXでは、そうですか?デスクトップ設定を扱うのは何ですか?そして、より一般的には、メッセージのターゲットバンドルを決定する簡単な方法はありますか?

答えて

1

同じ問題が発生しましたが、別の回避策が見つかりました。 「カレンダーデータアクセスを許可する」エンタイトルメントを有効にすると、NSWorkspaceで新しい壁紙を設定できます。

私はこれがかなり奇妙な回避策であることを知っています。将来のバージョンでAppleが将来ブロックする可能性があるかどうかはわかりません。それは執筆の時点で機能し、この問題を抱えている次の人と共有する価値があると思った。

+0

うわー、マウンテンライオンでこれを修正しないことを願っています。 –

+0

ありがとうございます。それはうまくいった。 – David

0

AFAIK壁紙の設定に例外はありません。また、サンドボックス化は、NSWorkspaceメソッド自体を殺すのではなく、むしろ分散通知(これはログのことです)を殺すようです。したがって、このNSWorkspaceメソッドが分散通知を使用して実装されている場合は、ペイロード(-[NSNotification userInfo])を使用する必要がありますが、ペイロードはサンドボックス化では許可されません。

あなたはアップルイベントルートを移動したい場合は(ということは、あなただけは、メイン画面のそれを変更することができますが)、あなたは常にAppleScriptを使用して壁紙を変更してみてください:the_image_fileは何である

tell application "Finder" to set the desktop picture to the_image_file 

(イメージを設定したい)。

+0

私はそうかもしれないと思った。 Appleがサンドボックス化と比べて害よりも害を及ぼすようになっているようですか? –

+0

それはまだサンドボックスが重い開発の下にあるように見えます。この機能が必要な場合は、いつものようにレーダーを提出してください。 – gcbrueckmann

+0

アップルスクリプトで壁紙を変更するように答えを更新しました。 – gcbrueckmann

関連する問題