Publishing Desktop Applications to Microsoft Store
Microsoft Store supports several application formats: traditional Win32/WPF, UWP, and packaged MSIX applications. Electron and other frameworks are published via MSIX — this allows entering the Store without rewriting to WinRT.
Publication formats
| Format | Audience | Features |
|---|---|---|
| MSIX (packaged Win32) | All Windows 10/11 | Full Win32 API access |
| UWP | Store versions only | Sandbox, limited file system access |
| PWA | Via Edge/Store | Web applications only |
Creating MSIX from Electron application
electron-builder can build MSIX directly:
# electron-builder.yml
win:
target:
- target: nsis
- target: msix
icon: build/icon.ico
msix:
applicationId: com.company.AppName
backgroundColor: "#transparent"
displayName: "App Name"
publisherDisplayName: "Company Name"
identityName: "CompanyName.AppName"
npx electron-builder --win msix
For publication to the Store, you need a certificate from a Trusted CA (DigiCert, GlobalSign) or a certificate from Partner Center. Self-signed certificate will not work.
Partner Center registration
- Register developer account — $19 one-time (individual) or $99 (company)
- Create new application: Partner Center → Apps → New product
- Reserve application name
- Fill in metadata: description, screenshots (minimum 3, resolution from 1366×768), category, age rating
Package requirements
# Check package before upload
# Windows App Certification Kit (WACK)
& "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcert.exe" `
test -apppackagepath .\AppName.msix -reportoutputpath .\report.xml
# Or via PowerShell
Get-AppxPackage -Name "CompanyName.AppName"
WACK checks: presence of valid manifest, absence of prohibited APIs, correct icons (mandatory sizes 44×44, 150×150, 310×310 in PNG).
AppxManifest.xml
electron-builder generates manifest automatically, but sometimes manual edits are needed:
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
<Identity Name="CompanyName.AppName"
Publisher="CN=Company Name, O=Company Name, C=US"
Version="1.0.0.0" />
<Properties>
<DisplayName>App Name</DisplayName>
<PublisherDisplayName>Company Name</PublisherDisplayName>
<Logo>assets\StoreLogo.png</Logo>
</Properties>
<Capabilities>
<rescap:Capability Name="runFullTrust" /> <!-- For Win32 applications -->
<Capability Name="internetClient" />
</Capabilities>
<Applications>
<Application Id="App" Executable="AppName.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName="App Name"
Description="App description"
BackgroundColor="transparent"
Square150x150Logo="assets\Square150x150Logo.png"
Square44x44Logo="assets\Square44x44Logo.png">
</uap:VisualElements>
</Application>
</Applications>
</Package>
GitHub Actions for automatic publication
- name: Build MSIX
run: npx electron-builder --win msix
env:
CSC_LINK: ${{ secrets.WIN_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTIFICATE_PWD }}
- name: Upload to Partner Center
uses: microsoft/store-submission-action@v1
with:
seller-id: ${{ secrets.MS_SELLER_ID }}
product-id: ${{ secrets.MS_PRODUCT_ID }}
package-path: dist/AppName.msix
tenant-id: ${{ secrets.MS_TENANT_ID }}
client-id: ${{ secrets.MS_CLIENT_ID }}
client-secret: ${{ secrets.MS_CLIENT_SECRET }}
Publication goes through Microsoft moderation (usually 1–3 business days). Updates proceed faster than first publication.
Timeline
Preparation of MSIX, passing WACK, and first publication to Microsoft Store: 3–5 business days.







