覆盖系统定义的 UTI



对于我正在开发的应用程序,我们开发了一种基于HTML的文件格式,因此即使没有我们应用程序的用户也可以使用Web浏览器预览文档。

但是,对于拥有该应用程序的用户,我们希望使用它来打开这些文件。我们决定使用".shtml"扩展名,该扩展名在大多数操作系统上默认由浏览器打开,并未广泛使用。

我们现在遇到了麻烦,让MacOS了解我们的.shtml文件与常规.html文件不同,应该使用我们的应用程序打开。问题是MacOS已经将.shtml文件注册为"public.html"。即使我用UTTypeIdentifier"com.example.shtml"和UTTypeTagSpecification的public.filename-extension名为"shtml"定义UTI,系统也总是将.shtml文件检测为"public.html"而不是"com.example.shtml",即使我将UTTypeConformTo设置为"public.html"...

至少可以说,有关操作系统用于检测系统定义的 UTI 的启发式方法的文档很少,因此我找不到如何将我的文件更改为不被检测为公共.html。欢迎任何帮助或指向正确方向的指示。谢谢!

文件关联基于MIME类型,UTI反抗工作。 希望这些链接对您有所帮助 https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_declare/understand_utis_declare.html

不幸的是,这是不可能的,因为macOS添加了SIP,它可以防止对系统定义的UTI进行任何修改,而无需在SIP停用的情况下重新启动。我的建议是将您的应用程序设置为公共的默认应用程序.html并将任何不符合您要求的文件重定向到默认浏览器。

最新更新