NSError *error;[[NSWorkspace shareDWorkspace] launchApplicationAtURL:helperURL options:NSWorkspacelaunchdefault configuration:nil error:&error];
错误是:
The application “Helper” Could not be launched because it is corrupt.,NSUnderlyingError=0x10214c700 “The operation Couldn’t be completed. (Osstatus error -10827.)”}
现在,该错误具有误导性,因为如果我禁用沙盒权利,应用程序就会启动.显然这是一个错误,正如here报道的那样.
我的问题是:有解决方法吗?
我可以使用SMLoginItemSetEnabled,如here所述:
Pass
true
to start the helper application immediately and indicate that it should be started every time the user logs in. Passfalse
to terminate the helper application and indicate that it should no longer be launched when the user logs in.
但是,由于App Store RevIEw GuIDeline 2.26,我无法在不首先询问用户的情况下使用此API:
Apps that are set to auto-launch or to have other code automatically run at startup or login without user consent will be rejected
因此,使用此解决方法意味着询问用户“每次登录时是否可以启动帮助程序?如果没有,则无法使用此应用程序!”显然,这并不理想……
解决方法 一个可行的解决方法是使用NSTask生成/usr/bin/open并为其提供帮助应用程序的路径:NSTask *task = [NSTask new];[task setLaunchPath: @"/usr/bin/open"];[task setArguments: [NSArray arrayWithObjects: helperPath,nil]];[task launch];
这可以从沙箱中运行良好,并且似乎与Mac App Store查看指南兼容.
更新:在进一步检查时,此技术经常因错误而失败
The application cannot be opened because its executable is missing.
当我关闭沙盒时不会发生此错误.所以必须有一个更好的解决方案……
总结以上是内存溢出为你收集整理的cocoa – 从沙盒应用程序启动帮助程序全部内容,希望文章能够帮你解决cocoa – 从沙盒应用程序启动帮助程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)