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

时间:2019-07-24 06:45:26

标签: macos cocoa format

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

我一直在阅读this page,试图找到要使用的正确密钥集,但是我没有任何运气。我以为NSExportableTypes可能是答案,但这似乎不是答案。

要对此进行测试,我将APNG文件的扩展名从.png更改为.px2。我意识到我可以只使用.png,但我认为这可能会有些混乱(对用户和操作系统而言)。

我试图做的事情很有可能是不可能的!

1 个答案:

答案 0 :(得分:1)

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

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

调试这类问题可能会有些棘手,因为您需要确保macOS吸收了NSExportableTypes。一种快速检查是放入 Terminal (终端)并使用mdls <file of your type and extension>,然后查看kMDItemContentTypekMDItemContentTypeTree用于文件的含义。

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

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

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

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