Skip to content

Add installers#91

Open
teunbrand wants to merge 14 commits intoposit-dev:mainfrom
teunbrand:installers
Open

Add installers#91
teunbrand wants to merge 14 commits intoposit-dev:mainfrom
teunbrand:installers

Conversation

@teunbrand
Copy link
Collaborator

@teunbrand teunbrand commented Jan 30, 2026

This PR aims to fix #53.

Briefly, it adds installer generations using cargo packager. The builds are automated via a GHA workflow.
This is mostly Claude's work with me supervising.
A few notes:

  • We only install the CLI. We currently don't install the rest-api, jupyter kernel, python package or R package.
  • We install via NSIS & MSI (Windows), DMG (macOS) and Debian (Linux)
  • The GHA workflow builds installers for all platforms when a version tag is pushed (or manually). It also creates a GitHub release with these files attached (untested for now).
  • There are some extra instruction ins CLAUDE.md and INSTALLERS.md so that Claude may be more useful in releases.

I've so far tested:

  • Local installation via NSIS/MSI (Windows).
  • Installation via GHA generated NSIS/MSI (Windows)
  • Installation via GHA generated DMG (macOS)
  • Installation via GHA generated DEB (Linux)

I may need some help for testing the macOS/Linux installers. One should be able to download the installers from the GHA run, at the upload step there is a download URL, e.g. in https://github.com/teunbrand/ggsql/actions/runs/21516086643.

teunbrand and others added 9 commits January 30, 2026 10:51
- Add cargo-packager configuration to src/Cargo.toml
  - Configured for Windows (NSIS, MSI), macOS (DMG), and Linux (Deb, RPM, AppImage)
  - Includes ggsql CLI and ggsql-rest binaries
  - Uses existing logo/icon assets

- Add GitHub Actions workflow for automated releases
  - Builds installers for Windows, macOS, and Linux
  - Triggers on version tags (v*)
  - Uploads all installers to GitHub Releases

- Add INSTALLERS.md documentation
  - Local build instructions for all platforms
  - Installation guides
  - CI/CD usage
  - Troubleshooting tips

- Update .gitignore to exclude installer artifacts
  - *.msi, *.deb, *.rpm, *.dmg, *.AppImage
  - .cargo-packager/ directory

Verified working: Windows NSIS and MSI installers tested successfully.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
- Remove ggsql-rest from packaged binaries
- Installers now only include the core CLI (ggsql)
- Users can install ggsql-rest separately via cargo if needed
- Reduces installer size: NSIS 22MB→12MB, MSI 31MB→15MB

Updated documentation to reflect that ggsql-rest and ggsql-jupyter
must be installed separately via cargo.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
- Linux: Update libwebkit2gtk-4.0-dev to libwebkit2gtk-4.1-dev for Ubuntu 24.04
- macOS: Remove SVG icon (not supported), use PNG only
- All platforms: Add explicit binary build steps before packaging

Fixes GitHub Actions workflow failures:
- Linux: Package not found error
- macOS: SVG format not recognized
- Windows: Binary path not found

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
cargo-packager does not support RPM format. Removed RPM build steps
from the workflow and updated documentation accordingly.

Supported Linux formats:
- Debian (.deb) - for Debian/Ubuntu
- AppImage - portable, distribution-agnostic

Also updated Windows installer sizes in docs to reflect actual sizes
after removing REST API (NSIS: 12MB, MSI: 15MB).

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
AppImage requires a square icon which we don't currently have.
Simplified Linux builds to only produce Debian packages (.deb),
which cover the majority of Linux users (Ubuntu, Debian, Mint, etc.).

Removed formats:
- AppImage (requires square icon)
- RPM (not supported by cargo-packager)

Remaining formats:
- Windows: NSIS (.exe) and MSI
- macOS: DMG (x86_64 and arm64)
- Linux: Debian (.deb)

Updated all documentation to reflect these changes.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
Added comprehensive metadata to cargo-packager configuration:
- Homepage: https://ggsql.org/
- Short description for package managers
- Long description with feature overview
- Copyright notice

This metadata will appear in installer UI and package manager
listings across all platforms (Windows, macOS, Linux).

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
Replaced Unicode curly quotes (" ") with plain ASCII double quotes (")
to fix character encoding issues in Windows installers.

The NSIS installer was displaying mojibake (“Softwareâ€) instead of
proper quotes. This fix ensures the license text displays correctly
across all installers and platforms.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
The correct field name is 'description', not 'short-description'.
This was causing cargo-packager to fail with an unknown field error.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
Add comprehensive release process documentation including:
- Cross-platform installer overview
- Step-by-step release checklist
- Known limitations and workarounds
- Current and future distribution channels

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
@teunbrand
Copy link
Collaborator Author

The installers will probably be untrusted, because we're not signing code certificates or anything of the sort.

@teunbrand teunbrand marked this pull request as draft January 30, 2026 13:33
teunbrand and others added 5 commits January 30, 2026 14:34
cargo-packager builds binaries automatically when creating installers,
so explicit cargo build steps are unnecessary.

Removes 4 redundant steps:
- Windows: 1 build step
- macOS: 2 build steps (x86_64 and aarch64)
- Linux: 1 build step

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
This reverts commit 0217fe3. The build steps are actually required because
cargo-packager does not build binaries when run from a workspace subdirectory.
It expects binaries to already exist in the target directory.

The explicit build steps ensure binaries are placed in the correct location
before cargo-packager attempts to package them.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
Replace multi-line cd commands with cleaner working-directory directive
for all cargo packager steps.

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
Replace build-from-source-only instructions with:
- Native installer downloads (Windows/macOS/Linux)
- Platform-specific installation steps
- Security warning explanations
- Component availability (CLI only in installers)
- Build-from-source as alternative option

Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
@teunbrand teunbrand marked this pull request as ready for review January 30, 2026 14:31
Sign up for free to 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.

Eventually, we'll need installers

1 participant