通过 NSAppleScript 编写 iTunes 脚本的沙盒权利
Sandbox entitlement to script iTunes via NSAppleScript
我正在尝试在我的 Cocoa 应用程序中从 NSAppleScript 编写 iTunes 脚本,以便将文件添加到库中。
在我的权利文件中,我添加了以下内容:
<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 脚本,是否还有其他我不知道的必需权利?
我在搜索解决方案 (link) 时发现了这个 link,但它要求用户 select 他的 Library
文件夹中的特定文件夹以提供应用程序用户 selected 文件访问,然后它要求脚本位于一个单独的文件中,这对于我想要做的事情来说太多了 2 件事。我不信任用户关于脚本文件的管理,我不需要 1 行 AppleScript 代码的文件。另一个缺点,据我所知 NSUserAppleScriptTask
是你不能在多次调用中保持脚本的状态,这对我来说不是问题,但对其他人来说可能是问题。
谢谢
在联系苹果开发者技术支持后,终于解决了这个问题,实际上是2个问题。
首先,权利需要正确区分包标识符。对于 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
给你!
我正在尝试在我的 Cocoa 应用程序中从 NSAppleScript 编写 iTunes 脚本,以便将文件添加到库中。
在我的权利文件中,我添加了以下内容:
<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 脚本,是否还有其他我不知道的必需权利?
我在搜索解决方案 (link) 时发现了这个 link,但它要求用户 select 他的 Library
文件夹中的特定文件夹以提供应用程序用户 selected 文件访问,然后它要求脚本位于一个单独的文件中,这对于我想要做的事情来说太多了 2 件事。我不信任用户关于脚本文件的管理,我不需要 1 行 AppleScript 代码的文件。另一个缺点,据我所知 NSUserAppleScriptTask
是你不能在多次调用中保持脚本的状态,这对我来说不是问题,但对其他人来说可能是问题。
谢谢
在联系苹果开发者技术支持后,终于解决了这个问题,实际上是2个问题。
首先,权利需要正确区分包标识符。对于 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
给你!