2009-08-06 96 views
18

我正在Cocoa開發應用程序。我需要創建一個DMG文件來安裝像Adium這樣的應用程序(它提供了一個很好的用戶界面來將應用程序文件拖到應用程序文件夾中)。有這樣的工具嗎?創建DMG文件

+7

對於投票結束的人,我不同意SuperUser.com上的這個/必然/屬於,因爲有程序化的方式來完成它,它比編程更多地與終端用戶相關,因爲它關於應用程序部署。 – 2009-08-06 17:43:38

+1

如果DMG不是真的必要,請使用zip。這對於新的Mac OS X用戶而言比DMG更難混淆。 – 2011-08-03 11:16:41

回答

16

磁盤工具(這是在應用程序\實用程序)

轉到File>New>Disk Image From Folder,然後選擇要創建的圖像的文件夾。生成的.dmg將複製用於製作圖像的文件夾,直至圖標的位置。

+2

說真的,爲什麼在有這個方便的工具時支付共享軟件? – Philippe 2010-12-14 10:58:38

+0

此方法實際上不保留頂層圖標位置和視圖選項。 – 2011-03-27 01:24:57

+0

@MichaelTsai是的,你需要定位所有東西,然後將其轉換爲壓縮磁盤工具,也創建一個背景圖像創建一個名爲'.background'的文件夾,將圖像放在那裏,打開你的音量,按' cmd + j'然後標記'Background:Picture',並將'.background'中的文件拖入它。這必須在將其轉換爲壓縮(只讀)圖像之前完成。 – 2013-09-25 12:01:59

8

Dr. Nic博士爲您完成了大部分這項工作的好的紅寶石寶石,您只需提供xcode項目和一些圖形。鏈接是在這裏:

http://drnicwilliams.com/2009/02/03/choctop-packaging-and-deployment-of-cocoa-applications/

這是一個很大的包,需要在其他方面痛任務的照顧......

- 埃文

+0

感謝提到這一點,正是我所期待的。 – 2010-03-01 05:15:05

+0

我不得不提到由此工具創建的dmg的總體大小增加到了10M。 – 2012-06-26 18:03:01

17

如果你有一個單一的文件用戶可能會複製到應用程序目錄,「啓用互聯網的」磁盤映像是一個不錯的選擇。當您使用Safari下載一個(我知道,並非所有人都使用Safari)時,它會自動掛載它,將內容複製到下載位置,然後卸載DMG並將其移至垃圾箱。該應用程序不會自動轉到應用程序,但它在用戶的HD上,他們不必擔心擺弄磁盤映像。

磁盤圖像可與單終端命令啓用互聯網:

hdiutil internet-enable -yes "MyDiskImage.dmg" 

這應該在任何DMG文件的工作。如果你想讓用戶看到你漂亮的背景,你可能不想這樣做。但是,對於簡單的有效載荷來說,這是一條不錯的路。 (當然,有些人寧願創建這種部署的ZIP文件,反正。)


我發現手動創建一個DMG可以是一個痛苦。您實際上可以在您的Xcode項目中自動創建一個簡單的DMG。只需創建Shell腳本目標(項目→新目標...)並在腳本中使用hdiutil。該命令會是這個樣子(替代正確的名稱和目錄):

hdiutil create -fs HFS+ -volname "MyApp 1.0" -srcfolder \ 
"/directory/with/contents/to/package/" "~/Desktop/MyApp-1.0.dmg"` 

你需要把所有你想在一個目錄的磁盤映像中包含的東西,但如果你是不怕在終端中使用cp,這很容易做到。

如果你想看到一個例子,我自己在CHDataStructures.framework中使用這種方法。如果您簽出代碼並在Xcode中打開,Deployment目標中的第二個腳本將創建DMG。

+1

唉,通過Mac OS X 10.2到10.6,[僅限於](http://c-command.com/dropdmg/manual-ah/internet-enabled)支持Internet的設置。即使在這些版本中,它幾乎只在Safari下載.dmg文件時才起作用。 – 2013-09-26 11:50:19

3

而且,因爲沒有足夠的答案已經...

我創建了一個讀寫與我想要的佈局DMG - 背景圖片,尺寸,快捷方式應用程序圖標和一個空文件夾站在我的應用程序中。我編寫了一個簡單的bash腳本來製作此DMG的副本,將其掛載,將我的應用程序複製到空文件夾中,卸載DMG,然後將其轉換爲只讀。

但是DMG Canvas可以爲您完成整個過程,並且還提供了一個命令行工具,您可以使用它從Xcode構建中自動執行此過程,所以我真的會建議通過我的解決方案。

0

MacBreak Dev對使用Automator工作流程創建DMG文件做了一個很好的小屏幕錄像。使事情變得非常簡單,非常快速,您可以爲DMG提供自定義背景。你可以看到: http://www.pixelcorps.tv/mbkd_010

+0

鏈接似乎不工作,更不幸的是。 – Cragly 2011-06-04 10:06:53

2

Mozilla build scripts是一個很好的來源,如果你想編寫自己的腳本。使用pkg-dmg您可以自定義背景圖片,卷名,添加許可,圖標等。舉例:

pkg-dmg \ 
    --verbosity 2 \ 
    --volname "MegaFinder" \ 
    --source MegaFinder.app \ 
    --sourcefile \ 
    --target MegaFinder.dmg \ 
    --license Licence.txt \ 
    --icon MegaFinderVolumenIcon.icns \ 
    --copy MegaFinderCustomizedDS_Store:.DS_Store \ 
    --mkdir .background \ 
    --copy MegaFinderBackgroundImage.jpg:.background/backgroundImage.jpg \ 
    --symlink /Applications:Applications \ 
    --attribute V:.background \ 
    2>&1 > /dev/null 

的問題是創造完美.DS_Store。對於簡單情況,您可以創建.DS_Store在Finder(顯示視圖選項)中自定義安裝的dmg卷。你需要創建一個可寫的形象,對其進行自定義,卸載(提交更改),最後再安裝到它複製到.DS_StoreMegaFinderCustomizedDS_Store(因爲它出現在上面的例子)

如果您的應用程序suppports豹我建議DMG Canvas管理整個過程或至少獲得.DS_Store。它也有一個命令行工具。

+0

Mozilla腳本源的更新鏈接:http://hg.mozilla.org/mozilla-central/file/tip/build/package/mac_osx – ash 2013-09-17 16:17:42

0

您可以使用DropDMG來設置佈局,其中包含背景圖片,符號鏈接到應用程序文件夾,圖標位置等。然後,當您需要製作.dmg文件時,只需將應用程序拖放到DropDMG(或通過AppleScript或dropdmg命令行工具對其進行編寫),並使其一步構建磁盤映像。

1

將其作爲自動構建步驟執行此操作的最佳方法是創建一個template.dmg,它看起來完全如何(使用finder/diskutility等,但不會執行壓縮它的最後一步),然後在構建腳本中:

  1. 使用hdiutil附加圖像
  2. 使用CP等將應用程序複製到安裝圖像
  3. hdiutil分離
  4. 壓縮圖像:hdiutil轉換 「in.dmg」 -quiet -format UDZO -imagekey zlib-level = 9 -o「MyApp-0.3.dmg」

有一個生成文件在https://github.com/remko/fancy-dmg/包含這些步驟。