Подтвердить что ты не робот

Cocoa: разрешение на использование Sandbox для запуска другого приложения

Я звоню

    [[NSWorkspace sharedWorkspace] launchApplication:path];

Из моего изолированного приложения, и я получаю эту ошибку в консоли:

9/5/11 12: 23: 12.462 PM lsboxd: отказ от появления < PATH REDACTED > для 21383 - причина -10826

9/5/11 12: 23: 12.463 PM Приложение: spawn_via_launchd() не удалось, errno = 54 label = [0x0-0x1994993].MYApp path = < PATH REDACTED > flags = 0

9/5/11 12: 23: 12.464 PM Приложение: LSOpenFromURLSpec() возвращено -10810 для приложения < PATH REDACTED > (null).

Другими словами, я явно блокируюсь с помощью "Launch Services Sandbox Daemon" (lsboxd), который не считает, что приложение 1 должно запускать приложение 2.

Для записи 10826 "Пользователь не имеет разрешения на запуск приложения", а затем 10810 "Неизвестная ошибка"

Кто-нибудь знает о праве на это дело?

Как вы можете запускать другие приложения из изолированного приложения (пожалуйста, не говорите AppleScript - это неработающий кошмар, особенно при вызове из изолированных приложений или служб XPC). Идеал - это способ использования (сильно искалеченного) NSWorkspace из песочницы.

4b9b3361

Ответ 1

Параметр launchApplication: - это имя приложения (т.е. что-то вроде @"Safari"), а не его путь. Таким образом, он работал без каких-либо специальных прав для меня. Я не думаю, что вы можете запускать приложения на произвольных путях из изолированного приложения без использования PowerBox.