代码之家  ›  专栏  ›  技术社区  ›  Thunderforge

Lsregister给出“签名不匹配”错误

  •  0
  • Thunderforge  · 技术社区  · 12 年前

    我正在尝试为我的OS X应用程序注册文档文件类型。首先,我添加了 CFBundleDocumentTypes UTExportedTypeDeclarations 键,如所述 this answer on adding file type associations 。然而,Finder似乎不想识别我声明的文件类型。

    为了弄清楚到底发生了什么,我转向 this answer on debugging file type associations ,描述了我如何使用 lsregister 工具,以了解其不工作的原因。每当我尝试这样做时,都会出现以下错误:

    Signature mismatch: PkgInfo signature = '????', plist CFBundleSignature = 'SWCC'
    

    这似乎是指Info.plist文件中的以下行:

    <key>CFBundleSignature</key>
    <string>SWCC</string>
    

    据我所知,CFBundleSignature类似于Mac OS 9的“创建者代码”。基本上,我只是随机选择了一个4个字母的扩展名。

    然而,我没有找到任何关于“PkgInfo签名”是什么或如何声明它的信息 how it was optional since 10.3 ,但实际上没有得到 什么 是的。

    那么,如何解决“签名不匹配”的问题?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Thunderforge    12 年前

    进一步搜索后,我发现许多应用程序,包括XCode中新创建的项目,在其Info.plist文件中具有以下值 CFBundleSignature :

    <key>CFBundleSignature</key>
    <string>????</string>
    

    这似乎表明捆绑包的签名未定义。鉴于此 CF捆绑签名 这似乎是对Mac OS 9的一种倒退,而且四个字母“SWCC”是任意选择的,只要更改Info.plist文件中的行以匹配上面的行,就不会有任何伤害。

    修复后,lsregister中的“签名不匹配”错误将消失,如果没有其他错误,则应注册文件类型关联。

    推荐文章