Я пытаюсь написать сценарий iTunes из NSApleScript в своем приложении Cocoa, чтобы добавить файл в библиотеку.
В моем файле прав я добавил следующее:
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.itunes</key>
<array>
<string>com.apple.itunes.library.read-write</string>
</array>
</dict>
Затем я вызываю AppleScript следующим образом:
var error: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"iTunes\" to add (POSIX file \"\(path)\") to library playlist 1")
let result = appleScript?.executeAndReturnError(&error)
но вылетает с ошибкой -10004
: iTunes got an error: A privilege violation occurred.
Я пытался использовать iTunes в обоих направлениях (itunes
и iTunes
), но, похоже, ничего не работает. Я также попытался добавить к праву чтения-записи право read
. Наконец, я попытался добавить доступ для чтения и записи к папке «Музыка» пользователя (где хранится библиотека iTunes), и это тоже не помогло.
Есть ли еще одно необходимое право, о котором я не знаю, для создания сценария iTunes?
Я нашел эту ссылку при поиске решения (ссылка), но он требует, чтобы пользователь выбрал определенную папку в своей папке Library
, чтобы предоставить приложению доступ к файлу, выбранному пользователем, а затем он требует, чтобы сценарий находился в отдельном файле, что на 2 вещи слишком много для того, что я хочу сделать. Я не доверяю пользователю в отношении управления файлами сценариев, и мне не нужен файл для 1 строки кода AppleScript. Другим недостатком, насколько я понимаю NSUserAppleScriptTask
, является то, что вы не можете сохранять состояние скрипта при нескольких вызовах, что не является проблемой в моем случае, но может быть для кого-то еще.
Спасибо
NSUserAppleScriptTask
иApplication Scripts
являются предпочтительным способом выполнения скриптов. - person vadian   schedule 09.12.2015com.apple.security.temporary-exception.apple-events
с ключомcom.apple.itunes
, и теперь скрипт работает, но мне интересно, правильно ли это? Временный означает, что это значит, верно? Поскольку iTunes поддерживает сценарии и имеет наборы разрешений, мне это не нужно. - person beeb   schedule 09.12.2015NSUserAppleScriptTask
удобнее, потому что вам вообще не нужны никакие права на Apple Event. - person vadian   schedule 09.12.2015