首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非常简单的macOS XPC

非常简单的macOS XPC
EN

Stack Overflow用户
提问于 2019-12-19 22:18:00
回答 1查看 365关注 0票数 0

我想简单地使用XPC技术来启动一个app。我不需要任何进程间通信,也不需要XPC的任何其他特性。

我在互联网上找到的唯一文档显示了一个复杂的结构,包括用于XPC服务的代码,通过脚本启动XPC服务的单独代码,以及用于与服务通信的应用程序代码。

换句话说,我只想要做与此相当的东西:

代码语言:javascript
复制
NSWorkspace.shared.openApplication(at: path,
                                   configuration: configuration,
                                   completionHandler: nil)

而是使用XPC。所以我需要一些类似的东西:

代码语言:javascript
复制
let listener = NSXPCListener.service("/path/to/my_app.app")
listener.resume()
RunLoop.main.run()

显然,服务方法不接受可能是可执行路径的参数,因此这是不起作用的。

我该怎么做呢?

PS:为了解释动机,启动XPC服务将保留启动应用程序的沙箱限制,而直接通过NSWorkspace.shared.openApplication启动应用程序将不会保留沙箱限制(因为生成的应用程序没有将"com.apple.security.inherit“作为权利)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-26 13:54:40

似乎不可能在更改沙箱的同时启动子进程(即,赋予它比最初幸运的更多或更少的权限)。

我推荐使用现有应用程序中的stripping the sandboxing,适当地修改授权,然后重新签名。这不是一种常规的方法,但可以解决您的特定问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59411555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档