Mac文件关联无法正常工作。为什么或如何调试?

时间:2013-09-24 14:12:53

标签: macos plist info.plist

我有以下Info.plist,我试图将.mybin文件与applcation关联起来。但是,安装.mybin文件后没有图标,说明或关联(使用“获取信息”查看时)。我是OSX开发的新手,我继承了应用程序的包装,所以我不知道如何调试问题。如果有任何不同,应用程序将使用productbuild打包到.app。

我已经将我的info.plist与其他几个应用程序进行了比较,我可以看到的唯一区别是许多包括弃用键,例如CFBundleTypeExtensions。由于我只需要支持10.6或更高,我不相信我需要这个,LSItemContentTypes就足够了。根据我的理解,LSItemContentTypes的'com.me.myapp.mybin'是导出同名的UTI的链接。

我尝试手动将.mybin文件与应用程序关联,但是当我双击该应用程序无法处理该类型的文件时,该操作失败。

任何人都可以告诉我们这个info.plist有什么问题或者做什么调查?

感谢。

<plist version="1.0">
<dict>
    <key>CFBundleIconFile</key>
    <string>MyApp.icns</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleGetInfoString</key>
    <string>My Application version 1.0, Copyright © 2013.</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleExecutable</key>
    <string>My Application</string>
    <key>CFBundleName</key>
    <string>My Application</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.6</string>
    <key>CFBundleIdentifier</key>
    <string>com.me.myapp</string>
    <key>CFBundleDisplayName</key>
    <string>My Application</string>
    <key>CFBundleVersion</key>
    <string>1.0.0</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>LSMultipleInstancesProhibited</key>
    <true/>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFile</key>
            <string>MyApp</string>
            <key>CFBundleTypeName</key>
            <string>My Application binary</string>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.me.myapp.mybin</string>
            </array>
            <key>LSHandlerRank</key>
            <string>Owner</string>
        </dict>
    </array>
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeDescription</key>
            <string>My Application binary</string>
            <key>UTTypeIconFile</key>
            <string>MyApp.icns</string>
            <key>UTTypeIdentifier</key>
            <string>com.me.myapp.mybin</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <string>mybin</string>
                <key>public.mime-type</key>
                <string>application/vnd.me-app.binary</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

1 个答案:

答案 0 :(得分:2)

您可以使用lsregister命令进行调查:

alias lsregister='/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister'
lsregister -lint -f /path/to/your.app

(我正在使用Lion。在不同版本的Mac OS上,lsregister的路径可能不同。)