web-dev-qa-db-fra.com

Exécuter un programme mono sans taper 'mono foo.exe'

Lorsque je lance un programme .net sur Ubuntu, je dois taper "mono foo.exe" au lieu de simplement foo.exe ou de double-cliquer sur l'icône. Existe-t-il un moyen de simplement lancer foo.exe?

13
dan gibson

Est-ce que ce lien aide? en cours d'exécution mono

Du projet Mono sur l'utilisation de binfmt:

Enregistrement du fichier .exe en tant que fichiers binaires non natifs (Linux uniquement)

S'agissant d'une fonctionnalité spécifique à Linux, il est déconseillé aux développeurs de déployer cette solution car cela limiterait la portabilité de leurs scripts.

En outre, ce mécanisme ne fonctionne pas comme prévu par le Instructions de déploiement d'applications .

Vous pouvez également effectuer une modification à l'échelle du système et utiliser binfmt pour enregistrer les fichiers exe en tant que fichiers binaires non natifs. Ensuite, en essayant de lancer un fichier exe, le noyau exécutera l'interpréteur mono pour gérer la commande. Binfmt peut également être utilisé pour lancer des exécutables Windows à l'aide de WINE ou de fichiers Java .class à l'aide d'une machine virtuelle Java. Pour vous inscrire exe avec le noyau:

Devenez root et activez le module binfmt dans votre noyau avec cette commande:

Sudo apt-get install binfmt-support
modprobe binfmt_misc

En outre, vous souhaiterez peut-être ajouter la commande modprobe à votre script de démarrage /etc/rc.local afin de l'exécuter au démarrage.

Ajoutez la ligne ci-dessous à votre fichier /etc/fstab:

binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none

Ensuite, demandez au système d’exécuter la commande suivante au démarrage:

echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register

Assurez-vous de marquer vos fichiers .exe comme exécutables dans le système de fichiers:

chmod +x myprogram.exe

Notez que cela ne change pas votre noyau, mais uniquement les modules qu'il charge lorsque vous démarrez votre système. En d'autres termes, vous pouvez toujours mettre à niveau votre noyau sans craindre de perdre ces modifications. De même, vous pouvez mettre à niveau votre environnement d'exécution Mono sans affecter les méthodes d'appel répertoriées dans cette section.

17
user8290

Créez un script de démarrage.

Ouvrez un éditeur de texte brut, ajoutez ceci:

#!/bin/bash
mono foo.exe &

Selon votre configuration, vous devrez peut-être utiliser le chemin complet de foo.exe.

Enregistrez le fichier par exemple sous le nom foo.sh.

Rendez-le exécutable:

Sudo chmod a+x foo.sh

Vous devriez maintenant pouvoir démarrer foo.exe en double-cliquant sur foo.sh.

10
j-g-faustus

Vous pouvez associer l’extension '.exe' sur Nautilus à exécuter avec /usr/bin/mono

2
Jader Dias

Je sais que c'est une vieille question, mais je l'ai trouvée grâce à Google et cela m'a fait réfléchir. C'est un hack majeur mais vous pouvez télécharger

https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh

à votre domicile et ajoutez ce qui suit à .bashrc

source ~/.bash-preexec.sh
preexec() {
  if [[ $1 =~ [^\s]+\.exe$ ]]; then
    eval "$1() { return 1; }"
    export -f $1
    /usr/bin/mono $1
  fi
}
precmd() { [[ $1 =~ [^\s]+\.exe$ ]]; unset -f $1; }
1
nettux