我们有两个签名的 Mac OS X 应用程序(我们开发的——非“应用商店”应用程序)。appA 运行一个 Applescript(来自一个 .scpt 文件),它向 appB 发送一条消息以启动和搜索一些文本。
这在 OS X 10.6 上完美运行。
在 OS X 10.7 和 10.8 上,我得到了不同的行为:当 appA 运行 Applescript 时,appB 不会启动。但是,如果 appB 已在运行,则 appB 会收到 appA 的消息,并处理请求的搜索。
这似乎是一个沙盒问题:当我们向终端发出此命令时:
sudo spctl --master-disable
…然后重新启动,Applescript 在 10.8 上启动 appB 也没有问题。在 10.7 上,appB 仍不会启动。
我们是否需要临时授权才能执行 AppleScript 脚本(或发送 AppleEvents)到我们的其他应用程序?这两个应用程序都是使用 codesign 手动签名的。这些权利是否从开发者关系中获得并通过协同设计应用?
appA 获取 AppleScript 并通过以下函数执行它:
OpenDefaultComponent(), OSALoad(), AEBuildAppleEvent(), OSAExecuteEvent()
正在执行的 AppleScript 是:
on lookup(search_phrase)
tell application "appB"
activate
lookup (search_phrase)
end tell
end lookup
property ASDScriptUniqueIdentifier : "Lookup.scpt"