electron - 如何使用 Electron 构建器在 ubuntu 中为 windows 构建 Electron 应用程序

标签 electron electron-builder electron-updater

我创建了一个 Electron 应用程序。使用 Electron 生成器我在 linux 中创建了 appImage。我想在 linux 中为 windows 构建应用程序。但是它抛出了需要 wine 的错误。请帮助解决这个问题。
这是 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"
    }
  }
}

甚至未找到 dev-update.yml 的 Electron 更新程序抛出错误,也未设置 app-icon
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();
  }
});

最佳答案

这是我如何设法从 mac/linux 构建 Windows 应用程序。也许这可以帮助你@Krazy。
首先,我使用的是 docker version electron-builder
然后,这里是步骤
1- 在您的项目中安装 Electron 生成器 dev

npm install electron-builder —save-dev
2- 在 package.json 中将此添加到脚本中
"dist": "electron-builder"
3- 启动 Docker
4- 在终端中,运行
docker run --rm -ti \
 --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_') \
 --env ELECTRON_CACHE="/root/.cache/electron" \
 --env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \
 -v ${PWD}:/project \
 -v ${PWD##*/}-node-modules:/project/node_modules \
 -v ~/.cache/electron:/root/.cache/electron \
 -v ~/.cache/electron-builder:/root/.cache/electron-builder \
 electronuserland/builder:wine
5- cd 进入你的项目
6-型
yarn && yarn dist -w

关于electron - 如何使用 Electron 构建器在 ubuntu 中为 windows 构建 Electron 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946482/

相关文章:

electron - Electron 建立时间变量

reactjs - 为什么没有在我的package.json中读取构建?

javascript - Electron 更新不工作 - 最大允许大小为 50 MB

node.js - 打开另一个excel文件时用open打开一个excel文件,将立即执行代码,无需等待

javascript - 使用 Squirrel 将 Electron App 安装到 ProgramFiles(x86)

node.js - 我无法使用node.js运行 Electron

node.js - 在 Electron.js 中使用 fs 移动文件

node.js - Electron Builder - 未找到插件,无法调用 UAC::_