Package, Sign, And Update Desktop

Desktop release has three separate concerns: package format, OS code signing, and Tauri updater signing.

1. Choose Bundle Targets

PlatformCommon targetsNotes
WindowsNSIS, MSIMSI creation is Windows-bound; NSIS can be cross-compiled with caveats
macOSapp, dmgDeveloper ID and notarization matter for outside-App-Store distribution
Linuxdeb, rpm, AppImageDistro dependencies and WebKitGTK versions affect behavior

2. Decide Windows WebView2 Mode

ModeUse whenTradeoff
Download bootstrapperPublic direct install with internetSmall installer, needs network
Embedded bootstrapperDirect install where bootstrapper should be bundledLarger installer, still uses Evergreen runtime
Offline installerMicrosoft Store EXE/MSI or offline environmentsLarger artifact, works without live download
Fixed VersionStrict runtime pinning is requiredVery large payload and you own runtime security updates
SkipControlled environment already guarantees runtimeApp fails if runtime is missing

For public Windows distribution, do not skip WebView2 installation casually.

3. Separate Signing Types

SigningWhat it provesKey material
Windows/macOS code signingOS and user trust for the app/installerCertificate or platform signing identity
Tauri updater signingUpdate artifact authenticityTauri updater private key and public key in config

You usually need both for a real direct-download app with auto-update.

4. Configure Updater Deliberately

Updater readiness requires:

updater plugin registered
public key configured
endpoints configured
artifact generation configured intentionally
private key stored outside git
static JSON or dynamic server tested
download, install, and relaunch tested

The updater private key is critical. If you lose it after users install the app, future updates signed by that key path fail.

5. Smoke The Artifact

Release smoke checklist:

artifact path recorded
target OS and architecture recorded
install succeeded
app launched without dev server
capability-dependent flows worked
sidecars started and stopped if present
logs were inspected
signature state recorded
updater check result recorded if enabled
uninstall or rollback path checked where applicable

6. Claim Carefully

Do not say “released” unless users can access the signed artifact through the intended distribution channel. A local unsigned bundle is a build artifact, not a release.