告诉 macOS 没有 .png 扩展名的自定义文件格式是有效的 png
Tell macOS that a custom file format without a .png extension is a valid png
我的应用程序需要自定义文件格式,我想我可以制作 PNG 的超集。 macOS 在 Finder 中显示常规 PNG 文件(以及扩展名为 .png
的 APNG)的预览。我希望 macOS 显示我的文件格式的预览,即使它没有 .png
扩展名。我需要告诉 macOS 具有 .px2
扩展名的文件是有效的 PNG,可以由常规 PNG 解码器解码。
我一直在阅读 this page trying to find the right set of keys to use but I'm not having any luck. I thought that NSExportableTypes 可能是答案,但似乎不是。
为了对此进行测试,我将 APNG 文件的扩展名从 .png
更改为 .px2
。我意识到我可以只使用 .png
但我认为这可能有点令人困惑(对于用户和 OS)。
我尝试做的事情有可能是不可能的!
我认为您可能正在寻找 2 个不同的问题:一个是 OS 识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。
后者将高度依赖于 Finder 内置 QuickLook 插件的工作方式。您可能只需要自己实施其中一个。
调试这类问题可能有点棘手,因为您需要确保 macOS 已吸收您的 NSExportableTypes
。一项快速检查是进入 Terminal 并使用 mdls <file of your type and extension>
并查看 kMDItemContentType
和 kMDItemContentTypeTree
是什么用于您的文件。
如果它根本无法识别扩展,请确保已使用隐藏在 CoreServices 的 LaunchServices 框架中的 lsregister
重新加载它。
/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
将重置守护程序并从默认应用程序和库位置重新植入数据。
我的应用程序需要自定义文件格式,我想我可以制作 PNG 的超集。 macOS 在 Finder 中显示常规 PNG 文件(以及扩展名为 .png
的 APNG)的预览。我希望 macOS 显示我的文件格式的预览,即使它没有 .png
扩展名。我需要告诉 macOS 具有 .px2
扩展名的文件是有效的 PNG,可以由常规 PNG 解码器解码。
我一直在阅读 this page trying to find the right set of keys to use but I'm not having any luck. I thought that NSExportableTypes 可能是答案,但似乎不是。
为了对此进行测试,我将 APNG 文件的扩展名从 .png
更改为 .px2
。我意识到我可以只使用 .png
但我认为这可能有点令人困惑(对于用户和 OS)。
我尝试做的事情有可能是不可能的!
我认为您可能正在寻找 2 个不同的问题:一个是 OS 识别文件类型并将其链接到您的应用程序,另一个是能够显示预览。
后者将高度依赖于 Finder 内置 QuickLook 插件的工作方式。您可能只需要自己实施其中一个。
调试这类问题可能有点棘手,因为您需要确保 macOS 已吸收您的 NSExportableTypes
。一项快速检查是进入 Terminal 并使用 mdls <file of your type and extension>
并查看 kMDItemContentType
和 kMDItemContentTypeTree
是什么用于您的文件。
如果它根本无法识别扩展,请确保已使用隐藏在 CoreServices 的 LaunchServices 框架中的 lsregister
重新加载它。
/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
将重置守护程序并从默认应用程序和库位置重新植入数据。