Создание красивого «установщика» dmg для Mac OS X

83

Я сделал свое первое приложение Qt для Mac OS X. Теперь я хочу создать красивый файл .dmg, который позволит пользователю легко установить его. Я думаю о чем-то вроде firefox (см. Рисунок): введите описание изображения здесь

Я совершенно новичок в этом, поэтому даже не знаю, с чего начать.

xx77aBs
источник
2
Может быть, это поможет вам stackoverflow.com/questions/96882/…
Роджер Линдсьо
Мне действительно не нужно, чтобы это было автоматизировано, я бы предпочел что-нибудь попроще, чтобы начать работу;)
xx77aBs
3
это может быть полезно
Майк К.
@MikeK: Вы должны опубликовать это как ответ, я приму это, это именно то, что я искал;)
xx77aBs
Вы можете проверить это руководство . Он шаг за шагом показывает, как создавать красивые DMG только с помощью iDMG (это бесплатное программное обеспечение), Finder и терминала. Это довольно просто.
Игорь Аугусто

Ответы:

91

Обновим этот вопрос, предоставив этот ответ.

appdmg- это простая и удобная программа командной строки с открытым исходным кодом, которая создает файлы dmg из простой спецификации json. Взгляните на ридми на официальном сайте:

https://github.com/LinusU/node-appdmg

Быстрый пример:

  1. Установить appdmg

    npm install -g appdmg
    
  2. Напишите файл json ( spec.json)

    {
      "title": "Test Title",
      "background": "background.png",
      "icon-size": 80,
      "contents": [
        { "x": 192, "y": 344, "type": "file", "path": "TestApp.app" },
        { "x": 448, "y": 344, "type": "link", "path": "/Applications" }
      ]
    }
    
  3. Запустить программу

    appdmg spec.json test.dmg
    

(отказ от ответственности. Я создатель appdmg)

Линус Уннебек
источник
По сравнению с другими решениями это удивительно просто.
Aeolun
1
Ура, Линус, кстати. Уппскаттар дет.
Prof. Falken
Есть ли шанс получить скомпилированный двоичный файл для OSX 10.6.8? Я не знаю, как скомпилировать ваши исходники ... (здесь не так уж много яблочного парня ...)
Марк Майлз
4
@MarkMiles большая часть кода написана на Javascript и поэтому не выполняется. Npm позаботится о компиляции всех необходимых исходных файлов (C, Objective-C). Самый простой способ запустить все: 1) Установить brew ( brew.sh ) 2) Установить Node.js ( brew install node), который также объединяется npm. 3) Следуйте «
Быстрому
@Lothar Я думаю, что было бы здорово упаковать appdmg в виде двоичного файла для упрощения распространения, но в случае использования я уже включил среду nodejs. Но если вы думаете, что это можно сделать с помощью «простого сценария оболочки», тогда я осмелюсь вам попробовать. Взгляните на код, он не слишком тривиальный. Есть причина, по которой у нас есть другие языки программирования, помимо сценариев оболочки.
Линус Уннебек,
20

Это довольно просто - основная идея заключается в том, что вы создаете пустой образ с помощью Дисковой утилиты (сделайте его достаточно большим, чтобы хотя бы вмещать ваши вещи - точный размер не имеет значения), открываете это изображение с помощью Finder , вставляете свои вещи и размещаете его так, как вы хотите (используйте щелчок правой кнопкой мыши и Показать параметры просмотра, чтобы установить такие параметры, как размер значка или фоновое изображение). Это почти все - все, что осталось, - это преобразовать это изображение r / w в сжатое изображение: извлечь его и использовать Convert в Disk Utility, чтобы преобразовать его в сжатое изображение.

Саймон Урбанек
источник
9

Ни один из существующих ответов не помог мне; один ответ - вручную, а два других варианта - iDMG и node-appdmg - оба предполагают создание сценария поиска в приложении, что не идеально.

Лучший способ сделать это в качестве этапа автоматической сборки - создать template.dmg, который выглядит именно так, как вы хотите (следуя обычным инструкциям, например, ответ Саймона Урбанека, но не выполняя последний шаг по его сжатию), а затем в вашей сборке сценарий:

  1. Используйте hdiutil, чтобы прикрепить изображение
  2. Используйте cp и т. Д., Чтобы скопировать приложение в смонтированный образ
  3. hdiutil отсоединить
  4. сжать изображение: hdiutil convert "in.dmg" -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

На https://github.com/remko/fancy-dmg/ есть make-файл , содержащий эти шаги.

JosephH
источник
2
Мы работаем над отказом от AppleScript и над кроссплатформенностью node-appdmg. Если вы хотите следить за работой, загляните сюда: github.com/LinusU/node-appdmg/issues?milestone=1&state=open
Линус Уннебек
1
@ LinusUnnebäck Это потрясающе; спасибо, что поделились этим! Было бы отлично даже просто удалить зависимость от applescript.
JosephH
Нет проблем :) нам просто нужно иметь возможность написать свой собственный .DS_Store, и все действительно выяснено, мне просто нужно найти время, чтобы реализовать его. ( github.com/LinusU/node-appdmg/issues/14 )
Линус Уннебек,
.DS_Store не задокументирован, и я уверен, что никогда не будет, так что это не выход. Шаблон кажется единственным надежным решением.
Lothar
1

Вы можете сделать это с помощью Finder:

  1. Загрузите и разархивируйте этот пустой файл DMG (это я создал и загрузил его)
  2. Измените размер файла DMG до подходящего размера (подходящий размер обычно равен его текущему размеру плюс размер вашего файла .app). Для этого откройте дисковую утилиту (если вы не знаете, как это сделать, disk utilityпоищите в Launchpad). Затем нажмите «Изображения» в строке меню и выберите «Изменить размер ...». Вы получите окно для открытия файла, откройте пустой файл DMG.
  3. Дважды щелкните файл DMG, чтобы смонтировать его. На рабочем столе Untitledдолжно появиться устройство с именем . Переименуйте его в желаемое имя (возможно, вы захотите дать ему то же имя, что и ваша программа).
  4. Откройте это устройство. Вы должны увидеть что-то вроде этого:

    введите описание изображения здесь

    Если все белое, кроме ярлыка папки «Приложения», нажмите Cmd+, Jоткроется окно. Внизу этого окна есть квадрат с надписью «Перетащите сюда изображение». Щелкните этот квадрат, и откроется диалоговое окно «Открыть». В этом диалоговом окне нажмите Cmd+ Shift+ Gи введите/Volumes/(whatever you called the device in step 3)/.image и выберите image.png.

    Здесь все, кроме ярлыка для папки «Приложения», является просто фоновым изображением. Вы можете изменить фоновое изображение (которое содержит цвет фона и стрелку). Для этого откройте файл в редакторе изображений и отредактируйте его так, как хотите. После того, как вы это сделаете, вам может потребоваться размонтировать устройство и снова подключить его, открыв файл DMG, чтобы увидеть изменения. В зависимости от того, что вы вставляете в изображение, вам также может потребоваться переместить ярлык в папку «Приложения», чтобы он соответствовал новому фоновому изображению./Volumes/(whatever you called the device in step 3)/.image/image.png

  5. Перетащите ваш файл .app в начало стрелки в окне, где открывается устройство из файла DMG, чтобы оно выглядело так:

    введите описание изображения здесь

    Вы можете получить сообщение об ошибке, что недостаточно свободного места. В этом случае вернитесь к шагу 2 и увеличьте размер файла DMG.

  6. Размонтируйте устройство, щелкнув стрелку рядом с именем устройства в Finder:

    введите описание изображения здесь

  7. Преобразуйте файл DMG только для чтения. Для этого откройте терминал и введите это (замените /path/to/dmg/fileна путь к файлу DMG и nameOfDmgFile.dmgимя файла DMG):

    cd /path/to/dmg/file
    hdiutil convert -format UDZO -o newNameOfDmgFile.dmg nameOfDmgFile.dmg
    

    Это создаст новый файл DMG с именем newNameOfDmgFile.dmg(или любым другим именем, которое вы использовали выше), который является файлом, который вам нужен.

Дональд Дак
источник
Почему нам нужно изменять размер DMG (как вы упомянули в пункте 2)
Кришна Мару
@KrishnaMaru Я давно не писал этот ответ, но если я правильно помню, вы получите сообщение об ошибке, если попытаетесь скопировать большой файл в слишком маленький DMG.
Дональд Дак
0

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

Сначала откройте Дисковую утилиту.
Затем щелкните Файл> Новый образ> Пустое изображение.
Он спросит у вас его размер и имя.
После этого вы можете помещать в него файлы, и готово!

ПРИМЕЧАНИЕ. Это было протестировано на Mac OS Mojave. Насчет предыдущих версий не знаю.

Иван
источник