Warning: Use of undefined constant fb_replace_wp_version - assumed 'fb_replace_wp_version' (this will throw an Error in a future version of PHP) in /usr/home/heximal/data/www/heximal.ru/public/blog/wp-content/plugins/replace-wp-version/fb-re_wpversion.php on line 39
Создаем DMG-инсталлятор в Mac OS X | heximal blog

Warning: Cannot modify header information - headers already sent in /usr/home/heximal/data/www/heximal.ru/library/Heximal/Lang.php on line 43
Home > Apple, Misc > Создаем 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. Этот пост на самом деле кроме своей функции памятки, еще полезен тем, что уменьшает объем следующего поста, который я сейчас дописываю и готовлю к публикации.

Categories: Apple, Misc Tags: ,
  1. Alex
    May 28th, 2011 at 13:48 | #1

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

  2. May 29th, 2011 at 14:52 | #2

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

  3. Alexey
    October 10th, 2011 at 07:19 | #3

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

  4. January 31st, 2012 at 14:59 | #4

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

  5. January 31st, 2012 at 16:02 | #5

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

  6. February 12th, 2012 at 12:02 | #6

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

  7. February 12th, 2012 at 13:35 | #7

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

  8. Casual
    October 3rd, 2013 at 14:28 | #8

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

  9. October 3rd, 2013 at 14:48 | #9

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

  10. сергей
    March 30th, 2015 at 12:14 | #10

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