3

我创建了一个电子应用程序。使用电子生成器我在 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"
    }
  }
}

甚至找不到 dev-update.yml 的电子更新程序抛出错误。而且 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();
  }
});
4

1 回答 1

2

这是我设法从 mac/linux 构建 Windows 应用程序的方法。也许这可以帮助你@Krazy。

首先,我使用的是docker 版本的电子生成器

然后,这里是步骤

1-在您的项目中安装电子构建器开发

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
于 2020-09-12T06:50:23.077 回答