GIS-iPad

Meridian for Windows — Microsoft Store Publishing Guide

How to ship the Tauri-based Meridian Windows app to the Microsoft Store. This app is a Tauri 2 host (windows/src-tauri) linking the shared gis_core crate, rendering a Vite/TypeScript + MapLibre frontend through WebView2. Updated 2026-06-23.

Scope note: the iOS/macOS App Store process is covered separately in app-store-publishing-guide.md. This guide is Windows-only.

1. App identity

  Value Where it’s set
Product name Meridian windows/src-tauri/tauri.conf.jsonproductName
App identifier com.meridian.gis.windows tauri.conf.jsonidentifier
Version 0.1.0 (bump to 1.0.0 for a real release) tauri.conf.jsonversion and Cargo.tomlversion
Bundle target (today) nsis (Win32 installer) tauri.conf.jsonbundle.targets
Runtime dependency Microsoft Edge WebView2 runtime bundled WebView2Loader.dll resource
Bundled resources gdal/ folder + WebView2Loader.dll tauri.conf.jsonbundle.resources
Window chrome Custom (decorations off, Mica, transparent) tauri.conf.jsonapp.windows

The installed display name stays Meridian. The Store listing name is set separately in Partner Center — if “Meridian” is taken, reserve “Meridian GIS” there without changing productName.

Store-sized tile assets already exist in windows/src-tauri/icons/ (Square44x44Logo.png, Square150x150Logo.png, Square310x310Logo.png, StoreLogo.png, etc.), so the MSIX manifest asset set is already prepared.

2. Choose a submission route

The Microsoft Store accepts two kinds of submission. Pick one before building.

A packaged MSIX gives clean install/uninstall, Store auto-updates, and the standard Store trust badge. Tauri does not emit MSIX directly (it produces NSIS .exe and optionally WiX .msi), so you wrap the built app into an MSIX using the Windows SDK makeappx/signtool, or the MSIX Packaging Tool (free, from the Store). This is the path most Tauri apps on the Store use.

Trade-off: MSIX runs the app in a lightly virtualized container (filesystem/registry redirection). Verify gdal/ resource loading and .gispad file read/write still resolve correctly under packaging (see §6).

Route B — Unpackaged Win32 (EXE/MSI) listing

The Store now lists unpackaged Win32 apps: you submit the NSIS installer Tauri already produces, or point the listing at a hosted installer URL. Less work, no container quirks, but no Store-managed auto-update — the app must self-update or the user re-downloads. Good for a first listing while you validate MSIX.

Recommendation: start with Route A (MSIX) for a clean Store experience; keep Route B as a fallback if packaging surfaces resource/path issues you can’t resolve before the release date.

3. One-time setup in Partner Center

  1. Create/enroll a Microsoft Partner Center developer account (one-time fee; individual or company). Company accounts need verification — start early, it can take days.
  2. Reserve the app name in Partner Center → Apps and games → New product. Reserving “Meridian” assigns you the Store identity values (Package/Identity Name, Publisher, Publisher display name) you’ll paste into the MSIX manifest. If “Meridian” is unavailable, reserve “Meridian GIS”.
  3. Note the reserved identity from Partner Center → Product management → Product identity:
    • Package/Identity Name (e.g. 12345Publisher.Meridian)
    • Publisher (e.g. CN=ABCD1234-...)
    • Publisher display name
  4. Publish a privacy policy URL. Source text is in privacy-policy.md — host it on any public page (GitHub Pages works). Required for the listing.
  5. Decide pricing/markets (free is simplest for v1) and age rating questionnaire answers.

4. Pre-flight gates (do before building the release)

5. Build the release artifact

From windows/:

# 1. Install/refresh frontend deps
npm install

# 2. Produce the Tauri release build (frontend build runs via beforeBuildCommand)
npm run tauri build

Output lands under windows/src-tauri/target/release/:

The repo’s GNU toolchain note applies: this machine builds Rust with the GNU toolchain + WinLibs gcc (CC=gcc), not MSVC. Ensure the same environment is active for the release build.

5a. Wrap into MSIX (Route A)

Using the MSIX Packaging Tool (GUI, easiest):

  1. Install “MSIX Packaging Tool” from the Microsoft Store.
  2. Choose Application package → Create package on this computer.
  3. Point it at the NSIS installer Tauri produced (or the unpacked Meridian.exe + resources). Let it monitor the install.
  4. On the package-information screen, paste the exact Identity Name, Publisher, and Publisher display name from Partner Center (§3.3). These must match or the Store rejects the upload.
  5. Set version 1.0.0.0, attach the Square*Logo / StoreLogo assets from windows/src-tauri/icons/, and finish to produce a .msix.

Or scripted with the Windows SDK (makeappx + a hand-authored AppxManifest.xml) if you want this in CI — more control, more setup. For a first release the Packaging Tool is faster.

Signing: for Store submission you do not need your own code-signing certificate — the Store re-signs with the Microsoft Store certificate. (You only need signtool + a cert if you also distribute the MSIX outside the Store.)

6. Validate the package

7. Submit in Partner Center

  1. Partner Center → your reserved app → Packages → upload the .msix (Route A) or the installer/EXE (Route B).
  2. Properties: category — Productivity (or Maps & navigation); declare functionality. This app reads/writes local files and fetches online basemaps over HTTPS.
  3. Age ratings: complete the IARC questionnaire (no objectionable content → expect a low rating).
  4. Store listing: name, description, screenshots (capture the Aero/Mica workspace — map canvas, tool dock, attribute table), feature list, the privacy policy URL from §3.4, and support contact.
  5. Pricing and availability: free, choose markets.
  6. Submit for certification. Microsoft runs automated + manual checks; turnaround is typically a few business days. Address any certification report items and resubmit.

8. Updates

9. Quick reference

| Task | Command / location | |—|—| | Build release | cd windows && npm run tauri build | | Installer output | windows/src-tauri/target/release/bundle/nsis/ | | Version (app) | windows/src-tauri/tauri.conf.json + Cargo.toml | | Version (MSIX) | manifest, 4-part, e.g. 1.0.0.0 | | Store tile assets | windows/src-tauri/icons/Square*Logo.png, StoreLogo.png | | Privacy policy source | privacy-policy.md | | UI regression | cd windows && npm run test:ui | | Package validation | Windows App Certification Kit (WACK) | </content> </invoke>