サンドボックスアプリを開発しました。その機能の 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 が常に機能するとは限りません。(エラーなし)しかし、サンドボックスをオフにすると機能します。
私の結論は、サンドボックス化によってコードが破損するということですが、既に資格を追加しているため、これを修正する方法が本当にわかりませんか?