forge icon indicating copy to clipboard operation
forge copied to clipboard

Add Built-in AppImage Maker

Open malept opened this issue 8 years ago • 32 comments

See: https://en.wikipedia.org/wiki/AppImage

I would rather not have code that calls the AppImage creator inside of Electron Forge, but rather it should be a separate package like the ones for .deb, .rpm, and Flatpak. (electron-installer-appimage?)

malept avatar Dec 17 '16 03:12 malept

Possibly @develar can share some insights or even code from his work with Electron and AppImage.

probonopd avatar Dec 18 '16 11:12 probonopd

@probonopd Mantainers of this package decided to reinvent the wheel and declined the idea to use electron-builder under the hood — https://github.com/electron-userland/electron-forge/issues/1#issuecomment-267570247 In any case electron-builder will provide such API in the future (well, it is possible even now, just not documented / polished to be used standalone).

develar avatar Dec 18 '16 17:12 develar

@develar I would avoid talking about "reinventing the wheel", given how electron-builder evolved.

In any event, if you (or another contributor) would like to extract the electron-builder AppImage code into a standalone NPM package (as mentioned in a related issue, preferably in the same style as the electron-installer-* packages), we would be happy to investigate integrating that package into Electron Forge.

malept avatar Dec 18 '16 17:12 malept

@malept https://github.com/develar/electron-builder/commit/9a3aee17e111dcb9ab3e1a4cdbe3491e0d0a392f#diff-9e7c5502a6b152427a4c43b0cd7d65d6

You can use electron-builder only to build prepackaged app into distributable format (AppImage, Snaps).

./node_modules/.bin/build --prepackaged <packed dir>

Do you like this solution (not yet merged to electron-builder)? Do you like CLI option name?

develar avatar Dec 28 '16 07:12 develar

The main problem I have with this approach is that I don't want to add a heavyweight dependency where we'll only use a small fraction of the functionality. We're adhering to the Node community/UNIX convention where modules should ideally be created for one particular concept, and then meshed together in higher-level modules.

To reiterate what I said in an earlier comment:

if you (or another contributor) would like to extract the electron-builder AppImage code into a standalone NPM package (as mentioned in a related issue, preferably in the same style as the electron-installer-* packages), we would be happy to investigate integrating that package into Electron Forge.

malept avatar Dec 28 '16 08:12 malept

@malept The only heavyweight dependency is request from electron-download (nugget) :)

electron-builder downloads required binaries for various targets on the fly — so, if you build AppImage, nsis (or squirrel.windows, or anything else) will be not downloaded.

Ok, I got your point, thanks (e.g. currently archiver is required only for squirrel.windows, but installed in any case).

develar avatar Dec 28 '16 08:12 develar

Please check and possibly merge https://www.npmjs.com/package/electron-forge-maker-appimage

probonopd avatar Mar 22 '17 18:03 probonopd

@probonopd All electron-builder targets now are available for electron-forge — https://github.com/electron-userland/electron-builder/issues/1193#issuecomment-288494214 (strictly speaking not all, but rest will be published in several days).

User just install mentioned module and can specify appimage target in the electron-forge config.

develar avatar Mar 22 '17 18:03 develar

@develar am I missing an extra step to add the appimage make target besides:

  1. yarn add electron-forge-maker-appimage
  2. add "appimage" to make_targets.linux

I get this error when I try to electron-forge make:

┌─ 08:40 AM in ~/work/eforge 
└───> electron-forge make
✔ Checking your system
✔ Resolving Forge Config

An unhandled rejection has occurred inside Forge:
Could not find a build target with the name: appimage for the platform: linux
Error: Could not find a build target with the name: appimage for the platform: linux
    at _callee3$ (/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/make.js:170:19)
    at tryCatch (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:65:40)
    at Generator.invoke [as _invoke] (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:303:22)
    at Generator.prototype.(anonymous function) [as next] (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:117:21)
    at Generator.tryCatcher (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/util.js:16:23)
    at PromiseSpawn._promiseFulfilled (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/generators.js:97:49)
    at Async._drainQueue (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:138:12)
    at Async._drainQueues (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

And here is my config in a test program, "eforge":

{
    "name": "eforge",
    "productName": "eforge",
    "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",
        "lint": "eslint src"
    },
    "keywords": [],
    "author": "crunchex",
    "license": "MIT",
    "config": {
        "forge": {
            "make_targets": {
                "win32": [
                    "squirrel"
                ],
                "darwin": [
                    "zip"
                ],
                "linux": [
                    "deb",
                    "rpm",
                    "appimage"
                ]
            },
            "electronPackagerConfig": {},
            "electronWinstallerConfig": {
                "name": "eforge"
            },
            "electronInstallerDebian": {},
            "electronInstallerRedhat": {},
            "github_repository": {
                "owner": "",
                "name": ""
            },
            "windowsStoreConfig": {
                "packageName": "",
                "name": "eforge"
            }
        }
    },
    "dependencies": {
        "electron-compile": "^6.4.1",
        "electron-forge-maker-appimage": "^17.0.1"
    },
    "devDependencies": {
        "babel-plugin-transform-async-to-generator": "^6.24.1",
        "babel-preset-env": "^1.4.0",
        "babel-preset-react": "^6.24.1",
        "electron-prebuilt-compile": "1.6.6",
        "eslint": "^3.19.0",
        "eslint-config-airbnb": "^14.1.0",
        "eslint-plugin-import": "^2.2.0",
        "eslint-plugin-jsx-a11y": "^3.0.0",
        "eslint-plugin-react": "^6.10.3"
    }
}

mdrx-io avatar May 02 '17 15:05 mdrx-io

@crunchex Can you run with the DEBUG=electron-forge* environment variable

And actually thinking about it, we just went through a breaking change in the API that our maker logic expects (hence the recent 3.0.0 bump)

Makers now need to export an async function which determines if the maker can be used on the current system. Internal example and arguments are passed to the maker in one object instead of as multiple arguments example

The breaking change bump was made as per semver so if you want to use the existing electron-builder makers until they are updated to the new API you can stick with electron-forge@^2.0.0 (anything in the 2.x.x major version)

/cc @develar

MarshallOfSound avatar May 02 '17 17:05 MarshallOfSound

electron-forge-maker-appimage 18.2.0 published.

develar avatar May 02 '17 19:05 develar

@develar looks like you added support for 3.0.0, but if I go through the same process and electron-forge init a new test project and yarn add electron-forge-maker-appimage with the latest version I still get the same error.

@MarshallOfSound here's the output with the latest version of the appimage package:

┌─ 05:09 PM in ~/work/eforge 
└───> DEBUG=electron-forge* npm run make

> [email protected] make /home/mtl/work/eforge
> electron-forge make

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 +14ms
  electron-forge:runtime-config setting key: verbose to value: false +6ms
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/mtl/work/eforge +2ms
  electron-forge:project-resolver electron-forge compatible package.json found in /home/mtl/work/eforge/package.json +5ms
  electron-forge:lifecycle Process Succeeded: Resolving Forge Config +5ms
  electron-forge:require-search searching [ '../makers/linux/appimage.js',
  '../makers/generic/appimage.js',
  'electron-forge-maker-appimage',
  'appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/linux/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/generic/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/electron-forge-maker-appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/linux/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/generic/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage' ] relative to /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api +0ms
  electron-forge:require-search testing ../makers/linux/appimage.js +3ms
  electron-forge:require-search testing ../makers/generic/appimage.js +0ms
  electron-forge:require-search testing electron-forge-maker-appimage +0ms
  electron-forge:require-search testing appimage +0ms
  electron-forge:require-search testing /home/mtl/work/eforge/appimage +0ms
  electron-forge:require-search testing /home/mtl/work/eforge/node_modules/appimage +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/linux/appimage.js +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/generic/appimage.js +1ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/electron-forge-maker-appimage +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/appimage +0ms
  electron-forge:require-search testing /home/mtl/work/eforge/appimage +0ms
  electron-forge:require-search testing /home/mtl/work/eforge/node_modules/appimage +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/linux/appimage.js +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/generic/appimage.js +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-appimage +0ms
  electron-forge:require-search testing /usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/appimage +0ms
  electron-forge:require-search testing /home/mtl/work/eforge/appimage +1ms
  electron-forge:require-search testing /home/mtl/work/eforge/node_modules/appimage +0ms
  electron-forge:require-search failed to find a module in [ '../makers/linux/appimage.js',
  '../makers/generic/appimage.js',
  'electron-forge-maker-appimage',
  'appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/linux/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/makers/generic/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/electron-forge-maker-appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/linux/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/makers/generic/appimage.js',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/electron-forge-maker-appimage',
  '/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/node_modules/appimage',
  '/home/mtl/work/eforge/appimage',
  '/home/mtl/work/eforge/node_modules/appimage' ] +0ms

An unhandled rejection has occurred inside Forge:
Could not find a build target with the name: appimage for the platform: linux
Error: Could not find a build target with the name: appimage for the platform: linux
    at _callee3$ (/usr/local/share/.config/yarn/global/node_modules/electron-forge/dist/api/make.js:170:19)
    at tryCatch (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:65:40)
    at Generator.invoke [as _invoke] (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:303:22)
    at Generator.prototype.(anonymous function) [as next] (/usr/local/share/.config/yarn/global/node_modules/regenerator-runtime/runtime.js:117:21)
    at Generator.tryCatcher (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/util.js:16:23)
    at PromiseSpawn._promiseFulfilled (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/generators.js:97:49)
    at Promise._settlePromise (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/promise.js:574:26)
    at Promise._settlePromise0 (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/promise.js:693:18)
    at Async._drainQueue (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/usr/local/share/.config/yarn/global/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

npm ERR! Linux 4.4.0-77-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "make"
npm ERR! node v7.9.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] make: `electron-forge make`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] make script 'electron-forge make'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the eforge package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     electron-forge make
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs eforge
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls eforge
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/mtl/.npm/_logs/2017-05-03T00_10_17_252Z-debug.log

mdrx-io avatar May 03 '17 00:05 mdrx-io

Looks like a small bug in our maker resolver. Can you try (for now) setting the make target in your config to be "electron-forge-maker-appimage" instead of just "appimage". It should get it working for now and I'll get a fix out for the underlying issue soon :)

MarshallOfSound avatar May 03 '17 00:05 MarshallOfSound

@MarshallOfSound great, that worked and a super reasonable workaround. Thanks!

mdrx-io avatar May 03 '17 00:05 mdrx-io

Issue can be closed?

develar avatar Jun 07 '17 13:06 develar

I get next error

> electron-forge publish

✔ Checking your system
✔ Resolving Forge Config

An unhandled rejection has occurred inside Forge:
Path must be a string. Received undefined
TypeError: Path must be a string. Received undefined
    at assertPath (path.js:28:11)
    at Object.resolve (path.js:1171:7)
    at buildForge (/home/dinko/public_html/seven-shop-electron/node_modules/electron-builder-lib/src/forge-maker.ts:16:22)
    at new exports.default (/home/dinko/public_html/seven-shop-electron/node_modules/electron-forge-maker-appimage/main.js:12:10)
    at /home/dinko/public_html/seven-shop-electron/node_modules/@electron-forge/core/src/api/make.ts:113:15
    at Generator.next (<anonymous>)
    at step (/home/dinko/public_html/seven-shop-electron/node_modules/@electron-forge/core/dist/api/make.js:38:221)
    at _next (/home/dinko/public_html/seven-shop-electron/node_modules/@electron-forge/core/dist/api/make.js:38:409)
    at <anonymous>
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] publish: `electron-forge publish`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] publish script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/dinko/.npm/_logs/2018-05-22T14_20_23_681Z-debug.log

package.json

{
  "name": "pr",
  "productName": "pr",
  "version": "1.0.13",
  "description": "My Electron application description",
  "main": "src/index.js",
  "scripts": {
    "start": "electron-forge start --inspect-electron",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "echo \"No linting configured\""
  },
  "keywords": [],
  "author": "dinko",
  "license": "MIT",
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-deb",
          "platforms": [
            "linux"
          ],
          "config": {}
        },
        {
          "name": "electron-forge-maker-appimage",
          "platforms": [
            "linux"
          ],
          "config": {}
        }
      ],
      "publishers": [
        {
          "name": "@electron-forge/publisher-nucleus",
          "platforms": [
            "linux"
          ],
          "config": {
            "host": "http://127.0.0.1:8888",
            "appId": "1",
            "channelId": "db0b627c9946b8dcaecab8006c2b49ff",
            "token": "2b729ba59591bf3e745758c0cf674985"
          }
        }
      ]
    }
  },
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  },
  "devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.16",
    "@electron-forge/maker-deb": "^6.0.0-beta.16",
    "@electron-forge/maker-rpm": "^6.0.0-beta.16",
    "@electron-forge/publisher-nucleus": "^6.0.0-beta.16",
    "electron": "2.0.1",
    "electron-forge-maker-appimage": "^20.14.4"
  }

dikaso avatar May 22 '18 14:05 dikaso

Getting the same error @DinkoMiletic. Did you manage to fix it?

vviikk avatar Jan 20 '19 07:01 vviikk

TLDR: a class for AppImage that extends MakerBase is missing. I hacked one in locally and it worked great! I have no idea where I should open a PR, either in electron-forge, electron-builder, or just make a new repo to hold the electron-forge maker.

I'm also unable to package my project as an AppImage with the same error, TypeError: Path must be a string. Received undefined

The root problem appears to be that the electron-forge-maker-appimage simply exports a default function that returns a promise. Shown here:

https://github.com/electron-userland/electron-builder/blob/ebbd9f796e2d8d5b0720b2b699ba24dc159ee692/packages/electron-forge-maker-appimage/main.js#L12

However, electron-forge expects a class instead, MakerClass. Consumption of this is shown here: https://github.com/electron-userland/electron-forge/blob/fbbf9c8b05e4453261c62c1baaad0ba32bed373b/packages/api/core/src/api/make.ts#L115

For example, you can see this class in in the Zip Maker: https://github.com/electron-userland/electron-forge/blob/fbbf9c8b05e4453261c62c1baaad0ba32bed373b/packages/maker/zip/src/MakerZIP.ts#L9

I was able to get this work by modifying the electron-forge-maker-appimage source in place and replaced the default exported function with a class that extends MakerBase, and was able to get an app image to generate and run!

I'm working on a pull request but I ran into a snag, and I'm not sure what to do.

I'm working on updating this file to export a default class instead of a default function: builder/blob/ebbd9f796e2d8d5b0720b2b699ba24dc159ee692/packages/electron-forge-maker-appimage/main.js#L12 I'm doing this in the electron-builder repository, but I just realized that the fully featured base class, MakerBase from "@electron-forge/maker-base", is in the electron-forge repo.

What is the right way to do this?

  1. only touch electron-builder, and just re-implement the class members that are provided by the MakerBase in electron-forge.
  2. just put the maker class for AppImage in the electron-forge codebase, along side the rest here: https://github.com/electron-userland/electron-forge/tree/master/packages/maker

Or if I'm going down the wrong route, please let me know.

Marcus10110 avatar Aug 08 '19 01:08 Marcus10110

only touch electron-builder, and just re-implement the class members that are provided by the MakerBase in electron-forge.

@electron-forge/maker-base is deliberately a separate module, why not just use it as a dependency? npm install @electron-forge/maker-base

MarshallOfSound avatar Aug 08 '19 06:08 MarshallOfSound

Thanks @MarshallOfSound, just updated the PR https://github.com/electron-userland/electron-builder/pull/4131 This is my first contribution to electron-userland, any suggestions for next steps?

Marcus10110 avatar Aug 08 '19 19:08 Marcus10110

Digging into this further, I have a few questions.

Are makers based on buildForge from forge-maker.ts in app-builder-lib of electron-builder obsolete? Only 4 makers in the electron-builder repository are based on buildForge. snap, nsis, nsis-web, and appimage. I've tested both the appimage and snap makers, which just don't work due to electron-forge expecting them to export a class extending Maker instead of an async function.

In the case of snap, there is a newer version of this maker in the electron-forge repository: @electron-forge/maker-snap which works great; it's not based on buildForge, while the electron-forge-maker-snap package from electron-builder does not work.

Also, I'm not sure about this but it seems like app-builder-lib might be obsolete, or just not designed to work with electron forge. I noticed that after I got buildForge working for AppImage, that my application's meta data (version, etc) was not entirely correct because app-builder-lib's packageMetadata.ts does not attempt to call the hooks in forgeconfig.js in its readPackageJson function.

It looks like the right solution is not simply to update electron-forge-maker-appimage in electron-builder to use the Maker base class, but to actually write a new maker modeled after the makers in electron-forge.

For example, deb packages are built using two packages: @electron-forge/maker-deb - a lightweight wrapper package inside of the electron-forge repo electron-installer-debian - a separate repository that handles the heavy lifting of packaging for deb.

I'm trying to build a new AppImage packager that follows the same general layout, and right now I'm trying to use some of the internals of app-builder-lib and its go based packaging binary, while trying to copy the other electron-forge friendly makers.

Suggestions welcome, I'm quite lost. I'm only in this mess because we're using AppImage's AppRun.sh script to allow us to load libstdc++ and libgcc_s on select systems before launching the electron binary.

Marcus10110 avatar Aug 09 '19 22:08 Marcus10110

Ok, I'm still using some of the bits in app-builder-lib but it's a pretty minimal set.

I have a new package, electron-forge-maker-appimage which is working! It's very rough around the edges.

https://github.com/Marcus10110/electron-forge-maker-appimage

However it's now working for our application packaging needs!

Marcus10110 avatar Aug 10 '19 02:08 Marcus10110

@develar Do you mind updating electron-forge-maker-appimage for electron-forge v6?

@MarshallOfSound What may @develar need to update?

This is my electron-forge config:

module.exports = {
  makers: [
    {name: 'electron-forge-maker-appimage'},
  ],
}

This is the error I get:

An unhandled rejection has occurred inside Forge:
TypeError: Cannot read property 'targetArch' of undefined
    at new exports.default (/home/trusktr/src/foo+bar/node_modules/electron-forge-maker-appimage/main.js:12:59)
    at _default (/home/trusktr/src/foo+bar/node_modules/@electron-forge/core/src/api/make.ts:128:15)
    at /home/trusktr/src/foo+bar/node_modules/@electron-forge/cli/src/electron-forge-make.ts:44:5

trusktr avatar Jun 23 '20 23:06 trusktr

Oh, I just saw @Marcus10110's pull request on electron-builder: https://github.com/electron-userland/electron-builder/pull/4131. That does the trick.

To use @Marcus10110's version of electron-forge-maker-appimage as a dependency from git, I added this change: https://github.com/saleae/electron-forge-maker-appimage/pull/1. Then I put the following in my package.json pointing to my fork (for now):

{
  "devDependencies": {
    ...
    "electron-forge-maker-appimage": "trusktr/electron-forge-maker-appimage#patch-1",
    ...
  }
}

trusktr avatar Jun 24 '20 00:06 trusktr

Just ran into this error myself. Is depending on that patched version: trusktr/electron-forge-maker-appimage#patch-1 still a viable solution, or is there another AppImage maker?

stevewillard avatar Feb 17 '21 20:02 stevewillard

Just ran into this error myself. Is depending on that patched version: trusktr/electron-forge-maker-appimage#patch-1 still a viable solution, or is there another AppImage maker?

@stevewillard I've forked @trusktr's repository and done some improvements into the code. Currently I use my fork for my own Electron-based project.

SpacingBat3 avatar Mar 13 '21 18:03 SpacingBat3

@SpacingBat3 Does it support auto-updates?

sagarsoni7 avatar Oct 09 '21 12:10 sagarsoni7

@SpacingBat3 Does it support auto-updates?

From what I believe, no. I believe this would need a major code rewrite if you would like some feature like that. I may develop my own maker for that in the future from scratch, so it won't depend on app-builder, but will require to have mksquashfs binary installed within the OS (like other makers like ones for deb or snap, it will display an error when it's not installed). Also, I would need to get familiar with the AppImage documentation to properly implement it. Right now you could notify the users about the updates if you care your users are using up-to-date or supported versions (this is what I am doing right now).

SpacingBat3 avatar Oct 20 '21 19:10 SpacingBat3

Using this package cause The "path" argument must be of type string. Received undefined

makers: [
    {
      name: '@electron-forge/maker-squirrel',
      platforms: ['win32'],
      config: (arch) => {
        return {
          setupExe: `Install-TidGi-${version}-Windows-${arch}.exe`,
          setupIcon: 'build-resources/icon-installer.ico',
        };
      },
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin'],
    },
    {
      name: '@electron-forge/maker-deb',
      config: {
        maintainer: 'Lin Onetwo <[email protected]>',
      },
    },
    {
      name: '@electron-forge/maker-rpm',
      config: {
        maintainer: 'Lin Onetwo <[email protected]>',
      },
    },
    {
      name: 'electron-forge-maker-appimage',
      config: {
        maintainer: 'Lin Onetwo <[email protected]>',
      },
    },
  ],

linonetwo avatar Mar 05 '22 09:03 linonetwo

Try install https://github.com/SpacingBat3/electron-forge-maker-appimage @SpacingBat3  resulted in this in the gh action


Run npm ci
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://[email protected]/Marcus10110/electron-forge-maker-appimage.git
npm ERR! 
npm ERR! Warning: Permanently added the RSA host key for IP address '140.82.112.4' to the list of known hosts.
npm ERR! [email protected]: Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR! 
npm ERR! exited with error code: 128

linonetwo avatar Mar 08 '22 09:03 linonetwo