Подтвердить что ты не робот

Создать файл DMG

Я разрабатываю приложение в Cocoa. Мне нужно создать файл DMG для установки моего приложения, такого как Adium (который обеспечивает хороший пользовательский интерфейс для перетаскивания файла приложения в папку приложения). Есть ли инструмент для этого?

4b9b3361

Ответ 1

Если у вас есть один файл, который пользователь, вероятно, скопировал бы в каталог приложений, образ диска с поддержкой интернета является хорошей альтернативой. Когда вы загружаете его с помощью Safari (я знаю, не все используют Safari), он автоматически монтирует его, копирует содержимое в место загрузки, затем отключает DMG и перемещает его в корзину. Приложение не переходит автоматически к приложениям, но оно относится к пользователю HD, и им не нужно беспокоиться о том, чтобы воспроизвести образ диска.

Изображения дисков могут быть подключены к Интернету с помощью одной команды терминала:

hdiutil internet-enable -yes "MyDiskImage.dmg"

Это должно работать с любым файлом DMG. Если вы хотите, чтобы пользователи увидели ваш прекрасный фон, вы, возможно, не захотите этого делать. Однако, для простых полезных нагрузок это хороший способ пойти. (Конечно, некоторые люди предпочли бы создать ZIP файл для такого развертывания.)


Я считаю, что вручную создание DMG может быть болью. Вы можете фактически автоматизировать создание простого DMG в вашем проекте Xcode. Просто создайте оболочку Script Target (Project → New Target...) и используйте hdiutil в script. Команда будет выглядеть примерно так (заменяя собственные имена и каталоги):

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

Вам нужно будет поместить все содержимое, которое вы хотите включить в образ диска в одном каталоге, но если вы не боитесь использовать cp в терминале, это легко сделать.

Если вы хотите увидеть пример, я сам использую этот подход в CHDataStructures.framework. Если вы проверите код и откройте в Xcode, второй Script в целевом развертывании создает DMG.

Ответ 2

Дисковая утилита (она в приложениях\Утилиты)

Перейдите к File > New > Disk Image From Folder, затем выберите папку, в которой вы хотите создать образ. В результате .dmg будет копировать папку, которую вы использовали для создания изображения, вплоть до положений значков.

Ответ 3

р. Nic собрал красивый рубиновый камень, который делает большую часть этой работы для вас, вам просто нужно предоставить проект xcode и некоторые графики. Ссылка находится здесь:

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

Это отличный пакет, он заботится о задачах, которые в противном случае являются болью...

- Эван

Ответ 4

И потому, что ответов уже недостаточно...

Я создал DMG с чтением и компоновкой, которую я хотел - фоновое изображение, размер, ярлык для значка приложения и пустую папку для моего приложения. Я написал простой bash script, чтобы сделать копию этого DMG, смонтировать его, скопировать мое приложение поверх пустой папки, размонтировать DMG, а затем преобразовать его в режим только для чтения.

Но DMG Canvas может выполнить весь этот процесс для вас, а также предоставляет инструмент командной строки, который вы можете использовать для автоматизации этого процесса с помощью своих сборок Xcode, поэтому я бы действительно рекомендовал это решение.

Ответ 5

Сценарии сборки Mozilla - отличный источник, если вы хотите написать свой собственный script. Используя 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 настройку установленного тома dmg в Finder (Показать параметры просмотра). Вам нужно будет создать загружаемое изображение, настроить его, отключить (для фиксации изменений) и, наконец, снова смонтировать копию .DS_Store как MegaFinderCustomizedDS_Store (как показано в приведенном выше примере)

Если ваше приложение поддерживает Leopard, я рекомендую DMG Canvas управлять всем процессом или, по крайней мере, получать .DS_Store. Он также имеет инструмент командной строки.

Ответ 6

Лучший способ сделать это как шаг автоматической сборки - создать template.dmg, который будет выглядеть точно так, как вы хотите (используя finder/diskutility и т.д., но не делая последнего шага сжатия), затем в вашей сборке script:

  • Используйте hdiutil для прикрепления изображения
  • Используйте cp и т.д., чтобы скопировать приложение в смонтированное изображение.
  • hdiutil detach
  • сжатие изображения: hdiutil convert "in.dmg" -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

Там makefile в https://github.com/remko/fancy-dmg/, который содержит эти шаги.

Ответ 7

MacBreak Dev сделал небольшой небольшой скринкаст о создании файлов DMG с использованием рабочего процесса Automator. Делает вещи очень легкими, очень быстрыми, и вы можете иметь собственный фон для своего DMG. Вы можете увидеть это на: http://www.pixelcorps.tv/mbkd_010

Ответ 8

Вы можете использовать DropDMG, чтобы настроить макет с фоновым изображением, символическую ссылку на папку "Приложения", позиции значков и т.д. Затем, когда вам нужно сделать свой .dmg файл, вы можете просто перетащить приложение на DropDMG (или script через AppleScript или инструмент командной строки dropdmg) и создать образ диска за один шаг.