One convenient approach to distributing Windows apps is the Microsoft Store. This guide provides a step-by-step walkthrough of packaging and deploying a Flutter app in this way.
Before beginning the process of releasing a Flutter Windows desktop app to the Microsoft Store, first confirm that it satisfies Microsoft Store Policies.
Also, you must join the Microsoft Partner Network to be able to submit apps.
Set up your application in the Partner Center
Manage an application’s life cycle in the Microsoft Partner Center.
First, reserve the application name and ensure that the required rights to the name exist. Once the name is reserved, the application will be provisioned for services (such as push notifications), and you can start adding add-ons.
Options such as pricing, availability, age ratings, and category have to be configured together with the first submission and are automatically retained for the subsequent submissions.
Packaging and deployment
In order to publish an application to Microsoft Store, you must first package it. The valid formats are .msix, .msixbundle, .msixupload, .appx, .appxbundle, .appxupload, and .xap.
Manual packaging and deployment for the Microsoft Store
Check out MSIX packaging to learn about packaging Flutter Windows desktop applications.
Note that each product has a unique identity, which the Store assigns.
If the package is being built manually, you have to include its identity details manually during the packaging. The essential information can be retrieved from the Partner Center using the following instructions:
- In the Partner Center, navigate to the application.
- Select Product management.
- Retrieve the package identity name, publisher, and publisher display name by clicking Product identity.
After manually packaging the application, manually submit it to the Microsoft Partner Center. You can do this by creating a new submission, navigating to Packages, and uploading the created application package.
In addition to manually creating and deploying the package, you can automate the build, package, versioning, and deployment process using CI/CD tooling after having submitted the application to the Microsoft Store for the first time.
For Flutter applications, use either the Codemagic Workflow Editor or codemagic.yaml to package the application and deploy it to the Microsoft Partner Center. Additional options (such as the list of capabilites and language resources contained in the package) can be configured using this package.
For publishing, Codemagic uses the Partner Center submission API; so, Codemagic requires associating the Azure Active Directory and Partner Center accounts.
GitHub Actions CI/CD
GitHub Actions can use the Microsoft Dev Store CLI to package applications into an MSIX and publish them to the Microsoft Store. The setup-msstore-cli GitHub Action installs the cli so that the Action can use it for packaging and publishing.
As packaging the MSIX uses the
msix pub package, the project’s
must contain an appropriate
You must create an Azure AD directory from the Dev Center with global administrator permission.
The GitHub Action requires environment secrets from the partner center.
are visible on the Dev Center following the instructions for the
Windows Store Publish Action.
You also need the
SELLER_ID secret, which can be found in the Dev Center
under Account Settings > Organization Profile > Legal Info.
The application must already be present in the Microsoft Dev Center with at
least one complete submission, and
msstore init must be run once within
the repository before the Action can be performed. Once complete, running
msstore package .
in a GitHub Action packages the
application into an MSIX and uploads it to a new submission on the dev center.
The steps necessary for MSIX publishing resemble the following
- uses: microsoft/setup-msstore-cli@v1
- name: Configure the Microsoft Store CLI
run: msstore reconfigure --tenantId $ --clientId $ --clientSecret $ --sellerId $
- name: Install Dart dependencies
run: flutter pub get
- name: Create MSIX package
run: msstore package .
- name: Publish MSIX to the Microsoft Store
run: msstore publish -v
Updating the app’s version number
For apps published to the Microsoft Store, the version number must be set during the packaging process.
The default version number of the app is
For apps not published to the Microsoft Store, you
can set the app’s executable’s file and product versions.
The executable’s default file version is
and its default product version is
1.0.0+1. To update these,
navigate to the
pubspec.yaml file and update the
The build name is three numbers separated by dots,
followed by an optional build number that is separated
+. In the example above, the build name is
and the build number is
The build name becomes the first three numbers of the file and product versions, while the build number becomes the fourth number of the file and product versions.
Both the build name and number can be overridden in
flutter build windows by specifying
Add app icons
To update the icon of a Flutter Windows desktop application before packaging use the following instructions:
- In the Flutter project, navigate to windows\runner\resources.
- Replace the app_icon.ico with the desired icon.
- If the name of the icon is other than app_icon.ico, proceed to change the IDI_APP_ICON value in the windows\runner\Runner.rc file to point to the new path.
When packaging with the
msix pub package,
the logo path can also be configured inside the
To update the application image in the Store listing, navigate to the Store listing step of the submission and select Store logos. From there, you can upload the logo with the size of 300 x 300 pixels.
All uploaded images are retained for subsequent submissions.
Validating the application package
Before publication to the Microsoft Store, first validate the application package locally.
Windows App Certification Kit is a tool included in the Windows Software Development Kit (SDK).
To validate the application:
- Launch Windows App Cert Kit.
- Select the Flutter Windows desktop package (.msix, .msixbundle, etc.).
- Choose a destination for the test report.
The report might contain important warnings and information, even if the certification passes.