我试图在我的Cocoa应用程序中从NSAppleScript中编写NSAppleScript脚本,以便向库中添加一个文件。
在“应享权利”文件中,我添加了以下内容:
<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文件夹中选择一个特定的文件夹,以便让应用程序用户选择文件访问,然后它要求脚本位于一个单独的文件中,这对于我想要做的事情来说太多了。对于脚本文件的管理,我不信任用户,也不需要1行AppleScript代码的文件。另一个缺点是,正如我所理解的NSUserAppleScriptTask,您不能在多个调用中持久化脚本的状态,这在我的情况下不是问题,但可能是针对其他人的。
谢谢
发布于 2015-12-17 06:27:05
在与苹果公司的开发者技术支持部门联系后,我解决了这个问题,这实际上是两个问题之一。
首先,应享权利需要正确地大小写包标识符。对于iTunes,应享待遇必须如下(请注意iTunes中的大写T ):
<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代码在结尾处包含of source 1,否则将发生权限冲突:
tell application "iTunes" to add (POSIX file "your/path/to/mp3.mp3") to library playlist 1 of source 1就是这样!
https://stackoverflow.com/questions/34119076
复制相似问题