Spa*_*Dog 6 macos cocoa sandbox appstore-sandbox
通过Mac App Store销售的应用程序是否可以访问系统文件夹?
我的意思是:我的应用程序需要读取沙箱区域之外的目录内容,/Library/StartupItems如果用户需要,可以说出类似的内容,并可能删除那里的文件.
沙盒应用程序是否可以访问系统文件夹并删除其中的文件?如果无法删除,至少可以读取吗?
如果我想在Mac App Store上销售,是否必须启用沙箱?
我已经随机尝试了一个目录:
NSString *path = @"/Library/StartupItems";
NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
Run Code Online (Sandbox Code Playgroud)
我可以获得目录列表.如果应用程序标记为沙盒,我该如何阅读?我不明白.
不能,通过Mac App Store出售的OS X应用程序无法按照您描述的方式访问资源。还需要对所有应用进行沙盒测试并使用有效的Mac Developer Program证书进行代码签名。
至于/Library/StartupItems您的应用程序标记为“沙盒”时能够读取(不推荐使用);这不仅仅是检查选项的问题。您还必须确保选择了“使用权利文件”,并且应用程序已正确进行了代码签名。完成此操作后,您可以使用以下方法检查是否在Terminal中正确地将其沙箱化:
codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable
Run Code Online (Sandbox Code Playgroud)
此外,在某些目录中可以读取“世界可读”文件:
/bin
/sbin
/usr/bin
/usr/lib
/usr/sbin
/usr/share
/System
Run Code Online (Sandbox Code Playgroud)
为了允许OS X应用程序像您的(较早的)示例那样与文件系统进行交互,该应用程序将需要使用通常使用的提升的特权Authorization Services,而App Sandbox不允许这样做。看一下标题为“ 确定您的应用是否适合沙盒 ”的部分,它可以回答您可能遇到的其他问题。
沙盒在很多方面都很好,但同时也非常严格。如果您的应用程序需要做的事情不在允许的范围之内,则可以选择不通过Mac App Store进行销售并且不使用沙箱。一些开发人员还创建了两个不同版本的应用程序(Mac App Store版本和非Mac App Store版本)。如果您的应用依赖于容器外的任何东西,那么您肯定会考虑/权衡沙盒的利与弊。
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |