Цитата из оригинальной статьи (хотя, пожалуйста, следуйте ветке на оригинальной статье):
Mkbundle: пакет Mono с вашими приложениями
Вы когда-нибудь задумывались, зачем вам нужна .NET Framework или Mono для запуска вашей программы? Что ж, было бы гораздо удобнее, если бы вы могли распространять свои приложения, не раздражая своих клиентов для установки дополнительных платформ, не так ли? Итак, мы здесь. Позволяет связать приложение на основе .NET с Mono, поэтому вам не нужно устанавливать Mono или .NET для его запуска.
Подготовка среды
Сначала вам нужно установить новейшие Mono и Cygwin. Установка Mono очень проста, поэтому вы ничего не можете испортить. Когда вы начнете устанавливать Cygwin, перейдите в полноэкранный режим, затем, пожалуйста, включите 4 дополнительных пакета. Это gcc, mingw, mingw-zlib и zlib.
Теперь вам нужна командная строка. Как Mono, так и Cygwin создают ярлыки для командных подсказок на рабочем столе, но вам нужно объединить их в одно. Вот партия, которая делает это для меня. Возможно, вам придется изменить его, если у вас есть, например, другая версия Mono.
Код:
echo Mono version 2.4 Build 6
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH%
chdir C:\cygwin\bin
bash --login -i
Пакет приложения с Mono
Итак, мы находимся в командной строке и запускаем этот режим Cygwin. Обратите внимание, что это больше не приглашение DOS, и «dir» больше не будет работать. Для просмотра файлов используйте команду linux "ls". Папка, которую вы сейчас просматриваете, похожа на папку ниже. Arek - это имя пользователя.
Код:
C:\cygwin\home\Arek
Перейдите в эту папку с помощью проводника. Теперь вы копируете 2 файла в эту папку. Первый - это приложение exe, а второй - файл Mono.dll (2 МБ), который вы можете найти в папке Mono.
Код:
C:\Program Files\Mono-2.4\bin
По какой-то причине вся процедура не работает с длинными именами файлов, поэтому переименуйте ваше приложение в exe. Он должен соответствовать этому старому DOS 8.3.
Вернемся к командной строке. Вам нужна только 1 команда для объединения вашего приложения, и вот несколько объяснений.
mkbundle - программа в пакете Mono | -o Bundled1.exe указывает, как будет назван моно-пакет exe | Winform1.exe говорит, что будет включено, библиотеки Mono будут включены в любом случае | --deps необходим, хотя я не уверен, что он делает | -z много сжнет выходной файл exe
Код:
mkbundle -o Bundled1.exe Winform1.exe --deps -z
Итак, вы получили Bundled1.exe, который содержит собственное приложение вместе с самим Mono Вам не нужно ни Mono, ни .NET для его запуска. Обратите внимание, что это будет 4MB или больше в размере. Эти пакеты не легкие.