Создаем 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. Этот пост на самом деле кроме своей функции памятки, еще полезен тем, что уменьшает объем следующего поста, который я сейчас дописываю и готовлю к публикации.
Спасибо, очень помогло
пожалуйста)
вам спасибо за коммент. вот бы все так — глядишь, помогли бы продвинуть маленько блог, а то смотрю по логам, народ читает активно материалы, а выхлопа никакого))
сам себя приучаю в таких случаях пару строчек запостить в комменты — мне не сложно, а человеку приятно)).
Спасибо за статью !
Не обязательно во 2м шаге подбирать размер образа, можно просто выбрать в Дисковой утилите: Файл->Новый->Образ из папки… Потом на 7 шаге все ужмется как надо.
Спасибо за дополнение, в след. раз обязательно воспользуюсь.
Спасибо за статьи. Сейчас затачиваю свое Java приложение под Mac, статья помогла.
Всегда пожалуйста)
Оставил встречный коммент у вас на сайте- симпатишный блог)
Доброго времени суток!
Очень полезная статья! Спасибо!
Есть один вопрос. Мне бы хотелось, чтобы когда пользователь «устанавливает» приложение(перетаскивает в папку Applications) открывать определенную веб-страницу в браузере. Когда я собираю инсталляторы под Windows, я использую InnoSetup, и там можно запросто открывать указанные ссылки при инсталляции\деинстоляции приложения. Можно ли это реализовать под маком?
@Casual
Боюсь, что с dmg такой функциональности не добиться. Варианта мне видится два:
либо реализовать открывалку странице внутри самого приложения при первом старте, либо тут нужен второй способ создания пакетов дистрибуции pkg. Статья про их создание у меня так до сих пор и лежит в черновиках недооформленная.
не получилось)объяснение не подробное,как создать бекграунд и что это?какие файлы перенести в папку..??»мак ос стандарт»..у меня вообще нет такого формата?диск инстолятора???короче я лох и для лохов это все непонятно)