我有一个沙盒应用程序,它使用可以包含嵌入文件名的文档格式。例如。这些引用文件中的一些用于用户选择的图像文件,以便将图像文件与存储在文档中的数据相关联。虽然这些图像有时会位于用户图片文件夹中,但有时它们在其他地方。由于可移植性原因,无法更改文档格式本身(它与应用程序的现有Windows版本共享)。
为了让应用程序能够访问名称嵌入文档中的文件,当用户选择文件名(使用nsopenpanel)存储在文档中时,应用程序还会创建应用程序范围每个这样存储的文件名的安全范围书签。然后它通过将这些书签序列化到另一个文件来存储它们。当应用程序再次运行时,它会加载以前序列化的书签,并在访问“嵌入式”书签时使用它们。文件名和工作正常。
但是当我将这样的文档(及其相关的序列化书签文件)从一个Mac复制到另一个Mac时,它就不起作用,即使已知两个Mac上都存在书签所引用的所有文件。发生的事情是,当应用程序打开文档文件时(用户使用nsopenpanel选择它),并成功从其关联的序列化书签文件(用户已使用nsopenpanel选择)中读取序列化书签,即使已知书签引用的完全相同的文件名存在于另一台Mac上(并且可由用户通过查找程序等访问),沙盒应用程序仍然无法访问它们。解决书签似乎失败了。
问题是:app-scoped书签是否仅限于在创建它们的Mac上运行?如果我不能将应用程序范围的书签从一个系统移动到另一个系统,我怎样才能达到我想要的效果,而不必强迫用户必须手动重新选择每个这样的嵌入式书签。带有nsopenpanel的文件名?
试图在Apple文档中找到这个问题的答案但没有成功。
我不言而喻,安全范围的书签只能由创建它们的应用程序使用。
答案 0 :(得分:3)
不,因为如果可能的话,开发人员可以将安全范围的书签保存到他们自己的计算机上的敏感文件/目录中,然后部署他们的应用程序并访问其他人的计算机上的那些相同的敏感文件/目录。