告诉 macOS 没有.png扩展名的自定义文件格式是有效的 png



我需要为我的应用程序提供自定义文件格式,我认为我可以制作PNG的超集。 macOS 会在 Finder 中显示常规 PNG 文件(以及扩展名为.png的 APNG)的预览。我希望 macOS 显示我的文件格式的预览,即使它没有.png扩展名。我需要告诉 macOS,扩展名为.px2的文件是有效的 PNG,可以通过常规 PNG 解码器解码。

我一直在阅读此页面,试图找到要使用的正确密钥集,但我没有任何运气。我认为NSExportableType可能是答案,但似乎不是这样。

为了测试这一点,我将 APNG 文件的扩展名从.png更改为.px2.我意识到我可以只使用.png但我认为这可能有点令人困惑(对于用户和操作系统)。

我试图做的事情有一点可能性是不可能的!

我认为您可能正在查看两个不同的问题:一个是操作系统识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。

后者将高度依赖于Finder内置的QuickLook插件的工作方式。您可能需要自己实现其中之一。

调试此类问题可能有点棘手,因为您需要确保macOS已吸收您的NSExportableTypes。 一个快速检查是进入终端并使用mdls <file of your type and extension>,看看您的文件的kMDItemContentTypekMDItemContentTypeTree是什么。

如果它根本无法识别扩展,请确保它已通过使用隐藏在 CoreServices 的 LaunchServices 框架中的lsregister重新加载。

获取手册页/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister

强制重新加载应用程序(-lint)/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -lint -f <path>在解释条目时添加了有关错误的更多详细信息。

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -seed将重置守护程序,并从默认应用程序和库位置重新设定数据种子。

最新更新