SMJobBless因CFErrorDomainLaunchd Code 9而失败

and*_*y.s 9 macos cocoa xpc launchd smjobbless

有人知道那个错误代码是什么意思吗?我通过此返回码值获得SMJobBless错误.

Failed to bless helper: Error Domain=CFErrorDomainLaunchd Code=9 "The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.)"
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,在博客文章中查找答案,在Apple Docs中,在那里找不到答案是什么以及如何解决它.人们说(在一些支持论坛上,重新安装OS X对他们有帮助).

几周以前,我已经在我正在进行的项目中发生了这件事,唯一能帮助我解决问题的是改变我帮助工具的名称.现在又发生了.

同时我的代码在其他计算机上工作,只有我的工作站受此问题的影响.

更新: 重命名后,它再次起作用.现在我的系统上有两个帮助工具包标识符"禁止":-(

更新2: 它也发生在其他计算机上:-(

and*_*y.s 8

在我的情况下错误

无法帮助助手:错误Domain = CFErrorDomainLaunchd Code = 9"无法完成操作.(CFErrorDomainLaunchd error 9.)"

意味着帮助工具已添加到永久禁用服务列表中:

/private/var/db/com.apple.xpc.launchd/disabled.plist
Run Code Online (Sandbox Code Playgroud)

我告诉约塞米蒂,年龄较大/年轻的操作系统版本可能在这里(我还没有检查):

/var/db/launchd.db/com.apple.launchd.peruser.*user_id*/overrides.plist
Run Code Online (Sandbox Code Playgroud)

在阅读了launchctl手册页后,我发现"unload"子命令的参数-w为这个plist文件添加了服务.我在卸载程序脚本中使用了这个标志,导致下次无法使用"祝福"工具.

似乎无法从该disabled.plist文件中删除服务.每次重新启动时,文件都从启动缓存中恢复,并且刷新缓存似乎尚未实现.它只能永远启用服务,因此launchd不会阻止它启动.

这里有几个链接可能对遇到类似问题的人有用:


aki*_*kim 5

使用High Sierra(可能是以前,但我不知道何时开始),有几个帮助的launchctl子命令。

launchctl print-disabled system
Run Code Online (Sandbox Code Playgroud)

将列出明确禁用的服务。确保检查false/ true值。

启用禁用的服务

sudo launchctl enable system/com.example.service
Run Code Online (Sandbox Code Playgroud)

同样,对于记录,/System/Library/Frameworks/ServiceManagement.framework/Versions/A/Headers/SMErrors.h一个可以读取:

enum {
        kSMErrorInternalFailure = 2,
        kSMErrorInvalidSignature,
        kSMErrorAuthorizationFailure,
        kSMErrorToolNotValid,
        kSMErrorJobNotFound,
        kSMErrorServiceUnavailable,
        kSMErrorJobPlistNotFound,
        kSMErrorJobMustBeEnabled,
        kSMErrorInvalidPlist,
};
Run Code Online (Sandbox Code Playgroud)

代码9(kSMErrorJobMustBeEnabled)比“操作无法完成”更有意义。