Mac OS Проблема с чтением каталога прав в изолированной программной среде приложения

У меня возникла проблема с моими правами на тестовую среду приложения.

Приложение My Mac OS позволяет пользователю открывать XML-файл. Когда этот файл анализируется, он читает файл изображения в том же каталоге, что и файл XML.

Если App Sandbox имеет значение False, изображение загружается нормально. Если App Sandbox имеет значение True, изображение не загружается. (Файл XML все еще читается)

Песочница приложения должна иметь значение True для отправки в App Store.

я пытался

com.apple.security.files.user-selected.read-write = TRUE
com.apple.security.temporary-exception.files.home-relative-path.read-only = TRUE
com.apple.security.temporary-exception.files.absolute-path.read-only = TRUE

Я взял эту информацию из документации Apple: Документ о правах Apple

Есть ли способ, которым я могу прочитать оба файла? Кто-нибудь еще сталкивался с подобным?

Кроме того, два файла могут находиться в любом месте, где пользователь обычно сохраняет файл. В том числе, сетевые диски.


person user-44651    schedule 21.02.2014    source источник
comment
Я вообще не понимаю вашего вопроса. Или это только я такой тупой? Какое отношение имеет файл XML, выбранный пользователем, к файлу изображения? Что означает чтение файла изображения? Доступ к файлу изображения и что дальше? С какой целью вы играете с этими временными исключениями?   -  person El Tomato    schedule 21.02.2014
comment
Пользователь откроет файл XML. XML-файл имеет соответствующее изображение. Это лист спрайтов и его файл атласа. Я могу нормально читать файл XML и изображение без песочницы приложения. Если это включено, я могу только читать файл XML.   -  person user-44651    schedule 21.02.2014


Ответы (2)


com.apple.security.files.user-selected.read-write = TRUE

это логическое значение, и это нормально, XML-представление в файле прав:

<key>com.apple.security.files.user-selected.read-write</key>
<true/>

остальные 2 права не логические, а массивы строк. Таким образом, правильный способ представить его в файле прав:

<key>com.apple.security.temporary-exception.files.home-relative-path.read-only</key>
<array>
    <string>example/local/path1/</string>
    <string>example/local/path2/</string>
</array>
<key>com.apple.security.temporary-exception.files.absolute-path.read-only</key>
<array>
    <string>/usr/local/bin/</string>
    <string>/usr/local/lib/</string>
</array>
person Giuseppe Amato    schedule 15.10.2019

Нет. Чтобы файл можно было прочитать, он должен быть:

  • В доступном для чтения месте или
  • В папке, которая может быть включена в настройках прав, т. е. в папке «Загрузки» или
  • Вручную открывается или сохраняется пользователем с помощью NSOpenPanel, после чего может быть опционально
  • Хранится как закладка с областью безопасности, после чего к ней можно получить свободный доступ. См. здесь.
person SevenBits    schedule 21.02.2014
comment
Фу. Так что лучшим вариантом для меня было бы вообще обойти Mac App Store? Мой пользователь может сохранять в местах, которые не находятся непосредственно в стандартных папках. - person user-44651; 21.02.2014
comment
Не обязательно. Вы можете изменить свой код, чтобы использовать закладки в области безопасности, используя что-то вроде NSDictionary или Core Data, чтобы связать путь к файлу с его закладкой в ​​области безопасности, а затем сохранить эти данные в файл в контейнере вашего приложения или NSUserDefaults для обновления в приложении. следующий запуск. - person SevenBits; 21.02.2014
comment
Угу. Это кажется немного сложным. Знаете какие-нибудь учебники? - person user-44651; 21.02.2014
comment
Что ж, имейте в виду, что закладки с областью безопасности остаются действительными, по крайней мере, после перемещения файла, что экономит некоторую работу. Учебники можно найти здесь и здесь и я написал несколько открыть с их помощью исходный код. - person SevenBits; 21.02.2014
comment
Хороший! Я ценю помощь. Я проверю их все. - person user-44651; 21.02.2014