Electron使用电子生成器创建MSI安装程序

Aal*_*eks 15 electron electron-builder

我设法使用电子构建器为Windows创建了一个.exe安装程序,我创建了2个package.json,如文档中所指出:

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

我最终得到了一个工作.exe的文件夹 在此输入图像描述

"dist:win64": "./node_modules/.bin/build --platform win32 --arch x64"
Run Code Online (Sandbox Code Playgroud)

我的主package.json的构建部分是

"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"
    }
  }
Run Code Online (Sandbox Code Playgroud)

一切正常,我有.exe安装程序,但无法使用.msi安装程序将内容放在程序文件目录中.

在此输入图像描述

相反,我最终安装在C:\ Users\UserHome\AppData\Local\electron文件夹中,安装程序如下所示.

在此输入图像描述

有没有办法让一个真正的.msi安装程序使用电子生成器将内容放在Program文件夹中.唯一有效的项目是https://github.com/theodo/electron-boilerplate,但它使用的是电子生成器的旧版本.

在电子文档设置noMsi为假,应该做的伎俩......

Should Squirrel.Windows create an MSI installer?
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 5

您实际上不需要安装MSI即可将您的应用安装到Program Files

如果禁用nsis config(oneClick)中的一键单击,则将提示用户执行单用户安装(in AppData)还是按每台计算机(in Program Files)。

如果不想让他们选择,可以将perMachine其设置为false,这将仅允许安装到Program Files中:

"nsis": {
  "oneClick": false,
  "perMachine": false
},
Run Code Online (Sandbox Code Playgroud)

我个人会留下选择权,因为他们仍然可以在没有管理员权限的情况下安装!

在最新版本中,electron-builder还有一个allowToChangeInstallationDirectory选项允许用户选择任何安装位置。


小智 2

我还没有让它发挥作用,但我的理解是它是相反的(可怕的命名)。

"noMsi": false // will make an MSI
"noMsi": true // will NOT make an MSI
Run Code Online (Sandbox Code Playgroud)