2011-12-17 42 views
13

你可以動態地分配CFBundleDocumentTypes到你的Cocoa應用程序嗎?在運行時可以爲我的應用分配更多擴展名來處理。你可以動態分配CFBundleDocumentTypes到你的Cocoa應用程序嗎?

目前我爲我的應用程序設置了一些擴展來處理在Info.plist中使用CFBundleDocumentTypes,但我希望通過代碼執行應用程序時(運行時)執行此操作。基本上,我可以讓Launch Services知道新的擴展,而無需修改Info.plist文件。

謝謝。

回答

9

目前,沒有公開的API可用於在運行時動態(不)註冊文檔類型與Launch Services的應用程序。

Open Emu面臨這個問題。用戶可以選擇性地下載/安裝仿真器,它們是Info.plist文件定義文檔類型的捆綁軟件。安裝仿真器後,捆綁軟件中定義的類型需要成爲Info.plist中定義的類型的一部分。 Open Emu會重寫應用程序Info.plist,以便執行此操作 - 請參閱-updateInfoPlist in OEGameDocumentController

請注意,覆蓋Info.plist包違反了Mac App Store的政策。

我們有filed radars要求運行(不)文件類型的註冊。我建議你也提交另外一個,它應該被作爲#2526726的副本關閉。即使它是重複的,無論如何都要重新存檔,這樣Apple才能估算出需要此功能的人數。

雖然這可能通過SPI。當我仔細研究這個時,我偶然發現了啓動服務中的_LSRegisterItemFromItemInfo()

相關問題