#889·presenton

Linux releases missing AppImage despite electron-builder config targeting it

Author: ziuusCreated Aug 31, 2026Updated Sep 17, 2026

name: Missing AppImage in Linux releases despite electron-builder config about: The electron-builder config and CI both target AppImage, but releases only ship .deb title: Linux releases missing AppImage despite electron-builder config targeting it labels: ['bug', 'package', 'linux']

Summary

electron/build.js configures linux.target = ["AppImage", "deb"], and the CI workflow .github/workflows/electron-linux-ubuntu22.yml builds, verifies, and uploads both .deb and .AppImage to presenton-export. Yet every electron-vX.X.X-beta release on this repo only contains .deb + .dmg — no .AppImage has ever shipped in a release.

Evidence

1. electron-builder config targets AppImage

electron/build.js:

javascript
linux: {
  artifactName: "Presenton-${version}.${ext}",
  target: ["AppImage", "deb"],
  icon: "build/icons",
  category: "Office",
},

2. CI workflow builds and verifies both

.github/workflows/electron-linux-ubuntu22.yml:

  • Build step: npm run build:all (produces both .deb and .AppImage)
  • Verification:
    bash
    test -n "$(find electron/dist -maxdepth 1 -type f -name '*.AppImage' -print -quit)"
  • Artifact upload includes both:
    yaml
    path: |
      electron/dist/*.deb
      electron/dist/*.AppImage
  • Published to presenton-export test repo with both file types

3. Every release is missing the AppImage

Recent electron-* releases (via API):

  • electron-v0.9.8-beta: Presenton-0.9.8-beta.deb, Presenton-0.9.8-beta.dmg — no AppImage
  • electron-v0.9.7-beta: Presenton-0.9.7-beta.deb, Presenton-0.9.7-beta.dmg — no AppImage
  • electron-v0.9.5-beta: Presenton-0.9.5-beta.deb, Presenton-0.9.5-beta.dmg — no AppImage
  • ...same for every prior electron-* release

4. R2 mirror explicitly excludes AppImage

.github/workflows/sync-releaes-to-r2.yml downloads release assets with:

bash
gh release download ... --pattern '*.deb' --pattern '*.dmg' --pattern '*.exe'

No *.AppImage pattern — even if an AppImage were in the release, it wouldn't reach the R2 distribution mirror.

Impact

  • Users on Fedora, RHEL, Arch, openSUSE, Alpine, and other non-.deb distros have no native installable package.
  • The only Linux options are .deb (apt-only), Docker, or building from source.
  • AppImage was clearly intended (config + CI both target it), but it never reaches end users.
  • Issue #762 ("Add RPM support") was closed with the maintainer asking "will appimage solve the issue?" — this is that fix.

Likely causes

One or both of:

A. Release creation is manual (or semi-manual) and the AppImage is not being uploaded. The release creation (gh release create / gh release upload) on presenton/presenton appears to be done outside any automation — possibly manually or via a script not in this repo. The person creating the release may only be uploading .deb + .dmg explicitly, leaving the AppImage behind.

B. The AppImage build is failing silently in the pipeline that creates the actual release. The CI test workflow verifies the AppImage exists, but the build environment for the actual release may differ (different runner, different step ordering, different npm target), causing the AppImage build to fail while .deb succeeds.

Suggested fixes

Fix 1 (minimal, high-value): Include *.AppImage in R2 sync

Update .github/workflows/sync-releaes-to-r2.yml:

diff
- gh release download "${{ github.event.release.tag_name }}" --dir assets --pattern '*.deb' --pattern '*.dmg' --pattern '*.exe'
+ gh release download "${{ github.event.release.tag_name }}" --dir assets --pattern '*.deb' --pattern '*.dmg' --pattern '*.exe' --pattern '*.AppImage'

This ensures that if/when an AppImage reaches the release, it gets mirrored to R2.

Fix 2 (root cause): Automate release creation to include all electron-builder outputs

Add a workflow (or extend an existing one) that automatically uploads all artifacts from electron/dist/ to the release when a tag matching electron-* is pushed. For example:

yaml
on:
  push:
    tags:
      - 'electron-*'

With a step that does:

bash
gh release upload "${{ github.ref_name }}" electron/dist/*

This removes the manual step and guarantees the AppImage (and any future targets) are included every time.

Fix 3 (validation): Verify AppImage in the release workflow

Add a verification step after release upload that confirms *.AppImage exists in the release assets, similar to the CI test workflow. Fail the release if it's missing.

References

  • electron/build.js lines configuring linux.target
  • .github/workflows/electron-linux-ubuntu22.yml — CI that proves AppImage builds work
  • .github/workflows/sync-releaes-to-r2.yml — R2 mirror that skips AppImage
  • Issue #762 — maintainer asked "will appimage solve the issue?" when closing RPM request