3
votes

I have created an electron app .Using electron-builder I created appImage in linux.I want build app for windows in linux .But it is throwing wine required error .please help to resolve this issue. this is 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"
    }
  }
}

Even the electron-updater throwing error for dev-update.yml not found.and also app-icon is not setting

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();
  }
});
1

1 Answers

2
votes

Here is how I managed to build windows app from mac/linux. Maybe this can help you @Krazy.

First off all, I'm using the docker version of electron-builder

And then, here are the steps

1- Install electron builder dev in your project

npm install electron-builder —save-dev

2- In package.json add this to script

"dist": "electron-builder"

3- Launch Docker

4- In terminal, run

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 into your project

6- type

yarn && yarn dist -w