Створення приємного "інсталятора" dmg для Mac OS X


83

Я створив свою першу програму Qt для Mac OS X. Тепер я хочу створити приємний файл .dmg, який дозволить користувачеві легко його встановити. Я думаю про щось на зразок Firefox (див. Малюнок): введіть тут опис зображення

Я абсолютно новачок у цьому, тому навіть не знаю, з чого почати.


2
Може бути , це може допомогти вам stackoverflow.com/questions/96882 / ...
Roger Lindsjö

Мені насправді не потрібно це автоматизувати, я б віддав перевагу чомусь простішому, щоб я розпочав роботу;)
xx77aBs

3
це може бути корисним: el-tramo.be/guides/fancy-dmg
Mike K

@MikeK: Ви повинні опублікувати це як відповідь, я прийму, це саме те, що я шукав;)
xx77aBs

Ви можете переглянути цей посібник . Покроково показано, як створювати чудові DMG, лише використовуючи iDMG (це безкоштовне програмне забезпечення), Finder та термінал. Це досить просто.
Ігор Августо

Відповіді:


90

Актуалізація цього питання шляхом надання такої відповіді.

appdmg- це проста, проста у використанні програма командного рядка з відкритим кодом, яка створює dmg-файли з простої специфікації json. Погляньте на readme на офіційному веб-сайті:

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
Так, Лінус. Упскаттар дет.
Проф. Фалькен,

Будь-який шанс отримати скомпільований двійковий файл для 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

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


9

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

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

  1. Використовуйте hdiutil для прикріплення зображення
  2. Скопіюйте програму cp тощо, щоб скопіювати програму в змонтоване зображення
  3. hdiutil від'єднати
  4. стиснути зображення: hdiutil перетворити "in.dmg" -quiet -format UDZO -imagekey zlib-level = 9 -o "MyApp-0.3.dmg"

На https://github.com/remko/fancy-dmg/ є файл make-файлів, який містить ці кроки.


2
Ми працюємо над тим, щоб скинути AppleScript і запустити node-appdmg на різних платформах. Якщо ви хочете стежити за роботою, подивіться тут: github.com/LinusU/node-appdmg/issues?milestone=1&state=open
Лінус Уннебек

1
@ LinusUnnebäck Це чудово; дякую, що поділилися цим! Навіть просто видалити залежність від applecript було б чудово.
JosephH

Немає проблем :) нам справді просто потрібно вміти писати власний .DS_Store, і все насправді зрозуміло, мені просто потрібно знайти час для його реалізації. ( github.com/LinusU/node-appdmg/issues/14 )
Лінус Уннебек

.DS_Store не задокументовано, і я впевнений, що ніколи не буде, тому це не вихід. Шаблон, схоже, є єдиним надійним рішенням.
Лотар,


1

Ви можете зробити це за допомогою Finder:

  1. Завантажте та розпакуйте цей порожній файл DMG (я створив і завантажив його)
  2. Змініть розмір файлу DMG до відповідного розміру (відповідним розміром, як правило, є його поточний розмір плюс розмір вашого файлу .app). Для цього відкрийте утиліту диска (якщо ви не знаєте, як це зробити, знайдіть disk utilityу панелі запуску). Потім натисніть на "Зображення" в рядку меню і виберіть "Змінити розмір ...". Ви отримаєте вікно для відкриття файлу, відкрийте порожній файл DMG.
  3. Двічі клацніть файл DMG, щоб встановити його. UntitledМає з’явитися пристрій на робочому столі з іменем . Перейменуйте його на потрібне ім’я (ви, мабуть, хочете дати йому те саме ім’я, що і ваша програма).
  4. Відкрийте цей пристрій. Ви повинні побачити щось подібне:

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

    Якщо все біле, крім ярлика до папки Програми, натисніть Cmd+, Jі відкриється вікно. У нижній частині цього вікна є квадрат із позначкою "Перетягніть зображення сюди". Клацніть на цей квадрат, і відкриється діалогове вікно Відкрити. У цьому діалоговому вікні натисніть Cmd+ Shift+ Gі введіть і виберіть image.png./Volumes/(whatever you called the device in step 3)/.image

    Тут все, крім ярлика до папки Програми, є лише фоновим зображенням. Можливо, ви захочете змінити фонове зображення (яке містить колір тла та стрілку). Для цього відкрийте файл у редакторі зображень і відредагуйте його, що завгодно. Після цього вам може знадобитися відключити пристрій та встановити його знову, відкривши файл 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

Для цього ви можете скористатися Disk Utility, але якщо вам потрібна картинка у фоновому режимі, вам потрібні додаткові вказівки.

Спочатку відкрийте Disk Utility,
потім клацніть Файл> Нове зображення> Порожнє зображення.
Він запитає у вас його розмір та назву.
Після цього ви можете вставити в нього файли, і ось!

ПРИМІТКА: Це було протестовано на Mac OS Mojave. Я не знаю про попередні версії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.