web-dev-qa-db-fra.com

Electron crée un installateur MSI en utilisant electron-builder

J'ai réussi à créer un programme d'installation .exe pour Windows à l'aide de electron builder, j'ai créé 2 package.json comme indiqué dans la documentation: 

https://github.com/electron-userland/electron-builder .

J'ai fini par avoir un dossier avec un .exe de travail enter image description here

"dist:win64": "./node_modules/.bin/build --platform win32 --Arch x64"

La section de construction de mon package principal.json est 

"build": {
    "app-bundle-id": "org.test.mytest",
    "app-category-type": "public.app-category.graphics-design",
    "osx": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "win": {
      "title": "My awesome app",
      "version": "2.28.999.1",
      "noMsi": false,
      "authors": "Author"
    }
  }

Tout fonctionne bien, je dispose d’un programme d’installation .exe mais il n’ya aucun moyen d’avoir un programme d’installation .msi qui mette le contenu dans le répertoire des fichiers programme. 

 enter image description here

Au lieu de cela, je me suis retrouvé avec une installation dans le dossier C:\Users\UserHome\AppData\Local\electron avec et un programme d'installation, comme ci-dessous.

 enter image description here

Existe-t-il un moyen d’avoir un véritable installateur .msi en utilisant electron builder qui place le contenu dans le dossier du programme. Le seul projet qui a fonctionné est celui-ci https://github.com/theodo/electron-boilerplate mais il utilise une ancienne version de électron-builder.

Dans le document électronique, définir noMsi sur false devrait suffire. 

Should Squirrel.Windows create an MSI installer?
12
Aaleks

comme indiqué dans le wiki de la dernière version de Electron Builder vous devez utiliser l'option msi dans build.win:

"build": {
    "app-bundle-id": "org.test.mytest",
    "app-category-type": "public.app-category.graphics-design",
    ...
    ,
    "win": {
      "title": "My awesome app",
      "version": "2.28.999.1",
      "msi": true,
      "authors": "Author"
    }
  }
4
wilver

En réalité, vous n'avez pas besoin d'un MSI pour installer votre application dans Program Files

Si vous désactivez un clic dans la configuration nsis (oneClick), l'utilisateur est invité à effectuer l'installation unique (dans AppData) ou par ordinateur (dans Program Files).

Si vous ne voulez pas leur donner le choix, vous pouvez définir perMachine sur false, ce qui ne permettra l'installation que dans Program Files:

"nsis": {
  "oneClick": false,
  "perMachine": false
},

Personnellement, je leur laisserais cette option car ils peuvent toujours installer sans droits d'administrateur!

Dans la dernière version de electron-builder, il existe également une option allowToChangeInstallationDirectory qui permet à l'utilisateur de choisir n'importe quel emplacement d'installation.

3
Tim

Je n'ai pas encore réussi à le faire fonctionner, mais je crois comprendre que c'est le contraire (nom terrible).

"noMsi": false // will make an MSI
"noMsi": true // will NOT make an MSI
2
steveostudios

Si tout ce que vous voulez, c'est un programme d'installation au format exe (je ne sais pas à propos de msi), vous pouvez utiliser electron-builder pour créer l'exe décompressé dans un répertoire. Consultez la documentation sur http://npmjs.org/package/electron-builder . La documentation est assez simple. Après avoir obtenu le dossier décompressé avec votre fichier .exe, utilisez "Inno Setup Compiler" pour créer un programme d'installation de qualité professionnelle. Une fois que vous avez compris, il faut environ 5 minutes pour tout faire.

1
Teja