我使用Qt 5.3.2开发了一款Mac应用程序。该应用程序处理特定扩展名的文件(比如
我创建了一个名为XYZ.icns的图标文件,并将其添加到应用程序包资源文件夹(
我还修改了捆绑包的Info.plist文件,以设置文件关联。我添加了以下条目:
我是否有遗漏的地方?我查看了其他应用程序的示例,似乎没有比我做的更多的东西。 编辑:我进行了更多的测试。 我使用以下命令转储了启动服务数据:
在结果中,我可以找到有关文件类型的声明,包括图标信息:
.xyz
)。我创建了一个名为XYZ.icns的图标文件,并将其添加到应用程序包资源文件夹(
MyApp.app/Contents/Resources/XYZ.icns
)中。我还修改了捆绑包的Info.plist文件,以设置文件关联。我添加了以下条目:
<key>CFBundleDocumentTypes</key>
<array>
<!-- Registered file accociation -->
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeName</key>
<string>XYZ</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>xyz</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>XYZ</string>
</dict>
<array>
结果:文件关联已经生效(双击文件会打开我的应用程序),但是图标没有被替换(仍然显示空白文档图标)。我是否有遗漏的地方?我查看了其他应用程序的示例,似乎没有比我做的更多的东西。 编辑:我进行了更多的测试。 我使用以下命令转储了启动服务数据:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump
在结果中,我可以找到有关文件类型的声明,包括图标信息:
...
--------------------------------------------------------------------------------
Container mount state: mounted
bundle id: 105396
...
path: /Applications/MyApp.app
name: MyApp
...
--------------------------------------------------------
claim id: 27628
name: XYZ
rank: Default
reqCaps:
roles: Editor
flags: relative-icon-path doc-type
icon: Contents/Resources/XYZ.icns
bindings: .xyz
--------------------------------------------------------------------------------
...
EDIT2: 经过一段时间的尝试,它最终自行运作起来了。在一夜之间,操作系统进行了更新,并且我也不得不关闭计算机(启动服务可能会自行刷新某些内容)。我将更新我的问题:如何确保启动服务在安装或修改应用程序时刷新关联文件图标?