我的公司發佈了一個包含幾個基於Qt的MacOS/X GUI應用程序的軟件包;該軟件包將作爲.dmg文件提供,「安裝」包括雙擊.dmg圖標,然後將一個或多個應用程序圖標拖動到他想保留的位置(例如,拖到他自己的「應用程序」文件夾中)。準備.dmg文件時是否有合併冗餘文件的方法?
這工作得很好,但.dmg文件相當大(例如40 + MB),我想如果可能的話,以減小其尺寸,以減少它需要下載的時間。我注意到的一件事是,軟件包中的應用程序都有大量常見的大文件(Qt庫,圖形資源文件等),目前我們在這些文件中包含了每個文件的單獨副本。每個包含的應用程序的app/Contents文件夾 - 大概這就是.dmg文件如此之大的原因。
所以我的問題是,是否有什麼辦法可以修改的.dmg以便它並不需要包含這些文件的多個副本,因而沒有這麼大?理想情況下,我希望在不需要用戶運行特殊安裝程序的情況下執行此操作,並且在用戶將其移動到不同(或意外)文件夾或刪除其中的任何應用程序時不會導致任何應用程序中斷。
看起來這將是一個理想的硬鏈接應用程序 - 即準備輸入到.dmg文件,這樣一個應用程序包含實際文件,其他應用程序包含硬鏈接到這些文件,所以在用戶從.dmg文件中解壓應用程序後,這些文件在邏輯上保持彼此獨立(並且特別是如果用戶移動或刪除應用程序A,則應用程序B不會停止工作)。但AFAICT MacOS/X不支持針對未命名爲Time Machine的應用程序的硬鏈接[編輯:目錄]。 :^(
你能在何種意義上闡述「的MacOS/X不支持硬「鏈接」?我只是輸入「ln somefile相同的文件「在終端,我沒有看到在什麼意義上硬鏈接不支持。 – 2012-08-13 18:34:47
啊,也許這只是MacOS/X不支持的目錄的硬鏈接。維基百科:「爲防止無盡的遞歸,大多數現代操作系統都不允許在目錄上使用硬鏈接,另外,目錄上的硬鏈接會導致父目錄條目的不一致,除此之外,Mac OS X v10.5 (Leopard)和更新的版本,它們僅在時間機器備份機制的目錄上使用硬鏈接。「儘管如此,IIRC到文件的硬鏈接也變成了單獨的副本,作爲.dmg創建過程的一部分,因此不會減小.dmg大小。 – 2012-08-13 18:42:21
然後一個辦法是讓DMG讀寫和對DMG創建共享,也許填補它完全(保留一些獨特的文件,對DMG作爲最後一步複製,具有硬鏈接的相同文件到前後彼此手動)。 – 2012-08-13 18:46:28