Создание образа mac os iso. Создаем DMG-инсталлятор в Mac OS X. Создание защищенного образа диска

Чтобы не потерять дорогую сердцу конфигурацию настроек Mac OS X и комплект установленных и правильно настроенных программ, нужно время от времени делать резервные копии вашей операционной системы.

Несмотря на надежность и устойчивость, MAC OS X все же может «упасть» при некорректных действиях пользователей. Причем в самый неподходящий момент. Но ведь никому не хочется терять при этом личную, столь дорогую сердцу конфигурацию настроек и комплект установленных и правильно настроенных программ…

Чтобы не оказаться в такой ситуации, необходимо обязательно время от времени делать резервные копии вашей операционной системы.

В отличие от многочисленных трудностей и запретов, связанных с клонированием живых существ, никто не мешает создать точную копию вашей Mac OS X на другой «железке».

Зверей клонировать сложно, долго и малозаконно, а вот операционные системы - просто, быстро и, в некотором смысле, даже обязательно

Итак, создаем нашу «яблочную» овечку Долли.

Time Machine

Способов много. Первая возможность резервного копирования вашей системы заложена в саму MAC OS X, начиная с версии 10.5 и старше. Это Time Machine.

Time Machine в автоматическом режиме создает резервные копии системы и всех важных файлов на внешнем жестком диске и должна «возвращаться в прошлое» для восстановления системных файлов в первоначальном виде на тот момент, когда вам это нужно. Если включить Time Machine в «Системных настройках» (System Preferences), она сама предложит создать «бэкапы» (запасные копии) и запросит директорию для их сохранения.

Но у Time Machine есть пара недостатков. Первый из них - она очень быстро «сжирает» дисковое пространство. Хотя и не полностью. После создания первой резервной копии Time Machine продолжает сохранять только измененные файлы.

Вторая проблема - автоматическое копирование мешает нормально работать, запускаясь само по себе.

Чтобы хоть как-то нивелировать это, обратимся к дополнительному приложению, позволяющему настроить саму Time Machine.

Это TimeMachineEditor. Скачать его можно . TimeMachineEditor позволят более гибко настраивать расписание своих процедур. Например, ежечасно по понедельникам, ежедневно после работы и так далее.

Увеличиваем с помощью этой утилиты интервалы «временных скачков», «обуздав аппетит» самой Time Machine, и подгоняем ее бэкап-сессии под удобный для себя график.

Таким образом, Time Machine обладает возможностью зарезервировать вашу систему при различных сбоях и «откатиться» назад, но является громоздкой и не очень удобной для этой цели. В том числе «бэкапный» диск не является загрузочным и для восстановления требует старта с инсталяционного диска Mac Os X.

Дисковая утилита/Disk Utility

Еще один способ «вырастить» вашу «овечку-клон» - воспользоваться штатной дисковой утилитой. По умолчанию она лежит в папке Программы/Служебные программы (Applications/Utilites).

Запускаем это приложение и выделяем в меню слева имя вашего системного диска, например, Х. Теперь в окно строки «Источник» (Source) перетягиваем иконку вашего стартового диска (Х), а в строку «Цель» (Destination) - иконку диска, на котором сохранится ваш клон, например, Backup. Это может быть внешний FireWire- или USB-диск, а также внутренний жесткий диск или же флешка достаточного объема.

Если необходимо предварительно отформатировать эту директорию, переключитесь на «Стереть» (Erase). Для внешних носителей формат не имеет значения (как правило, это Mac OS Extended журнальный (Journaled), а для жесткого диска на макинтош с процессором Intel, предпочтительнее выбрать «Таблицу разделов GUID» (GUID Partition Table).

Теперь нажимаем «Восстановить» (Restore) и вводим ваш пароль. Поехали.

Через некоторое время на свет появится еще одна «овечка Долли» - абсолютная копия вашего системного диска.

Теперь, если ваша Mac OS X фатально «обрушится», и никакие «лечилки» не помогут, можно повторить эту процедуру наоборот, заменив испорченную систему на вашу сохраненную копию.

Для этого нужно «стартануть» с самой запасной системы: включить ваш Мас, удерживая клавишу option, затем выбрать диск с готовым клоном в качестве загрузочного (в нашем примере Backup) и выполнить процедуру восстановления в обратной последовательности.

Но перед тем как это сделать, надо обязательно попробовать «вылечить» испорченную систему той же самой «Дисковой утилитой».

Выбрать в левом меню «испорченный» диск (в нашем примере это Х и в разделе «Первая помощь» (First Aid) проделать процедуры: «Проверить права доступа» (Verify Disk Permission) и, если понадобится, сделать «Восстановление прав доступа» (Repair Disk Permission) и, соответственно, «Проверить диск» (Verify Disk) - «Восстановить диск» (Repair Disk).

Незаменимую помощь тут может оказать и знакомая нам программа OnyX.

Несмотря на всю простоту клонирования с помощью «Дисковой утилиты», у этого метода есть один недостаток. Копируется абсолютно вся, без исключения, информация. А если речь идет о небольшом по объему запасном диске, а то и вовсе о флешке? Файлы на них могут просто не поместиться.

Каков же выбор?

Возможностей для клонирования вашей «овечки Долли» множество. Вплоть до использования командной строки по инструкциям от самой Apple. «Простым смертным» могут показаться более доступными другие утилиты, такие, как SuperDuper!, Clone X, Tri-BACKUP или MacTuneUp. На мой взгляд, самая продвинутая среди них, удобная и в то же время абсолютно бесплатная назвается Carbon Copy Cloner.

Carbon Copy Cloner произведена компанией Bombich Software. Скачать её можно . Добровольные пожертвования разработчикам (Donate) приветствуются.

Майк Бомбич (Mike Bombich), создатель этой замечательной программы, в интервью популярному американскому сайту особо отметил «изюминки» своего детища: быстроту процесса клонирования, возможность выборочного переноса данных и дополнительную защиту от случайных действий в виде специального списка всех возможных дисков-кандидатов с запросом их ID (Уникальный идентификатор).

Carbon Copy Cloner дает возможность создать полный или частичный клон вашей системы, перенося её на другой диск или же сохраняя её в виде.dmg (образа диска). В свежих версиях Carbon Copy Cloner, ориентированных на систему Snow Leopard (Снежный барс), поддерживается сжатие в файловой системе HFS+, заметно удобнее стал показ размеров папок и дисков в десятеричной системе, возросла скорость копирования, а также игнорируются базы данных Time Machine, если они уже созданы.

Carbon Copy Cloner может сильно пригодиться при апгрейде системного диска и замене его на более емкий. Достаточно перенести заранее отклонированную систему на новый диск.

Прежде, чем вы приступите к созданию резервной копии вашей системы, неплохо бы предварительно вычистить весь «мусор», скопившийся в системе с помощью утилиты OnyX и привести её в порядок.

Устанавливаем Carbon Copy Cloner и запускаем. Если понадобится во время работы, вводим ваш обычный пароль и отпираем «замочек» слева внизу.

Слева вверху в меню Source Disk (Ресурсный диск) выбираем тот, с которого будет склонирована ваша система (в нашем примере это диск Х).

Вверху справа Target Disk (Целевой диск) выбираем тот, на который сохранится «близнец» вашей MAC OS X. (В нашем случае - X2. Тут важно отметить, что у этой утилиты есть возможность записать систему в формате.dmg и даже на удаленный компьютер по сети.

Теперь взглянем на еще одну возможность Carbon Copy Cloner: создавать специальные фильтры, позволяющие исключить из клона некоторые файлы по признаку расширения, например.mkv или.avi, и тогда фильмы такого формата не склонируются. Это поможет сэкономить место.

Чтобы не усложнять себе жизнь, попробуем вручную сделать некоторые предварительные процедуры, позволяющие облегчить запасную систему и ускорить процесс клонирования.

Не обязательно сохранять на резервную копию системы всю вашу медиатеку: цифровые фотографии, музыку, фильмы, вспомогательную документацию, и так далее. А также рабочие файлы, которые могут «весить» не один гигабайт. Можно также отказаться от «тяжелых программ», если не хватает места на резервном диске.

Найдите в левом окне Items to be copied (Пункты, подлежащие копированию) и внимательно смотрите, отключая некоторые галочки напротив ненужных файлов. Если они хранятся на вашем диске не как попало, то, скорее всего, это будут директории Users (Пользователи)/macuser (ваше имя пользователя). Например, в данной конфигурации отключаем Calibrie Library (База библиотек для чтения) и содержащиеся в ней книги. Ведь они и так уже записаны на отдельный DVD-диск.

Затем в разделе справа Cloning options (Режим клонирования) выбираем Incremental backups of selected items (инкрементальный «бэкап» выделенных пунктов) этот динамичный режим позволит переносить только измененные данные, когда вы будете обновлять версию запасной системы в следующий раз. Галочка ниже Delete items that don’t exist on the source в режиме синхронизации не «возьмет с собой» старые программы и другие файлы, которые вы давно уже не используете.

Protect root-level items on the target сохранит режим суперпользователя, если вы им являетесь. И, наконец, Archive modified and deleted items позволит создать отдельный архив измененных и удаленных файлов. На мой взгляд, это лучше отключить, чтобы не терять время.

В том случае, если Carbon Copy Cloner «дает добро» - This volume will be bootable,- а значит, места на запасном диске или флешке хватает, и этот том станет загрузочным, можно начинать.

Все сделанные вами предварительные настройки сохранятся, если вы нажмете Save Task (Сохранить задачу) в том случае, если вы собираетесь делать клоны вашего диска по определенному расписанию, как в Time Machine. Но для создания резервной Mac OS X это вряд ли пригодится.

Нажимаем Clone (клонировать).

Сколько файлов хранится на вашем системном диске? Оказывается десятки тысяч. так что процесс может занять некоторое время: от пятнацати минут до часа-двух. Это зависит от объема информации.

И вот он завершился. Теперь у нас две «овечки Долли» - зеркальных Mac OS X. И вы можете быть уверены, что не останетесь в cамый неподходящий момент у «разбитого корыта».

В 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. Этот пост на самом деле кроме своей функции памятки, еще полезен тем, что уменьшает объем следующего поста, который я сейчас дописываю и готовлю к публикации.

Сколько бы нам опытные хакинтошники не повторяли, что устанавливать Mac OS X на PC – просто, главное, не бояться, данный процесс почти всегда оказывается сложным, долгим и по-настоящему головоломным. Пишу «почти», потому что есть один действительно быстрый метод, требующий наличия всего двух вполне стандартных программ. Отдельные счастливцы радостно говорят, что им удаётся так сделать хакинтош на своём компьютере всего за 10 минут! Не знаю, как 10, но за 30 минут мне это вчера удалось.

Итак, хорош интриговать, мы говорим об обычном разворачивании у вас на компьютере образа готовой OS X , удачно установленной ранее на чьём-то PC. В принципе, на этом одном предложении можно было бы и закончить инструкцию, но мы рассмотрим процесс пошагово.

Первым делом необходимо найти и скачать образ Mac OS X , который бы максимально точно подошёл именно для вашего компьютера. Идеальным будет попадание конфигурации один в один, так, можно встретить готовые установки для распространённых моделей ноутбуков. Но, принципиальным является только совместимость с процессором, всё остальное можно будет наладить потом. Владельцев AMD ждёт небольшое разочарование – маленький выбор годных OSXдля этого семейства процессоров, причём довольно стареньких. Ищем по ключевым словам «OSX» + «установленная система» или «готовый образ», или «быстрая установка».

Ставить желательно на отдельный винчестер , в крайнем случае – на раздел жёсткого диска. В случае с разделом могут быть потом трудности при загрузке, но они в принципе решаемы. Готовим винчестер или выделяем логический диск любой утилитой наподобие Partition Magic.

Далее потребуются программа для монтирования виртуальных iso образов cd, типа Alcohol 120%, и программа для восстановления разделов жесткого диска из резервных копий формата arc. Я использовал в качестве первой Daemon Tools, а второй – R Drive Image, у них есть и бесплатные аналоги. Скачиваем и устанавливаем.

Запускаем Daemon Tools и монтируем скачанный образ MacOSX«имя файла.iso». Тут же в системе появляется новый виртуальным сиди диск, зайдя на который можно увидеть файл резервной копии «имя файла.arc».

Запускаем R Drive Image от имени администратора.

Жмём «Восстановить из образа », выбираем на виртуальном cd файл arc.

Метку оставляем на «Восстановить диски или разделы ».

Выбираем объект в образе с Mac OS X и раздел куда ставить.

Восстановить из образа. Раздел должен быть активным.

Через пару минут процесс завершится и можно перезагружаться, выбрав в бут-меню нужный диск.

Первую загрузку рекомендовал бы проводить с параметром –v. Вводить его можно в загрузчике, это будет Chameleon или что-то типа. Если с конфигурацией повезло, то всё загрузиться нормально и мелкие недочёты типа звука или usb можно будет устранять уже добавлением кекстов в систему. А если нет, то с параметром –v будет видно, на чём застопорились. У меня, например, надо было достать флешку, чтобы прекратилась ошибка EBIOS read error. Для тех, кто ставил на логический диск (надо было всё-таки подсуетить отдельный винчестер!), вероятно появление ошибки «Still waiting for root device». Это можно решить (или не решить, ошибка вероятна и в других случаях) прописыванием параметра rd=disk0s2, где 0 – это порядок винчестера в системе, может быть еще 1, 2 или 3, а s2 – указание номера логического раздела.

  • Tutorial

Приветствую достопочтенных жителей Хабра!

Сегодня я расскажу вам о том, как красиво преподнести пользователю инсталлятор своей программы. Наверняка каждый, кто пользуется не только программами из AppStore, сталкивался с красивыми образами диска.dmg, как вот у Адиума, к примеру. Такой образ представляет из себя, так сказать, интерактивный инсталлятор, в котором дана чёткая подсказка: перетащи значок вот сюда. Всё предельно понятно и просто.

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


Можно, конечно, проделать это всё вручную, но это не_наш_метод™ , так что мы будем писать shell-скрипт для автоматизации сего процесса. Автоматизация нам так же пригодится в случае ввода в эксплуатацию билд-сервера, тогда этот сервер будет не только собирать программу из исходников, но и делать образ диска для дистрибьюции.

Если Вам не нужно знать как работает такой скрипт, а нужен лишь инструмент - в конце имеется ссылка на весьма универсальный скрипт, готовый к применению.

План действий вкратце:

  • Скопировать бандл во временную директорию
  • Создать образ диска из временной директории, доступный для чтения и записи
  • Примонтровать полученный образ
  • Кастомизировать внешний вид образа с помощью AppleScript: создать симлинк для /Applications, задать фон и расположение элементов
  • Задать иконку для образа диска
  • Отмонтировать образ
  • Конвертировать образ в сжатый ридонли
  • Готово! Можно выкладывать на сайт или в Sparkle-каст.
ВАЖНО! Скрипт (точнее, его часть, задействующая AppleScript) не будет работать должным образом, если установлен TotalFinder (или аналогичная штука), и это может привести к непредсказуемым последствиям! Серьёзно.

Для начала нам надо определить что будем упаковывать и какое имя образа получим в конце. Для этого в скрипте пишем так:

TMP_DIR="./tmp" APP_BUNDLE_NAME="MyGreatApplication.app" APP_VERSION=`/usr/libexec/PlistBuddy -c "Print:CFBundleShortVersionString" "${APP_BUNDLE_NAME}/Contents/Info.plist"` APP_BUILD_VERSION=`/usr/libexec/PlistBuddy -c "Print:CFBundleVersion" "${APP_BUNDLE_NAME}/Contents/Info.plist"` DMG_NAME_BASE=${APP_BUNDLE_NAME%.*} DMG_NAME_SUFFIX=" ${APP_VERSION}.${APP_BUILD_VERSION}" DMG_NAME="${DMG_NAME_BASE}${DMG_NAME_SUFFIX}.dmg" VOL_NAME=${APP_BUNDLE_NAME%.*}
Здесь мы задаём имя бандла, который будем паковать, и читаем из него версию и билд программы с помощью утилиты PlistBuddy и устанавливаем их как суффикс для имени файла будущего образа диска. Имя же образа при монтировании мы задаём просто как имя бандла без расширения.

Для создания временного образа диска используем программу hdiutil, вызвав её со следующими параметрами

Hdiutil create -ov -srcfolder ${TMP_DIR} -format UDRW -volname "${VOL_NAME}" "${DMG_NAME_TMP}"
Здесь параметры TMP_DIR , VOL_NAME и DMG_NAME_TMP - временная директория, имя образа (которое будет отображаться при монтировании) и имя временного.dmg файла соответственно. Параметр -format UDRW указывает на тип образа: UDIF образ для чтения и записи. Возможность записи на диск нам нужна для кастомизации внешнего вида примонтированного образа. Параметр -ov указывает утилите перезаписать образ, если вдруг мы его не удалили в прошлый раз.

Теперь монтируем полученный образ (и сохраняем имя устройства для последующего использования):

Device=$(hdiutil attach -readwrite -noverify -noautoopen ${DMG_NAME_TMP} | egrep "^/dev/" | sed 1q | awk "{print $1}")
Здесь всё довольно просто: аттачим с правами на чтение и запись, автоматически окно файндера не открываем, а затем получаем имя типа /dev/disk2 с помощью egrep, sed и awk парся вывод hdiutil"а.

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

BG_FOLDER="/Volumes/${VOL_NAME}/.background" mkdir "${BG_FOLDER}" cp "${APP_BUNDLE_NAME}/Contents/Resources/${BG_IMG_NAME}" "${BG_FOLDER}/" ICON_FOLDER="/Volumes/${VOL_NAME}" cp "${APP_BUNDLE_NAME}/Contents/Resources/${VOL_ICON_NAME}" "${ICON_FOLDER}/.VolumeIcon.icns"
Далее, нам надо подмонтированный образ кастомизировать, сделать это можно через Finder вручную, но мы поступим хитрее: заставим Finder сделать всё автоматически через AppleScript. Для вызова таких скриптов из шелла есть утилита osascript , которой на вход подадим такую заготовку:

APPLESCRIPT=" tell application \"Finder\" tell disk \"${VOL_NAME}\" open -- Setting view options set current view of container window to icon view set toolbar visible of container window to false set statusbar visible of container window to false set the bounds of container window to {${WINDOW_LEFT}, ${WINDOW_TOP}, ${WINDOW_RIGHT}, ${WINDOW_BOTTOM}} set theViewOptions to the icon view options of container window set arrangement of theViewOptions to not arranged set icon size of theViewOptions to 72 -- Settings background set background picture of theViewOptions to file \".background:${BG_IMG_NAME}\" -- Adding symlink to /Applications make new alias file at container window to POSIX file \"/Applications\" with properties {name:\"Applications\"} -- Reopening close open -- Rearranging set the position of item \"Applications\" to {${APPS_X}, ${APPS_Y}} set the position of item \"${APP_BUNDLE_NAME}\" to {${BUNDLE_X}, ${BUNDLE_Y}} -- Updating and sleeping for 5 secs update without registering applications delay 5 end tell end tell " echo "$APPLESCRIPT" | osascript
Разумеется, вместо VOL_NAME и прочего наш shell-скрипт подставит заранее заготовленные строки. Данный AppleScript говорит файндеру открыть наш подмонтированный диск, задать ему нужные параметры отображения: убрать строку адреса и статуса, задать вид «иконки», задать размеры окна, размер иконок. Все эти параметры будут сохранены в файле .DS_Store . Далее мы задаём фоновую картинку, скопированную ранее. Затем - создаём симлинк (алиас в терминах AS) для /Applications, переоткрываем окно для применения изменений. Теперь устанавливаем положение иконок программы и созданного симлинка, обновляем и спим 5 секунд для надёжности.

Теперь установим иконку для образа через утилиту SetFile:

SetFile -c icnC "${ICON_FOLDER}/.VolumeIcon.icns" SetFile -a C "${ICON_FOLDER}"
Далее, устанавливаем нужные права для образа диска, синхронизируемся (два раза для надёжности) и извлекаем образ:

Chmod -Rf go-w /Volumes/"${VOL_NAME}" sync sync hdiutil detach ${device}
Всё, теперь можно делать финальный образ диска!

Hdiutil convert "${DMG_NAME_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_NAME}"
Здесь мы с помощью hdiutil конвертируем временный образ в формат UDZO (UDIF сжатый) с уровнем компрессии 9 (лучшая). И на выходе получаем образ диска для дистрибьюции, имеющий привлекательный внешний вид!

Полный скрипт включён в репозиторий на гитхабе . Замечу, что в полной версии скрипта очень много возможных входных параметров (парсинг которых сильно увеличивает его размер), хардкода нет совсем (ну кроме дефолтных параметров). Ну а картинка, приведённая в начале поста, получается следующим вызовом моего скрипта:

$ make_dmg.sh -V -b habr_logo_big.png -i habr_icon.icns -s "800:500" -c 535:345:253:345 "Hello Habr.app" Enabling version info in resulting dmg Setting background to habr_logo_big.png Setting icon to habr_icon.icns Setting window size to 800:500 Setting coordinates to 535:345:253:345 Bundle name set to Hello Habr.app Defaulting dmg volume name to Hello Habr *** Copying Hello Habr.app to the temporary dir... done! *** Creating temporary dmg disk image......... created: /Users/silvansky/Projects/habr_demo_dmg/Hello Habr_tmp.dmg *** Mounting temporary image... done! (device /dev/disk1) *** Sleeping for 5 seconds... done! *** Setting style for temporary dmg image... * Copying background image... done! * Copying volume icon... done! * Setting volume icon... done! * Executing applescript for further customization... done! *** Converting tempoprary dmg image in compressed readonly final image... * Changing mode and syncing... chmod: /Volumes/Hello Habr/.Trashes: Permission denied * Detaching /dev/disk1... "disk1" unmounted. "disk1" ejected. * Converting... Готовлюсь к созданию образа… Читаю Driver Descriptor Map (DDM: 0)… (CRC32 $AF5ACFAD: Driver Descriptor Map (DDM: 0)) Читаю Apple (Apple_partition_map: 1)… (CRC32 $92261EDC: Apple (Apple_partition_map: 1)) Читаю disk image (Apple_HFS: 2)… ................................................................................................................................................................................... (CRC32 $F59F12B2: disk image (Apple_HFS: 2)) Читаю (Apple_Free: 3)… .................................................................................................................................................................................... (CRC32 $00000000: (Apple_Free: 3)) Добавляю ресурсы… .................................................................................................................................................................................... Прошло: 804.502ms Размер файла: 4132028 байт, сумма: CRC32 $AFE83FC5 Обработано секторов: 13243, 10041 сжато Скорость: 6.1 Mб/с Сохранений: 39.1 % created: /Users/silvansky/Projects/habr_demo_dmg/Hello Habr 1.0.1.dmg done! *** Removing temporary image... done! *** Cleaning up temp folder... done! *** Everything done. DMG disk image is ready for distribution.
Что ж, теперь Вы можете написать свой скрипт для таких целей или же использовать мой, достаточно универсальный. Успешных проектов!