8

我正在研究需要定期将文件安装到 /Library 中的文件夹中的东西。

我知道过去我可以使用其中一种 Authenticate 方法,但这些方法在 10.7 中已被弃用。

到目前为止,我从阅读中了解到:

我应该创建一个以某种方式获得身份验证的助手,并让该助手完成所有移动任务。我查看了一些示例代码,包括一些涉及 XPC 和一个名为 Elevator 的代码,但我有点困惑。

其中很多似乎都涉及设置某种客户端/服务器模型,但我不确定这将如何转化为我将文件实际安装到正确的目录中。大多数示例只是传递字符串。

我的问题很简单:如何以编程方式在 /Library 中创建我的文件夹并定期向其中写入文件,同时只提示用户一次输入密码,而不再提示用户输入密码?我真的不确定如何处理这个问题,而且似乎没有太多文档。

4

1 回答 1

5

你是对的,没有太多的文档。您将基本上编写另一个应用程序,帮助程序应用程序,它将与 SMJobBless() 一起安装。毫不奇怪,这里棘手的部分是代码签名。对我来说最不明显的部分是每个应用程序的 info plist 文件中的SMAuthorizedClientsSMPrivilegedExecutables条目取决于您用来签署应用程序的身份/证书。编译器/链接器还有一个技巧可以将 info plist 文件编译到帮助工具中,这将是一个可执行文件,而不是一个包。

一旦你启动并运行了帮助应用程序,那么你必须设计一种与之通信的方式,因为这是两个不同的进程。XPC 是一种选择,也许是最简单的选择。XPC 通常与服务器进程一起使用,但您在这里使用的只是 XPC 的通信端。基本上它在两个应用程序之间来回传递字典。为字典创建标准格式。我使用了 @"action"、@"source" 和 @"destination" 以及 3 个不同的操作值,@"filemove"、@"filecopy" 和 @"makedirectory"。这些是我的助手应用程序可以做的 3 件事,如果需要,我可以轻松添加更多内容。

助手应用程序将基本上设置 XPC 连接和事件处理程序并等待连接和命令。这些命令将只是一个字典,因此您可以检查适当的键/值并执行任何操作。

如果您需要更多帮助,我可以提供更多详细信息和代码,但这个问题已有 9 个月的历史,所以我不想浪费时间向您提供您已经弄清楚的详细信息。

于 2013-02-25T18:41:13.197 回答