electron / forge

:electron: A complete tool for building and publishing Electron applications
https://electronforge.io
MIT License
6.46k stars 513 forks source link

Cannot build squirrel windows installer from linux, on 5.2.3 or beta. #669

Closed tnishimura closed 5 years ago

tnishimura commented 5 years ago

(excuse me for not following template completely, I have two test cases. hopefully below makes sense. Also, I do not know where config.forge is)

Problem

I get weird nuget errors when I try to run make on linux, both for the beta and npm versions (5.2.3): System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

Expectation

According to the beta's documentation here, it seems I should be able to make windows packages from linux as long as I have mono and wine installed.

My setup

I am on ubuntu 18.04. wine, mono, node, npm versions are below:

mono --version
Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1ubuntu1)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            sgen

wine --version
wine-3.0 (Ubuntu 3.0-1ubuntu1)

node --version
v8.11.3

npm --version 
6.5.0

With the Beta version

I installed the beta as per the doc and ran the make command under debug mode:

npm install -g @electron-forge/cli 
npx @electron-forge/cli@6.0.0-beta.21 init my-app
cd my-app

export DEBUG=electron-forge:*,electron-windows-installer:*
npx electron-forge make --platform=win32

Beta - error message

This outputs:

WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle

  electron-forge:async-ora Process Started: Checking your system +0ms
  electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this +0ms
  electron-forge:async-ora Process Succeeded: Checking your system -- after 323ms +323ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:async-ora Process Started: Resolving Forge Config +0ms
  electron-forge:project-resolver searching for project in: /home/tnish/tmp/my-app +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /home/tnish/tmp/my-app/package.json +17ms
  electron-forge:async-ora Process Succeeded: Resolving Forge Config -- after 22ms +22ms
We need to package your application before we can make it
  electron-forge:async-ora Process Started: Preparing to Package Application for arch: x64 +99ms
  electron-forge:project-resolver searching for project in: /home/tnish/tmp/my-app +103ms
  electron-forge:project-resolver electron-forge compatible package.json found in /home/tnish/tmp/my-app/package.json +0ms
  electron-forge:packager packaging with options { asar: false,
  overwrite: true,
  dir: '/home/tnish/tmp/my-app',
  arch: 'x64',
  platform: 'win32',
  afterCopy: [ [Function] ],
  afterExtract: [ [Function] ],
  afterPrune: [ [Function] ],
  out: '/home/tnish/tmp/my-app/out',
  electronVersion: '4.0.1',
  quiet: true } +0ms
  electron-forge:async-ora Process Succeeded: Preparing to Package Application for arch: x64 -- after 2.5s +2s
  electron-forge:async-ora Process Started: Preparing native dependencies +0ms
  electron-forge:async-ora Process Succeeded: Preparing native dependencies -- after 6ms +6ms
  electron-forge:async-ora Process Started: Packaging Application +0ms
  electron-forge:async-ora Process Succeeded: Packaging Application -- after 2.7s +3s
Making for the following targets: squirrel
  electron-forge:async-ora Process Started: Making for target: squirrel - On platform: win32 - For arch: x64 +1ms
  electron-windows-installer:main Using Mono: 'mono' +0ms
  electron-windows-installer:main Using Wine: 'wine' +0ms
  electron-windows-installer:fs-utils Error: ENOENT: no such file or directory, stat '/home/tnish/tmp/my-app/out/my-app-win32-x64/resources/app.asar' +16ms
  electron-windows-installer:main Created NuSpec file:
  electron-windows-installer:main <?xml version="1.0" encoding="utf-8"?>
  electron-windows-installer:main <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  electron-windows-installer:main   <metadata>
  electron-windows-installer:main     <id>my_app</id>
  electron-windows-installer:main     <title>my-app</title>
  electron-windows-installer:main     <version>1.0.0</version>
  electron-windows-installer:main     <authors>tnish</authors>
  electron-windows-installer:main     <owners>tnish</owners>
  electron-windows-installer:main     <iconUrl>https://raw.githubusercontent.com/atom/electron/master/atom/browser/resources/win/atom.ico</iconUrl>
  electron-windows-installer:main     <requireLicenseAcceptance>false</requireLicenseAcceptance>
  electron-windows-installer:main     <description>My Electron application description</description>
  electron-windows-installer:main     <copyright>Copyright © 2019 tnish</copyright>
  electron-windows-installer:main   </metadata>
  electron-windows-installer:main   <files>
  electron-windows-installer:main     <file src="locales/**" target="lib/net45/locales" />
  electron-windows-installer:main     <file src="resources/**" target="lib/net45/resources" />
  electron-windows-installer:main     <file src="*.bin" target="lib/net45" />
  electron-windows-installer:main     <file src="*.dll" target="lib/net45" />
  electron-windows-installer:main     <file src="*.pak" target="lib/net45" />
  electron-windows-installer:main     <file src="*.exe.sig" target="lib/net45" />
  electron-windows-installer:main     <file src="Update.exe" target="lib/net45/squirrel.exe" />
  electron-windows-installer:main     <file src="icudtl.dat" target="lib/net45/icudtl.dat" />
  electron-windows-installer:main     <file src="LICENSE" target="lib/net45/LICENSE" />
  electron-windows-installer:main     <file src="my-app.exe" target="lib/net45/my-app.exe" />
  electron-windows-installer:main   </files>
  electron-windows-installer:main </package>
  electron-windows-installer:main  +2ms
  electron-windows-installer:spawn Spawning mono /home/tnish/tmp/my-app/node_modules/electron-winstaller/vendor/nuget.exe pack /tmp/si-119014-18321-fgw0lq.5fwed/my_app.nuspec -BasePath /home/tnish/tmp/my-app/out/my-app-win32-x64 -OutputDirectory /tmp/si-119014-18321-fgw0lq.5fwed -NoDefaultExcludes +2ms
  electron-forge:async-ora Process Failed: Making for target: squirrel - On platform: win32 - For arch: x64 () => {
    if (!startTime) return;
    return `-- after ${`${(0, _prettyMs.default)(Date.now() - startTime)}`.cyan}`;
  } +189ms

An unhandled error has occurred inside Forge:
An error occured while making for target: squirrel
Failed with exit code: 255
Output:

Unhandled Exception:
System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

Error: Failed with exit code: 255
Output:

Unhandled Exception:
System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

    at ChildProcess.proc.on.code (/home/tnish/tmp/my-app/node_modules/electron-winstaller/lib/spawn-promise.js:62:16)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)

beta version package.json

{
  "name": "my-app",
  "productName": "my-app",
  "version": "1.0.0",
  "description": "My Electron application description",
  "main": "src/index.js",
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "echo \"No linting configured\""
  },
  "keywords": [],
  "author": "tnish",
  "license": "MIT",
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "my_app"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ]
    }
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  },
  "devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.22",
    "@electron-forge/maker-deb": "^6.0.0-beta.22",
    "@electron-forge/maker-rpm": "^6.0.0-beta.22",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.22",
    "@electron-forge/maker-zip": "^6.0.0-beta.22",
    "electron": "4.0.1"
  }
}

With 5.2.3

I also tried with the non-beta (5.2.3) version of electron-forge, and get essentially the same error::

$ electron-forge init ef2 
✔ Checking your system
✔ Initializing Project Directory
✔ Initializing Git Repository
✔ Copying Starter Files
✔ Initializing NPM Module
✔ Installing NPM Dependencies

NPM version (5.2.3) error message

And the output to electron-forge make --platform=win32 is still:

WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle

  electron-forge:lifecycle Process Started: Checking your system +0ms
  electron-forge:lifecycle Process Succeeded: Checking your system +323ms
  electron-forge:runtime-config setting key: verbose to value: false +0ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:lifecycle Process Started: Resolving Forge Config +0ms
  electron-forge:project-resolver searching for project in: /home/tnish/tmp/ef2 +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /home/tnish/tmp/ef2/package.json +5ms
  electron-forge:lifecycle Process Succeeded: Resolving Forge Config +10ms
  electron-forge:require-search searching [ '../makers/win32/squirrel.js',
  '../makers/generic/squirrel.js',
  'electron-forge-maker-squirrel',
  'squirrel',
  '/home/tnish/tmp/ef2/squirrel',
  '/home/tnish/tmp/ef2/node_modules/squirrel',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/makers/win32/squirrel.js',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/makers/generic/squirrel.js',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/electron-forge-maker-squirrel',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/squirrel',
  '/home/tnish/tmp/ef2/squirrel',
  '/home/tnish/tmp/ef2/node_modules/squirrel',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/makers/win32/squirrel.js',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/makers/generic/squirrel.js',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-squirrel',
  '/home/tnish/tmp/ef2/node_modules/electron-forge/dist/api/node_modules/squirrel',
  '/home/tnish/tmp/ef2/squirrel',
  '/home/tnish/tmp/ef2/node_modules/squirrel' ] relative to /home/tnish/tmp/ef2/node_modules/electron-forge/dist/api +0ms
  electron-forge:require-search testing ../makers/win32/squirrel.js +2ms
We need to package your application before we can make it
  electron-forge:lifecycle Process Started: Preparing to Package Application for arch: x64 +71ms
  electron-forge:project-resolver searching for project in: /home/tnish/tmp/ef2 +75ms
  electron-forge:project-resolver electron-forge compatible package.json found in /home/tnish/tmp/ef2/package.json +1ms
  electron-forge:hook could not find hook: generateAssets +0ms
  electron-forge:hook could not find hook: prePackage +0ms
  electron-forge:packager packaging with options { asar: false,
  overwrite: true,
  packageManager: 'yarn',
  afterCopy: [ [Function] ],
  afterExtract: [ [Function] ],
  afterPrune: [ [Function] ],
  dir: '/home/tnish/tmp/ef2',
  arch: 'x64',
  platform: 'win32',
  out: '/home/tnish/tmp/ef2/out',
  electronVersion: '4.0.0',
  quiet: true } +0ms
  electron-forge:lifecycle Process Succeeded: Preparing to Package Application for arch: x64 +20s
  electron-forge:lifecycle Process Started: Compiling Application +0ms
  electron-forge:lifecycle Process Succeeded: Compiling Application +1s
  electron-forge:lifecycle Process Started: Preparing native dependencies +17s
  electron-forge:lifecycle Process Succeeded: Preparing native dependencies +47ms
  electron-forge:lifecycle Process Started: Packaging Application +0ms
  electron-forge:hook could not find hook: postPackage +43s
  electron-forge:lifecycle Process Succeeded: Packaging Application +5s
Making for the following targets:
  electron-forge:hook could not find hook: preMake +1ms
  electron-forge:lifecycle Process Started: Making for target: squirrel - On platform: win32 - For arch: x64 +2ms
  electron-windows-installer:main Using Mono: 'mono' +0ms
  electron-windows-installer:main Using Wine: 'wine' +1ms
  electron-windows-installer:fs-utils Error: ENOENT: no such file or directory, stat '/home/tnish/tmp/ef2/out/ef2-win32-x64/resources/app.asar' +6ms
  electron-windows-installer:main Created NuSpec file:
  electron-windows-installer:main <?xml version="1.0" encoding="utf-8"?>
  electron-windows-installer:main <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  electron-windows-installer:main   <metadata>
  electron-windows-installer:main     <id>ef2</id>
  electron-windows-installer:main     <title>ef2</title>
  electron-windows-installer:main     <version>1.0.0</version>
  electron-windows-installer:main     <authors>tnish</authors>
  electron-windows-installer:main     <owners>tnish</owners>
  electron-windows-installer:main     <iconUrl>https://raw.githubusercontent.com/atom/electron/master/atom/browser/resources/win/atom.ico</iconUrl>
  electron-windows-installer:main     <requireLicenseAcceptance>false</requireLicenseAcceptance>
  electron-windows-installer:main     <description>My Electron application description</description>
  electron-windows-installer:main     <copyright>Copyright © 2019 tnish</copyright>
  electron-windows-installer:main   </metadata>
  electron-windows-installer:main   <files>
  electron-windows-installer:main     <file src="locales/**" target="lib/net45/locales" />
  electron-windows-installer:main     <file src="resources/**" target="lib/net45/resources" />
  electron-windows-installer:main     <file src="*.bin" target="lib/net45" />
  electron-windows-installer:main     <file src="*.dll" target="lib/net45" />
  electron-windows-installer:main     <file src="*.pak" target="lib/net45" />
  electron-windows-installer:main     <file src="*.exe.sig" target="lib/net45" />
  electron-windows-installer:main     <file src="Update.exe" target="lib/net45/squirrel.exe" />
  electron-windows-installer:main     <file src="icudtl.dat" target="lib/net45/icudtl.dat" />
  electron-windows-installer:main     <file src="LICENSE" target="lib/net45/LICENSE" />
  electron-windows-installer:main     <file src="ef2.exe" target="lib/net45/ef2.exe" />
  electron-windows-installer:main   </files>
  electron-windows-installer:main </package>
  electron-windows-installer:main  +1ms
  electron-windows-installer:spawn Spawning mono /home/tnish/tmp/ef2/node_modules/electron-winstaller/vendor/nuget.exe pack /tmp/si-119014-17895-m6d71b.3oi9p/ef2.nuspec -BasePath /home/tnish/tmp/ef2/out/ef2-win32-x64 -OutputDirectory /tmp/si-119014-17895-m6d71b.3oi9p -NoDefaultExcludes +5ms
  electron-forge:lifecycle Process Failed: Making for target: squirrel - On platform: win32 - For arch: x64 +203ms

An unhandled error has occurred inside Forge:
An error occured while making for target: squirrel
Failed with exit code: 255
Output:

Unhandled Exception:
System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

Error: Failed with exit code: 255
Output:

Unhandled Exception:
System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

    at ChildProcess.proc.on.code (/home/tnish/tmp/ef2/node_modules/electron-winstaller/lib/spawn-promise.js:62:16)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)

npm version package.json

package.json for the project created with 5.2.3 was:

{
  "name": "ef2",
  "productName": "ef2",
  "version": "1.0.0",
  "description": "My Electron application description",
  "main": "src/index.js",
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "eslint src --color"
  },
  "keywords": [],
  "author": "tnish",
  "license": "MIT",
  "config": {
    "forge": {
      "make_targets": {
        "win32": [
          "squirrel"
        ],
        "darwin": [
          "zip"
        ],
        "linux": [
          "deb",
          "rpm"
        ]
      },
      "electronPackagerConfig": {
        "packageManager": "yarn"
      },
      "electronWinstallerConfig": {
        "name": "ef2"
      },
      "electronInstallerDebian": {},
      "electronInstallerRedhat": {},
      "github_repository": {
        "owner": "",
        "name": ""
      },
      "windowsStoreConfig": {
        "packageName": "",
        "name": "ef2"
      }
    }
  },
  "dependencies": {
    "electron-compile": "^6.4.4",
    "electron-squirrel-startup": "^1.0.0"
  },
  "devDependencies": {
    "babel-plugin-transform-async-to-generator": "^6.24.1",
    "babel-preset-env": "^1.7.0",
    "babel-preset-react": "^6.24.1",
    "electron-forge": "^5.2.3",
    "electron-prebuilt-compile": "4.0.0",
    "eslint": "^3",
    "eslint-config-airbnb": "^15",
    "eslint-plugin-import": "^2",
    "eslint-plugin-jsx-a11y": "^5",
    "eslint-plugin-react": "^7"
  }
}

Maybe related issue:

Nuget 523, which is about icon and icon urls apparently, shows error similar to System.TypeLoadException: Could not load type 'NuGet.OptimizedZipPackage' from assembly 'NuGet, Version=2.8.50926.602, Culture=neutral, PublicKeyToken=null'.

malept commented 5 years ago

It doesn't seem like this is an Electron Forge specific bug, but rather one with electron-winstaller.

Alessandro100 commented 1 year ago

I got this exact error and what ended up fixing it was installing extra packages ontop of wine and mono sudo apt install nuget sudo apt install mono-xsp4 sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install wine32