1

サンドボックスアプリを開発しました。その機能の 1 つは、/Users/username/Library/Preferences com.apple.finder.plist を変更することです。そのために、entitlement.plist に以下を追加しました。

<key>com.apple.security.temporary-exception.shared-preference.read-write</key>
<array>
    <string>com.apple.finder</string>
</array>
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
    <string>com.apple.finder</string>
    <string>com.apple.systemevents</string>
</array>

サンドボックスをオフにすると、アプリは問題なく動作しますが、サンドボックスを有効にすると、アプリが動作することもありますが、ほとんどの場合、アプリは動作しません。

私がしたことは、1. NSAppleScript を使用して finder.plist を変更し、次に 2. 「finder」に終了して再起動するように指示しました。「終了」して再起動する部分は完全に正常に機能します。

tell application "Finder" to quit
set inTime to current date
    repeat
tell application "System Events"
    if "Finder" is not in (get name of processes) then exit repeat
end tell
if (current date) - inTime is greater than 10 then exit repeat
    delay 0.2
end repeat

tell application "Finder" to activate

ファインダーアプリの再起動方法より)

ただし、変更 finder.plist が常に機能するとは限りません。(エラーなし)しかし、サンドボックスをオフにすると機能します。

私の結論は、サンドボックス化によってコードが破損するということですが、既に資格を追加しているため、これを修正する方法が本当にわかりませんか?

4

1 に答える 1

3

おそらく、サンドボックスを有効にしてAppStoreに適格なアプリを作成したいとします。特にシステムイベントとファインダーでは、一時的な免除でアプリを承認するのに苦労する(不可能)と思います。

これらの一時的な免除が許可されている場合は、rootアクセスを必要としないほとんどすべてのこと、つまりファイルの削除などを行うことができます。これにより、サンドボックスの目的が無効になります。

アプリからFinderを再起動することは決して許可されません。私はあなたがする必要があることをする別の方法を見つけることをお勧めします。

于 2013-03-09T09:31:39.170 に答える