使用电子生成器从电子应用程序构建独立的.exe

时间:2019-09-21 19:20:53

标签: windows macos electron installer electron-builder

我正在使用电子版v6.0.9和电子生成器v21.2.0。这是我的package.json中用于生产构建的打包配置。

"build": {
    "appId": "com.app.prototype",
    "productName": "Pluto",
    "copyright": "Copyright © 2018 Simon Inc.",
    "mac": {
      "target": [
        "zip"
      ]
    },
    "win": {
      "publisherName": "Simon Inc.",
      "target": [
        "nsis",
        "zip"
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "tar.gz"
      ]
    },
    "dmg": {
      "icon": "build/icon.icns"
    },
    "publish": {
      "provider": "generic",
      "url": "THE_RELEASE_URL_HERE",
      "channel": "latest",
      "publishAutoUpdate": true
    }
  },

我在"pack": "electron-builder --dir -mwl",中将构建脚本配置为script。问题是,当我运行命令npm run pack时,它将为所有平台打包应用程序,但是对于Windows,没有.exe或'.msi'的单个安装程序文件。 electron-builder为Windows构建了一堆文件。

我正在macOS High Sierra v10.13.6(17G8030)上运行。我也尝试在Windows 10系统上构建,但结果是相同的。这里是否配置错误,还是需要为Windows生成单个安装程序文件而执行一些其他步骤?

1 个答案:

答案 0 :(得分:0)

我弄清楚了如何从电子源构建一个独立的安装程序,而不是拥有大量文件。实际上,我们必须将electron-builder-p一起使用。 这是我的 package.json 文件中的构建配置。

"build": {
    "appId": "com.trinityinfosystem.accurate",
    "productName": "Accurate",
    "copyright": "Copyright © 2018 Trinity InfoSystem",
    "mac": {
      "target": [
        "zip"
      ],
      "publish": [
        "github"
      ]
    },
    "win": {
      "publisherName": "Trinity InfoSystem",
      "publish": [
        "github"
      ],
      "target": [
        "nsis"
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "tar.gz"
      ]
    },
    "dmg": {
      "icon": "build/icon.icns"
    },
    "publish": [
      {
        "provider": "github",
        "owner": "vkiranmaniya",
        "repo": "accurate",
        "vPrefixedTagName": true,
        "private": true,
        "releaseType": "draft"
      }
    ]
  }

然后我只用了electron-builder -p never --win,它把 .exe 文件打包在 project_root / dist 目录中。如果您正在使用-p always中的auto-updator,并且想在github仓库中发布发布草案,则可以使用electron-builder

如果您想覆盖默认安装位置并让用户选择它,请确保已按照以下方式配置nsis构建,

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