Decision Guide
Choose Windows App SDK plus WinUI 3 only when native Windows value is real. If the app can be a web app, ship the web app first.
Quick Recommendation
| App shape | Recommendation |
|---|---|
| Windows-only consumer or business desktop app | Use packaged WinUI 3 plus Store MSIX |
| Existing WPF/WinForms app that needs one modern Windows feature | Keep the app, add Windows App SDK APIs incrementally |
| Existing app with custom installer but needs notifications/file associations | Consider packaging with external location |
| Internal utility for a few machines | Consider unpackaged self-contained only if MSIX is real friction |
| Web dashboard, docs app, SaaS admin, content surface | Use web/PWA first |
| Cross-platform desktop app with web-heavy UI | Compare Tauri, Electron, Wails, or Flutter before committing to WinUI |
Compare The Desktop Options
| Option | Best fit | Avoid when |
|---|---|---|
| Windows App SDK plus WinUI 3 | Native Windows app, Store/MSIX, modern controls, system integration | You need macOS/Linux/iOS/Android parity now |
| WPF | Mature Windows desktop app, rich existing ecosystem, legacy codebase | You want the newest WinUI shell/control model for a new app |
| WinForms | Simple internal tooling or legacy forms | You want modern adaptive UI or fluent visuals |
| Tauri | Cross-platform desktop with web UI and Rust shell | You need deep Windows Store/MSIX/native WinUI integration |
| Electron | Web-first desktop app with heavy web ecosystem needs | Memory footprint and native feel matter more |
| PWA | Web app that needs installability and Store reach | You need deep native Windows APIs |
| Flutter or React Native desktop | Cross-platform UI experiments | Windows-only native integration is the core product value |
Decide Packaging First
Do this before project scaffolding:
1. Does the app need Store distribution or package identity?
Yes -> packaged MSIX.
2. Is there an existing installer that cannot be replaced?
Yes -> packaged with external location.
3. Is the app a private internal tool where MSIX is blocked?
Maybe -> unpackaged self-contained, with explicit runtime/signing/update ownership.
4. Is this public distribution outside the Store?
Prefer MSIX direct download only if you accept signing, SmartScreen, hosting, and update ownership.
Default For This Lab
Because the lab owner already has a Microsoft Store account, the default for new public Windows apps is:
packaged WinUI 3 app -> MSIX -> Microsoft Store MSIX submission -> Store signing and updates
This default avoids most public code-signing pain and keeps update infrastructure small.
Reasons To Override The Default
| Constraint | Better path |
|---|---|
| Existing MSI/EXE installer is non-negotiable | Store MSI/EXE or packaging with external location |
| App must install from a private enterprise channel | MSIX sideload via Intune/ConfigMgr |
| App must be a zip/xcopy developer utility | Unpackaged self-contained, signed if public |
| App is mostly hosted web content | PWA or WebView2 shell only after questioning the product need |
| App needs frequent native APIs and reliable Store updates | Stay with packaged MSIX |
Gotcha: Unpackaged WinUI 3 looks simpler at the start, then pushes runtime deployment, package identity, notifications, signing, SmartScreen, updates, and Store eligibility onto you.