我开发了一个沙盒应用程序。它的功能之一是对 /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 似乎并不总是有效。(没有错误)但是如果我关闭沙盒,它就可以了。
所以我的结论是,沙盒会破坏我的代码,但我真的不知道如何解决这个问题,因为我已经添加了权利?