我试图在SMJobKit框架的帮助下通过SMJobBless执行特权助手,但是当我尝试安装服务时,这个错误抛出了Error Domain=SMJobKit.SMJError Code=4 "(null)"
当我运行函数checkForProblems时,它会在源代码中抛出[SMJobKit.SMJError.BadBundleCodeSigningDictionary],下面这行有一个注释:"kSecCodeInfoPList was not a dictionary"
应用程序的结构类似于主应用程序(沙箱) -> XPC服务->特权帮助器
代码签名设置为Mac Developer:…
在plist中我有…
允许添加和删除工具的客户端
anchor apple generic and identifier "*XPC SERVICE IDENTIFIER*" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = *DEVELOPER ID*)安装后拥有的工具
anchor apple generic and identifier "*HELPER IDENTIFIER*" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = *DEVELOPER ID*)它由SMJobBless python脚本生成
作为示例,我使用了更好的Authorization示例,但还没有成功
发布于 2021-10-28 08:51:06
特权帮助器工具不是XPC服务。XPC服务的定义特征之一是它在具有有限权限的沙箱中运行,相比之下,特权助手工具作为根用户运行。令人困惑的是,您想要与助手工具通信的方式几乎肯定是使用XPC。Apple在这里过载了一堆术语:
SMJobBless安装的可执行文件(而不是包),它们不需要任何通信机制,但如果它们想要具有通信机制,可以使用XPC您需要将您的应用程序包构建为:example.app/Contents/Library/LaunchServices/<helper tool>
EvenBetterAuthorizationSample按照我所描述的那样构造应用程序包。不幸的是,它已经过时了,苹果公司也没有推出新的Swift版本。如果您正在寻找更新的示例,SwiftAuthorizationSample可能会有所帮助。
https://stackoverflow.com/questions/34801065
复制相似问题