我们有两个签名的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"
答案 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实际执行操作。