2015-06-25 5 views
1

Я написал изолированное приложение, которое имеет дело с USB-накопителями под Yosemite (10.10). Когда приложение завершено, я хочу предложить пользователю возможность извлечения устройства.Отключить устройство USB в песочнице Приложение Mavericks

Под Йосемити это еще не проблема, я успешно использовал

DADiskUnmount() 

и

[NSWorkspace unmountAndEjectDeviceAtURL:error:] 

Но под Mavericks (10.9) как methodes не будет работать. Я дважды проверил весь свой код, и я уверен, что конфликтов SDK нет.

Я получаю следующее сообщение об ошибке

Sandbox denied authorizing right 'system.volume.external.unmount' by client <MyApp> 

Я получил все связанные с USB Entitlements, использовать безопасности в области видимости закладки (с startAccessingSecurityScopedResource и без), разрешения ремонтировали диска на испытательном устройстве, используются различные виды USB-устройств для проверки, проверки наличия открытых файлов на устройстве и попыток kDADiskUnmountOptionForce.

Разрешение

system.volume.external.(adopt|encode|mount|rename|unmount) 

появляется право только на 10,8 и 10,9. источник: link

Есть ли способ предоставить мое приложение это право?

Было бы неплохо, если бы кто-то мог мне помочь!

ответ

0

Aperture использует песочницу "big red button" (com.apple.security.temporary-exception.sbpl) system.volume.external.mount/unmount.

От Aperture's entitlements file:

<key>com.apple.security.temporary-exception.sbpl</key> <string> (begin (allow authorization-right-obtain (right-name "system.volume.external.mount")) (allow authorization-right-obtain (right-name "system.volume.external.unmount")) (deny network-outbound (with no-log) (regex #"^/private/tmp/launch-")) (allow file-ioctl (literal "/dev/ptmx") (literal "/dev/null") (literal "/dev/tty") (regex #"^/dev/ttys")) (allow file-search) (allow ipc-posix-sem) (allow system-fsctl)) </string>

Не знаю, будет ли Apple, позволяют это в MAS, хотя.

+0

эй! теперь я хочу отправить это в MAS ... Не могли бы вы объяснить каждую строку или дать мне ссылку на источник, где я могу прочитать эту информацию? Я хочу правильно объяснить, почему я написал это в своем файле права, чтобы он мог быть принят. – phisto05

+0

Хм, я думаю, просто скажу правду, что он находится в файле прав Aperture и изгнании не работает под Mavericks без него. Вы пытались удалить некоторые другие линии? Как только оставьте строку «разрешить авторизацию-право-получить» для размонтирования и посмотрите, работает ли она? Вероятно, они с большей вероятностью одобрят это с меньшим разрешением. –

+0

он работает, когда я просто оставляю разрешение-право-получать (правая-имя "system.volume.external.unmount) ... rigth теперь я жду обзора :) – phisto05