【发布时间】:2013-04-19 17:38:05
【问题描述】:
我在 Mac App Store 中编写了一个显示一些图形的程序。有时它会从互联网上更新这些内容。与大多数人一样,我现在不得不对我的应用进行沙盒处理。
几乎一切正常,但更新时会将文件保存在我的应用程序自己的包中,并因“sandboxd:deny file-write-create”而失败
我只使用 fopen(..., "wb")
传入fopen的路径是: /Users/MyUser/Library/Developer/Xcode/DerivedData/MyApp-czuwveatgjffaggwqjdqpobjqqop/Build/Products/Debug/My.app/Contents/Resources/the_file.foo
路径是使用以下方法创建的:
CFBundleRef bundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourcesDirectoryURL(bundle);
CFURLGetFileSystemRepresentation(url, true, (UInt8*)buf, sizeof(buf));
我在这里做了什么明显错误的事情吗?我的应用程序是多平台的,所以理想情况下我会继续使用 fopen/etc。据我了解,应该允许应用程序写入自己的包,即使它被阻止在其他地方做任何事情?
谢谢!
【问题讨论】:
标签: macos osx-lion sandbox appstore-sandbox