147 votes

Electron-builder vs electron-packager

Quelle est la principale différence entre electron-builder et electron-packager. Y a-t-il des projets d'exemple pour les deux? Lequel est mieux pour construire une application .exe autonome?

123voto

mrm Points 558

Mise à jour août 2019

J'utilise electron-builder depuis plus d'un an maintenant, empaquetant mon application pour macOS, Windows 10 et Ubuntu Desktop. Le mainteneur, develar, a ajouté un excellent site de documentation plus tôt cette année, et il reste vigilant quant aux changements de gatekeeper sur macOS afin de garantir que les installateurs et les mises à jour fonctionnent toujours.

Mise à jour novembre 2018

Le développeur principal d'electron-builder a continué à travailler dur sur le projet, notamment en ajoutant le support pour Electron 3, de nouvelles destinations de publication d'artefacts, et en publiant régulièrement des correctifs de bugs. L'ancien mainteneur a quitté electron-packager, et ils n'ont toujours pas de mainteneur pour Windows, et n'ont toujours pas de support pour les binaires Windows signés. Pour référence :

electron-packager ( 72 versions,  17 problèmes ouverts,  639 résolus)
electron-builder  (651 versions, 399 problèmes ouverts, 2,603 résolus)

Mise à jour décembre 2017

Electron-builder a été largement développé au cours de la dernière année, publiant régulièrement de nouvelles versions avec des fonctionnalités et des correctifs de bugs chaque semaine. La documentation sur https://www.electron.build/ est excellente, et en suivant le "Guide de configuration rapide" (sur la première page, plusieurs sections plus bas) inclut un projet de base et des instructions étape par étape.

Mise à jour juin 2017

electron-builder effectue à la fois l'étape d'emballage (comme le fait electron-packager), et construit des installateurs spécifiques à la plateforme (comme pkg ou Mac AppStore pour Mac, NSIS ou Windows Store pour Windows, et AppImage pour Linux).

Pour mon projet existant, electron-forge a échoué avec une "dépendance manquante" qui était présente dans mon package.json et mes node_modules).

Ce n'est pas bien documenté, mais electron-builder est passé de Squirrel.windows à NSIS plus tôt cette année comme installateur Windows par défaut. NSIS crée des packages d'installation nettement plus petits (30 Mo au lieu de 90 Mo, dans le cas de mon projet).

Article original

En mars 2017, en grande partie, ils ont une parité de fonctionnalités. J'ai trouvé ce qui suit :

  • Ils sont tous les deux dans l'organisation "electron-userland", donc ils sont tous les deux "légitimes".
  • electron-packager n'a pas de mainteneur pour Windows
  • electron-builder a plus de contributeurs, et beaucoup plus de problèmes résolus, donc il y a peut-être eu plus de bugs, ou plus d'utilisateurs. electron-packager a plus d'étoiles.
  • electron-builder prend en charge un nombre beaucoup plus important de formats cibles que electron-packager
  • electron-forge est basé sur electron-packager, donc cela pourrait être une expérience "prête à l'emploi" plus facile.

78voto

Rake Points 31

Electron-packager a été (mise à jour : modifié dans ce commit : "refactor: merge electron-packager") utilisé par electron-builder. Cet article indique

Si vous voulez vraiment vous amuser, jetez un coup d'œil à electron-builder qui prend les packages produits par electron-packager et crée des installateurs automatisés.

3 votes

Ceci est incorrect : je ne vois aucune référence à electron-packager dans le package.json de electron-builder. github.com/electron-userland/electron-builder/…

2 votes

C'est parce que cela ne se produit plus.

0 votes

J'ai également utilisé electron-builder pour mon projet secondaire : github.com/hasukmistry/password-manager

23voto

jamesxiang Points 380

Electron-packager emballe le code source et génère un fichier exécutable.

electron-builder peut générer un programme d'installation avec prise en charge de la "mise à jour automatique" dans electron.

http://electron.atom.io/docs/api/auto-updater/

0 votes

Hmm electron-packager semble seulement créer un dossier avec un fichier exécutable qui lance l'application. On dirait qu'il ne crée pas réellement un programme d'installation.

7voto

aestrro Points 532

D'accord, je sais que ce fil est vieux mais je voudrais suggérer que tout le monde utilise electron-forge, cela rendra votre vie meilleure et je pense que vous vous sentirez plus intelligent en l'utilisant. Personnellement, j'ai eu des cauchemars en affrontant les problèmes d'emballage. Il a une interface en ligne de commande ultra simple, installez-le globalement et vos rêves pourraient devenir réalité.

J'espère vraiment que cela vous aidera! Ne vous inquiétez pas, je ne l'ai pas fait mais cela m'aide à créer des applications de bureau.

4 votes

Je souhaite avoir trouvé ce commentaire avant de gaspiller les deux derniers jours à bricoler à la fois avec le constructeur et l'emballeur.

1 votes

Etes-vous en mesure de configurer des mises à jour automatiques sur les trois plateformes avec electron-forge, comme vous le pouvez avec electron-builder?

0 votes

Au moment de ce post, electron-forge a de nombreuses vulnérabilités alors que builder et packager n'en ont aucune snyk.io/test/npm/electron-forge snyk.io/test/npm/electron-builder snyk.io/test/npm/electron-packager

6voto

Geng Jiawen Points 85

Vous pouvez utiliser ce https://github.com/SimulatedGREG/electron-vue/ pour générer un modèle en utilisant vue et electron, il prend en charge à la fois electron-packager et electron-builder.

Pour ma part, je préfère toujours electron-builder car il est beaucoup plus simple pour moi et peut générer un binaire en utilisant travis ci et appveyor et publier sur github release, comme ce dépôt que j'ai réalisé https://github.com/gengjiawen/android-studio-helper/releases.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X