1

我正在开发一个 Mac 应用程序,它还安装了一个启动守护程序。应用程序和守护程序都以不同的身份和不同的权利进行了代码签名,但启动守护程序拒绝启动。

查看系统日志,我看到以下消息:

taskgated-helper [7269]:找到 0 个配置文件

taskgated-helper[7269]:不允许 com.test.MyApplication[pid 7268] 因为没有找到配置文件

通常对于 Mac 应用程序,配置文件被复制到包中并在 MyApplication.app/Contents/embedded.provisionprofile 中可用。但是我还没有找到一种让守护程序在启动时找到配置文件的好方法。我发现最好的方法是双击配置文件并将其安装在系统上,以便它出现在系统偏好设置中,但这对于此应用程序的用户来说是不可接受的用户体验。

如何让启动守护程序找到配置文件?我可以指定其位置的路径还是可以将其嵌入二进制文件中(与 -sectcreate 链接器标志相同的方式)?

更新:

我尝试了各种组合,其中一种似乎最适合我的需要。我创建了一个具有单独权利和配置文件的单独应用程序,并驻留在 MyApplication.app 的包中,启动守护进程是一个进程,其唯一目的是运行服务应用程序。此解决方案的优点和缺点是:

  • 服务具有独立于主机应用程序的一组独立权利(+)
  • 当应用程序被删除时,服务也会消失,因此您不必担心仍在安装服务或不直观的卸载过程(+)
  • 启动守护程序以提升的权限运行,并在特定位置调用某些应用程序;如果没有适当的措施,这是一个巨大的安全漏洞。(-)

我上面描述的与 XPC 服务非常相似,只是我需要我的服务始终运行,即使在主应用程序没有运行时也是如此。与仅按需运行并在长时间空闲时被终止的 XPC 服务相反。

有什么方法可以让我使用 XPC 服务并让它一直运行,而不仅仅是在消费者应用程序执行请求时?

4

0 回答 0