Главная > Apple, Всячина > Создаем DMG-инсталлятор в Mac OS X

Создаем DMG-инсталлятор в Mac OS X

В Mac OS X существует незамысловатый способ распространения дистрибутивов в виде дисковых образов формата DMG. Образ диска можно примонтировать простым дабл-кликом на файле образа. При этом приложение Finder открывает корневую папку примонтированного диска в новом окне. Как правило, в этой папке принято хранить само приложение (.app), символическую ссылку на папку /Applications, и возможно, какие-нибудь readme файлы или тексты лицензий. Символическая ссылка на Applications нужна для того, чтобы «инсталлировать» приложение, просто перетянув его в иконку папки (drag-and-drop). Это возможно, благодаря структуре Cocoa-приложения, которое из себя представляет папку с расширением .app, внутри которой лежат исполняемый файл и все необходимые запчасти. Таким образом, скопировав всю папку, приложение инсталлируется. Приятная новость заключается в том, что отображение dmg образа в Finder’e можно кастомизировать (придать произвольный вид). В этом посте я решил накидать в первую очередь для самого себя небольшой мануал о том, как сделать красивый dmg инсталлятор. Понадобится то, для чего делаем инсталлятор, графический редактор, дисковая утилита (Disk Utility — входит в стандартный пакет приложений Mac OS X), ну и Finder (аналог Проводника в Windows). И так, по шагам.

1. Запускаем дисковую утилиту. В ней создаем новый образ диска (кнопка New Image). Размер образа нужно назначать, исходя из объема приложения. В моем случае приложение занимало около 400Кб, а надо сказать, что минимальный размер dmg, который предлагает дисковая утилита — 512Кб. Сначала я выбрал 512Кб, но потом этого места не хватило (нужно еще учесть размер картинки бэкграунда и служебной информации), поэтому лучше делать запас на пару сотен килобайт — в наше время это не размер вовсе). Есть еще один нюанс. Чтобы сделать образ меньше 2Мб нужно выбирать формат тома Mac OS Standard. Формат образа (это важно) — read/write disk image. Сохраняем его под каким-нить именем, например template.dmg.

2. Открываем созданный образ (дабл-клик на файле).

3. В меню Finder’а заходим во View -> Show View Options. Далее создаем внешний вид нашего будущего дистрибутива, например, задаем размер иконок (имхо 104х104 выглядит лучше всех), размер шрифта (14pt — the best), расположение названия файла относительно иконки, ну в общем простор фантазии. Далее делаем бэкграунд. Создаем на диске инсталлятора папку .background — все файлы и папки в Mac OS X, начинающиеся с символа точки (.) являются скрытыми. Кладем в него файл картинки бэкграунда — в моем случае это зеленая стрелка, подсказывающая пользователю, что неплохо бы перекинуть приложение в папку Applications.

Далее в окне с опциями отображения (View Opitions) в разделе Background выбираем Picture, нажимаем Select и тут есть некоторая хитрость. Поскольку Finder не показывает скрытые папки и файлы, можно указать путь к файлу в скрытой директории нажав Cmd-Shift-G. Вписываем в появившееся текстовое поле, например, /Volumes/macmines/.background/

4. Накидываем файлы, которые мы хотим включить в инсталлятор — у меня всего один — собственно приложение (хотя неплохо бы рядом лицензию приложить). Можно через диалог Show Info поиграться с установкой разных иконок разным файлам. Кстати, всю эту информацию Mac OS хранит в скрытых файлах .DS_Store (аналог Thumbs.db в Windows). Можно таким же образом кастомизировать иконку самого образа.

5. Устанавливаем размеры окна Finder — с такими размерами оно откроется, когда юзер смонтирует наш образ. Понятное дело, что потом он сможет сделать с этим окном все что захочет, но это потом.

6. Извлекаем диск (можно в дисковой утилите, можно в Finder’e)

7. Последний шаг — конвертируем образ в финальное представление. Запускаем дисковую утилиту, выбираем наш образ (template.dmg), нажимаем Convert в тулбаре, вводим желаемое имя файла (под таким именем образ будет доставлятся пользователям) — например, macmines_install.dmg, в списке Image Format выбираем Compressed, нажимаем Save.

Получаем образ, готовый к дистрибуции.

PS. Этот пост на самом деле кроме своей функции памятки, еще полезен тем, что уменьшает объем следующего поста, который я сейчас дописываю и готовлю к публикации.

  1. Alex
    28 мая 2011 в 13:48 | #1

    Спасибо, очень помогло

  2. 29 мая 2011 в 14:52 | #2

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

  3. Alexey
    10 октября 2011 в 07:19 | #3

    Спасибо за статью !

  4. 31 января 2012 в 14:59 | #4

    Не обязательно во 2м шаге подбирать размер образа, можно просто выбрать в Дисковой утилите: Файл->Новый->Образ из папки… Потом на 7 шаге все ужмется как надо.

  5. 31 января 2012 в 16:02 | #5

    Спасибо за дополнение, в след. раз обязательно воспользуюсь.

  6. 12 февраля 2012 в 12:02 | #6

    Спасибо за статьи. Сейчас затачиваю свое Java приложение под Mac, статья помогла.

  7. 12 февраля 2012 в 13:35 | #7

    Всегда пожалуйста)
    Оставил встречный коммент у вас на сайте- симпатишный блог)

  8. Casual
    3 октября 2013 в 14:28 | #8

    Доброго времени суток!
    Очень полезная статья! Спасибо!
    Есть один вопрос. Мне бы хотелось, чтобы когда пользователь «устанавливает» приложение(перетаскивает в папку Applications) открывать определенную веб-страницу в браузере. Когда я собираю инсталляторы под Windows, я использую InnoSetup, и там можно запросто открывать указанные ссылки при инсталляции\деинстоляции приложения. Можно ли это реализовать под маком?

  9. 3 октября 2013 в 14:48 | #9

    @Casual
    Боюсь, что с dmg такой функциональности не добиться. Варианта мне видится два:
    либо реализовать открывалку странице внутри самого приложения при первом старте, либо тут нужен второй способ создания пакетов дистрибуции pkg. Статья про их создание у меня так до сих пор и лежит в черновиках недооформленная.

  10. сергей
    30 марта 2015 в 12:14 | #10

    не получилось)объяснение не подробное,как создать бекграунд и что это?какие файлы перенести в папку..??»мак ос стандарт»..у меня вообще нет такого формата?диск инстолятора???короче я лох и для лохов это все непонятно)

Подписаться на комментарии по RSS