📦 Microsoft Store Publishing Guide

Publish Your Electron App
to Microsoft Store

A complete, step-by-step guide using TubeDesk as a real-world example — from Partner Center setup to certification.

App: TubeDesk
Format: MSIX / APPX
Framework: Electron + electron-builder
Publisher: youtube-desktop
1

Understanding the Requirements

What Microsoft Store expects before you submit anything

Microsoft Store accepts two fundamentally different app types. Choosing the wrong one is the most common mistake and will cause validation failures. For an Electron app like TubeDesk, the correct choice is always MSIX or PWA app.

App Type Package Format Code Signing For Electron?
MSIX or PWA app .appx / .msix Handled by Store ✓ Correct
EXE or MSI app .exe / .msi Must self-sign ✗ Wrong type
Common mistake: registering as EXE or MSI app

TubeDesk was initially registered in Partner Center as an "EXE or MSI app". This caused a code signing validation failure (Policy 10.2.9) because MSI packages must be self-signed with a trusted certificate. The fix is to delete the Win32 entry and create a new MSIX or PWA app — which accepts the APPX output from electron-builder and is signed by Microsoft during certification.

Key requirements for MSIX submission

RequirementDetailsStatus for TubeDesk
Microsoft Partner Center accountIndividual or company account at partner.microsoft.comActive
App name reservationMust be unique across the entire StoreTubeDesk reserved
APPX / MSIX packageBuilt on Windows via electron-builderBuilt via GitHub Actions
Package identity matchpublisher CN= and identityName must match Partner Center exactlyConfirmed
Privacy policy URLMust be a publicly reachable URLNeeds hosting
Store screenshotsMinimum 1 screenshot at 1366×768 or largerNeeds preparation
Age rating questionnaireCompleted in Partner CenterTodo
2

Partner Center Account Setup

Enroll and confirm your publisher identity

If you do not yet have a Partner Center account, go to partner.microsoft.com and enroll. Individual accounts cost a one-time fee of approximately $19 USD. Once enrolled, your account will have a fixed set of identity values that you will use in every app you publish.

TubeDesk — confirmed account identity

Publisher Display Name
youtube-desktop
Account Type
Individual
Windows Publisher ID
youtube-desktop
Windows Phone Publisher ID
f6d3ec94-333b-410b-8549-456a21f3fda4
Package Identity Publisher (CN=…)
CN=0A041C83-6229-4D05-83CD-8D8BF7D93CB5
ℹ️
The CN= value is account-level, not app-level

For individual accounts, the CN=... publisher value is the same for all apps you publish. You can find it at Partner Center → Account settings → Developer info under "Windows publisher ID".

3

Reserve Your App Name

Create the MSIX app entry in Partner Center

Before building anything, you must reserve your app name in Partner Center. This creates the app entry and generates the package identity values you will need for your build configuration. App names must be globally unique across the entire Microsoft Store.

1
Go to Apps and games → New product

Navigate to partner.microsoft.com/dashboard/apps-and-games and click New product.

2
Select "MSIX or PWA app"

This is critical. Do not choose "EXE or MSI app" for an Electron app built with electron-builder's appx target.

3
Check availability and reserve the name

Type your desired name and click Check availability. A green checkmark confirms the name is free. Click Reserve product name.

⚠️
Name availability — TubeDesk example

"TubeDesk for Windows" was unavailable in the Store. After testing alternatives, "TubeDesk" was available and successfully reserved. Always have 2–3 name alternatives ready before you start.

Name availability tips

Microsoft Store name uniqueness is global and case-insensitive. If your preferred name is taken, try shorter variants (e.g. "TubeDesk for Windows" → "TubeDesk"), add a geographic suffix, or use a completely different brand name. Once reserved, you have 3 months to submit the app or the reservation expires.

4

Get Your Package Identity Values

The exact values that must appear in your APPX manifest

After reserving the app name, Partner Center generates a unique package identity for your app. These values must match exactly in your package.json build configuration — any mismatch will cause the package to fail validation.

1
Open your app in Partner Center

Go to Apps and games and click on your newly created app.

2
Navigate to Product management → Product Identity

This page shows all the values you need for your package manifest.

3
Copy all three manifest values

You need Package/Identity/Name, Package/Identity/Publisher, and Package/Properties/PublisherDisplayName.

TubeDesk — confirmed Product Identity values

Package/Identity/Name
youtube-desktop.TubeDesk
Package/Properties/PublisherDisplayName
youtube-desktop
Package/Identity/Publisher
CN=0A041C83-6229-4D05-83CD-8D8BF7D93CB5
Package Family Name (PFN)
youtube-desktop.TubeDesk_w6dmn9syx3qsr
Store ID
9NBB6K4WP0ZM
5

Configure package.json

Align your electron-builder config with Partner Center identity

The build.appx section of package.json controls what goes into the AppxManifest.xml inside your package. Every field in this section must match the values from Partner Center's Product Identity page.

package.json — build.appx section (TubeDesk)
{
  "build": {
    "appId": "se.vinberg.tubedesk",
    "productName": "TubeDesk",           // must match reserved Store name

    "appx": {
      "applicationId":       "TubeDesk",
      "displayName":         "TubeDesk",           // Partner Center app name
      "identityName":        "youtube-desktop.TubeDesk", // Package/Identity/Name
      "publisher":           "CN=0A041C83-6229-4D05-83CD-8D8BF7D93CB5", // Package/Identity/Publisher
      "publisherDisplayName": "youtube-desktop",    // PublisherDisplayName
      "backgroundColor":     "#0f0f0f",
      "languages":           ["en-US"],
      "artifactName":        "TubeDesk-Store-${version}.${ext}"
    }
  }
}

Field mapping: package.json → AppxManifest.xml

package.json field AppxManifest.xml attribute Source
appx.identityNameIdentity Name=Partner Center → Product Identity
appx.publisherIdentity Publisher=Partner Center → Product Identity
appx.publisherDisplayNamePublisherDisplayNamePartner Center → Product Identity
appx.displayNameDisplayNameMust match reserved app name
appx.applicationIdApplication Id=Your choice — keep stable after first publish
appx.languagesResources Language=Use en-US for English-only apps
identityName mismatch — the most common build error

TubeDesk originally had identityName: "youtube-desktop.TubeDeskForWindows" but Partner Center generated youtube-desktop.TubeDesk after the name reservation. This mismatch would have caused Store validation to reject the package. Always copy the exact value from the Product Identity page after reserving the name.

6

Build the APPX Package

APPX must be built on Windows — use GitHub Actions or a local machine

Option A — GitHub Actions (recommended)

TubeDesk uses a build-store job in its GitHub Actions workflow that automatically builds the APPX on every push to main. The workflow is already configured in the repository.

.github/workflows/build-windows.yml — build-store job
build-store:
  runs-on: windows-latest
  timeout-minutes: 30

  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: "22.12.0"
        cache: npm
    - run: npm ci
    - run: npm run build:store
    - uses: actions/upload-artifact@v4
      with:
        name: TubeDesk-Windows-Store-Package
        path: |
          dist/*.appx
          dist/*.msix
        if-no-files-found: error

After the workflow completes, download the TubeDesk-Windows-Store-Package artifact from the Actions tab. It contains the .appx file ready for upload.

Option B — Local Windows machine

PowerShell
npm ci
npm run build:store
# Output: dist/TubeDesk-Store-0.4.7.appx
7

Verify the Package Manifest

Confirm identity values before uploading to Partner Center

Before uploading, it is good practice to inspect the generated AppxManifest.xml to confirm that all identity values match Partner Center. A mismatch at this stage will cause the submission to fail.

PowerShell — inspect AppxManifest.xml
# Extract the APPX and read the manifest
Remove-Item -Recurse -Force .\dist\appx-unpacked -ErrorAction SilentlyContinue
Expand-Archive -Path .\dist\*.appx -DestinationPath .\dist\appx-unpacked -Force
Get-Content .\dist\appx-unpacked\AppxManifest.xml | Select-String "Identity|Publisher|DisplayName"

Expected output for TubeDesk

AppxManifest.xml — key identity lines
Identity Name="youtube-desktop.TubeDesk"
         Publisher="CN=0A041C83-6229-4D05-83CD-8D8BF7D93CB5"
         Version="0.4.7.0"

DisplayName="TubeDesk"
PublisherDisplayName="youtube-desktop"
All values confirmed correct

The manifest values above match the Partner Center Product Identity page exactly. The package is ready for upload.

8

Upload & Complete Submission

Fill in all required Partner Center sections and submit

With the APPX package ready, you can now create a submission in Partner Center. A submission requires several sections to be completed before you can submit to the Store.

Packages
Store listing
Properties
Age ratings
Availability
Submit

Packages section

Upload the .appx file. Partner Center will run automated validation checks. For a correctly configured MSIX package, all checks should pass. Common checks include malware scanning, silent install verification, and identity validation.

Store listing section

Provide the app's public-facing description. All text must be in English if your package language is en-US. Below is the listing used for TubeDesk.

📝 TubeDesk — Store listing content
FieldContent
App nameTubeDesk
Short descriptionA clean, unofficial desktop wrapper for YouTube and YouTube Music on Windows.
Long descriptionTubeDesk gives YouTube and YouTube Music a dedicated desktop experience on Windows. It provides a polished app window, persistent sign-in, quick navigation, mini-player support, always-on-top mode, focus mode, system tray integration, mute controls, zoom controls, and keyboard shortcuts.
CategoryEntertainment or Music
Privacy policy URLPublic URL hosting PRIVACY.md (e.g. GitHub raw or GitHub Pages)
⚠️
Unofficial app disclaimer required

TubeDesk is not affiliated with Google or YouTube. The Store listing must include a clear disclaimer: "TubeDesk is an unofficial application and is not affiliated with, endorsed by, or approved by Google LLC or YouTube. YouTube and YouTube Music are trademarks of Google LLC."

Screenshots

At least one screenshot is required. Screenshots must be at least 1366×768 pixels. Any visible text in screenshots must be in English (matching the en-US package language). Recommended sizes are 1366×768, 1920×1080, or 2560×1440.

Age ratings

Complete the IARC questionnaire in Partner Center. For a YouTube wrapper with no user-generated content features, the rating will typically be Everyone (3+) or Everyone (7+) depending on your answers.

9

Certification & Publication

What happens after you click Submit

After submission, Microsoft runs both automated and manual certification checks. The typical timeline for a new app is 1–3 business days, though it can take up to 7 days in some cases.

Certification stageWhat is checkedTypical duration
Pre-processingPackage format, manifest validity, file integrityMinutes
Automated testingWindows App Certification Kit (WACK) tests, security scanHours
Content reviewStore listing text, screenshots, age rating accuracy1–2 days
PublicationApp goes live in the StoreAfter approval

If certification fails

1
Open the failure report in Partner Center

The report will identify the specific policy or test that failed.

2
Fix the issue in your code or configuration

Common failures include identity mismatches, missing privacy policy, or policy violations in the app description.

3
Rebuild and create a new submission

Bump the version in package.json, rebuild via GitHub Actions, and upload the new package in a new submission.

ℹ️
Store URL is available immediately after reservation

TubeDesk's Store URL is already live at apps.microsoft.com/detail/9NBB6K4WP0ZM — it will show the app once certification passes and the submission is published.

10

Final Checklist

Everything that must be in order before submitting TubeDesk

🔧 Configuration
📦 Build
📋 Partner Center Submission
🎉
You're almost there!

All code configuration is complete and pushed to GitHub. The remaining steps are uploading the built APPX to Partner Center and filling in the submission metadata. After submission, Microsoft will review and publish TubeDesk within 1–3 business days.