我在 Mac App Store 中编写了一个显示一些图形的程序。有时它会从互联网上更新这些内容。和大多数人一样,我现在不得不对我的应用程序进行沙箱处理。
几乎一切正常,但在更新时会将文件保存在我的应用程序自己的包中,并因“沙盒:拒绝文件写入创建”而失败
我只是使用 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。据我了解,应该允许应用程序写入自己的包,即使它被阻止在其他地方做任何事情?
谢谢!