Я хочу использовать XPC технология просто для запуска app
. Мне не нужно ни межпроцессное взаимодействие, ни какие-либо другие функции XPC.
Единственные документы, которые я могу найти в Интернете, демонстрируют сложную структуру с кодом для службы XPC, отдельным кодом для запуска службы XPC через сценарий и кодом приложения для связи со службой.
Другими словами, мне нужно только что-то, что делает эквивалент этого:
NSWorkspace.shared.openApplication(at: path,
configuration: configuration,
completionHandler: nil)
но с ХПК. Поэтому мне нужно что-то вроде:
let listener = NSXPCListener.service("/path/to/my_app.app")
listener.resume()
RunLoop.main.run()
Очевидно, что сервисный метод не принимает аргумент, который был бы путем к исполняемому файлу, так что это не работает.
Как я могу это сделать ?
PS: чтобы объяснить мотивацию, запуск службы XPC сохранит ограничение песочницы из запускаемого приложения, тогда как запуск приложения напрямую через NSWorkspace.shared.openApplication
не сохранит ограничения песочницы (поскольку порожденное приложение не имеет «com.apple.security.inherit» как право).
sandbox-exec
устарел, но делает ли он то, что вы хотите? - person TheNextman   schedule 20.12.2019sandbox-exec
работает на Catalina; Я только что попробовал. Но я не думаю, что это позволяет вам переопределить песочницу уже изолированного приложения. Я рад оказаться неправым, но я не думаю, что то, чего вы хотите достичь, возможно. - person TheNextman   schedule 20.12.2019