2

根据 Apple 的建议,我们将删除文件的根级功能分离到一个单独的帮助应用程序中,该应用程序通过SMJobBless()to/Library/PrivilegedHelperTools/Library/LaunchDaemons.

在启动时,我们的应用程序 (UninstallPKG) 会创建一个到帮助程序 () 的 XPC 连接xpc_connection_create_mach_service(),当它需要删除一个文件时,它会向帮助程序应用程序 ( xpc_connection_send_message_with_reply_sync()) 发送一条消息,然后它会执行其任务。

这在我们所有的测试机器上以及对我们的大多数客户都非常有效。但是,似乎有些用户经常遇到XPC_ERROR_CONNECTION_INVALID故障。
有没有人知道为什么某些客户会发生这种情况以及我们如何处理或防止这个问题?除非获得有关XPC_ERROR_CONNECTION_INVALID实际含义的更多信息,否则我们目前只是退出该应用程序,这与崩溃一样糟糕。

Google 或 Apple 的文档或示例代码几乎没有说明在什么情况下XPC_ERROR_CONNECTION_INVALID可能会遇到以及应该如何优雅地处理它。任何见解将不胜感激。如果 Apple 认真对待这种特权分离的事情,那么关于如何可靠地做到这一点的文档确实应该得到改进。

顺便说一句,我们也在XPC_ERROR_CONNECTION_INTERRUPTED野外看到了。我们目前只是忽略它。对此有何见解?

编辑:作为对我们在此问题上花费的 DTS 事件的回应,仅供参考,Apple 已在 10.12 版本中解决了此问题。早期系统没有解决方法,但我们没有收到任何关于 10.12+ 发生这种情况的报告。

4

0 回答 0