我需要为我的应用程序使用自定义文件格式,并且我认为我可以制作PNG的超集。 macOS在Finder中显示常规PNG文件(以及扩展名为.png
的APNG)的预览。我希望macOS显示我的文件格式的预览,即使它没有.png
扩展名。我需要告诉macOS,扩展名为.px2
的文件是可以由常规PNG解码器解码的有效PNG。
我一直在阅读this page,试图找到要使用的正确密钥集,但是我没有任何运气。我以为NSExportableTypes可能是答案,但这似乎不是答案。
要对此进行测试,我将APNG文件的扩展名从.png
更改为.px2
。我意识到我可以只使用.png
,但我认为这可能会有些混乱(对用户和操作系统而言)。
我试图做的事情很有可能是不可能的!
答案 0 :(得分:1)
我认为您可能正在研究两个不同的问题:一个是操作系统识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。
后者将高度依赖于Finder的内置QuickLook插件的工作方式。您可能需要自己实施其中之一。
调试这类问题可能会有些棘手,因为您需要确保macOS吸收了NSExportableTypes
。一种快速检查是放入 Terminal (终端)并使用mdls <file of your type and extension>
,然后查看kMDItemContentType
和kMDItemContentTypeTree
用于文件的含义。
如果根本无法识别扩展名,请使用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
将重置守护程序,并从默认应用程序和库位置重新播种数据。