appS是否需要授权才能执行启动应用的AppleScript?

时间:2013-04-18 22:55:47

标签: applescript code-signing entitlements osx-gatekeeper

我们有两个签名的Mac OS X应用程序(我们开发的 - 非“app store”应用程序)。 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仍然无法启动。

我们是否需要TEMPORARY ENTITLEMENTS才能执行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"

1 个答案:

答案 0 :(得分:0)

我不知道这一点,但你可以,如果appB是一个Applescript(真的是一个脚本,而不是一个应用程序)。

然后你可以使用(在AppA中):

set AppB to load script alias "path:to:app:B"
set scriptResult to AppB's theaction() --Change theaction to your needs

这样,您就可以将appB加载到appA中,从而导致appA实际执行操作。