我正在尝试构建一个迷你应用程序来将一个Mac OS X应用程序与codesign
实用程序和我的开发人员证书在密钥链中进行协同设置。要做到这一点,我使用NSTask
,就像那样:
[task setLaunchPath:@"/usr/bin/codesign"];
// ...
NSString *certificateName = @"\"3rd Party Mac Developer Application: Firstname Lastname\"";
NSString *appName = @"\"/path/to/My App.app\"";
NSArray *args = [NSArray arrayWithObjects:@"-s", certificateName, appName, nil];
// ...
[task launch];
我使用NSPipe
来捕获输出,我收到此错误消息:no identity found
...
但是,如果我通过终端手动启动此命令,则应用程序已经过良好签名(因此不会出现严重安装证书等问题)。
我认为问题来了,因为我的应用程序无法访问钥匙串中的证书(但我可以通过终端)。
有人已经遇到过这个问题吗?
提前致谢,Best。
答案 0 :(得分:2)
您不应在NSTask
的参数中嵌入其他引号:
NSString *certificateName = @"3rd Party Mac Developer Application: Firstname Lastname";
NSString *appName = @"/path/to/My App.app";
参数中的空格是自动处理的,不需要引号。