在没有沙盒的情况下重新编译旧的可可应用程序



我有几个私下分发的可可应用程序,不使用应用商店。 他们至少有一年没有被碰过了。 我需要做一些改变。 它们无法与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>

另外,我不清楚"大卫"是从哪里来的。

显然,这是 NSOpenPanel 中的一个错误,根据 Apple 技术支持。 目前,他们无法解释错误消息的内容,也无法解释为什么仅在关闭沙盒时才发生。 我向苹果公司提交了错误报告。

最新更新