我正在尝试从沙盒化的 macOS 应用程序中打开“系统偏好设置”,以便用户可以手动启用某些偏好设置。
我从沙盒化应用程序运行以下 AppleScript:
我还添加了一个脚本目标沙盒授权,使系统首选项可以显示面板:
这个有点有效,一旦我添加了授权。如果关闭并打开正确的窗格,则系统偏好设置应用程序启动。
在控制台中,我看到一个消息,可能是无关的日志垃圾:
如果系统偏好设置已关闭,则该应用程序确实会启动。但是,在单击 dock 图标之前,该窗口不会添加到前台或后台屏幕。然后,窗口会出现,已经导航到正确的选项卡。
为什么应用程序不能激活?
是否还需要其他沙盒授权才能激活系统偏好设置窗口?
我正在运行 macOS 10.13.6 和 Xcode 10.0。部署目标设置为 OS X 10.11。AppleScript
activate
将应用程序置于前台,必要时启动它。
我从沙盒化应用程序运行以下 AppleScript:
let script = """
tell application "System Preferences"
activate
set current pane to pane id "com.apple.preferences.extensions"
end tell
"""
let appleScript = NSAppleScript(source: script)
var errorInfo: NSDictionary? = nil
appleScript?.executeAndReturnError(&errorInfo)
我还添加了一个脚本目标沙盒授权,使系统首选项可以显示面板:
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.systempreferences</key>
<array>
<string>preferencepane.reveal</string>
</array>
</dict>
这个有点有效,一旦我添加了授权。如果关闭并打开正确的窗格,则系统偏好设置应用程序启动。
errorInfo
字典为空,并且没有错误信息。在控制台中,我看到一个消息,可能是无关的日志垃圾:
然而,该应用程序未能激活。系统偏好设置窗口没有出现在前台。该应用程序导航到正确的选项卡,但不像“激活”文档所述那样浮现在前景中。它停留在任何其他前景窗口后面。AppleEvents:在 getMemoryReference 中接收到了不是预期的复杂类型的 mach 消息。
如果系统偏好设置已关闭,则该应用程序确实会启动。但是,在单击 dock 图标之前,该窗口不会添加到前台或后台屏幕。然后,窗口会出现,已经导航到正确的选项卡。
为什么应用程序不能激活?
是否还需要其他沙盒授权才能激活系统偏好设置窗口?
Automation
选项卡。 - pkamb