Как перенести приложение Mono GTK # на другие платформы? - PullRequest
3 голосов
/ 03 июля 2011

Я работаю над настольным приложением 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 ]

6 голосов
/ 05 июля 2011

Не похоже, что вы говорите о портировании , скорее упаковке . Функция 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 и проверить его на наличие необходимых условий.

2 голосов
/ 05 июля 2011

Похоже, вы уже решили проблему упаковки для 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

EDIT:

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

0 голосов
/ 20 июля 2011

Я только недавно создал пакет 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.

0 голосов
/ 03 июля 2011

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

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

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

...