MSIX vs ClickOnce: the differences, and how to move to MSIX
ClickOnce and MSIX both install a Windows app for the current user and keep it updated. ClickOnce has done it for .NET apps since Visual Studio 2005, from a web server or file share. MSIX is the format Microsoft recommends today, and it's the one the Microsoft Store takes. A WPF or Windows Forms app can move from one to the other without a rewrite.
If your ClickOnce app serves a known group of users from your own server and works fine, it can stay. If you want it in the Microsoft Store, or you're building with WinUI 3, move to MSIX.
- Microsoft's distribution guide marks ClickOnce as not eligible for the Microsoft Store. MSIX is.
- Both update on their own. MSIX downloads only the 64 KB blocks that changed and guarantees a clean uninstall.
- An MSIX in the Store needs no certificate of your own, because Microsoft re-signs it.
- ClickOnce stays a good fit for internal WPF and Windows Forms apps that never go near the Store.
How they differ
| Feature | MSIX | ClickOnce |
|---|---|---|
| Microsoft Store | Yes | Nonot Store eligible |
| Where users install from | The Store, a web server, a file share or Intune | A web server, a file share or media |
| Admin rights to install | Not needed | Not neededunless a prerequisite needs them |
| Automatic updates | Yesthe Store or an .appinstaller file | Yeschecks the update location |
| What an update downloads | Changed 64 KB blocks | Changed files |
| Code signing | Microsoft signs Store copiesyours elsewhere | Optionalunsigned apps show a trust prompt |
| App types | Any desktop app, including WinUI 3 | WPF, Windows Forms, console and Office add-ins |
| Windows features that need package identity | Yes | No |
How ClickOnce works
Visual Studio publishes a ClickOnce app as two XML manifests and the app's files. You copy them to a web server, a network share or a disc. Users click the deployment manifest, confirm a short dialog, and the app installs into a per-user cache. Microsoft's ClickOnce overview says nothing goes into Program Files or the registry and no admin rights are needed.
To update, you publish a new version and point the deployment manifest at it. The app checks the update location, downloads the changed files and runs the new version from a side-by-side folder, and a user or admin can roll back. For .NET Core 3.1 and .NET 5 or later, Visual Studio's Publish tool makes the deployment, and background updates and update intervals aren't supported.
How MSIX works
An MSIX is one signed package with the app's files and a manifest that gives it an identity: a name, publisher and version. Microsoft's MSIX overview says that identity is what Windows needs for push notifications, background tasks, the Windows AI APIs and Store distribution. Apps run in a light container with a virtual file system and registry, and uninstalling removes everything.
In the Store, Microsoft signs and hosts the package and delivers updates. Outside the Store, an .appinstaller file plays the part of the ClickOnce deployment manifest. It sits on your server or share, points at the current package and says when to check for updates. Microsoft turned off the one-click ms-appinstaller: links by default in December 2023, so users download the .appinstaller file and open it.
Why ClickOnce apps can't go in the Store
The Store takes two kinds of desktop app. One is an MSIX it hosts. The other is an MSI or EXE installer at your own versioned URL, signed with a trusted certificate, that installs silently without downloading anything. Microsoft's distribution guide lists ClickOnce as not Store eligible, so getting a ClickOnce app into the Store means packaging it as an MSIX. The MSI vs MSIX guide covers the installer route.
How to move a ClickOnce app to MSIX
Most ClickOnce apps are published from Visual Studio, so the source is at hand. Packaging from source gives the cleanest result.
- 1
Check the app will run packaged
Microsoft's preparation checklist lists what MSIX doesn't allow. ClickOnce apps already install per user without admin rights, so most pass. Look for writes to the install folder, changes under HKEY_LOCAL_MACHINE, and anything that needs to run elevated. Store apps can't require elevation.
- 2
Add a Windows Application Packaging Project
Add one to your solution, reference your WPF or Windows Forms project, and set it as the startup project. The WPF and Windows Forms guide walks through it, from reserving the name in Partner Center to Create App Packages.
- 3
Take out the ClickOnce update code
If the app calls ApplicationDeployment to check for updates, that only works in a ClickOnce install. Guard it with IsNetworkDeployed or remove it from the MSIX build. On .NET 7 and later, ClickOnce exposes the same information through environment variables instead.
using System.Deployment.Application; // Only a ClickOnce install can check for ClickOnce updates. In the MSIX build, the Store updates the app. if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment.CurrentDeployment.CheckForUpdate(); } - 4
Ship the first MSIX
Build the package, test it on a clean machine and make the first submission in Partner Center. Tell your ClickOnce users where the new version lives. Windows treats the MSIX as a separate app, so they install it and remove the ClickOnce copy from Installed apps.
Without the source, the MSIX Packaging Tool converts a ClickOnce installer the same way it converts an MSI or EXE. It records the install on a clean machine, and you type in the package name, publisher and version yourself.
How to choose
- Stay on ClickOnce if the app is internal, its users are known, and it never needs the Store or Windows features that need package identity.
- Move to MSIX if you want the app in the Microsoft Store, if you build with WinUI 3, or if you need notifications, background tasks or the Windows AI APIs.
- Ship MSIX with an .appinstaller file if you want MSIX but distribute from your own site. You need a trusted certificate for that.
Where StoreFast fits
Once your app is in the Store as an MSIX, StoreFast publishes each update. Drop the new .msix on your app's page, send it from the GitHub Action or the API, or ask a coding agent. StoreFast checks the name and version, writes What's new in every listing language and submits it.
Who it's for
StoreFast is a good fit if
- You moved a ClickOnce app to MSIX and ship it in the Microsoft Store.
- Your listing has several languages and you want What's new in all of them.
- You release from GitHub Actions or a coding agent.
Look elsewhere if
- Your app stays on ClickOnce. StoreFast publishes to the Microsoft Store.
- Your app isn't in the Store yet. Make the first submission in Partner Center.
Questions
- Can I publish a ClickOnce app to the Microsoft Store?
- Not as a ClickOnce deployment. Microsoft's distribution guide marks ClickOnce as not eligible for the Store. Package the app as an MSIX instead, from source with a Windows Application Packaging Project or from the ClickOnce installer with the MSIX Packaging Tool.
- Is ClickOnce deprecated?
- No. Visual Studio still publishes ClickOnce for .NET Framework and for .NET Core 3.1, .NET 5 and later, and Microsoft calls it an established, supported option for WPF and Windows Forms apps. It doesn't support WinUI 3, and Microsoft recommends MSIX as the starting point for most apps.
- Does MSIX update automatically like ClickOnce?
- Yes. In the Store, the Store delivers updates. Outside it, an .appinstaller file on your web server or file share tells Windows where to look for new versions, and it can check when the app launches. Either way, updates download only the 64 KB blocks that changed.
- Do I need a code signing certificate?
- Not for an MSIX in the Store, because Microsoft re-signs it after certification. You do for an MSIX you hand out yourself, since Windows won't install an unsigned package. ClickOnce works without one, but users then get a prompt asking whether to trust the app.
- Can StoreFast publish my app after I move it to MSIX?
- Yes. You make the first submission in Partner Center, then StoreFast publishes each new .msix from the dashboard, the GitHub Action, the API or a coding agent, and writes What's new in every listing language.
Publish your next MSIX update
Make your first submission in Partner Center, connect it to StoreFast and drop the next .msix on the page. Start free, with 14 days of Plus and no card.
Sources
Facts about Microsoft's tools were checked against these pages on October 12, 2026.