Я пытаюсь открыть системные настройки из изолированного приложения macOS, чтобы пользователь мог вручную включить определенные предпочтения.
AppleScript _ 1_
Выносит приложение на передний план, запускает его при необходимости.
Я использую macOS 10.13.6 и Xcode 10.0. В качестве цели развертывания задано OS X 10.11.
Я запускаю следующий 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)
Я также добавляю для сценариев цели Sandbox Entitlement, позволяющие в Системных настройках открывать панели:
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.systempreferences</key>
<array>
<string>preferencepane.reveal</string>
</array>
</dict>
Это отчасти работает, когда я добавляю Entitlement. Приложение «Системные настройки» запускается, если оно закрыто, и открывает нужную панель.
Словарь errorInfo
равен нулю и не содержит информации об ошибках.
В консоли я вижу сообщение возможно, это несвязанный спам в журналах:
AppleEvents: получено сообщение mach, которое не было сложным типом, как ожидалось в getMemoryReference.
Однако приложение не активируется. Окно «Системные настройки» не выводится на передний план. Приложение переходит на нужную вкладку, но не выходит на передний план в качестве документов для состояния activate
. Он остается за любыми другими окнами переднего плана.
В случае, когда системные настройки закрыты, приложение запускается. Но окно не добавляется к экрану на переднем или фоне, пока вы не щелкнете значок док-станции. Затем появляется окно, уже переведенное на нужную панель.
Почему приложение не активируется?
Существуют ли какие-либо другие необходимые права песочницы, которые позволят активировать окно системных настроек?
Automation
в 10.13. - person pkamb   schedule 20.09.2018