Signing and Trust

Signing does two different jobs:

  1. It proves an artifact came from the expected publisher or key holder.
  2. It lets the platform decide whether to install, update, warn, or block.

Do not treat signing as a last-minute build flag. It is identity infrastructure.

Identity Types

IdentityWhere it mattersWhat you protectWhat happens if it breaks
Android app signing keyInstalled APK identityUsually held by Play App Signing for Play releasesUsers cannot update if the signing lineage is wrong
Android upload keyAAB upload to PlayYour upload keystore or CI secretYou must reset it through Play Console before uploading again
Microsoft Store package identityStore/MSIX appPartner Center app reservation and package metadataUploads or certification fail
Windows code-signing certificateDirect EXE/MSI/MSIX downloadsOV/EV certificate or signing service credentialsSmartScreen/Defender warnings increase; users distrust downloads
Apple signing identity and provisioningiOS/macOS buildsApple Developer account credentials and certificatesBuilds cannot be submitted or installed through normal channels
Tauri updater keyTauri update metadata and artifactsUpdater private keyInstalled users cannot trust future updater artifacts
Electron updater metadata/signingElectron desktop updatesPlatform signing secrets and publish provider credentialsUpdate checks or installs fail, or signature verification weakens

Android Play Signing

For new Google Play apps, publish Android App Bundles. You sign the AAB with an upload key, upload it to Play, and Play App Signing signs the generated APKs that users install.

This gives you two operational keys:

  • App signing key: the install/update identity. Play stores and protects it for Play distribution.
  • Upload key: the key your release process uses to authenticate uploaded bundles.

Gotcha: Do not commit keystores or signing passwords. A leaked upload key can be reset, but a leaked signing process still creates release risk and cleanup work.

Windows Store and SmartScreen

Microsoft Store distribution and direct Windows downloads are different trust models.

PathTrust modelPractical result
Microsoft Store/MSIXStore certification and Microsoft signing during publishingUsers install through Store trust and Store-managed updates
Signed direct downloadYour publisher certificate plus file/app reputationUsers may still see SmartScreen warnings until reputation exists
Unsigned direct downloadNo publisher identityExpect scary warnings and low user trust

SmartScreen is reputation-based. It evaluates URLs, downloads, apps, files, and signatures. A valid signature helps, but a new publisher or new binary can still warn. EV certificates can improve initial reputation, but they cost more and usually require stronger identity validation.

Gotcha: “Signed” does not mean “no warning.” For direct downloads, plan for clean-machine testing, download-path testing, and a Microsoft file submission path if Defender or SmartScreen flags a release.

Apple Basics

Apple releases use App Store Connect, bundle IDs, signing/provisioning, privacy details, screenshots, review, and release options. macOS direct distribution also has notarization and Gatekeeper concerns. Do not assume Apple is ready until the Apple Developer Program account, bundle ID, certificates, and App Store Connect app record exist.

Updater Keys Are Separate Trust

Desktop auto-updaters do not become safe just because the installer is signed.

Tauri’s updater uses a separate public/private key pair. The public key goes into app configuration, and the private key signs updater artifacts. Tauri’s updater signature verification is mandatory.

Electron Builder depends on target choice:

  • AppX/MSIX is a Store-oriented path and uses Store updates.
  • NSIS works with electron-updater.
  • MSI is not supported by electron-updater according to the Electron Builder documentation surfaced through Context7.

Warning: Losing a Tauri updater private key is worse than losing a normal release note. Already-installed clients trust that key. Without it, you may need a manual reinstall path.