我制作了一个应用程序,并提交给了Mac AppStore。出于某些原因,他们拒绝了它,因为它使用SMJobBless应用程序接口安装了一个辅助工具。
由于此辅助工具对于应用程序的大部分功能并不是必需的,因此我已将其删除,并且我的应用程序已被接受。
所以现在,我正在为助手工具打包一个独立的安装器,可以在互联网上下载。
但是,在我将文件安装到位后,帮助工具拒绝运行...助手工具只有一个plist和一个二进制文件,plist放在/Library/LaunchDaemons中,二进制文件放在/Library/PrivilegedHelperTools中。
现在我想知道,除了将文件移动到适当的位置之外,SMJobBless到底在做什么?是否将我的工具注册到launchctl?我尝试了各种方法,手动将其添加到launchctl中,但都没有成功: helper工具在请求签入请求后退出。
辅助工具只包含以下内容:
@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应用程序接口安装时,这个服务运行得很完美,并且根代理可以从我的应用程序中访问……
那么,我的安装程序需要哪些步骤才能让这个辅助工具正常工作,就像调用SMJobBless应用编程接口一样?
谢谢,皮埃尔。
发布于 2012-06-22 10:58:44
解决了。助手工具的PList条目没有包含任何ProgramArguments (这似乎不是SMJobBless应用编程接口的问题)。将这些添加到PList后,帮助工具可以正确运行,安装程序也会正确注册它。
无论如何,谢谢!皮埃尔。
https://stackoverflow.com/questions/11148979
复制相似问题