【问题标题】:Electron create MSI installer using electron-builderElectron 使用 electron-builder 创建 MSI 安装程序
【发布时间】:2016-07-23 18:37:58
【问题描述】:

我设法使用电子生成器为 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 安装程序使用电子生成器将内容放在 Program 文件夹中。唯一有效的项目是 https://github.com/theodo/electron-boilerplate,但它使用的是电子生成器的旧版本。

在电子文档中将noMsi 设置为false,应该可以解决问题...

Should Squirrel.Windows create an MSI installer?

【问题讨论】:

    标签: electron electron-builder


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      wiki of latest electron builder release 中所述,您必须在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"
          }
        }
      

      【讨论】:

      • 我遇到了几个错误:Package "electron" is only allowed in "devDependencies". Please remove it from the "dependencies" section in your package.json. 为什么我不能将电子作为依赖项?这不是破坏了整个目的吗?无论如何,我删除了它并再次尝试yarn dist,但这次我得到了错误:Invalid configuration object. electron-builder 22.3.2 has been initialised using a configuration object that does not match the API schema.
      • 你好?你能帮帮我吗?
      • 您似乎对 elecron builder 有一些错误的配置。请检查documentationscheme 找出问题所在
      • 谢谢。与此同时,我想出了如何去做。但是,我在正确显示桌面快捷方式图标时遇到了一个问题。你介意看看我的question?
      • @oldboy 哇哇哇!等等……“Electron”是一个开发者工具,用于创建基于 Chromium 引擎和 Node.js 环境的独立于平台的桌面应用程序。它不是生产依赖,而是开发依赖。您的软件在分发过程中不应包含电子本身!因此,在安装“electron”时,请使用以下命令:“npm install electron --save-dev”。否则,整个电子环境 (>150 MB) 将不必要地包含在您的安装程序中!!!这就是错误消息告诉您的内容!
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 是的,我也明白这一点,但该选项对我不起作用。我在执行的脚本中看到是否有不同的 --no-msi 参数,但最终结果相同,没有 msi 安装程序...
        【解决方案5】:

        我通过查看目标发现了这一点。这样做

        "win": {
          "target": [
           "msi"
           ]
        //your code here
        },
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 从 wix 创建后,msi 未显示在“添加或删除程序”列表中。
          猜你喜欢
          • 2017-01-29
          • 2019-07-26
          • 2020-01-22
          • 2018-02-09
          • 2020-05-26
          • 2020-05-28
          • 2017-03-11
          • 2018-01-01
          • 2020-03-26
          相关资源
          最近更新 更多