【问题标题】:What is CFErrorDomainLaunchd error 2?什么是 CFErrorDomainLaunchd 错误 2?
【发布时间】:2018-07-04 03:17:18
【问题描述】:

我在任何标题中都找不到 CFErrorDomainLaunchd。我用 find 命令对 10.11 SDK 中的每个头文件进行 grep。

我也试过谷歌:

site:opensource.apple.com CFErrorDomainLaunchd

当我尝试安装我的帮助应用程序时,SMJobBless 将错误传回 及其推出的 plist。

我很困惑,因为安装工作正常 昨天。我特此决定更频繁地检查我的代码 比我现在做的。

Boolean             success;
CFErrorRef          error;

success = SMJobBless(
    kSMDomainSystemLaunchd,
    CFSTR("com.frescologic.FL2000.Uninstaller.UninstallerHelper"),
    self->_authRef,
    &error );     <-- This is CFErrorDomainLaunchd error 2

我永远欠你的债。

我正在开发或尝试开发驱动程序的卸载程序。它还将卸载用户空间程序以及 OS X 用来启动或停止该用户空间程序的 LaunchAgent plist。

【问题讨论】:

    标签: macos drivers launchd


    【解决方案1】:

    这个问题有点老了,所以我猜你已经解决了,但也许这个答案可以帮助其他人。

    在我能找到的任何地方都没有记录,但是如果您尝试(重新)安装已经在目标系统上运行的帮助程序,则会发生此错误。

    为了在我的应用程序中避免这种情况(我必须在功能更改时升级帮助程序),我首先删除现有的帮助程序

    Boolean SMJobRemove(CFStringRef domain, CFStringRef jobLabel, AuthorizationRef auth, Boolean wait, CFErrorRef *outError);
    

    此方法在 10.10 中已弃用,不幸的是,据我所知,它尚未被替换。但是,如果需要更新现有的帮助器,它确实可以工作。

    如果您的应用不需要这样做,那么我建议检查是否已安装帮助程序或使用脚本在测试运行之间删除帮助程序。

    【讨论】:

      【解决方案2】:

      一般表示找不到 LaunchAgent。确保有一个构建阶段来复制 Helper,其目的地类型为“Wrapper”,子路径为 Contents/Library/LaunchServices 。还要确保产品名称与 plist 文件中的 Bundle ID 使用供应相匹配。

      例如:

      <key>SMPrivilegedExecutables</key>
          <dict>
              <key>com.keenow.HelperTool</key>
              <string>anchor apple generic and identifier &quot;com.myapp.HelperTool&quot; and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = &quot;YourTeamId&quot;)</string>
          </dict>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-08
        • 2010-10-21
        • 2015-03-10
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        相关资源
        最近更新 更多