ggsql uses cargo-packager to create native installers for Windows, macOS, and Linux.
-
Install cargo-packager:
cargo install cargo-packager --locked
-
Platform-specific requirements:
- Windows: No additional requirements (uses built-in NSIS, optionally WiX if installed)
- macOS: Xcode Command Line Tools
- Linux:
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
From the src/ directory:
# Windows
cd src
cargo packager --release --formats nsis # Creates .exe installer (NSIS)
cargo packager --release --formats wix # Creates .msi installer (WiX)
# macOS
cd src
cargo packager --release --formats dmg # Creates .dmg disk image
# Linux
cd src
cargo packager --release --formats deb # Creates .deb package (Debian/Ubuntu)Output location: src/target/release/packager/
| Platform | Format | Command | Output |
|---|---|---|---|
| Windows | NSIS | --formats nsis |
ggsql_0.1.0_x64-setup.exe (12MB) |
| Windows | MSI | --formats wix |
ggsql_0.1.0_x64_en-US.msi (15MB) |
| macOS | DMG | --formats dmg |
ggsql_0.1.0_x64.dmg |
| macOS | App Bundle | --formats app |
ggsql.app |
| Linux | Debian | --formats deb |
ggsql_0.1.0_amd64.deb |
The installers include:
- ✅ ggsql - Main CLI binary
- ✅ ggsql-jupyter - ggsql Jupyter kernel
Installer configuration is in src/Cargo.toml under [package.metadata.packager]:
[package.metadata.packager]
product-name = "ggsql"
identifier = "com.ggsql.app"
category = "DeveloperTool"
publisher = "ggsql Team"
icons = ["../doc/assets/icon.svg", "../doc/assets/logo.png"]
license-file = "../LICENSE.md"
binaries = [
{ path = "ggsql", main = true },
]GitHub Actions automatically builds installers for all platforms when you push a version tag:
git tag v0.1.0
git push origin v0.1.0The workflow (.github/workflows/release-installers.yml) will:
- Build installers for Windows (NSIS + MSI), macOS (DMG), and Linux (Deb)
- Create a GitHub Release with all installers attached
- Generate release notes automatically
You can also trigger builds manually from the Actions tab.
Option 1: NSIS Installer (Recommended for users)
- Double-click
ggsql_0.1.0_x64-setup.exe - Automatically adds to PATH
Option 2: MSI Installer (Recommended for enterprises)
- Double-click
ggsql_0.1.0_x64_en-US.msi - Follows Windows Installer standards
- Supports silent installation:
msiexec /i ggsql_0.1.0_x64_en-US.msi /quiet
DMG Installer
- Open
ggsql_0.1.0_x64.dmg - Drag
ggsql.appto Applications folder - Or copy binaries directly to
/usr/local/bin
Debian/Ubuntu (.deb):
sudo dpkg -i ggsql_0.1.0_amd64.debAfter building an installer, test it:
# Install
.\ggsql_0.1.0_x64-setup.exe
# Verify
ggsql --version
# Uninstall
# Settings → Apps → Find "ggsql" → Uninstall# Install
hdiutil attach ggsql_0.1.0_x64.dmg
cp -r /Volumes/ggsql/ggsql.app /Applications/
# Verify
/Applications/ggsql.app/Contents/MacOS/ggsql --version# Debian
sudo dpkg -i ggsql_0.1.0_amd64.deb
ggsql --version
# Uninstall
sudo apt-get remove ggsqlThis happens with unsigned installers. Click "More info" → "Run anyway". For production, sign the installer with a code signing certificate.
This happens with unsigned apps. Run:
xattr -cr /Applications/ggsql.appIf the Deb/RPM package fails to install, ensure you have the required system libraries:
sudo apt-get install -f # Debian/Ubuntu
sudo dnf install <missing-packages> # FedoraBuild for different architectures:
# macOS: Build for Apple Silicon
rustup target add aarch64-apple-darwin
cargo packager --release --target aarch64-apple-darwin --formats dmg
# Linux: Build for ARM64
rustup target add aarch64-unknown-linux-gnu
cargo packager --release --target aarch64-unknown-linux-gnu --formats deb