Skip to content

Commit 5e10fe0

Browse files
P1: Indie dev docs — distribution method guide, signing comparison, publish tutorial, and page expansions (#6655)
* P1: Add code signing options comparison and indie dev publish guide Two new pages for the indie developer documentation initiative (ADO #570454): - hub/apps/package-and-deploy/code-signing-options.md: Comparison of all signing options (Store, Azure Artifact Signing, OV/EV certs, self-signed) with cost, availability, SmartScreen behavior, and Store eligibility columns. Addresses the cost confusion and geo limitation gaps identified in community research. - hub/apps/package-and-deploy/publish-first-app.md: End-to-end guide for indie devs answering 'I built an app — how do I ship it?' Covers both Store (recommended) and direct download paths with signing, packaging, auto-update, and SmartScreen expectations. Co-authored-by: Copilot <[email protected]> * P1: Indie dev docs — new pages and existing page expansions (ADO #570454) New pages: - code-signing-options.md: Full comparison of signing options (Store, Azure Artifact Signing, OV/EV certs, self-signed, SignPath Foundation) with accurate geo availability (orgs: USA/CA/EU/UK; individuals: USA/CA), cost figures, SmartScreen behavior, and Store eligibility columns. - publish-first-app.md: End-to-end 'Publish your first Windows app' guide for indie devs. Covers Store (recommended) and direct download paths, $19 Partner Center fee, code signing, WinUI 3 vs WPF/WinForms packaging, auto-update comparison, SmartScreen expectations. Velopack mentioned briefly without worked example. ms-appinstaller disabled note included. Existing page expansions: - smartscreen-reputation.md: Add expected reputation timeline (several weeks, hundreds of installs); add enterprise file submission tip. - choose-distribution-path.md: Replace 2-sentence 'other installer formats' stub with full comparison table (ClickOnce, WiX/Inno/NSIS, xcopy, winget) plus individual sections explaining each option and its trade-offs. Addresses the most-requested missing content identified across 3+ years of community forum posts. - unpackage-winui-app.md: Add runtime deployment section (MSIX installer vs self-contained), prominent single-file EXE limitation callout with alternatives, and distribution considerations for unpackaged apps (missing Windows features, package identity options). - toc.yml: Add entries for both new pages. Co-authored-by: Copilot <[email protected]> * Address Copilot feedback on P1 indie dev pages - unpackage-winui-app.md: Fix runtime terminology — 'framework package' -> 'runtime'; 'MSIX-based installer' -> 'runtime installer (.exe)'; add reference to official use-windows-app-sdk-run-time deployment guidance - publish-first-app.md: Clarify Store MSIX submissions don't need a CA-trusted cert — Microsoft re-signs after certification; note that MSI/EXE non-Store distribution does need Authenticode signing - code-signing-options.md: Fix 'Store eligible' column — change '❌ Non-Store distribution' to '❌ No' for consistency with other rows Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent db01c42 commit 5e10fe0

6 files changed

Lines changed: 351 additions & 2 deletions

File tree

hub/apps/package-and-deploy/choose-distribution-path.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,38 @@ If you have an existing app with its own installer (WiX, NSIS, InstallShield) an
119119

120120
## What about other installer formats?
121121

122-
Many Windows apps are distributed using MSI, WiX, Inno Setup, ClickOnce, or similar technologies. These are established and supported options, especially for existing apps. However, they may not provide MSIX's package identity, clean uninstall model, or Store eligibility.
122+
Many Windows apps are distributed using ClickOnce, MSI, WiX, Inno Setup, or similar technologies. These are established and supported options, especially for apps that can't use MSIX or don't need Store distribution. The table below summarizes the common options and their trade-offs.
123+
124+
| Method | Auto-update | Code signing required | Store eligible | Best for |
125+
|---|---|---|---|---|
126+
| **MSIX via Store** | ✅ Built-in | ✅ Free (Store signs) | ✅ Yes | Most apps — recommended starting point |
127+
| **MSIX + .appinstaller** | ✅ Built-in | 💲 CA-trusted cert | ❌ No | ISVs distributing directly from a website |
128+
| **ClickOnce** | ✅ Built-in | 💲 Cert recommended | ❌ No | WPF/WinForms apps; not supported for WinUI 3 |
129+
| **MSI / WiX / Inno Setup** | ⚠️ Manual or custom | 💲 Cert recommended | ❌ No | Apps with complex install requirements or existing installer |
130+
| **Self-contained EXE (xcopy/zip)** | ❌ None | 💲 Cert recommended | ❌ No | Simple utilities; developer/power-user audiences |
131+
| **winget manifest** | ✅ Via winget | 💲 Cert recommended | ❌ No | Any of the above — adds discoverability via `winget install` |
132+
133+
### ClickOnce
134+
135+
ClickOnce is a .NET deployment technology built into Visual Studio. It hosts a manifest on a web server or file share; users install from the manifest URL and ClickOnce handles update checks at launch. It's a good fit for WPF and WinForms apps distributed to a known user base.
136+
137+
ClickOnce is **not supported for WinUI 3 apps**. Use MSIX with `.appinstaller` for WinUI 3 direct distribution.
138+
139+
[ClickOnce security and deployment](/visualstudio/deployment/clickonce-security-and-deployment)
140+
141+
### MSI, WiX, Inno Setup, and NSIS
142+
143+
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.
144+
145+
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.
146+
147+
### Self-contained EXE (xcopy deployment)
148+
149+
`dotnet publish --self-contained` produces a folder of files (or a single-file EXE) that users can run without installing .NET. This is the simplest distribution model but requires users to download a new version manually. It suits command-line tools, developer utilities, and power-user apps.
150+
151+
### winget — adding discoverability to any distribution path
152+
153+
Regardless of your packaging format, you can submit a manifest to the [Windows Package Manager Community Repository](https://github.com/microsoft/winget-pkgs) to make your app installable via `winget install <your-app>`. This doesn't replace your existing distribution method — it adds a command-line installation path valued by developer and technical audiences.
123154

124155
## Related content
125156

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
---
2+
title: Code signing options for Windows app developers
3+
description: Compare code signing options for distributing Windows apps outside the Microsoft Store — including Azure Artifact Signing, OV/EV certificates, and when no signing is needed.
4+
ms.topic: concept-article
5+
ms.date: 04/17/2026
6+
ms.localizationpriority: medium
7+
---
8+
9+
# Code signing options for Windows app developers
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**.
12+
13+
## Comparison at a glance
14+
15+
| Option | Cost | Availability | SmartScreen behavior | Store eligible | Best for |
16+
|---|---|---|---|---|---|
17+
| **Microsoft Store** (signs for you) | Free | Worldwide | ✅ No warnings | ✅ Yes | Recommended for most developers |
18+
| **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+
| **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+
| **EV certificate** | $400+/year | Worldwide | ⚠️ Same as OV since 2024 — no longer instant bypass | ❌ No | No longer recommended specifically for SmartScreen bypass |
21+
| **Self-signed certificate** | Free || ❌ Blocks installation for public users | ❌ No | Dev/testing only, or enterprise with managed certificate trust |
22+
| **No signature** | Free || ❌ Strong SmartScreen block; enterprises may block entirely | ❌ No | Not recommended for public distribution |
23+
24+
## Microsoft Store — no signing needed
25+
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+
28+
A one-time $19 developer account fee gives you access to [Partner Center](https://partner.microsoft.com/dashboard), where you submit your app and manage its listing.
29+
30+
[Publish your app to the Microsoft Store](/windows/apps/publish/publish-your-app/msix/create-app-submission)
31+
32+
## Azure Artifact Signing (formerly Trusted Signing) — recommended for non-Store distribution
33+
34+
[Azure Artifact Signing (formerly Trusted Signing)](/azure/trusted-signing/) is Microsoft's recommended code signing service for developers who distribute apps outside the Store.
35+
36+
**Key details:**
37+
38+
- **Cost:** Approximately $9.99/month — significantly less than a traditional OV or EV certificate
39+
- **Identity validation:** Microsoft validates your organization or individual identity before issuing certificates; plan for a few business days for verification
40+
- **No hardware token required:** Signing integrates directly with CI/CD pipelines (GitHub Actions, Azure DevOps, and others) — you don't need a physical USB token
41+
- **SmartScreen behavior:** The same reputation-building model as OV certificates — new files will show a SmartScreen warning until they accumulate sufficient download history. Azure Artifact Signing does **not** provide instant SmartScreen trust.
42+
43+
> [!IMPORTANT]
44+
> **Geographic limitation:** Azure Artifact Signing is available to organizations in the USA, Canada, the European Union, and the United Kingdom. Individual developers are currently limited to the USA and Canada. If you are an individual developer outside those regions, see [OV certificates](#ov-certificates--traditional-ca-option) below.
45+
46+
[Azure Artifact Signing documentation](/azure/trusted-signing/)
47+
[Sign an MSIX package using SignTool](/windows/msix/package/sign-app-package-using-signtool)
48+
49+
## OV certificates — traditional CA option
50+
51+
Organization Validated (OV) certificates from a Certificate Authority (CA) such as DigiCert, Sectigo, or GlobalSign are a well-established option for code signing. They are the right choice when:
52+
53+
- You are located outside the USA, Canada, the EU, or the UK (organizations); or outside the USA or Canada (individual developers) and cannot use Azure Artifact Signing
54+
- Your organization already has a relationship with a specific CA
55+
- Your enterprise customers require a certificate from a particular CA
56+
57+
**Key details:**
58+
59+
- **Cost:** Typically $150–300/year depending on the CA and certificate tier
60+
- **Identity validation:** The CA validates your organization's legal identity before issuing the certificate; allow several business days
61+
- **HSM requirement:** As of June 2023, the CA/Browser Forum requires private keys for OV certificates to be stored on a hardware security module (HSM) or hardware token. Most CAs provide a compatible USB token or cloud HSM option.
62+
- **SmartScreen behavior:** Equivalent to Azure Artifact Signing — reputation accumulates per file hash over time. Expect SmartScreen prompts for new files.
63+
64+
OV certificates are a proven option and are functionally equivalent to Azure Artifact Signing for SmartScreen purposes. If you are in the US or Canada (or an organization in the EU or UK), Azure Artifact Signing is typically more cost-effective and integrates more smoothly with automated build pipelines.
65+
66+
## EV certificates — no longer recommended for SmartScreen
67+
68+
Extended Validation (EV) certificates previously bypassed SmartScreen entirely on first download, making them the go-to choice for new apps with no reputation. **That behavior was removed in 2024.** EV-signed files now go through the same reputation-building process as OV certificates.
69+
70+
**What this means:**
71+
72+
- If you already have an EV certificate, it is still valid and functional for signing — keep using it until it expires
73+
- EV certificates still require more rigorous identity validation, which may matter for enterprise procurement or other trust contexts
74+
- Paying the EV premium ($400+/year) solely to avoid SmartScreen warnings is **no longer justified** — you will still see the same warnings as with an OV certificate
75+
76+
[SmartScreen reputation for developers](smartscreen-reputation.md) for full details on how reputation builds and what users see
77+
78+
## Self-signed certificates — dev and testing only
79+
80+
A self-signed certificate is not trusted by Windows by default and will trigger a strong SmartScreen block for any user who hasn't manually installed the certificate as a trusted root. This makes self-signed certificates unsuitable for public distribution.
81+
82+
**Appropriate uses:**
83+
84+
- **Local development and testing** — you control the machine and can install the certificate manually
85+
- **Enterprise internal distribution** — your IT department can deploy the certificate as a trusted root via Intune or Group Policy, allowing managed devices to install the app silently
86+
87+
[Sign an MSIX package using SignTool](/windows/msix/package/sign-app-package-using-signtool)
88+
89+
## Open source: SignPath Foundation
90+
91+
If your project is open source, [SignPath Foundation](https://signpath.io) offers free code signing for qualifying open-source projects. The program provides OV-level certificate signing through a managed pipeline. Check the SignPath Foundation website for eligibility requirements and the application process.
92+
93+
## Related content
94+
95+
- [SmartScreen reputation for developers](smartscreen-reputation.md)
96+
- [Choose a distribution path for your Windows app](choose-distribution-path.md)
97+
- [Sign an MSIX package using SignTool](/windows/msix/package/sign-app-package-using-signtool)
98+
- [Azure Artifact Signing (formerly Trusted Signing) documentation](/azure/trusted-signing/)

0 commit comments

Comments
 (0)