gpt4 book ai didi

macos - Mac OS X 文件关联有效,但文件图标未更改

转载 作者:行者123 更新时间:2023-12-02 15:19:19 29 4
gpt4 key购买 nike

我使用 Qt 5.3.2 开发了一个 Mac 应用程序。该应用程序处理具有特定扩展名的文件(例如 .xyz)。

我创建了一个名为 XYZ.icns 的图标文件,并将其添加到我的应用程序包资源文件夹 (MyApp.app/Contents/Resources/XYZ.icns)。

我还修改了 bundle 的 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>

结果:文件关联有效(双击文件确实会打开我的应用程序),但是图标尚未替换(仍然显示空白文档图标)。

有什么我错过的吗?我查看了其他应用程序的示例,似乎没有什么比我所做的更多的了。

编辑:我做了一些更多的测试。我使用以下命令转储了 Launch 服务数据:

/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:过了一段时间,它终于可以自己工作了。一夜之间,安装了操作系统更新,我还必须关闭计算机(启动服务可能会自行刷新某些内容)。我会将我的问题更新为:如何确保启动服务在安装或修改应用程序时刷新关联的文件图标?

最佳答案

我的理解是某些(内置)操作会触发启动服务来刷新数据库。将新的 .app 包拖到应用程序文件夹是一个触发器,运行 PackageMaker 安装程序也是如此。但是,Launch Services 数据库中的内容与 Finder 显示的内容之间可能存在脱节(直到进行其他刷新/重新启动)。

一些快速的Google搜索建议您可以从命令行强制重建:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain系统域用户

但是,由于内置触发器,这一步应该不是必需的,因此我会犹豫是否使用它,除非您可以清楚地确定内置触发器对您的应用程序失败的原因。如果问题出在 Finder 的图标缓存上,这可能也无济于事。

关于macos - Mac OS X 文件关联有效,但文件图标未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28222787/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com