我正在处理需要定期将文件安装到/ Library中的文件夹的内容.
我知道在过去我可以使用其中一种Authenticate方法,但那些已经在10.7中被弃用了.
到目前为止我从阅读中理解的是:
我应该创建一个帮助程序,以某种方式进行身份验证并让该帮助程序执行所有移动任务.我看了一些示例代码,包括一些涉及XPC和一个名为Elevator但我有点困惑.
很多似乎都涉及设置某种客户端/服务器模型,但我不确定这会如何转化为我实际将我的文件安装到正确的目录中.大多数示例只是传递字符串.
我的问题很简单:我如何以编程方式在/ Library中创建我的文件夹并定期向其中写入文件,同时仅提示用户输入密码而不再提供?我真的不确定如何处理这个并且似乎没有太多的文档.
解决方法
你是对的,没有太多的文件.你基本上会编写另一个应用程序,即帮助应用程序,它将与SMJobBless()一起安装.不出所料,
这里棘手的部分是代码签名.对我来说最不明显的部分是每个应用程序的info plist文件中的SMAuthorizedClients和SMPrivilegedExecutables条目取决于您用于对应用程序进行签名的身份/证书.编译器/链接器还有一个技巧,可以将信息plist文件编译到帮助工具中,该工具将是一个可执行文件,而不是一个包.
这里棘手的部分是代码签名.对我来说最不明显的部分是每个应用程序的info plist文件中的SMAuthorizedClients和SMPrivilegedExecutables条目取决于您用于对应用程序进行签名的身份/证书.编译器/链接器还有一个技巧,可以将信息plist文件编译到帮助工具中,该工具将是一个可执行文件,而不是一个包.
一旦你启动并运行了帮助应用程序,你就必须设计一种与之通信的方法,因为这是两个不同的进程. XPC是一种选择,也许是最简单的选择. XPC通常与服务器进程一起使用,但您在此处使用的仅是XPC的通信端.基本上它在两个应用程序之间来回传递字典.为字典创建标准格式.我使用@“action”,@“source”和@“destination”有3个不同的动作值,@“filemove”,@“filecopy”和@“makedirectory”.这些是我帮助应用程序可以执行的3件事,如果有必要,我可以轻松添加更多内容.
帮助应用程序基本上将设置XPC连接和事件处理程序的东西,并等待连接和命令.命令只是一个字典,所以你检查适当的键/值,并做任何事情.
如果您需要更多帮助,我可以提供更多详细信息和代码,但这个问题是9个月大,所以我不想浪费时间给您提供您已经弄清楚的详细信息.