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

Posted

技术标签:

【中文标题】appS 是不是需要授权才能执行启动应用程序的 AppleScript?【英文标题】:Are entitlements required to for appA to execute an AppleScript that launches appB?appS 是否需要授权才能执行启动应用程序的 AppleScript? 【发布时间】:2013-04-18 22:55:46 【问题描述】:

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

【问题讨论】:

您不会说您的应用程序是否被沙盒化。如果它们没有被沙盒化,那么权利就不是问题。我将首先在执行 AppleScript 脚本的代码中查找报告的错误 (a),以及 (b) 在系统控制台中报告的错误。我的猜测是 AppleScript 代码找不到“appB”。您可以尝试在 tell 语句中使用捆绑 ID 而不是应用名称,以使应用查找更加健壮。 @MarkAlldritt -- 会尝试,但它仍然没有解释为什么它在 10.7 和 10.8 上失败了 -- 或者为什么关闭网守可以完全解决 10.8 上的问题。 @MarkAlldritt -- 在“appB”中编辑 Tell 应用程序以将其更改为其捆绑 ID(“com.writebros.appB”)会导致 AppleScript 编辑器在我去时要求解析捆绑 ID保存更改。我注意到另一个问题是,在 10.8 上,一旦 appB 启动,它就会立即消失(隐藏)。但是,如果我执行第二次激活(在查找之后),那么 appB 将被提前。 【参考方案1】:

我不知道,但如果 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 实际执行操作。

【讨论】:

appA 和 appB 都是 Carbon Mach-O 可执行应用程序。

以上是关于appS 是不是需要授权才能执行启动应用程序的 AppleScript?的主要内容,如果未能解决你的问题,请参考以下文章

小程序-用户授权/授权后的信息读取流程

iOS15系统App Tracking Transparency提审被拒

Mysql--基本配置、授权及删除权限

为啥我的 Create React App Dev Server 需要这么长时间才能启动?

“需要授权才能执行该操作”消息,即使在单击“允许”之后也是如此

Postman授权设置