我有以下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>
答案 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
的路径可能不同。)