Мне нужно создать хороший установщик для приложения Mac. Я хочу, чтобы это был образ диска (DMG) с предопределенным размером, макетом и фоновым изображением.
Мне нужно сделать это программно в сценарии, чтобы интегрировать его в существующую систему сборки (на самом деле это скорее система пакетов, поскольку она создает только установщики. Сборки выполняются отдельно).
У меня уже есть создание DMG с использованием "hdiutil", но я пока не выяснил, как сделать макет пиктограммы и указать фоновое растровое изображение.
Ответы:
После долгих исследований я придумала этот ответ и тем самым выложила его здесь в качестве ответа на свой вопрос, для справки:
Убедитесь, что «Включить доступ для вспомогательных устройств» отмечен в «Системных настройках»> «Универсальный доступ». Это необходимо для работы AppleScript. После этого изменения может потребоваться перезагрузка (иначе это не работает на Mac OS X Server 10.4).
Создайте R / W DMG. Он должен быть больше, чем результат. В этом примере переменная bash "size" содержит размер в килобайтах, а содержимое папки в переменной bash "source" будет скопировано в DMG:
Смонтируйте образ диска и сохраните имя устройства (вы можете использовать спящий режим в течение нескольких секунд после этой операции):
Сохраните фоновое изображение (в формате PNG) в папке с именем «.background» в DMG и сохраните его имя в переменной «backgroundPictureName».
Используйте AppleScript для установки визуальных стилей (имя .app должно быть в переменной bash «applicationName», при необходимости используйте переменные для других свойств):
Завершите DMG, правильно установив разрешения, сжимая и освобождая его:
На Snow Leopard приведенный выше яблочный скрипт не будет правильно устанавливать положение иконки - похоже, это ошибка Snow Leopard. Один из обходных путей - просто вызвать close / open после установки значков, то есть:
источник
sleep
после нанесения изображения. Сколько? Разве нельзя детерминистски ждать завершения процесса? То же самоеdelay 5
в вашем AppleScript. Я всегда настороженно отношусь к такому произвольному времени ожидания, потому что у меня был очень плохой опыт с ними. 2. На вашем шаге 6 вы звонитеsync
дважды - почему?Есть небольшой скрипт Bash, который называется create-dmg, который создает модные DMG с пользовательским фоном, пользовательским расположением значков и именем тома.
Я построил его много лет назад для компании, которой я руководил в то время; с тех пор он выживает благодаря чужому вкладу и, как сообщается, работает хорошо.
Также есть node-appdmg, который выглядит как более современный и активный проект, основанный на Node.js; проверьте это также.
источник
/Applications
если приложение обнаруживает, что оно запущено~/Downloads
. Смотрите также эту старую статью Джона Грубера .Не ходи туда. Как долгосрочный разработчик Mac, я могу заверить вас, ни одно решение не работает на самом деле хорошо. Я пробовал так много решений, но все они не слишком хороши. Я думаю, что проблема в том, что Apple на самом деле не документирует формат метаданных для необходимых данных.
Вот как я это делаю долго, очень успешно:
Создайте новый DMG, доступный для записи (!), Достаточно большой для размещения ожидаемых двоичных файлов и дополнительных файлов, таких как readme (sparse может работать).
Смонтируйте DMG и настройте его вручную в Finder или с помощью любых инструментов, которые вам подходят для этого (см. Ссылку FileStorm внизу для хорошего инструмента). Фоновое изображение обычно является изображением, которое мы помещаем в скрытую папку («.something») на DMG. Поместите туда копию своего приложения (подойдет любая версия, даже устаревшая). Скопируйте другие файлы (псевдонимы, readme и т. Д.), Которые вам нужны, опять же, устаревшие версии будут работать нормально. Убедитесь, что значки имеют правильные размеры и позиции (IOW, расположите DMG так, как вы хотите).
Снова размонтируйте DMG, все настройки должны быть сохранены.
Напишите сценарий создания 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, его действительно легко обновить для каждого выпуска.
источник
Привести этот вопрос в актуальное состояние, предоставив этот ответ.
appdmg
это простая, простая в использовании программа с командной строкой с открытым исходным кодом, которая создает dmg-файлы из простой спецификации json. Взгляните на readme на официальном сайте:https://github.com/LinusU/node-appdmg
Быстрый пример:
Установить приложение
Написать файл в формате json (
spec.json
)Запустить программу
(отказ от ответственности. Я создатель appdmg)
источник
Для тех из вас, кто интересуется этой темой, я должен упомянуть, как я создаю DMG:
где
источник
Мое приложение DropDMG - это простой способ создания образов дисков с фоновыми изображениями, макетами значков, пользовательскими значками томов и лицензионными соглашениями на программное обеспечение. Им можно управлять из системы сборки с помощью инструмента командной строки dropdmg или AppleScript. При желании изображения и лицензионные RTF-файлы могут быть сохранены в вашей системе контроля версий.
источник
Я нашел это отличное приложение для Mac, чтобы автоматизировать процесс - http://www.araelium.com/dmgcanvas/, вы должны посмотреть, создаете ли вы dmg installer для вашего приложения Mac
источник
Для создания красивого DMG вы можете использовать несколько хорошо написанных открытых источников:
источник
Если вы хотите установить пользовательский значок громкости, используйте команду ниже
Теперь создайте чтение / запись DMG
источник
Я наконец получил это, работая в моем собственном проекте (который, случается, в Xcode). Добавление этих 3-х сценариев к вашей фазе сборки автоматически создаст образ диска для вашего продукта, который будет красивым и аккуратным. Все, что вам нужно сделать, это построить свой проект, и DMG будет ждать в вашей папке продуктов.
Скрипт 1 (Создать образ временного диска):
Скрипт 2 (Установить скрипт окна свойств):
Вышеуказанные измерения для окна работают для моего проекта, в частности, из-за размера моего фонового рисунка и разрешения значков; вам может понадобиться изменить эти значения для вашего собственного проекта.
Скрипт 3 (Создание финального скрипта образа диска):
Убедитесь, что файлы изображений, которые вы используете, находятся в каталоге $ PROJECT_DIR / $ PROJECT_NAME /!
источник
Файлы .DS_Store хранят настройки Windows в Mac. Настройки Windows включают в себя расположение значков, фон окна, размер окна и т. Д. Файл .DS_Store необходим для создания окна для смонтированных изображений, чтобы сохранить расположение файлов и фон окна.
Создав файл .DS_Store, вы можете просто скопировать его в созданную программу установки (DMG).
источник
Мне также нужно использовать подход командной строки, чтобы сделать упаковку и создание dmg «программно в сценарии». Наилучший ответ, который я нашел на данный момент, - это проект Adium 'Release building framework (см. R1). Существует специальный скрипт (AdiumApplescriptRunner), позволяющий избежать взаимодействия с OSX WindowsServer GUI. Подход "osascript applecript.scpt" требует, чтобы вы вошли в систему как строитель и запустили создание dmg из сеанса командной строки vt100.
Система управления пакетами OSX не настолько продвинута по сравнению с другими Unixen, которые могут выполнять эту задачу легко и систематически.
R1: http://hg.adium.im/adium-1.4/file/00d944a3ef16/Release
источник
Я только что написал новую (дружественную) утилиту командной строки, чтобы сделать это. Он не зависит от Finder / AppleScript или какого-либо (устаревшего) API-интерфейса Alias Manager, и его легко настраивать и использовать.
В любом случае, любой, кто заинтересован, может найти его на PyPi ; документация доступна в разделе « Чтение документов» .
источник
Эти ответы слишком сложны, и времена изменились. Следующее работает на 10.9 просто отлично, разрешения правильные и выглядит красиво.
Создать доступный только для чтения DMG из каталога
Создать DMG только для чтения со значком (тип .icns)
Если что-то еще должно произойти, проще всего сделать временную копию SRC_DIR и применить к ней изменения перед созданием DMG.
источник