18

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

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

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

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

我的主要 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"
    }
  }

一切正常,我有 .exe 安装程序,但没有办法拥有将内容放入程序文件目录的 .msi 安装程序。

在此处输入图像描述

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

在此处输入图像描述

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

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

Should Squirrel.Windows create an MSI installer?
4

6 回答 6

5

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

如果您在 nsis 配置 ( oneClick) 中禁用一键单击,则会提示用户是执行单用户安装 (in AppData) 还是每台计算机 (in Program Files)。

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

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

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

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

于 2017-01-10T12:41:32.890 回答
4

最新电子生成器版本的 wiki 中所述,您必须使用以下msi选项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"
    }
  }
于 2016-06-30T22:24:46.100 回答
3

如果您想要的只是 exe 格式的安装程序(我不了解 msi),您可以使用 electron-builder 构建解压到目录的 exe。查看http://npmjs.org/package/electron-builder上的文档。文档非常简单。使用 exe 获得解压后的文件夹后,使用“Inno Setup Compiler”创建具有专业外观的安装程序。一旦掌握了窍门,只需 5 分钟即可完成整个操作。

于 2017-09-03T07:27:01.700 回答
2

我看目标就知道了。做这个

"win": {
  "target": [
   "msi"
   ]
//your code here
},
于 2019-09-19T02:06:48.687 回答
2

我也没有得到这个工作(还),但我的理解是它是相反的(可怕的命名)。

"noMsi": false // will make an MSI
"noMsi": true // will NOT make an MSI
于 2016-04-19T14:42:54.383 回答
0

你可以使用“electron-wix-msi”这个包来完成这个任务。 https://www.npmjs.com/package/electron-wix-msi 但是首先您需要使用 Electron-packager 或 Electron-Builder 打包项目的资源,然后将 win-unpacked 文件夹的路径作为 APP-DIR

于 2020-08-11T14:47:13.750 回答