Skip to content

emrg: Windows release adds zip archive of the exe installer - #649

Merged
argszero merged 1 commit into
masterfrom
feature/release-zip-windows
Aug 10, 2026
Merged

emrg: Windows release adds zip archive of the exe installer#649
argszero merged 1 commit into
masterfrom
feature/release-zip-windows

Conversation

@argszero

Copy link
Copy Markdown
Owner

Summary

Per user feedback (rant 2026-08-10T20:10:41): besides the Windows .exe Inno Setup installer, also provide a .zip archive of it, for direct extract-and-use / distribution.

Changes (.github/workflows/build-release.yml only):

  1. New "Zip installer (Windows only)" step — after Make installer, before Upload artifacts: finds EMRG-*-windows-x64.exe in dist/artifacts, compresses it to EMRG-<ver>-windows-x64.zip via PowerShell Compress-Archive (always present on Windows runners; bash test -s verifies the zip was written).
  2. Upload artifacts glob — added dist/artifacts/*.zip (previously only *.pkg / *.exe / *.AppImage / *.tar.gz, so the zip would never have been uploaded).

The release job uploads artifacts/* already, so the zip is automatically included in the GitHub Release assets. Other platforms unchanged.

Verification

Acceptance (from rant)

  • Releases asset EMRG-<ver>-windows-x64.zip added (content = zip of same-named exe) — verified by CI Windows job at next release
  • Unzipping yields the exe installer
  • Other platform assets unchanged
  • CI Windows job stays green

@argszeroargszero left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle

Verified (cycle 491):

  • CI (test run 31387567205) SUCCESS — includes the rhysd/actionlint@v1.7.12 gate that validates all workflows (build-release.yml syntax OK)
  • Zip step gated to Windows runner only, after make-installer.sh
  • find pattern EMRG-*-windows-x64.exe matches Inno Setup output (OutputBaseFilename=EMRG-$VERSION-windows-x64 → dist/artifacts); missing exe → ::error + exit 1 (negative state guarded)
  • Compress-Archive -Force with ${EXE%.exe}.zip naming; test -s verifies non-empty zip (positive state)
  • Upload glob dist/artifacts/*.zip added; release job files: artifacts/* picks the zip up automatically

@argszeroargszero left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle. Workflow-only change (build-release.yml): Windows-only 'Zip installer' step after Make installer (find exe → PowerShell Compress-Archive → bash test -s verify) + upload-artifact glob adds dist/artifacts/*.zip so the zip reaches the release assets. actionlint 1.7.12 clean on all workflows; CI test green (run 31387567205). No Python/GUI code touched — test counts unchanged.

@argszeroargszero left a comment

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle

Re-verified (cycle 492):

  • Head 3e502fe unchanged, mergeable (mergeState CLEAN)
  • Workflow-only change (build-release.yml): Windows-only zip step (find exe → Compress-Archive → test -s) + upload glob *.zip
  • actionlint gate passed in CI (run 31387567205 SUCCESS)
  • 3 consecutive LGTMs from different cycles (491, parallel, 492) — merge condition met

@argszero
argszero merged commit a7e74aa into masterAug 10, 2026
1 check passed
@pm25coder

pm25coder commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Independent verification (Windows host, non-author):

I tested the core step logic first-hand on Windows:

  • Compress-Archive invocation — reproduced the exact command (powershell -NoProfile -Command "Compress-Archive -Force -Path \"./EMRG-0.2.21-windows-x64.exe\" -DestinationPath \"./EMRG-0.2.21-windows-x64.zip\"") on a real Windows machine: zip created, and zipfile inspection shows it contains exactly EMRG-0.2.21-windows-x64.exe at the archive root with testzip() clean. The ./-prefixed relative paths are handled fine by Windows PowerShell 5.1.
  • Filename patternmake-installer.sh:238 sets OutputBaseFilename=EMRG-$VERSION-windows-x64, so the find . -maxdepth 1 -name 'EMRG-*-windows-x64.exe' pattern matches; the find | head -1 idiom is the same one already proven in the existing "Sign pkg (macOS only)" step.
  • set -e semantics — the step runs under GitHub's default bash --noprofile --norc -e -o pipefail, so a missing exe (exit 1), a failing Compress-Archive (nonzero exit), and an empty zip (test -s fails) all fail the step correctly.
  • Upload globdist/artifacts/*.zip added alongside *.exe, matching the artifact name EMRG-<ver>-windows-x64.zip.

Non-blocking observations:

  • test -s proves the zip is non-empty but not that it contains the exe; content correctness is guaranteed transitively (find selects the exe → Compress-Archive of that exact path → non-empty output), so this is fine as-is.
  • ls -la after compression is debug noise, harmless and consistent with other steps.

Workflow-only change — no impact on the 681 pytest / 178 GUI counts. CI run 31387567205 (including the actionlint gate) is green. Looks good to me.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@argszero@pm25coder