8
votes

Exécutable Electron non reconnu par Nautilus

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?


0 commentaires

3 Réponses :


0
votes

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.


1 commentaires

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.



9
votes

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.

Analyse

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 ).

Solutions

Exécuter depuis le terminal

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 la correction en amont

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.

Utilisez un fichier de bureau

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)


1 commentaires

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



1
votes

Pour Linux (Ubuntu):

  1. 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
  1. 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.


1 commentaires

Rétrograder Electron signifie manquer de nombreuses fonctionnalités et corrections de bogues et ne devrait être envisagé que dans de rares circonstances.