如何使用 Electron Builder 在 ubuntu 中构建适用于 Windows 的电子应用程序

Kar*_*thi 5 electron electron-builder electron-updater

我创建了一个电子应用程序。使用电子构建器我在linux中创建了appImage。我想在linux中为windows构建应用程序。但它抛出了wine required错误。请帮助解决这个问题。这是package.json

  "name": "Gamer",
  "version": "1.0.0", 
  "main": "main.js",
  "repository": "https://github.com/XYX/GAME",
  "dependencies": {
    "@agm/core": "^1.0.0-beta.5",
  ...
    "electron-builder-squirrel-windows": "^22.1.0",
    "electron-packager": "^14.1.0",
    "electron-reload": "^1.5.0",
    "electron-store": "^5.1.0",
 },
  "devDependencies": {
   ...
    "electron": "^7.1.1",
    "electron-builder": "^22.1.0",
    "electron-prebuilt": "^1.4.13",
    "electron-updater": "^4.2.0",
  ...
  },
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "start:electron": "ng build --base-href ./ && electron .",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "electron": "electron .",
    "electron-build": "ng build --prod && electron .",
    "pack": "electron-builder --dir",
    "dist": "electron-builder",
    "build:Win": "electron-builder --win",
    "ship": "build",
    "electron-packager": "electron-packager ./ --all."
  },
  "peerDependencies": {
    "@angular/animations": "^7.2.15",
    "@angular/cdk": "^7.3.7",
    "@angular/material": "^7.3.7"
  },
  "author": "",
  "license": "ISC",
  "build": {
    "appId": "com.electron.coxGamer",
    "compression": "normal",
    "extends": null,
    "files": [
      "*.js",
      "build",
      "dist"
    ],
    "mac": {
      "target": "zip"
    },
    "linux": {
      "target": [
        "AppImage",
        "zip"
      ]
    },
    "win": {
      "target": "NSIS"
    },
    "publish": {
      "provider": "github",
      "repo": "https://github.com/XYX/GAME",
      "owner": "XYX"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

即使电子更新程序抛出错误 dev-update.yml 也没有找到。而且应用程序图标也没有设置

const { app, BrowserWindow, Menu,ipcMain } = require('electron');
const path = require('path');
const url = require('url');
const { autoUpdater } = require("electron-updater");

Menu.setApplicationMenu(null);
let mainWindow;
const createWindow = () => {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 900
  });
  mainWindow.setMenuBarVisibility(false);
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'dist', 'index.html'),
    protocol: 'file:',
    slashes: true
  })); 
  mainWindow.on('closed', () => {
    mainWindow = null;
  });

};

autoUpdater.on('update-downloaded', (info) => {
  win.webContents.send('updateReady')
});

app.on('ready', () => {
  createWindow();
  autoUpdater.checkForUpdates();
});
ipcMain.on("quitAndInstall", (event, arg) => {
  autoUpdater.quitAndInstall();
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin')
    app.quit();
});
app.on('activate', () => {
  if (mainWindow === null) {
    createWindow();
  }
});
Run Code Online (Sandbox Code Playgroud)

Kon*_*rad 6

以下是我如何从 mac/linux 构建 Windows 应用程序。也许这可以帮助你@Krazy。

\n

首先,我使用的是Electron-builder 的docker 版本

\n

然后,这是步骤

\n

1-在您的项目中安装 electro builder dev

\n
npm install electron-builder \xe2\x80\x94save-dev\n
Run Code Online (Sandbox Code Playgroud)\n

2-在package.json中将其添加到脚本中

\n
"dist": "electron-builder"\n
Run Code Online (Sandbox Code Playgroud)\n

3-启动 Docker

\n

4-在终端中,运行

\n
docker run --rm -ti \\\n --env-file <(env | grep -iE \'DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS_TAG|TRAVIS|TRAVIS_REPO_|TRAVIS_BUILD_|TRAVIS_BRANCH|TRAVIS_PULL_REQUEST_|APPVEYOR_|CSC_|GH_|GITHUB_|BT_|AWS_|STRIP|BUILD_\') \\\n --env ELECTRON_CACHE="/root/.cache/electron" \\\n --env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \\\n -v ${PWD}:/project \\\n -v ${PWD##*/}-node-modules:/project/node_modules \\\n -v ~/.cache/electron:/root/.cache/electron \\\n -v ~/.cache/electron-builder:/root/.cache/electron-builder \\\n electronuserland/builder:wine\n
Run Code Online (Sandbox Code Playgroud)\n

5- cd 进入您的项目

\n

6型

\n
yarn && yarn dist -w\n
Run Code Online (Sandbox Code Playgroud)\n