'sandboxd: запретить запись-запись-создание файла' при записи в собственный пакет приложения

Я написал программу для 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. Как я понял, приложению должно быть разрешено записывать в свой собственный пакет, даже если ему запрещено делать что-либо в другом месте?

спасибо!

0
задан Gordon Williams 30 May 2012 в 17:01
поделиться