Я написал программу в магазине Mac App, которая отображает некоторые графики. Иногда он обновляет их в Интернете. Как и у большинства людей, мне сейчас нужно приложение Sandbox.«sandboxd: deny file-write-create» при написании собственного пакета приложения
Почти все работает, но при обновлении он сохраняет файл в собственном пачке моего приложения и терпит неудачу с «sandboxd: запретить файл-запись создать»
Я просто использовать Еореп (..., «термометр»)
путь перешел в 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. Насколько я понял, приложение должно быть разрешено писать в свой собственный пакет, даже если он заблокирован от чего-либо в другом месте?
спасибо!
100% правильная, но дополнительная причина, по которой вы никогда не должны писать в свой комплект приложений, заключается в том, что вы аннулируете свою подпись кода. (Да, вы можете оставить пробелы в том, что запечатано и записать в эти пробелы, или вы даже можете переклассифицировать свой комплект после редактирования самостоятельно, но, очевидно, вы не должны этого делать.) – abarnert
Спасибо! Извините за задержку в ответе. Интересно, что запись файла настроек на выходе не вызывала никаких проблем с песочницей. –