Cytat z oryginalnego artykułu (proszę śledzić wątek na oryginalnym artykułem, a także choć):
Mkbundle: pakiet Mono z aplikacjami
Czy kiedykolwiek zastanawiałeś się, dlaczego trzeba. NET Framework lub Mono zainstalowany, aby uruchomić swój program? Cóż, byłoby to o wiele bardziej przydatne, gdybyś mógł rozpowszechniać swoje aplikacje bez zmuszania klientów do instalowania dodatkowych frameworków, nieprawdaż? A więc jesteśmy. Pozwala pakiet aplikacji opartej na .NET z Mono, więc nie potrzebujesz Mono, lub .NET zainstalowany, aby go uruchomić.
Przygotować środowisko
najpierw trzeba zainstalować najnowszy Mono i Cygwin. Instalacja Mono jest bardzo prosta, więc nie można niczego zepsuć. Kiedy zaczniesz instalować Cygwin, wejdź w Pełny widok, a następnie dołącz 4 dodatkowe pakiety. Są to: gcc, mingw, mingw-zlib i zlib.
Teraz potrzebujesz wiersza polecenia. Zarówno Mono, jak i Cygwin tworzą skróty do poleceń na pulpicie, ale musisz je połączyć w jedno. Oto partia, która robi to za mnie. Być może będziesz musiał to zmienić, jeśli masz na przykład inną wersję Mono.
Kod:
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
Bundle aplikację z Mono
Więc jesteśmy teraz w wierszu polecenia uruchomieniu tego trybu Cygwin. Zauważ, że nie jest to już monit DOS, a "dir" nie będzie już działać. Aby wyświetlić listę plików, użyj polecenia linux "ls". Folder, który przeglądasz, jest taki, jak ten poniżej. Arek to nazwa użytkownika. Kod:
C:\cygwin\home\Arek
Przejdź do tego folderu z eksploratora. Teraz skopiuj 2 pliki do tego folderu. Pierwsza to aplikacja exe, a druga to plik Mono.dll (2 MB), który można znaleźć w folderze Mono. Kod:
C:\Program Files\Mono-2.4\bin
Z jakiegoś powodu cała procedura nie działa z długich nazw plików, więc zmienić nazwę exe aplikacji. Powinien być zgodny z tym starym nazewnictwem systemu DOS 8.3.
Powróćmy do wiersza polecenia. Aby spakować aplikację, potrzebujesz tylko jednego polecenia, a tutaj jest trochę wyjaśnienia.
mkbundle to program w ramach pakietu Mono | -o Bundled1.exe określa, w jaki sposób exe z wiązaniami Mono otrzyma nazwę | Winform1.exe mówi, co zostanie dołączone, mimo to biblioteki Mono zostaną uwzględnione | --deps jest konieczne, chociaż nie jestem pewien, co robi | -z będzie kompresować wyjście exe o wiele
Kod:
mkbundle -o Bundled1.exe Winform1.exe --deps -z
Więc teraz masz swoją Bundled1.exe, który zawiera własną aplikację wraz z samą Mono. Nie powinieneś używać Mono ani .NET, aby go uruchomić. Zauważ, że będzie to 4 MB lub więcej. Te powiązane exe nie są lekkie.