Distributing builds to Microsoft Store
You can distribute a ToDesktop-built Windows app through Microsoft Store using Microsoft's MSI/EXE submission path with the signed Windows MSI artifact that ToDesktop already builds.
This approach lets your app appear in Microsoft Store while keeping the normal ToDesktop release and auto-update flow for existing users.
For ToDesktop apps, the MSI route uses the same Windows artifact, signing setup, and runtime update path as your normal Windows releases.
When to use MSI
Use the MSI route if:
- Your app already builds and releases successfully with ToDesktop's Windows MSI artifact.
- You want Microsoft Store distribution without maintaining a separate packaged Windows build.
- You want existing users to continue receiving updates through ToDesktop's runtime updater.
- You are comfortable hosting the installer URL from your ToDesktop download domain or custom download domain.
Prerequisites
Before creating a Microsoft Store submission, make sure you have:
- A Microsoft Partner Center account.
- A reserved Microsoft Store product.
- A Windows MSI artifact enabled in ToDesktop.
- Windows code signing configured and working.
- A released ToDesktop build with passing Windows validation.
- A public HTTPS URL for the MSI installer.
- A versioning strategy where each Store-visible release increments the app version.
- Silent install arguments accepted by Partner Center, such as
/quietfor an MSI installer.
Configure ToDesktop
- In the ToDesktop dashboard, open your app's Build and Deploy settings.
- Enable the Windows MSI artifact.
- Keep any other Windows artifacts enabled if you also distribute through your website.
- Configure Windows code signing in your app's certificate settings.
- Build your app.
- Review the build validation checks and release the build.
For the Microsoft Store submission flow in this guide, the Windows MSI artifact is the important artifact.
Choose an installer URL
For Partner Center, use a stable version URL for the released MSI:
https://<your-download-domain>/versions/<app-version>/windows/msi
If you use ToDesktop's default download domain, use:
https://dl.todesktop.com/<your-app-id>/versions/<app-version>/windows/msi
If you use a custom download domain, use:
https://<your-custom-domain>/versions/<app-version>/windows/msi
The build URL is useful for internal verification:
https://<your-download-domain>/builds/<build-id>/windows/msi/x64
The version URL should resolve to the same released MSI as the build URL. Before submitting to Microsoft, verify the version URL returns the expected file and matches the released build.
Submit in Partner Center
In Microsoft Partner Center:
-
Reserve or select your Store product.
-
Create an MSI/EXE app submission.
-
Enter the public MSI installer URL.
-
Enter the installer version.
-
Set the silent install arguments. For MSI, this is commonly:
/quiet -
Complete the product listing metadata, including description, screenshots, privacy URL, support URL, category, age rating, and system requirements.
-
Submit the app for Microsoft certification.
For the latest Partner Center requirements, see Microsoft's docs for distributing Win32 apps through Microsoft Store and creating an MSI/EXE app submission.
Verify before submitting
Before submitting the installer URL to Microsoft, check:
- The ToDesktop build completed successfully.
- The build has been released.
- Windows code signing completed successfully.
- The installer URL returns HTTP 200 for a normal download request.
- The response filename is the expected MSI.
- The downloaded MSI hash matches the released build MSI.
- The MSI installs silently with the arguments supplied to Partner Center.
- The installed app launches successfully.
- The installed app can update from an older released version.
- Updating from an older MSI install does not create a duplicate app entry.
You can download the MSI and inspect its headers with:
curl -sSL -D /tmp/store-msi-headers.txt \
-o /tmp/store-msi.msi \
"https://<your-download-domain>/versions/<app-version>/windows/msi"
sed -n '1,80p' /tmp/store-msi-headers.txt
shasum -a 256 /tmp/store-msi.msi
If you want to compare the version URL with a build URL, a range request is usually enough to inspect the build URL headers:
curl -sSL -D /tmp/build-msi-headers.txt \
-r 0-0 \
-o /tmp/build-msi-byte.bin \
"https://<your-download-domain>/builds/<build-id>/windows/msi/x64"
sed -n '1,80p' /tmp/build-msi-headers.txt
Updates
For the MSI/EXE Store route, Microsoft Store installs the app from the URL you provide. Existing users should normally continue updating through ToDesktop's runtime updater, just like users who installed from your website.
This means:
- Release the build in ToDesktop first.
- Verify that existing installations can update to the new release.
- Submit a Microsoft Store update with the new version URL so new Store installs start from the latest version.
- Keep the Store listing reasonably current, even if in-app updates are enabled.
If you want Microsoft Store or enterprise IT tooling to be the only update
authority for MSI installs, disable in-app updates for MSI-installed copies of
your app. You can use
todesktop.runtime.isInstalledUsingWindowsMSI
to detect MSI installs and adjust update behavior.
Choose one update authority for MSI installs. Mixing Store-managed, IT-managed, and in-app update flows can create confusing behavior, especially for enterprise deployments or custom install locations.
Troubleshooting
The installer URL returns 404
Make sure the build has been released in ToDesktop. Version URLs are intended to point at released versions, not unreleased builds.
If the URL still appears to fail after release, test with a normal GET request
instead of only HEAD, and compare results from another network if possible.
Microsoft Store shows an older version
Microsoft Store does not automatically infer the latest ToDesktop release. After you release a new ToDesktop build, submit a Store update that points at the new version URL.
Existing users are not updating
For MSI/EXE Store apps, existing users rely on the app's updater unless you have intentionally disabled in-app updates for MSI installs. Check the ToDesktop release state, update behavior, and runtime logs rather than assuming Microsoft Store will push the update to already-installed apps.
MSI updates create duplicate installs
Check whether the original MSI was installed into a custom location. If in-app updates should stay enabled, the update needs to target the same install location as the original installer. For enterprise deployments with custom locations, see Updates for how to disable in-app updates for MSI installs and let IT tooling own updates.
Download metrics spike after launch
Microsoft Store distribution can generate hosted-installer traffic as Microsoft downloads or caches your installer. Compare raw download counts with app session telemetry before treating a download spike as user growth.
Antivirus scanning or reputation warnings persist
Microsoft Store distribution does not guarantee third-party antivirus products will skip scanning. If a security product delays launch or reports a false positive, collect the vendor-specific detection details and submit the signed installer to that vendor for review.