Packaging & Distribution
Ship Rust desktop apps with installers, code signing, and safe auto-update channels.
Search across all documentation pages
Ship Rust desktop apps with installers, code signing, and safe auto-update channels.
# Tauri
cd src-tauri && cargo tauri build
# Plain Rust + cargo-bundle
cargo install cargo-bundle
cargo bundle --releaseWhen to reach for this:
Tauri updater config sketch (tauri.conf.json fragment):
{
"plugins": {
"updater": {
"endpoints": ["https://releases.example.com/{{target}}/{{current_version}}"],
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6I..."
}
}
}What this demonstrates:
.dmg, .msi, .deb, or .AppImage.| OS | Artifact | Signing |
|---|---|---|
| macOS | .dmg / .app | Developer ID + notarize |
| Windows | .msi / NSIS | Authenticode cert |
| Linux | deb/AppImage/flatpak | GPG for repo metadata |
aarch64-apple-darwin + x86_64-apple-darwin lipo or separate artifacts.| Alternative | Use When | Don't Use When |
|---|---|---|
| Homebrew cask | Dev tool CLI/GUI | Non-technical consumer users |
| Microsoft Store | Enterprise deployment | Need custom updater day one |
| Portable zip | Internal tools | Consumer double-click install expected |
| Docker | Server apps | Desktop GUI with GPU |
Tauri includes updater, signing hooks, and WebView assets; cargo-bundle is minimal wrapper for pure Rust GUIs.
CI secrets (GitHub Actions) with hardware token or cloud HSM - never in repo.
AppImage for universal; flatpak for sandboxed store; deb for apt-based enterprise.
Semver; breaking database migrations bump minor/major and document in release notes.
Sentry or similar in Rust layer; symbolicate with uploaded debug symbols from release build.
Separate updater endpoint or beta flag in JSON manifest listing compatible versions.
Build macOS on macOS runners, Windows on windows-latest, Linux on ubuntu - cross-compile only when tested.
Provide icns/ico/png set per platform guidelines - Tauri icon generator helps.
Ship LICENSE and third-party notices file for webview and Rust crate obligations.
Stack versions: This page was written for Rust 1.97.0 (edition 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, and Polars 0.46+.
Reviewed by Chris St. John·Last updated Jul 16, 2026