根据Apple的建议,我们将删除文件的根级功能分离为一个单独的帮助应用程序,该应用程序通过SMJobBless()
全局安装到/Library/PrivilegedHelperTools
和/Library/LaunchDaemons
。
启动时,我们的应用程序(UninstallPKG)会创建与帮助程序(xpc_connection_create_mach_service()
)的XPC连接,当需要删除文件时,它会向帮助应用程序(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 +上没有收到任何关于这种情况的报告。