Mac应用可以存储应用程序访问本地文件系统吗?

问题描述:

我想知道Mac应用商店有什么限制。有人能指引我朝着正确的方向吗?例如,假设我想编写一个在Mac文件系统上执行文件增量自动备份的应用程序,Mac应用程序商店中的应用程序可以这样做,还是我唯一的选择是独立的Mac应用程序?Mac应用可以存储应用程序访问本地文件系统吗?

在iPhone上,应用程序自身包含在自己的“沙箱”中?这个相同的主体是否适用于Mac应用商店应用?

+0

不知道你的问题是什么。是的,应用程序可以从磁盘读取/写入。是的,他们有各种沙盒,即。没有管理员权限,您无法删除文件系统。这与自动备份有什么关系? – David

我相信,从11月开始,Mac App Store的参赛作品必须采用应用程序沙箱。当您的应用程序提交给应用程序商店时,您可以请求特定的权利,并说明您需要这些权利的原因。更多信息可以在开发者网站的WWDC Session 204视频中找到。

+1

2012年3月1日,苹果将需要沙箱。 – bdunagan

+0

沙箱需求延长至2012年6月1日 – Khomsan

您目前可以在Mac App Store上找到Hype或Pixelmator。

这明显证明您可以保存到磁盘并从磁盘读取,这似乎是任何严重应用程序的基本功能。此外,苹果正在推动开发人员开始使用文件的增量自动备份,因此,如果他们禁止在App Store中使用它,那将是非常令人吃惊的,不是吗?

Lion的版本正在改变或改变。 Mac Store应用程序曾经能够在文件系统中执行登录用户权限允许的任何操作,但我认为您现在需要使用授权系统,因此需要对您的应用程序进行沙盒处理。

阅读更多的想法

https://developer.apple.com/library/mac/#releasenotes/General/SubmittingToMacAppStore/_index.html#//apple_ref/doc/uid/TP40010572

+0

我不明白他的问题是“我想做一台Time Machine”,但是“我想做一个可以读/保存任何文件的应用程序,甚至可以创建另一个应用程序”。 – Kheldar

从技术上讲,有沙盒上的OS X.然而,申请用户绕过沙盒的限制(有时需要升级/管理员验证屏)手动启动。

看看: http://techjournal.318.com/security/a-brief-introduction-to-mac-os-x-sandbox-technology/

+1

这适用于Mac OS X Lion之前的沙盒技术;应用沙盒技术在Lion中大幅扩展,这正是提问者所指的。 –

研究员,什么OP真的是指这里描述:

http://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

这是所有关于

  • 集装箱
  • 应享权利
  • PowerBox(守护进程)

一旦应用程序被“沙箱化”,它的〜“home”目录的视图就是Container的视图(刚刚在$ HOME/Library/Containers/appBundleID/Data中启动时创建)。其中它发现它的配置,缓存和数据文件的“私人副本”。除非...

...您以合适的属性文件的形式为应用程序提供适当的权利(实际上,codesigning是沙箱的组成部分概念)。

其中一个权利是“com.apple.security.files.user-selected”。读写“这允许应用程序读取和写入这些人恰恰是对用户有明确通过标准选择的文件保存并分别打开的对话框。

的PowerBox(pboxd)守护程序然后呈现相应的文件对话框中它自己的进程空间并将选定的文件路径添加到允许的文件列表中,这对应用程序是透明的,即不需要更改代码 - 只要应用程序使用标准的NSOpenPanel或NSSavePanel对话框即可

“为了简化应用程序沙盒,Mac OS X v10.7提供了一个受信任的系统守护进程,负责代表应用程序中运行的应用程序提供打开和保存面板提示沙箱。该守护进程称为Powerbox(其进程名称为pboxd)。在用户体验方面,这些Powerbox提供的远程面板与进程中面板完全没有区别。

任何时候沙盒内运行的应用程序都会调用NSOpenPanel或NSSavePanel对话框,而不是直接显示面板,AppKit会自动要求Powerbox显示对话框。从开发人员的角度来看,这些面板的使用方式不需要更改代码; 。这个过程是完全透明的“[从苹果文档最终报价]

鉴于这一切,的OP需要什么(对于备份解决方案)是‘无中介的读/写’

”如果应用程序选择以绕过Cocoa API的方式派生用户的主目录(例如,通过直接调用getpwent),应用程序沙箱禁止它写入其接收的路径(除非应用程序具有非中介写权利,这是强烈的因为明显的安全原因而不鼓励。“[苹果文档结束引用]

然而,最接近的权利,将gi我已经可以罚款将是“文件系统免费获取”:

  • 绝对文件只读 -The在指定的绝对路径读取文件或目录的能力。 (com.apple.security.temporary-exception.files.absolute-path.read只

  • 绝对文件的读/写 -The读或写在指定的绝对的文件或目录的能力路径。 (com.apple.security.temporary-exception.files.absolute-path.read写

“[从苹果文档最终报价]

而且我不知道是否申请可以简单地提供根目录“/”

反正仔细注意,这些权利被标记为“临时”:苹果公司可能会删除/在看到合适弃用这些权利