使用Electron builder创建MSI安装程序

使用Electron builder创建MSI安装程序,electron,electron-builder,Electron,Electron Builder,我使用electron builder为windows创建了一个.exe安装程序,我创建了2 package.json,正如文档中指出的: 最后我有了一个文件夹,里面有一个正在运行的.exe mymainpackage.json的build部分是 "build": { "app-bundle-id": "org.test.mytest", "app-category-type": "public.app-category.graphics-design", "osx"

我使用electron builder为windows创建了一个.exe安装程序,我创建了2 package.json,正如文档中指出的:

最后我有了一个文件夹,里面有一个正在运行的.exe

mymainpackage.json的build部分是

"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"
    }
  }
一切工作正常,我有和.exe安装程序,但没有办法有一个.msi安装程序,把内容在程序文件目录

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

有没有办法让一个真正的.msi安装程序使用electron builder将内容放在程序文件文件夹中。唯一有效的项目是这个项目,但它使用的是以前版本的electron builder

在电子文档中将
noMsi
设置为false时,应执行以下操作

Should Squirrel.Windows create an MSI installer?

我也没有让它起作用,但我的理解是,它是相反的(糟糕的命名)

如中所述,您必须使用
build.win
中的
msi
选项:

"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"
    }
  }

您实际上不需要安装MSI就可以将应用程序安装到
程序文件中

如果在nsis配置中禁用一键(
oneClick
),系统将提示用户是执行单用户安装(在
AppData
)还是每台机器安装(在
程序文件中)

如果不想让他们选择,可以将
perMachine
设置为false,这将只允许安装到程序文件中:

"nsis": {
  "oneClick": false,
  "perMachine": false
},
我个人会留下他们的选择,因为他们仍然可以安装没有管理员权限


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

如果您只需要一个exe格式的安装程序(我不知道msi),您可以使用electron builder将exe解包到一个目录中。请访问查看文档。文档非常直截了当。使用exe获得解包文件夹后,使用“Inno Setup Compiler”创建外观专业的安装程序。一旦你掌握了窍门,整个过程只需要5分钟。

我通过观察目标就知道了。这样做

"win": {
  "target": [
   "msi"
   ]
//your code here
},
您可以使用“electron wix msi”这个软件包来完成此任务。
但首先你需要用Electron packager或Electron Builder打包项目的资源,然后将win Unpackage文件夹的路径指定为APP-DIR

是的,我也明白这一点,但该选项不适用于我。我在执行的脚本中看到了不同的结果——不管是否有msi参数,但最终没有msi安装程序……我收到了几个错误:
Package“electron”只允许在“devdependences”中使用。请将其从package.json中的“依赖项”部分删除。
为什么我不能将electron作为依赖项?这不是违背了全部目的吗?无论如何,我删除了它,并再次尝试
warn dist
,但这次我得到了错误:
无效的配置对象。electron builder 22.3.2已使用与API架构不匹配的配置对象进行初始化。
hello?你能帮我吗?看来你对elecron builder的配置不好。请检查或查找错误,谢谢。我同时想出了怎么做。但是,我有一个问题,桌面快捷方式图标显示正确。你介意看看我的@oldboy哇!坚持“Electron”是基于Chromium引擎和Node.js环境创建独立于平台的桌面应用程序的开发工具。它不是生产依赖关系,而是开发人员依赖关系。在分发过程中,您的软件不应包含electron本身!因此,在安装“electron”时,请使用以下命令:“npm install electron--save dev”。否则,整个electron环境(>150MB)将不必要地包含在您的安装程序中!!!这就是错误消息告诉您的!从wix创建后,msi不会显示在“添加或删除程序”列表中。
"nsis": {
  "oneClick": false,
  "perMachine": false
},
"win": {
  "target": [
   "msi"
   ]
//your code here
},