2017-08-28 69 views
7

對於我正在開發的應用程序,我們開發了基於HTML的文件格式,以便即使沒有我們應用程序的用戶也可以使用Web瀏覽器預覽文檔。替代系統定義的UTI

但是,對於有應用程序的用戶,我們想用它來打開這些文件。我們決定使用'.shtml'擴展,默認情況下,瀏覽器在大多數操作系統上打開該擴展,並且沒有被廣泛使用。

我們現在遇到麻煩使MacOS明白我們的.shtml文件不同於普通的.html文件,應該用我們的應用程序打開。問題是MacOS已經將.shtml文件註冊爲「public.html」。即使我使用UTTypeIdentifier「com.example.shtml」和UTTypeTagSpecification的public.filename擴展名來定義UTI,系統始終會將.shtml文件檢測爲「public.html」,而不是「com.example.shtml」 ,即使我設置UTTypeConformsTo爲'public.html'...

有關啓發式操作系統用來檢測系統定義的UTI的文檔很少,至少可以說,所以我找不到如何更改我的文件以不被檢測爲public.html。歡迎任何幫助或指引正確的方向。謝謝!

回答

1
+0

也許我不是很清楚。問題在於系統爲「.html」和「.shtml」擴展名定義了一個UTI(public.html),並且我所做的任何「.shtml」文件都被檢測爲「public.html」,而不是我的UTI。 – arantes

+0

你可以在/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist ovverride –

+0

謝謝,這是非常好的知道這個文件的位置!但是,由於SIP的原因,即使在新版本的MacOS上,根文件也不可編輯... – arantes

1

可惜這是不可能的,因爲MacOS的增加,防止系統中定義的UTI的任何修改而不與SIP停用重新啓動SIP。我建議將您的應用設置爲public.html的默認設置,並將任何不符合您要求的文件重定向到默認瀏覽器。