Как создать собственный установщик Mac OS X (на платформе, отличной от Mac)?

Как я могу создать собственный установщик Mac OS X для своего приложения на платформе, отличной от Mac?

Например, у меня есть компьютер с Windows и приложение Java. Я хочу, чтобы компьютер с Windows создал установщик (возможно, внутри архива .dmg), который работает с установщиком Apple.


person michelemarcon    schedule 12.11.2008    source источник
comment
Вы знаете, что пользователи Mac могут просто дважды щелкнуть файл .jar, чтобы запустить его, верно? :-)   -  person Sherm Pendley    schedule 15.11.2008
comment
См. мой ответ на этот вопрос: stackoverflow.com/questions/2323818/, который является дубликатом этого.   -  person jcoffland    schedule 05.11.2011


Ответы (7)


Теперь можно создать собственный установщик Mac OS X на платформе, отличной от Mac. Как и Луис Гербарг, самым сложным является файл BOM (ведомость материалов). Однако версия mkbom с открытым исходным кодом (основанная на коде osxbom Джозефа Коффленда) теперь доступна по адресу:

http://hogliux.github.io/bomutils

На веб-сайте также есть простое пошаговое руководство по созданию установщика Mac OS X в Linux ( http://hogliux.github.io/bomutils/tutorial.html).

Моя компания регулярно собирает установщики Mac OS X на Linux с помощью этого метода, и до сих пор у нас не было серьезных проблем.

person hogliux    schedule 28.07.2013
comment
Первоначальные тесты этого метода и учебник работают блестяще! Снимаю перед вами шляпу @hogliux. Я нахожусь в ситуации, когда установщик Mac имеет смысл, потому что мне нужно добавить файлы в уже установленное приложение, а не просто установить свое собственное. Я также запускаю автоматизированные сборки CI, и подготовка целого сервера Mac только для создания одного крошечного установщика — это слишком. - person Staffan E; 05.06.2014

Как уже отмечали другие, вы на самом деле принимаете сложное решение этой проблемы, и ваши пользователи будут проклинать ваше имя за это, если у вас нет для этого действительно веских причин. Это правда, что для некоторых типов приложений потребуются установщики для Mac OSX. К ним обычно относятся:

  • Приложения, устанавливающие пользовательские драйверы (например, расширения ядра)
  • Приложения, которым необходимо установить фреймворки или другие ресурсы, которые по какой-то причине не могут быть упакованы в пакет приложений.
  • Приложения, которые должны работать как системная служба и, следовательно, должны запускать некоторые сценарии после установки, чтобы запускать приложение во время загрузки.
  • Плохо написанные программы, требующие внесения каких-либо изменений в систему пользователя (например, установка прав доступа к папке или что-то в этом роде), а руки разработчика связаны придурками из отдела маркетинга, чтобы распространять приложение самым болезненным способом.

Итак, последний пункт немного саркастичен, но вы понимаете, о чем я? :) По сути, если вы пишете обычное приложение для конечного пользователя, вы должны распространять его обычным способом, которого ожидают пользователи Mac, то есть в виде DMG-файла, содержащего пакет вашего приложения. Или, если вы хотите быть действительно необычным, прикрепите псевдоним к папке «Приложения» внутри DMG, чтобы помочь пользователю перетащить программу туда. Если вы не пишете что-то, что должно устанавливаться в систему, а не просто запускаться системой, нет причин использовать здесь установщик. Кроме того, имейте в виду, что это OSX, которая уже содержит полнофункциональную Java JRE, поэтому вам не нужно беспокоиться об упаковке JRE в установщик или что-то в этом роде.

Теперь, когда вас правильно отругали за этот вопрос, я отвечу на него, предполагая, что ваше программное обеспечение подпадает под одну из вышеперечисленных категорий. На самом деле, лучше всего использовать коммерческое решение, такое как установщик VISE (опять же, я могу с уверенностью заявить, что подавляющее большинство пользователей Mac отшатнется от ужаса при установке продукта, созданного с помощью этого инструмента), которое позволяет вам чтобы сделать именно то, что вы ищете здесь - в основном, сделать кросс-платформенный установщик, который собирается для различных платформ, которые вы хотите поддерживать, из одного файла установщика.

Опять же, лучше всего делать то, что удобнее пользователям этой платформы (именно поэтому все ответы на ваш вопрос призывают вас не создавать установщик). Однако это означает, что если вам действительно необходимо создать установщик, вам следует использовать не-кросс-платформенный фреймворк; пользователи Windows будут чувствовать себя как дома, когда им будет представлен стандартный установщик MSI, а пользователи Mac будут чувствовать себя как дома, когда увидят пакет Apple Installer pkg. Однако программа PackageMaker, как известно, ограничена, поэтому, если вам нужно, вы должны использовать iceberg вместо этого. Это будет означать немного больше поддержки для вас, так как вам нужно будет ухаживать за двумя (или более) отдельными установщиками, но если ваше программное обеспечение действительно настолько сложное, что требует этого, вы должны быть готовы пожертвовать комфортом. ваших пользователей.

person Nik Reiman    schedule 12.11.2008

Трудно создать .dmg в Windows, но, безусловно, можно создать файловую структуру .app, которую затем можно заархивировать, как упоминалось в других комментариях. Бывают случаи, когда обычный .pkg не подходит, и вы хотите предоставить диалоги, проверки перед установкой и т. д. Вы можете сделать это с помощью BitRock installbuilder, вы можете создавать установщики для Mac, Linux, Windows, Solaris с любой из других платформ.

person Daniel Lopez    schedule 18.01.2009

Итак, пара коротких вопросов.

Во-первых, зачем вам установщик? Большинство пользователей Mac предпочитают приложения, которые устанавливаются просто перетаскиванием. Если вы не пишете код, специфичный для Mac OS X, трудно представить, что вам нужно размещать биты в специальных местах, таких как поддержка приложений или LaunchDaemons. Предполагая, что все, что у вас есть, просто помещается в одну папку, зачем вообще заморачиваться с установщиком?

Во-вторых, почему создание установщика Mac на Mac может быть проблемой? Наверняка у вас есть Macintosh для тестирования приложения (вы же не просто вслепую выпускаете его для Mac, не тестируя на Mac, верно?).

Хорошо, сказав это, предполагая, что у вас все еще есть веская причина для сборки этого на ПК, есть некоторые моменты, которые не будут легкими. По сути, .pkg — это набор текстовых скриптов, локализаций, файла архива (Archive.pax.gz) и списка материалов (Archive.bom).

Предполагая, что между сборками не так много изменений, вы можете сделать установщик на Mac, а затем просто перестроить bom и pax.gz, заменить их существующим .pkg и добавить несколько фрагментов метаданных. С pax должно быть достаточно легко работать (pax — это стандартный формат архива), но с файлом bom может оказаться немного сложнее, так как я не верю, что он публично задокументирован, и я сомневаюсь, что инструменты для их создания (mkbom) часть Дарвина (не с открытым исходным кодом). Итак, вам нужно будет это выяснить и написать собственный инструмент для создания файла bom.

Другими словами, это, вероятно, будет большой объем работы.

person Louis Gerbarg    schedule 12.11.2008
comment
Я действительно ненавижу, когда люди отвечают: Зачем тебе это? Это пустая трата времени каждого. - person jcoffland; 05.11.2011
comment
Вместо того, чтобы пытаться обесценить правильный вопрос, попробуйте решить его, а не отговаривайте кого-либо найти на него ответ. - person Timothy Groote; 05.06.2012
comment
Я не согласен, из таких ответов адвоката дьявола можно многому научиться. Пока ответ проницателен в отношении решаемой проблемы, он совершенно действителен. Часто, задавая вопрос, мы не знаем, какие альтернативы нам доступны. - person Mike; 23.08.2013

Обычный способ установить приложение на Mac — перетащить его в папку приложения. Большинство программ поставляются в виде DMG, содержащего приложение и символическую ссылку на папку приложения. Зачем тебе это по-другому? Вам нужно подумать о Mac, чтобы создать отличное приложение для Mac! Внешний вид очень важен, особенно для пользователей Mac.

person svinto    schedule 12.11.2008

Посмотрите этот код для чтения файлов спецификации: https://cauldrondevelopment.com/svn/osxbom/trunk

person jcoffland    schedule 05.11.2011

Поместите все в один файл JAR, добавьте его в ZIP. Сделанный.

А если серьезно, вы хотите распространять свое приложение среди пользователей Macintosh без его предварительного тестирования? На какой ты планете!?

person saschabeaumont    schedule 13.11.2008
comment
Почему вы предполагаете, что он не тестирует пакет? У вас может быть сервер сборки Linux, который создает пакеты. Ничто не мешает вам протестировать OSX позже или поручить это вашей команде тестирования OSX. - person jcoffland; 30.07.2013