我有几个可可应用程序是私下分发的,并且不使用应用程序商店。至少一年没有碰过它们。我需要做些改变。它们不能与Apple的沙箱正常工作。我试图关闭Xcode(9.4.1)中的沙箱功能,但是缺少权利文件似乎被解释为沙箱功能。我注意到命令行应用程序还没有这个问题(尚未)。如何恢复旧的行为?过去,我对应用程序进行了签名以最大程度地减少用户的困惑,因此,如果可能,我想继续对应用程序进行签名。
更新:我创建了一个仅调用NSOpenPanel()的简单应用,就像这样-
@IBAction func browseFile(sender: AnyObject) {
let dialog = NSOpenPanel()
dialog.title = "Choose a .pdf file"
dialog.showsResizeIndicator = true
dialog.showsHiddenFiles = false
dialog.canChooseDirectories = true
dialog.canCreateDirectories = false
dialog.allowsMultipleSelection = false
dialog.allowedFileTypes = ["pdf"]
if (dialog.runModal() == NSApplication.ModalResponse.OK) {
let result = dialog.url // Pathname of the file
我尝试在Xcode 8和Xcode 9下进行构建。似乎签名过程中的某些内容已更改。如果启用沙箱并提供适当的权利,则该应用程序运行时不会出错。否则,出现以下错误:
Faild to get owner UUID for url: file:///Users/david/Public error: Error
请注意,这是一个包含以下内容的权利文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<false/>
</dict>
</plist>
此外,我不清楚“大卫”来自何处。
答案 0 :(得分:1)
显然,根据Apple技术支持,这是NSOpenPanel中的错误。当前,他们无法解释错误消息的内容,也不能解释为什么仅在关闭沙箱时才会发生错误消息。我向Apple提交了错误报告。