Macos 将自定义文件扩展名与我的应用程序关联

Macos 将自定义文件扩展名与我的应用程序关联,macos,info.plist,uti,Macos,Info.plist,Uti,我正在尝试将自定义文件扩展名(比如.abc)与我正在处理的应用程序相关联,这样当我双击具有特定扩展名的文件时,我的应用程序就会启动 .abc文件只是一个归档文件(.zip重命名为.abc),它收集了几个.xml文件。当我用我的应用程序加载其中一个.abc文件时,会提取归档文件并解析.xml文件,这样我就可以在代码中为某些变量设置一些值 如果我理解正确,这有两个部分 让OS X知道.abc扩展必须与我的应用程序关联 启动后在我的应用程序中处理文件 现在我对第一部分有意见。我已经读过一些关于这个

我正在尝试将自定义文件扩展名(比如.abc)与我正在处理的应用程序相关联,这样当我双击具有特定扩展名的文件时,我的应用程序就会启动

.abc文件只是一个归档文件(.zip重命名为.abc),它收集了几个.xml文件。当我用我的应用程序加载其中一个.abc文件时,会提取归档文件并解析.xml文件,这样我就可以在代码中为某些变量设置一些值

如果我理解正确,这有两个部分

  • 让OS X知道.abc扩展必须与我的应用程序关联
  • 启动后在我的应用程序中处理文件
现在我对第一部分有意见。我已经读过一些关于这个主题的堆栈溢出帖子(比如or),但我不明白它们是如何给出键
(我尝试过abc,但不起作用)和键
的字符串值内容的

到目前为止,这是我添加到info.plist文件中的代码

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFile</key>
        <array>
            <string>myicon.icns</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>My Custom Project File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>don't.know.what.to.put.here.abc</string>
        </array>
    </dict>
</array>

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string> <!--not sure about that value-->
        </array>
        <key>UTTypeDescription</key>
        <string>My Custom Project File</string>
        <key>UTTypeIdentifier</key>
        <string>don't.know.what.to.put.here.abc</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>abc</string>
            <key>public.mime-type</key>
            <string>application/octet-stream</string> <!--not sure about that value-->
        </dict>
    </dict>
</array>
CbundleDocumentTypes
CbundleTypeConfigile
myicon.icns
CbundleTypeName
我的自定义项目文件
CbundleTypeRole
编辑
伊斯汉德兰克
所有者
lsItemContentType
不知道要放什么放在这里
UTExportedTypeDeclarations
Uttypecommisto
公共数据
UTTypeDescription
我的自定义项目文件
UTTypeIdentifier
不知道要放什么放在这里
Uttypetag规范
public.filename-extension
abc
public.mime-type
应用程序/八位字节流
另外,在我的情况下,
UTTypeConformsTo
public.data是否正常?因为定制的文件扩展名表示包含xml文件的存档

如果有人能帮我:)


感谢

我找到了问题的解决方案,我只是误读了文档,因为key
CFBundleTypeIconFile
是一个字符串,而不是字符串数组(我很困惑,因为我在使用key
CFBundleTypeIconFiles
这是一个数组),我找到了问题的解决方案,我只是误读了文档,因为键
CbundletTypeIConfile
是一个字符串,而不是字符串数组(我很困惑,因为我在下面的iOS示例中使用了键
CbundletTypeIConfile
这是一个数组)

请随意回答您自己的问题:我认为编辑是一种方式!很容易忽略问题(IMHO)中发布的答案。好吧,我只是再次编辑了原始帖子并写了一个新答案。谢谢你的提示:)我也有这个问题。您必须提供的最低信息量是多少?我只尝试了
CbundleTypeName
LSHandlerRank
,但它不起作用。请随意回答您自己的问题:我认为编辑是一种方式!很容易忽略问题(IMHO)中发布的答案。好吧,我只是再次编辑了原始帖子并写了一个新答案。谢谢你的提示:)我也有这个问题。您必须提供的最低信息量是多少?我只尝试使用
CbundleTypeName
LSHandlerRank
但它不起作用。