Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
You can publish Command Palette extensions to the Microsoft Store. The publishing process is similar to other apps or extensions. You create a new submission in Partner Center and upload your .msix package. Command Palette automatically discovers your extension when users install it from the Microsoft Store.
Registration as an individual developer is free. To get started, visit the Microsoft Store developer page to create your account and learn about the publishing process.
Note
MSIX packages explained MSIX is Microsoft's modern app packaging format that provides secure installation, automatic updates, and clean uninstallation. It replaces older formats like MSI and ensures your extension integrates properly with Windows security and deployment features.
Note
This guide provides basic Microsoft Store publishing steps specific to Command Palette extensions. For comprehensive Microsoft Store publishing guidance, including detailed submission requirements, certification processes, and best practices, see Publish Windows apps and games.
Prerequisites
Important
What is Partner Center? Partner Center is Microsoft's portal for app developers to manage Microsoft Store submissions, track analytics, and handle app certification.
- Register as a Windows app developer in Partner Center
- Create all required app icons and ensure they're properly sized (Create icons using Visual Studio's asset generation tool)
Tip
- List of icons and variations
- Make sure you generate the following files:
| File Name | Size |
|---|---|
| Square44x44Logo | 44×44 |
| SmallTile | 71×71 |
| Square150x150Logo | 150×150 |
| LargeTile | 310×310 |
| Wide310x150Logo | 310×150 |
| SplashScreen | 620×300 |
| StoreLogo | 50×50 |
Set up Microsoft Store
- Go to the Microsoft Partner Center.
- Under Workspaces, select Apps and games.
- Select + New Product.
- Select MSIX or PWA app.
- Create or reserve a product name.
- Start the submission and complete as much as you can until you reach the Packages section.
- In the left navigation, under Product Management, select Product identity.
- Copy the following values for use in the next steps:
Important
Copy these values from Partner Center:
- Package/Identity/Name:
_________________ - Package/Identity/Publisher:
_________________ - Package/Properties/PublisherDisplayName:
_________________
Use these exact values in the code examples below.
Prepare the extension
- In your IDE, open
<ExtensionName>\Package.appxmanifest. - Replace the values with the information you copied from Partner Center.
<Identity
Name="YOUR_PACKAGE_IDENTITY_NAME_HERE"
Publisher="YOUR_PACKAGE_IDENTITY_PUBLISHER_HERE"
Version="0.0.1.0" />
<Properties>
<DisplayName>YOUR_EXTENSION_DISPLAY_NAME</DisplayName> <!-- Replace with the reserved name from Partner Center -->
<PublisherDisplayName>YOUR_PUBLISHER_DISPLAY_NAME_HERE</PublisherDisplayName> <!-- Replace with your Package/Properties/PublisherDisplayName -->
<Logo>Assets\StoreLogo.png</Logo> <!-- Confirm that this image exist -->
</Properties>
- In your IDE, open
<ExtensionName>.csproj. - Locate a
PropertyGroupelement (with no conditions) and add the following properties by using your Partner Center values:
<AppxPackageIdentityName>YOUR_PACKAGE_IDENTITY_NAME_HERE</AppxPackageIdentityName>
<AppxPackagePublisher>YOUR_PACKAGE_IDENTITY_PUBLISHER_HERE</AppxPackagePublisher>
<AppxPackageVersion>0.0.1.0</AppxPackageVersion>
- Update the
ItemGroupfor images to get all of them by removing:
<ItemGroup>
<Content Include="Assets\SplashScreen.scale-200.png" />
<Content Include="Assets\LockScreenLogo.scale-200.png" />
<Content Include="Assets\Square150x150Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.altform-unplated_targetsize-32.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>
with
<ItemGroup>
<Content Include="Assets\**\*.png" />
</ItemGroup>
- Under the
<ItemGroup>you just updated, add:
<Target Name="PrepareAssets" BeforeTargets="BeforeBuild">
<!-- Copy scale-specific assets to base filenames expected by store validations -->
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\Square150x150Logo.scale-200.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\Square150x150Logo.png"
SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\Square44x44Logo.scale-200.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\SmallTile.png"
SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\Wide310x150Logo.scale-200.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\Wide310x150Logo.png"
SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\SplashScreen.scale-200.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\SplashScreen.png"
SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\Square150x150Logo.scale-200.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\LargeTile.png"
SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Assets\StoreLogo.scale-100.png"
DestinationFiles="$(MSBuildProjectDirectory)\Assets\StoreLogo.png"
SkipUnchangedFiles="true" />
</Target>
Build MSIX
In the terminal, move to the
<ExtensionName>\<ExtensionName>directory.Create an x64 build MSIX with the following command:
dotnet build --configuration Release -p:GenerateAppxPackageOnBuild=true -p:Platform=x64 -p:AppxPackageDir="AppPackages\x64\"Create an ARM64 build MSIX with the following command:
dotnet build --configuration Release -p:GenerateAppxPackageOnBuild=true -p:Platform=ARM64 -p:AppxPackageDir="AppPackages\ARM64\"
Note
You need the AppxPackageDir="AppPackages\x64\" setting so that the ARM64 build doesn't overwrite the x64 build.
Locate the MSIX files:
dir AppPackages -Recurse -Filter "*.msix"
Tip
If you don't see your MSIX files, try dir bin\ -Recurse -Filter "*.msix".
Note the locations of the
<ExtensionName>_<VersionNumber>_x64.msixand<ExtensionName>_<VersionNumber>_arm64.msixfiles.In your current location in the directory, create a new
bundle_mapping.txtfile and include the following content, updating the paths to your MSIX files:[Files] "AppPackages\<ExtensionName>_<VersionNumber>_x64_Test\<ExtensionName>_<VersionNumber>_x64.msix" "<ExtensionName>_<VersionNumber>_x64.msix" "AppPackages\t<ExtensionName>_<VersionNumber>_arm64_Test\<ExtensionName>_<VersionNumber>_arm64.msix" "<ExtensionName>_<VersionNumber>_arm64.msix"Create a bundle that combines both architectures into a single package for Microsoft Store submission. Update the
<ExtensionName>and<VersionNumber>:makeappx bundle /v /d bin\Release\ /p <ExtensionName>_<VersionNumber>_Bundle.msixbundleNote
If
makeappxisn't recognized, find it on your machine:$arch = switch ($env:PROCESSOR_ARCHITECTURE) { "AMD64" { "x64" } "x86" { "x86" } "ARM64" { "arm64" } default { "x64" } }; Write-Host "Detected: $arch"; $found = Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin\*\$arch\makeappx.exe" -ErrorAction SilentlyContinue | Sort-Object Name -Descending | Select-Object -First 1; if ($found) { Write-Host "SUCCESS: $($found.FullName)" -ForegroundColor Green; $found.FullName } else { Write-Host "Not found for $arch" -ForegroundColor Red }Then update the following script your machine's path:
& "<PATH>\makeappx.exe" bundle /f bundle_mapping.txt /p <ExtensionName>_<VersionNumber>_Bundle.msixbundleLocate the bundle:
dir *.msixbundleYou should find the file:
<ExtensionName>_<VersionNumber>_Bundle.msixbundle.
MSIX build validation
Verify your MSIX build is ready by checking:
- ✅ You updated
Package.appxmanifestwith correct Identity and Properties - ✅ You updated
<ExtensionName>.csprojwith AppxPackage properties - ✅ Both x64 and ARM64 MSIX files were built successfully
- ✅ The
bundle_mapping.txtfile contains correct paths to both MSIX files - ✅ The
.msixbundlefile was created without errors - ✅ You can locate the final bundle file
If any items are missing or failed, review the build commands and check for error messages before continuing.
Microsoft Store submission
- Go to the Microsoft Partner Center and open your newly created extension project.
- In Packages, upload the created MSIX bundle.
- Complete the rest of the submission. The following suggestions can help you:
- In Languages supported in packages, under your supported language (for example, English (United States)), in Description, make sure to include
<ExtensionName> integrates with the Windows Command Palette to... - In the left navigation, locate Supplemental info and select Additional Testing Information. Add instructions about needing PowerToys and Command Palette. Here's an example.
- In Languages supported in packages, under your supported language (for example, English (United States)), in Description, make sure to include
- Submit your extension to the store.
After submission, Microsoft reviews your extension for certification. Monitor your submission status in Partner Center and check for email notifications about approval. Once approved, your extension is available in the Microsoft Store within a few hours.
Related content
Windows developer