2008-11-25 5 views
2

Est-ce que quelqu'un sait, ou a un lien vers un article ou un tutoriel étape par étape, qui me dirait comment distribuer une application .net MONO avec une installation minimale? Le paquet complet de Mono est comme 75 Mo mais je sais que c'est le compilateur et les bibliothèques dont je n'ai pas besoin.Temps d'exécution minimal pour Mono pour une application Vb.net VS2005 sur Windows?

Je veux juste les fichiers d'exécution minimum.

De quels fichiers aurais-je besoin pour distribuer une application winforms Hello World?

J'ai essayé de supprimer des fichiers jusqu'à ce que je trouve quelque chose qui fonctionne mais qui ne fonctionne que sur la machine sur laquelle Mono est installé. Voici les fichiers que j'ai essayé

J'ai créé un répertoire pour mon application. Dans ce répertoire, j'ai créé deux répertoires

\ bin \ lib \ mono \ 2.0

dans le répertoire \ mono \ lib \ mono \ 2.0 Je mets le fichier mscorlib.dll dans le répertoire \ bin je mets les éléments suivants

Accessibility.dll, MyApp.exe (ce qui est le Bonjour tout le monde de base que je l'ai fait dans VS2005), iconv.dll, intl.dll, libglib-2.0-0.dll, libgthread-2.0-0 .dll, Microsoft.VisualBasic.dll, mono.dll, mono.exe, Mono.Posix.dll, System.dll, System.Drawing.dll, System.Windows.Forms.dll

Ensuite, à partir du répertoire \ bin j'ai couru 'MyApp.exe mono' et il a travaillé sur Ma machine installée Mono mais pas d'autres.

Ce que je préfère est un « xcopy » solution où il n'y aurait pas d'installation réelle nécessaire mais juste besoin des fichiers d'exécution inclus (comme lorsque vous exécutez à partir d'une clé USB)

S'il vous plaît noter que ceci est à fonctionne sur un ordinateur Windows, pas une boîte Linux.


J'ai essayé mkbundle2 en cours d'exécution (il est une application .net 2.0) et a cette erreur

C: \ Program Files \ bin \ Mono-2.0.1> mkbundle2 C: Projets \ \ SingleExeTest \ bin \ Release \ SingleExeTest.exe --deps Le système d'exploitation est: Windows Sources: 1 Auto-dépendances: True Enchâssement: C: \ Projets \ SingleExeTest \ bin \ Release \ SingleExeTest.exe incorporation: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ mscorlib.dll incorporation: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Microsoft.VisualBasic.dll
intégration: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.dll
intégration: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Configuration.dll
intégration: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Xml.dll
intégration: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Security.dll
enrobage: C: \ PROGRA ~ 1 \ mONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.Security.dll
incorporation: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Windows.Forms.etc.
enrobage: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Drawing.dll
enrobage: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Data.dll
enrobage: C: \ PROGRA ~ 1 \ mono-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.Data.Tds.dll
enrobage: C: \ PROGRA ~ 1 \ mono- 2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Transactions.dll incorporation: C: \ PROGRA ~ 1 \ mono-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.EnterpriseServices.dll
enrobage: C: \ PROGRA ~ 1 \ mono-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.WebBrowser.dll
enrobage: C: \ PROGRA ~ 1 \ mono-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.Posix.dll
enrobage: C: \ PROGRA ~ 1 \ MONO-2 ~ 1,1 \ lib \ mono \ 2.0 \ Accessibility.dll Compiler: comme -o temp.o temp.s

Exception non: System.ComponentModel.Win32Exception: ApplicationName = 'sh', commandline = « - c « comme -o temp.o temp.s '', CurrentDirectory = '' à System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartIn fo StartInfo, processus de System.Diagnostics.Process) [0x00000] à System.Diagnostics.Process .Start_common (System.Diagnostics.ProcessStartInf o StartInfo, processus de System.Diagnostics.Process) [0x00000] à System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo étoiles t Info) [0x00000] à MakeBundle.Execute (System.String cmdline) [0x00000] à MakeBundle.GenerateBundles (fichiers System.Collections.ArrayList) [0x00000] à MakeBundle.Main (System.String [] args) [ 0x00000]

C: \ Program Files \ Mono-2.0.1 \ bin>

Toutes les suggestions?

Répondre

1

Hé, on dirait que ça a marché!

J'ai dû installer Mono dans c: \ mono au lieu de c: \ program files \ mono

Je suppose que ce n'aimait pas les espaces

Merci pour tout ce que vous aider!

3

Vous devez utiliser « mkbundle » pour créer un fichier exécutable autonome qui peut être utilisé dans un environnement Windows. Le résultat final est un exécutable qui contient toutes les bibliothèques Mono dont vous avez besoin, et aucun de ceux que vous ne voulez pas.

Rechercher la rubrique « paquets » sur this webpage. Il devrait vous aller. Notez que ceci est pour des applications pures Mono; il ne gère pas les dépendances externes comme GTK.

ICI COMMENCE EDIT

NOTE: A partir de la page man mkbundle ...

de Windows

Sur les systèmes Windows, il nécessaire d'avoir toolchain Unix être installé pour que mkbundle. Vous pouvez utiliser de Cygwin et installer gcc, gcc-MinGW et sous forme de paquets.

Notez que le binutils contient des essieux.

Cygwin se trouve here. (Je l'installe sur toutes mes machines Windows et recommande fortement.) Notez également que Cygwin est requis uniquement sur la machine dev. Il n'a pas besoin d'être déployés dans la cible (s).

Questions connexes