Не ходи туда. Как долгосрочный разработчик Mac, я могу заверить вас, ни одно решение не работает на самом деле хорошо. Я пробовал так много решений, но все они не слишком хороши. Я думаю, что проблема в том, что Apple на самом деле не документирует формат метаданных для необходимых данных.
Вот как я это делаю долго, очень успешно:
Создайте новый DMG, доступный для записи (!), Достаточно большой для размещения ожидаемых двоичных файлов и дополнительных файлов, таких как readme (sparse может работать).
Смонтируйте DMG и настройте его вручную в Finder или с помощью любых инструментов, которые вам подходят для этого (см. Ссылку FileStorm внизу для хорошего инструмента). Фоновое изображение обычно является изображением, которое мы помещаем в скрытую папку («.something») на DMG. Поместите туда копию своего приложения (подойдет любая версия, даже устаревшая). Скопируйте другие файлы (псевдонимы, readme и т. Д.), Которые вам нужны, опять же, устаревшие версии будут работать нормально. Убедитесь, что значки имеют правильные размеры и позиции (IOW, расположите DMG так, как вы хотите).
Снова размонтируйте DMG, все настройки должны быть сохранены.
Напишите сценарий создания DMG, который работает следующим образом:
- Он копирует DMG, поэтому оригинал никогда не трогать снова.
- Это монтирует копию.
- Он заменяет все файлы самыми последними (например, последнее приложение после сборки). Вы можете просто использовать mv или ditto для этого в командной строке. Обратите внимание, что при замене файла таким образом значок останется прежним, позиция останется прежней, все содержимое файла (или каталога) останется прежним (по крайней мере, с тем же, что мы обычно используем для этой задачи) , Конечно, вы также можете заменить фоновое изображение другим (просто убедитесь, что оно имеет те же размеры).
- После замены файлов заставьте скрипт снова размонтировать копию DMG.
- Наконец, вызовите hdiutil для преобразования записываемого в сжатый (и такой не записываемый) DMG.
Этот метод может показаться неоптимальным, но поверьте мне, на практике он работает очень хорошо. Вы можете поместить оригинальный DMG (шаблон DMG) даже под контроль версий (например, SVN), поэтому, если вы когда-нибудь случайно его измените / уничтожите, вы можете просто вернуться к ревизии, где все было в порядке. Вы можете добавить шаблон DMG в свой проект XCode вместе со всеми другими файлами, которые принадлежат DMG (readme, файл URL, фоновое изображение), все под контролем версий, а затем создать цель (например, внешнюю цель с именем «Create DMG») и там запустить сценарий DMG выше и добавить вашу старую основную цель в качестве зависимой цели. Вы можете получить доступ к файлам в дереве Xcode, используя $ {SRCROOT} в скрипте (всегда является исходным корнем вашего продукта), и вы можете получить доступ к продуктам сборки, используя $ {BUILT_PRODUCTS_DIR} (всегда каталог, где Xcode создает результаты сборки) ,
Результат: На самом деле Xcode может создать DMG в конце сборки. DMG, который готов к выпуску. Таким образом, вы можете не только легко создать релевантный DMG, но и сделать это в автоматическом процессе (если хотите, на автономном сервере), используя xcodebuild из командной строки (например, автоматические ночные сборки).
Что касается первоначального макета шаблона, FileStorm является хорошим инструментом для этого. Это коммерческий, но очень мощный и простой в использовании. Обычная версия стоит менее 20 долларов, поэтому она действительно доступна. Может быть, кто-то может автоматизировать FileStorm для создания DMG (например, через AppleScript), никогда не пробовал этого, но как только вы нашли идеальный шаблон DMG, его действительно легко обновить для каждого выпуска.