Можно ли включить Mono Runtimes в комплект OSX .app?

Я ищу работу над приложением, которое должно работать как на Windows, так и на OSX. Поскольку я уже хорошо знаком с C#/.NET, я подумал, что стоит взглянуть на использование Mono. Но я также хочу, чтобы его было очень легко установить, и я не хочу, чтобы пользователям приходилось устанавливать пакет Mono отдельно. Можно ли создать пакет OS X .app, который просто включает ВСЕ? То есть мое приложение, ресурсы и полная среда выполнения Mono?


person Adam Haile    schedule 15.04.2009    source источник


Ответы (2)


Да, ты можешь это сделать. Выберите приложение, любое приложение и Показать содержимое пакета. Немного осмотритесь, и вы увидите, что внутри есть каталог Contents/MacOS. Он будет содержать файл с установленным битом выполнения. Это может быть машинный код или любой старый скрипт со строкой #! в начале. Все, что вам нужно сделать, это продублировать структуру каталогов с помощью каркасного приложения, засунуть среду выполнения Mono куда-нибудь в каталог ресурсов и написать сценарий bash, который все инициализирует. Где-то могут быть автоматизированные утилиты для этого, но это довольно легко сделать вручную.

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

person Bob Aman    schedule 15.04.2009
comment
Спасибо. В любом случае, это действительно зависит от того, что вы подразумеваете под не рекомендуется. Если вы сделали это на 100% вручную, то да, абсолютно, это плохая идея. Были бы серьезные проблемы с развертыванием. Но первый шаг к автоматизации чего-либо — это умение делать это вручную. Чтобы уточнить, если для среды выполнения Mono нет предварительно созданного инструмента упаковки, напишите быстрый скрипт для автоматизации этого и вставьте его в процесс сборки. - person Bob Aman; 05.08.2009
comment
Под инициализирует все, что вы имеете в виду? Вы имеете в виду, что он запускает вызов функции командной строки, такой как mono hello.exe? Не могли бы вы указать нам ссылку? Спасибо. - person Maxim Zaslavsky; 11.01.2010
comment
Да, это то, что я имею в виду, хотя вы действительно можете делать там все, что хотите. На самом деле, потенциально вы могли бы использовать этот сценарий для всей программы. Однако, если вы собираетесь передать управление другой программе, я рекомендую использовать для этого exec. У меня действительно нет ссылки, так как я обнаружил это экспериментальным путем. - person Bob Aman; 11.01.2010
comment
Этот ответ действительно и полностью игнорирует вопрос о зависимости Mono. Платформа Mono по-прежнему должна быть установлена, если только вы не встраиваете ее в собственный исполняемый файл ОС. - person Norman H; 12.05.2011
comment
Извините, я упустил это из виду, потому что это не совсем ракетостроение, но да, вы хотели бы встроить всю структуру в свой пакет .app. Это просто скопировать его куда-нибудь в каталог Contents/Resources. - person Bob Aman; 12.05.2011
comment
Похоже, что у людей есть приложения Mono в App Store, и что какой-то сложный этап установки пакета Mono после установки вашего приложения, очевидно, невозможен. Для нас в этом вопросе это, безусловно, облегчает поиск в Google! mono-project.com/MonoMacPackager#Mac_AppStore_Distribution - person nelsonjchen; 07.01.2012
comment
Да, просто запихните его в Contents/Resources. Не может быть проще. Это относится к любому приложению на Mac. Для справки, если кому-то интересно, это не то же самое для IOS, поскольку IOS не разрешает динамическое связывание по какой-то запутанной причине. Я бы предложил найти упакованное приложение Mono osx под ключ и изучить его внутренние органы. - person Shayne; 19.08.2013

Вполне возможно, приложив немало усилий и немного позабавившись с набором инструментов, скомпилировать приложение .NET, статично ориентированное на платформу Mac OS, без необходимости развертывания моно с ним. Посетите этот веб-сайт, на котором рассказывается о том, как Mono статически используется в некоторых приложениях для iPhone.

http://arstechnica.com/open-source/news/2009/01/open-source-mono-framework-brings-c-to-iphone-and-wii.ars

Еще один отличный ресурс — канал #mono на irc.gnome.org или irc.gimp.net (http://mono-project.com/IRC)

person Norman H    schedule 15.04.2009
comment
Это действительно не обязательно на Mac. IOS должна сделать это из-за своей строгой политики только статических ссылок. У Mac нет таких ограничений. - person Shayne; 19.08.2013