You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: hub/apps/package-and-deploy/choose-distribution-path.md
+17-14Lines changed: 17 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ ms.localizationpriority: medium
11
11
How you distribute your Windows app affects code signing costs, update mechanics, enterprise manageability, and how easily customers discover and install it. This article compares the main paths to help you make the right choice.
12
12
13
13
> [!TIP]
14
-
> **For most developers, the Microsoft Store is the recommended path.** It provides free code signing, built-in update delivery, broad discoverability, and a trusted install experience — with no infrastructure to manage.
14
+
> **For most developers, the Microsoft Store is the recommended path.** It provides broad discoverability, a trusted install experience, and no infrastructure to manage for MSIX submissions (Microsoft re-signs and hosts the package). Win32 MSI/EXE installer submissions are also accepted — the publisher must host a versioned HTTPS installer URL — see [MSI/EXE app submission](/windows/apps/publish/publish-your-app/msi/create-app-submission). MSIX submissions get free code signing and built-in update delivery.
15
15
16
16
> [!NOTE]
17
17
> **If your app is built on web technologies** (HTML, JavaScript, CSS), a [Progressive Web App (PWA)](#progressive-web-app-pwa) is the fastest path to the Microsoft Store — no native packaging tools required.
@@ -20,27 +20,30 @@ How you distribute your Windows app affects code signing costs, update mechanics
20
20
21
21
| Path | Best for | Code signing cost | Auto-update | Enterprise MDM | Distributed via Store |
22
22
|---|---|---|---|---|---|
23
-
|**Microsoft Store**| Consumer and business apps, broad reach | ✅ Free (Store signs for you) | ✅ Built-in | ✅ Via Intune with Company Portal | ✅ Yes |
23
+
|**Microsoft Store (MSIX)**| Consumer and business apps, broad reach | ✅ Free (Store re-signs your package) | ✅ Built-in | ✅ Via Intune with Company Portal | ✅ Yes |
24
+
|**Microsoft Store (MSI/EXE installer)**| Existing Win32 apps with own installer | 💲 Publisher must sign the installer and all PE files with a cert chaining to the [Microsoft Trusted Root Program](/security/trusted-root/participants-list)| ❌ Manual (app or installer handles updates) | ✅ Via Intune with Company Portal | ✅ Yes |
24
25
|**PWA (Progressive Web App)**| Web apps and web-based experiences | ✅ Free (Store signs for you) | ✅ Via Store or browser | ✅ Via Intune with Company Portal | ✅ Yes |
25
26
|**MSIX sideload (enterprise)**| Internal LOB apps via Intune/ConfigMgr | 💲 Azure Artifact Signing (formerly Trusted Signing) (~$10/mo) or self-signed + Intune cert profile | ✅ Via App Installer file or MDM | ✅ Native | ❌ No |
26
27
|**MSIX direct download (ISV)**| Commercial apps sold from your own site | 💲 CA-trusted cert required ([Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) recommended) | ✅ Via `.appinstaller` file | ⚠️ Limited | ❌ No |
27
-
|**Packaging with external location**| Existing apps with own installer needing Windows features | 💲 Same as MSIX direct download | ✅ Your existing mechanism | ⚠️ Limited |❌ No|
28
-
|**Unpackaged WinUI 3**| Niche: enterprise without MSIX capability, or max install simplicity | 💲 Cert recommended for SmartScreen | ❌ Manual only | ⚠️ Limited (via Intune/ConfigMgr Win32 deployment) | ⚠️ Limited (Store-listed installer submission) |
28
+
|**Packaging with external location**| Existing apps with own installer needing Windows features | 💲 Same as MSIX direct download | ✅ Your existing mechanism | ⚠️ Limited |⚠️ Via MSI/EXE Store submission (publisher signing required)|
29
+
|**Unpackaged WinUI 3**| Niche: enterprise without MSIX capability, or max install simplicity | 💲 Cert recommended for SmartScreen | ❌ Manual only | ⚠️ Limited (via Intune/ConfigMgr Win32 deployment) | ⚠️ Via MSI/EXE Storesubmission (publisher signing required) |
29
30
30
31
## Microsoft Store (recommended)
31
32
32
-
Publishing to the Microsoft Store is the most complete distribution solution for Windows apps.
33
+
Publishing to the Microsoft Store is the most complete distribution solution for Windows apps. Two submission paths are available:
33
34
34
-
**What you get:**
35
-
- Code signing handled automatically — no certificate purchase needed
36
-
- Built-in update delivery with staged rollout support
35
+
-**MSIX submission** — recommended for new apps and WinUI 3 apps. Microsoft re-signs the package; no cert purchase needed. Includes Store-managed updates, staged rollouts, and differential downloads.
36
+
-**MSI/EXE installer submission** — for existing Win32 apps with their own installer. Publisher submits a versioned HTTPS URL to the installer hosted on the publisher's own CDN; the Store downloads and runs the installer from that URL as part of the Store install flow. Publisher must sign the installer with a certificate chaining to a CA in the [Microsoft Trusted Root Program](/security/trusted-root/participants-list). Updates are the app's responsibility.
37
+
38
+
**What you get (both paths):**
37
39
- Discovery through the Store's search and curated collections
38
-
- Trusted install UX with no SmartScreen warnings
40
+
- Trusted install UX
39
41
- Revenue processing, refunds, and analytics included
42
+
- Enterprise deployment via Intune with Company Portal
40
43
41
44
**Requirements:**
42
-
-App must be packaged as MSIX (WinUI 3 apps are packaged by default)
43
-
- App must pass [Store certification requirements](/windows/apps/publish/publish-your-app/msix/app-package-requirements)
45
+
-MSIX is the recommended package format — WinUI 3 apps are packaged by default. Win32 apps with an existing MSI or EXE installer can also submit via the [MSI/EXE installer path](/windows/apps/publish/publish-your-app/msi/create-app-submission) (note: MSI/EXE submissions require a certificate chaining to a CA in the [Microsoft Trusted Root Program](/security/trusted-root/participants-list) — self-signed is not accepted; Store-managed updates are not available for this path)
46
+
- App must pass Store certification requirements: [MSIX requirements](/windows/apps/publish/publish-your-app/msix/app-package-requirements) | [MSI/EXE requirements](/windows/apps/publish/publish-your-app/msi/app-package-requirements)
@@ -141,7 +144,7 @@ If you have an existing app with its own installer (WiX, NSIS, InstallShield) an
141
144
- Your existing install and update mechanism stays in place
142
145
143
146
**What you don't get:**
144
-
- Store eligibility
147
+
-Direct MSIX Store submission (the sparse package is not itself Store-submitted; however, your underlying installer can be submitted via the [MSI/EXE Store installer path](/windows/apps/publish/publish-your-app/msi/create-app-submission))
145
148
- The clean install/uninstall model of full MSIX
146
149
147
150
**When to choose this:**
@@ -184,7 +187,7 @@ Many Windows apps are distributed using ClickOnce, MSI, WiX, Inno Setup, or simi
184
187
|**MSIX via Store**| ✅ Built-in | ✅ Free (Store signs) | ✅ Yes | Most apps — recommended starting point |
185
188
|**MSIX + .appinstaller**| ✅ Built-in | 💲 CA-trusted cert | ❌ No | ISVs distributing directly from a website |
186
189
|**ClickOnce**| ✅ Built-in | 💲 Cert recommended | ❌ No | WPF/WinForms apps; not supported for WinUI 3 |
187
-
|**MSI / WiX / Inno Setup**| ⚠️ Manual or custom | 💲 Cert recommended |❌ No| Apps with complex install requirements or existing installer |
190
+
|**MSI / WiX / Inno Setup**| ⚠️ Manual or custom | 💲 Cert recommended |⚠️ Via MSI/EXE Store submission (see below)| Apps with complex install requirements or existing installer |
|**winget manifest**| ✅ Via winget | 💲 Cert recommended | ❌ No | Any of the above — adds discoverability via `winget install`|
190
193
@@ -200,7 +203,7 @@ ClickOnce is **not supported for WinUI 3 apps**. Use MSIX with `.appinstaller` f
200
203
201
204
Traditional EXE and MSI installers remain common for Windows apps with complex installation requirements (driver installation, system services, registry configuration). Tools like [WiX Toolset](https://wixtoolset.org/), [Inno Setup](https://jrsoftware.org/isinfo.php), and [NSIS](https://nsis.sourceforge.io/) are community-maintained and widely used. Update support requires your own implementation.
202
205
203
-
These formats are not Store-eligible as primary distribution packages. However, you can combine them with [packaging with external location](../desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md) if you need package identity for specific Windows features.
206
+
These formats are not Store-eligible as MSIX packages, but can be submitted to the Store via the [MSI/EXE installer path](/windows/apps/publish/publish-your-app/msi/create-app-submission) (requires a certificate chaining to a CA in the [Microsoft Trusted Root Program](/security/trusted-root/participants-list) and a silent-install capable installer). You can also combine them with [packaging with external location](../desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md) if you need package identity for specific Windows features.
Copy file name to clipboardExpand all lines: hub/apps/package-and-deploy/code-signing-options.md
+8-4Lines changed: 8 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,22 +8,26 @@ ms.localizationpriority: medium
8
8
9
9
# Code signing options for Windows app developers
10
10
11
-
If you publish your app through the Microsoft Store, code signing is free and handled for you automatically — you don't need to purchase or manage a certificate. Everything in this article applies to apps distributed **outside the Microsoft Store**.
11
+
If you publish your app as an **MSIX package**through the Microsoft Store, code signing is free and handled for you automatically — Microsoft re-signs the package after certification and you don't need to purchase or manage a certificate. If you publish as an **MSI/EXE installer** through the Store, you are responsible for Authenticode signing your installer before submission. Everything else in this article applies to apps distributed **outside the Microsoft Store**.
12
12
13
13
## Comparison at a glance
14
14
15
15
| Option | Cost | Availability | SmartScreen behavior | Store eligible | Best for |
16
16
|---|---|---|---|---|---|
17
-
|**Microsoft Store** (signs for you) | Free | Worldwide | ✅ No warnings | ✅ Yes | Recommended for most developers |
17
+
|**Microsoft Store (MSIX)** — Store re-signs your package | Free | Worldwide | ✅ No warnings | ✅ Yes | Recommended for most new apps |
18
+
|**Microsoft Store (MSI/EXE installer)** — publisher must sign | Cert chaining to [Trusted Root Program CA](/security/trusted-root/participants-list) required (varies by CA) | Worldwide | ✅ No SmartScreen prompts during Store install (UAC may still appear) | ✅ Yes | Existing Win32 apps submitting via MSI/EXE installer path |
18
19
|**Azure Artifact Signing** (formerly Trusted Signing) |~$9.99/month | Organizations: USA, Canada, EU, UK. Individuals: USA and Canada only | ⚠️ Reputation builds over time; initial warnings expected | ❌ No | Recommended for non-Store distribution |
19
20
|**OV certificate** (from a CA such as DigiCert, Sectigo) | $150–300/year | Worldwide | ⚠️ Same as Azure Artifact Signing — reputation builds over time | ❌ No | Developers who can't use Azure Artifact Signing, or who prefer traditional CAs |
20
21
|**EV certificate**| $400+/year | Worldwide | ⚠️ Same as OV since 2024 — no longer instant bypass | ❌ No | No longer recommended specifically for SmartScreen bypass |
21
22
|**Self-signed certificate**| Free | — | ❌ Blocks installation for public users | ❌ No | Dev/testing only, or enterprise with managed certificate trust |
22
23
|**No signature**| Free | — | ❌ Strong SmartScreen block; enterprises may block entirely | ❌ No | Not recommended for public distribution |
23
24
24
-
## Microsoft Store — no signing needed
25
+
## Microsoft Store — MSIX submissions: no signing needed
25
26
26
-
Publishing through the Microsoft Store is the recommended distribution path for most Windows apps. Microsoft re-signs your package automatically, meaning users never see a SmartScreen warning and you never need to purchase or renew a certificate.
27
+
Publishing an **MSIX package** through the Microsoft Store is the recommended distribution path for most Windows apps. Microsoft re-signs your package automatically, meaning users never see a SmartScreen warning and you never need to purchase or renew a certificate.
28
+
29
+
> [!NOTE]
30
+
> If you're submitting a **Win32 MSI or EXE installer** to the Store (rather than an MSIX package), Microsoft does not re-sign your installer. The installer and its PE files must be signed with a certificate chaining to a CA in the [Microsoft Trusted Root Program](/security/trusted-root/participants-list) — self-signed certificates are not accepted. See [App package requirements for MSI/EXE](/windows/apps/publish/publish-your-app/msi/app-package-requirements).
27
31
28
32
Create a free developer account at [storedeveloper.microsoft.com](https://storedeveloper.microsoft.com). After you register, use [Partner Center](https://partner.microsoft.com/dashboard) to submit your app and manage its listing.
|**Packaging with external location**| ✅ Yes | Your existing installer |✅ Yes (MSI/EXE submission)| Existing apps with own installer, ISVs |
46
+
|**Unpackaged**| ❌ No |MSI or EXE installer (also: XCopy or script for non-Store distribution)|✅ Yes (MSI/EXE submission — requires an MSI or EXE installer with silent install support) | Broad Win32 distribution, internal tools|
47
47
48
48
### Packaged apps (MSIX)
49
49
@@ -63,7 +63,7 @@ This is the sweet spot for existing Win32/WPF/WinForms apps that ship via their
63
63
|---|---|---|
64
64
| Replaces your installer | Yes | No |
65
65
| Binaries inside the package | Yes | No (external) |
@@ -82,13 +82,13 @@ Before you commit to unpackaged, check the [features table above](#features-that
82
82
83
83
| Scenario | Recommended model | Details |
84
84
|---|---|---|
85
-
|**Indie developer publishing to the Microsoft Store**| Packaged (MSIX) | The Store requires MSIX. WinUI 3 apps are packaged by default — no changes needed. **Code signing is handled free by the Store.** → [Distribute your packaged app](../../distribute-through-store/how-to-distribute-your-win32-app-through-microsoft-store.md)|
85
+
|**Indie developer publishing to the Microsoft Store**| Packaged (MSIX) recommended | MSIX is the recommended path — it enables Store-managed updates, differential downloads, and clean uninstall. WinUI 3 apps are packaged by default. **Code signing is handled free by the Store.** → [Distribute your packaged app](../../distribute-through-store/how-to-distribute-your-win32-app-through-microsoft-store.md)<br><br>Win32 apps with an existing MSI or EXE installer can also publish to the Store via the [MSI/EXE submission path](../../publish/publish-your-app/msi/create-app-submission.md), but the Store does not push updates to existing users — updates must be handled by the app or installer.|
86
86
|**Enterprise app deployed via Intune or Configuration Manager**| Packaged, or external location for existing installers | New apps should use MSIX. Existing apps with their own installer can use packaging with external location. **Code signing:** use a self-signed cert (trusted via Intune, Group Policy, or Configuration Manager) or [Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/). → [Deploy packaged apps](../../windows-app-sdk/deploy-packaged-apps.md)|
87
-
|**ISV shipping a direct download with own installer**| Packaging with external location | Register a lightweight identity package alongside your existing installer. **Code signing:** a CA-trusted certificate is required for non-Store distribution. [Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) is the recommended lower-cost option. → [Grant package identity](../../desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md)|
87
+
|**ISV shipping a direct download with own installer**| Packaging with external location | Register a lightweight identity package alongside your existing installer. **Code signing:** a CA-trusted certificate is required for non-Store distribution. [Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) is the recommended lower-cost option. → [Grant package identity](../../desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md)<br><br>Alternatively, submit your existing installer to the Store via the [MSI/EXE submission path](../../publish/publish-your-app/msi/create-app-submission.md).|
88
88
|**Internal tool or developer utility**| Unpackaged | Simplest to build and deploy. The Windows App SDK works via NuGet, but some features won't be available. |
89
89
90
90
> [!TIP]
91
-
> **Not sure about code signing costs?** Publishing through the Microsoft Store means you don't need to separately obtain or manage a certificate for end-user trust. For other distribution paths, your signing approach depends on deployment context — enterprise environments can trust a self-signed certificate through device management, while broader non-Store distribution typically requires a CA-trusted code signing solution. [Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) is Microsoft's recommended option (see [pricing](https://azure.microsoft.com/pricing/details/trusted-signing/)), with no hardware token required.
91
+
> **Not sure about code signing costs?** Publishing an **MSIX package**through the Microsoft Store means you don't need to separately obtain or manage a certificate for end-user trust — Microsoft re-signs the package. Publishing a **Win32 MSI/EXE installer** through the Store requires a certificate chaining to a CA in the [Microsoft Trusted Root Program](/security/trusted-root/participants-list); self-signed is not accepted. For other distribution paths, your signing approach depends on deployment context — enterprise environments can trust a self-signed certificate through device management, while broader non-Store distribution typically requires a CA-trusted code signing solution. [Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) is Microsoft's recommended option (see [pricing](https://azure.microsoft.com/pricing/details/trusted-signing/)), with no hardware token required.
92
92
93
93
## Framework-dependent vs self-contained deployment
0 commit comments