Как перенести приложение Mono GTK# на другие платформы?

Я работаю над настольным приложением Mono GTK#, написанным на C#. Я разработал свое приложение, используя MonoDevelop IDE (v2.4.2) на Mac (OS X v10.6.7). Мое приложение зависит от библиотеки GTK # (очевидно), а также от Mono.WebServer2 библиотека для запуска локального сервера ASP.NET.

Я протестировал свое приложение на своем собственном Mac, а также на других Mac. Все отлично работает. Теперь я заинтересован в портировании своего приложения на другие платформы (в частности, Windows 7 и Ubuntu v11.04). Я играл с mkbundle но мне не повезло в создании рабочего пакета для других платформ, кроме Mac OS X.

Так как я безуспешно пробовал несколько разных решений, я хотел бы услышать от разработчиков Mono. Что вы делаете для переноса вашего приложения на другие платформы?

Я давно занимаюсь разработкой C# с использованием Visual Studio, но я новичок в среде разработки Mono. Поэтому я был бы очень признателен за подробное объяснение.

Большое спасибо!

4 ответа

Решение

Это не похоже на то, что вы говорите о портировании, а скорее о упаковке. Функция MonoDevelop "Project/Create Package" может создавать простые двоичные пакеты (zip и т. Д.) Или исходные пакеты (source плюс make-файлы), но они не являются идеальной формой для распространения среди большинства конечных пользователей. Некоторая дополнительная работа требуется, чтобы сделать полированный установщик для каждой платформы.

mkbundle встраивает среду исполнения Mono в ваше приложение, поэтому создает двоичные файлы, которые на 100% зависят от платформы.

Для Mac обычным способом распространения приложения является пакет приложений. MonoDevelop не автоматизирует это для проектов GTK#, но я объяснил, как это сделать в моем блоге.

Для Ubuntu вы можете распространять zip-файлы и требовать, чтобы ваши пользователи установили Mono, GTK# и xsp. Если вы создаете пакет.deb, вы можете встроить эти зависимости в манифест пакета. MonoDevelop не имеет никаких инструментов для создания пакетов linux для deb / rpm, и я сам не знаком с этим процессом.

Для Windows вы можете предоставить zip двоичных файлов и потребовать, чтобы ваши пользователи установили.NET и GTK# для.NET. Вы также можете создать установщик MSI и проверить его на наличие необходимых условий.

Похоже, вы уже решили проблему упаковки для Mac.

В Ubuntu вы захотите создать пакет.deb, содержащий ваше приложение и требующий в качестве зависимостей другие пакеты (Mono, Mono.WebServer2, GTK#, GTK+ и т. Д.). Следующая ссылка поможет вам начать сборку пакетов Ubuntu:

https://wiki.ubuntu.com/UbuntuDevelopment

Для Windows вы, вероятно, уже знаете, как создать установщик, если у вас есть опыт работы с.NET. Я бы сказал, что вы захотите запустить свое приложение поверх.NET вместо Mono. Именно этим занимается команда Mono (для примера MonoDevelop). Внедрите специфические биты Mono, такие как Mono.WebServer2, как часть вашего приложения.

Ваша самая большая проблема здесь заключается в том, что GTK # требует установки библиотек GTK+ C. Вероятно, проще всего определить, установлен ли GTK # как часть установщика, и попросить пользователей установить GTK #, если он им нужен. В любом случае вам придется выполнить такое же обнаружение для требуемой версии.NET. Вы можете получить GTK # для Windows здесь.

У меня нет хороших инструкций для этого, но проекты Banshee и MonoDevelop делают это хорошо. Я бы посмотрел на эти проекты, так как они покажут вам, что именно нужно сделать.

https://github.com/mono/monodevelop

http://git.gnome.org/browse/banshee

РЕДАКТИРОВАТЬ:

Я только недавно понял, что код для установщика GTK # находится на GitHub здесь.

Есть также упаковочные проекты, доступные в Monodevelop. Вы можете использовать их.

Я сомневаюсь, что mkbundle хорошо работает, кроме Linux.

Другой вариант - открыть ваш проект на другой платформе (вы можете использовать Monodevelop), собрать проект и использовать другое приложение для сборки пакета.

Я только недавно создал пакет deb своего собственного проекта.Net, написанного на MonoDevelop. Из MonoDevelop я создал пакет с исходными кодами и make-файлами (make-файлы, также сгенерированные MonoDevelop), а затем я использовал это руководство>

http://www.webupd8.org/2010/01/how-to-create-deb-package-ubuntu-debian.html

создать пакет deb. Зависимости были mono-runtime и gtk-sharp2.

Другие вопросы по тегам