Je ne parviens pas à créer un fichier exécutable d'une application Electron
avec la commande suivante:
electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --prune=true --out=release-builds
Le fichier de construction, qui est un fichier de bibliothèque partagée (application / x-sharedlib), ne s'exécute pas sur Ubuntu 18
. Au lieu de cela, j'obtiens le message d'erreur suivant lors de l'ouverture du fichier dans Nautilus:
Impossible d'afficher "electron-tutorial-app"
Aucune application n'est installée pour les fichiers de "bibliothèque partagée". Le faites vous voulez-vous rechercher une application pour ouvrir ce fichier?
[Non] [Oui]
Existe-t-il un moyen de contourner ce problème?
3 Réponses :
C'est un problème lorsque electron-packager
est utilisé pour empaqueter une application Linux avec Electron version 4.0.x, alors qu'il n'y avait aucun problème avec les versions précédentes d'Electron, telles que 3.1.x. p>
Pour une raison quelconque, dans Electron 4.0.x, le fichier d'application produit est une bibliothèque partagée au lieu d'un exécutable .
Depuis une fenêtre de terminal, exécuter la commande file
sur le chemin du fichier de l'application donne:
Objet partagé ELF 64 bits LSB, x86-64, version 1 (SYSV), dynamiquement lié, interpréteur /lib64/ld-linux-x86-64.so.2, pour GNU / Linux 3.2.0, BuildID [sha1] = b9e8ba37118dad1bf605affef41026f813215bc6, supprimé
autrefois:
Exécutable ELF 64 bits LSB, x86-64, version 1 (SYSV), dynamiquement lié, interpréteur /lib64/ld-linux-x86-64.so.2, pour GNU / Linux 2.6.32, dépouillé
Heureusement, il est toujours possible, bien que fastidieux, d'exécuter l'application en la lançant à partir d'une fenêtre de terminal, par exemple en faisant glisser l'icône du fichier d'application sur l'invite du terminal, puis en tapant Entrée.
merci, @Mikaeru, votre réponse m'a amené à déclasser la version électronique et à construire avec d'autres paramètres dans l'utilitaire électron-packager. Cela fonctionne pour au moins Ubuntu Linux. Donc, maintenant, essayez aussi pour Windows Machine. Mettra à jour en conséquence.
TL; DR: les fichiers produits sont en fait des exécutables d'un nouveau format. Il n'y a rien de mal avec eux. Nautilus / les gestionnaires de fichiers ne les reconnaissent pas par erreur comme exécutables. Il existe des solutions, comme la création d'un fichier * .desktop pour lancer l'application.
Ce phénomène se produit comme un effet secondaire d'un changement dans la façon dont Electron construit les binaires Linux. Le commit 9294facf a changé le format binaire de ELF en PIE . Le changement est assez petit et n'affecte qu'un seul fichier (BUILD.gn). Le changement a atterri dans Electron à partir de la version 4.0.0.
Les gestionnaires de fichiers utilisent la commande file
pour décider quoi faire avec un fichier (par exemple, ouvrir une visionneuse d'images, un texte éditeur ou exécutez le fichier). file
ne peut pas faire la distinction entre les bibliothèques partagées et les exécutables PIE et donc mal classifie les fichiers PIE (voir le rapport de bogue ).
Puisque le problème n'existe que pour les gestionnaires de fichiers graphiques , vous pouvez simplement exécuter l'exécutable depuis le terminal ou depuis un script. Ceci est quelque peu impliqué pour les utilisateurs finaux non techniques et non pas ce que l'OP veut.
Attendez que file
reconnaisse PIE comme exécutable des dossiers. À son tour, cela conduira probablement des gestionnaires de fichiers tels que Nautilus à lancer correctement les PIE. On ne sait pas si ou quand cela se produira. Si cela se produit, il ne sera probablement inclus que dans les futures versions de la distribution.
Créez un fichier de bureau pour lancer l'application. C'est une façon courante de lancer les applications de bureau de toute façon.
Créez un fichier appelé myapp.desktop
avec le contenu suivant.
[Desktop Entry] Name=My Application Exec=/path/to/binary Terminal=false Type=Application StartupNotify=true Encoding=UTF-8
Ensuite, marquez le fichier exécutable du bureau en émettant chmod + x myapp.desktop
. Un double clic sur le fichier devrait lancer l'application comme prévu.
Informations complémentaires
La discussion correspondante dans le projet electron-packager: https://github.com/electron-userland/electron-packager/issues/901 a >. (Gist: ce problème n'a pas été causé par électron-packager, regardez en amont)
Le problème correspondant dans le projet électron est https://github.com/electron/electron/issues/15406 . (Gist: ils voulaient activer PIE sur Linux. Pas notre bug, regardez en amont)
Au cas où vous ne savez pas comment exécuter à partir d'un terminal comme moi: $. / App-name
cela a été mentionné dans le lien / issues / 901 ci-dessus. J'ai exécuté mon application dans Ubuntu
Pour Linux (Ubuntu):
Rétrograder le package Electron:
npm install electron@3.1.6 --save-dev
Pour global (si nécessaire)
npm install -g electron@3.1.6
Exécutez la commande electron-packager - pour Linux:
conditionneur d'électrons. electron-tutorial-app --overwrite --asar --platform = linux --arch = all --prune = true --out = release-builds
Cela se traduira par 4 dossiers Linux (arch = tout). Sélectionnez un exécutable en fonction de votre système d'exploitation.
Rétrograder Electron signifie manquer de nombreuses fonctionnalités et corrections de bogues et ne devrait être envisagé que dans de rares circonstances.