我制作了一个提交给Mac AppStore的应用程序。出于某些原因,他们拒绝了,因为它正在使用SMJobBless API安装帮助工具。
由于这个帮助工具不是大多数应用程序功能所必需的,我已将其删除,并且我的应用程序已被接受。
现在,我正在打包一个可以在互联网上下载的帮助工具的独立安装程序。
然而,在我安装了文件之后,帮助工具拒绝运行...帮助工具只有一个进入/ Library / LaunchDaemons的plist和一个进入/Library/PrivilegedHelperTools的二进制文件。 p>
现在我想知道,SMJobBless究竟在做什么比将文件移动到位更重要?它是否使用launchctl注册我的工具?我尝试了各种各样的东西,手动将它添加到launchctl,但没有成功:帮助工具只是在请求它的签入请求后退出。
辅助工具只包含:
@autoreleasepool {
launch_data_t req = launch_data_new_string(LAUNCH_KEY_CHECKIN);
launch_data_t resp = launch_msg(req); // AT THIS POINT, RESP IS NULL. Why?
launch_data_t machData = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_MACHSERVICES);
launch_data_t machPData = launch_data_dict_lookup(machData, [kHelperBundleName UTF8String]);
mach_port_t mp = launch_data_get_machport(machPData);
launch_data_free (resp);
launch_data_free (req);
// Prepare connexion.
NSMachPort *rp = [[NSMachPort alloc] initWithMachPort:mp];
PrivilegedHelperProxy
*phProxy = [[[PrivilegedHelperProxy alloc] init] autorelease];
NSConnection *con = [NSConnection connectionWithReceivePort:rp sendPort:nil];
[rp release];
[con setRootObject:phProxy];
[[NSRunLoop currentRunLoop] run];
}
return EXIT_SUCCESS;
当通过SMJobBless API安装时,此服务运行良好,并且可以从我的APP中访问根代理...
那么,安装程序使这个帮助工具正常工作所需的步骤是什么,就像调用SMJobBless API一样?
谢谢, 皮尔。
答案 0 :(得分:0)
解决。帮助工具的PList条目不包括任何ProgramArguments(这似乎不是SMJobBless API的问题)。将这些辅助工具添加到PList后,帮助工具可以正确运行,安装程序会正确注册它。
谢谢! 皮尔。