yosemite升級 如何將文件類型與MacOS X應用程序關聯,而無需先啟動它?




os x yosemite升級 (3)

我想將我的Mac OS X應用程序的最新安裝版本與某種類型的文件相關聯。 一些實驗表明, info.plist文件似乎在啟動應用程序時被操作系統讀取和解釋,而不是在將應用程序包拖到磁盤時被讀取和解釋。 關於運行時配置的Apple文檔沒有在這個話題上多說。

有什麼辦法,使用一個簡單的.dmg圖像作為安裝媒介,以確保系統將該特定的文件類型與我新安裝的應用程序關聯, 而無需首先啟動它

EIDT:我應該澄清一點,我希望在安裝過程中自動完成(我不希望我的用戶必須自己做)。

謝謝!


您可以通過在要將應用程序關聯到的文件上輸入apple-I,使用名為“Open with ...”的小方框,然後選擇您的應用程序。 您可以選中“全部更改...”下面的小方框,對所有類似的文件進行更改。


雖然Tony的信息是正確的 - 這裡也解釋 - (將MyApp.app拖到Applications將使用來自Info.plist xml文件和設置文件關聯的信息自動註冊到啟動服務),但它並沒有完全回答文件關聯。

如果人們按照這些說明,他們將打開他們的應用程序,但沒有打開特定的文件。

請確保系統將該特定文件類型與我新安裝的應用程序相關聯

與其他平台相比,Mac上的文件關聯有點不同。 大多數平台,當*.foomyapp註冊時,當雙擊MyFile.foo時,它會沿著以下MyFile.foo行發送一些內容:

/path/to/myapp MyFile.foo

儘管你可以在Mac上的命令行上自由地使用這種技術,但是它並不能通過Finder工作 ,也不能通過雙擊桌面上的相關文件來工作。

在這裡提問並回答:

https://.com/a/19702342/3196753

一些說法是這種方法比main()保守的document-open-file-handling更有優勢,因為它“只能打開應用程序的一個實例”。 不管這個決定背後的原因是什麼,從C ++的角度來看,這更加複雜。

  • 這裡可以得到108頁PDF(警告,這被標記為“遺留”,linkrot可能會發生)。
  • 來自蘋果開發者門戶的相關文檔可以在這裡找到
  • Qt的方法記錄在這裡

來自qt.io:

當用戶雙擊Finder中的文件時,Finder會向與該文件關聯的應用程序發送一個Apple事件,並要求其打開該文件。 如果應用程序未運行,則啟動該應用程序,然後發出請求。 這種方法的優點是只有一個應用程序正在運行。

在Windows上,這通常是通過啟動應用程序並將文件的名稱作為命令行參數傳遞完成的。 查看許多文件會導致啟動同一應用程序的許多實例。 (作為Qt解決方案提供的QtSingleApplication組件解決了這個問題。)

Qt 3沒有提供處理Apple事件的抽象,但是使用Mac的Carbon API在應用程序中添加對它們的支持是很簡單的。 假設我們有一個名為XpmViewer的應用程序,它顯示XPM文件(X11圖像格式)。 主窗口類聲明如下:[代碼片段被刪除]

(BOOL)application:(NSApplication *)theApplication
       openFile:(NSString *)filename

處理Mac OS X文件打開事件BEFORE C ++ main()執行 AEInstallEventHandler處理程序不會在啟動時被調用


當用戶將應用程序拖入“應用程序”文件夾時,系統應自動將其註冊到“啟動服務”。 請參閱“啟動服務指南”中的應用程序註冊





info.plist