FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它

Posted

技术标签:

【中文标题】FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它【英文标题】:FinderSync Extension runtime error: The file couldn’t be opened because you don’t have permission to view it 【发布时间】:2017-06-07 15:50:11 【问题描述】:

我正在编写一个 FinderSync 扩展,它将一个项目放在上下文菜单中。当我右键单击时,我希望菜单项的标题根据所选文件的内容进行更改。但是,当我尝试使用Data(contentsOf: selectedUrl) 读取内容时,会引发以下错误:

Error Domain=NSCocoaErrorDomain Code=257 "无法打开文件“Some File.png”,因为您没有查看权限。" UserInfo=NSFilePath=/Users/Shared/MySyncExtension Documents/Some File.png, NSUnderlyingError=0x61800004cf00 Error Domain=NSPOSIXErrorDomain Code=1 "Operation not allowed"

如果我添加或删除沙盒,这不会改变。


先前的研究

The file couldn’t be opened because you don’t have permission to view it 编译器一直设置为默认值 Read and Write access for FinderSync extension in a sandboxed environment 授权已启用。此外,这会在沙盒关闭的情况下表现出来。 "File could not open because you do not have permission to view it." | Official Apple Support Communities 文件的权限显示“每个人”都具有“只读”访问权限

【问题讨论】:

【参考方案1】:

问题是沙盒阻止文件访问文件,因此您的应用无法打开它。

Read and Write access for FinderSync extension in a sandboxed environment

即使 Finder Sync 应用程序扩展被授予“用户选择的文件”沙盒文件访问权限,用户通过右键单击访问的文件似乎不算是“用户选择的”。

或许可以引导用户到select a root directory via an NSOpenPanel via Powerbox, after which all subdirectories can be accessed via a security-scoped bookmark。

使用临时例外权利也是可能的,但会导致 App Review 问题:

Is there any way to give my sandboxed Mac app read only access to files in ~/Library?

请复制我的 Apple 错误报告,要求允许此行为:

Finder Sync 应用程序扩展 selectedItemURLs() 应该接收“用户选择的文件”沙盒文件访问权限。

rdar://42874694https://openradar.appspot.com/radar?id=5063363058991104

【讨论】:

以上是关于FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 FinderSync 扩展在启动之前就崩溃了?

Finder Sync 扩展:无法通过 UNIX 域套接字进行通信

单击菜单项时没有回调

shp文件是啥文件,怎么打开?

运行 mongodb-backed node app 时无法加载 C++ bson 扩展,使用纯 JS 版本错误

VBA 无法打开包含动态名称的备份文件