2

我们有两个签名的 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"
4

1 回答 1

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 实际执行该操作。

于 2013-04-22T18:23:22.900 回答