Skip to content

Commit ba30275

Browse files
committed
changes based on Alvin's review via Learn Authoring Assistant
1 parent 4411cc7 commit ba30275

1 file changed

Lines changed: 35 additions & 36 deletions

File tree

hub/powertoys/command-palette/publish-extension.md

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ no-loc: [PowerToys, Windows, Insider]
99

1010
# Publish Command Palette extensions
1111

12-
This article provides instructions for Command Palette extensions that were created using the Command Palette template.
12+
This article provides instructions for Command Palette extensions that you create with the Command Palette template.
1313

1414
You can publish your Command Palette extension through the Microsoft Store, WinGet, or both. This article includes instructions for preparing and publishing your extension to both distribution platforms.
1515

1616
## Microsoft Store
1717

18-
Command Palette extensions can be published 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.
18+
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.
1919

2020
> [!NOTE]
2121
> **MSIX packages explained**
@@ -61,11 +61,11 @@ Publishing to the Microsoft Store provides your extension with wide reach across
6161
6262
### Set up Microsoft Store
6363

64-
1. Navigate to the [Microsoft Partner Center](https://partner.microsoft.com/dashboard/home).
64+
1. Go to the [Microsoft Partner Center](https://partner.microsoft.com/dashboard/home).
6565
1. Under **Workspaces**, select **Apps and games**.
6666
1. Select **+ New Product**.
6767
1. Select **MSIX or PWA app**.
68-
1. Create a name or reserve a product name.
68+
1. Create or reserve a product name.
6969
1. Start the submission and complete as much as you can until you reach the **Packages** section.
7070
1. In the left navigation, under **Product Management**, select **Product identity**.
7171
1. Copy the following values for use in the next steps:
@@ -77,12 +77,12 @@ Publishing to the Microsoft Store provides your extension with wide reach across
7777
> - **Package/Identity/Publisher**: `_________________`
7878
> - **Package/Properties/PublisherDisplayName**: `_________________`
7979
>
80-
> You'll use these exact values in the code examples below.
80+
> Use these exact values in the code examples below.
8181
8282
### Prepare the extension
8383

8484
1. In your IDE, open `<ExtensionName>\Package.appxmanifest`.
85-
1. Replace the values with the information you copied from Partner Center:
85+
1. Replace the values with the information you copied from Partner Center.
8686

8787
```xml
8888
<Identity
@@ -98,15 +98,15 @@ Publishing to the Microsoft Store provides your extension with wide reach across
9898
```
9999

100100
1. In your IDE, open `<ExtensionName>.csproj`.
101-
1. Locate a `PropertyGroup` element (with no conditions) and add the following properties using your Partner Center values:
101+
1. Locate a `PropertyGroup` element (with no conditions) and add the following properties by using your Partner Center values:
102102

103103
```xml
104104
<AppxPackageIdentityName>YOUR_PACKAGE_IDENTITY_NAME_HERE</AppxPackageIdentityName>
105105
<AppxPackagePublisher>YOUR_PACKAGE_IDENTITY_PUBLISHER_HERE</AppxPackagePublisher>
106106
<AppxPackageVersion>0.0.1.0</AppxPackageVersion>
107107
```
108108

109-
1. Update the ItemGroup for images to get all of them by removing:
109+
1. Update the `ItemGroup` for images to get all of them by removing:
110110

111111
```xml
112112
<ItemGroup>
@@ -170,7 +170,7 @@ with
170170
```
171171

172172
> [!NOTE]
173-
> The `AppxPackageDir="AppPackages\x64\"` is needed so that the ARM64 build doesn't overwrite the x64 build
173+
> You need the `AppxPackageDir="AppPackages\x64\"` setting so that the ARM64 build doesn't overwrite the x64 build.
174174
175175
1. Locate the MSIX files:
176176

@@ -179,7 +179,7 @@ with
179179
```
180180

181181
> [!TIP]
182-
> If you do not see your MSIX files, try `dir bin\ -Recurse -Filter "*.msix"`
182+
> If you don't see your MSIX files, try `dir bin\ -Recurse -Filter "*.msix"`.
183183
184184
1. Note the locations of the `<ExtensionName>_<VersionNumber>_x64.msix` and `<ExtensionName>_<VersionNumber>_arm64.msix` files.
185185

@@ -222,8 +222,8 @@ with
222222

223223
Verify your MSIX build is ready by checking:
224224

225-
- ✅ You've updated `Package.appxmanifest` with correct Identity and Properties
226-
- ✅ You've updated `<ExtensionName>.csproj` with AppxPackage properties
225+
- ✅ You updated `Package.appxmanifest` with correct Identity and Properties
226+
- ✅ You updated `<ExtensionName>.csproj` with AppxPackage properties
227227
- ✅ Both x64 and ARM64 MSIX files were built successfully
228228
- ✅ The `bundle_mapping.txt` file contains correct paths to both MSIX files
229229
- ✅ The `.msixbundle` file was created without errors
@@ -233,22 +233,22 @@ If any items are missing or failed, review the build commands and check for erro
233233

234234
### Microsoft Store submission
235235

236-
1. Navigate to the [Microsoft Partner Center](https://partner.microsoft.com/dashboard/home) and open your newly created extension project.
236+
1. Go to the [Microsoft Partner Center](https://partner.microsoft.com/dashboard/home) and open your newly created extension project.
237237
1. In **Packages**, upload the created MSIX bundle.
238238
1. Complete the rest of the submission. The following suggestions can help you:
239239
1. 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...`
240-
1. In the left navigation, locate **Supplemental info** and select **Additional Testing Information**. Add instructions about needing Powertoys and Command Palette. Here's an [example](https://github.com/chatasweetie/CmdPalExtensions/blob/main/microsoftStoreResources/TesterInstructions.txt).
240+
1. In the left navigation, locate **Supplemental info** and select **Additional Testing Information**. Add instructions about needing PowerToys and Command Palette. Here's an [example](https://github.com/chatasweetie/CmdPalExtensions/blob/main/microsoftStoreResources/TesterInstructions.txt).
241241
1. Submit your extension to the store.
242242

243-
After submission, Microsoft will review your extension for certification. Monitor your submission status in Partner Center and check for email notifications about approval. Once approved, your extension will be available in the Microsoft Store within a few hours.
243+
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.
244244

245245
## WinGet
246246

247-
Publishing packages to WinGet is the recommended way to share your extensions with users. Extension packages that are listed on WinGet can be discovered and installed directly from Command Palette.
247+
To share your extensions with users, publish your packages to WinGet. Users can discover and install extension packages listed on WinGet directly from Command Palette.
248248

249249
> [!TIP]
250250
> **What is WinGet?**
251-
> WinGet is Microsoft's open-source command-line package manager for Windows. It's similar to package managers like npm or pip, but for Windows applications. Publishing to WinGet allows users to install your extension with a simple `winget install` command and enables automatic discovery within Command Palette.
251+
> WinGet is Microsoft's open-source command-line package manager for Windows. It's similar to package managers like npm or pip, but for Windows applications. When you publish to WinGet, users can install your extension with a simple `winget install` command. It also enables automatic discovery within Command Palette.
252252
253253
Before submitting your manifest to WinGet, check the following two requirements:
254254

@@ -273,7 +273,7 @@ Dependencies:
273273

274274
## Guide to WinGet publishing
275275

276-
Publishing to WinGet is the recommended distribution method for Command Palette extensions as it enables automatic discovery and installation directly within Command Palette. This guide covers the majority of the WinGet publication process, from preparing your project and creating build scripts to setting up GitHub Actions automation and submitting your first package manifest. You'll learn how to create installer packages, configure automated builds, and navigate the WinGet submission workflow to make your extension easily discoverable and installable for users.
276+
Publishing to WinGet is the recommended distribution method for Command Palette extensions. It enables automatic discovery and installation directly within Command Palette. This guide covers most of the WinGet publication process, from preparing your project and creating build scripts to setting up GitHub Actions automation and submitting your first package manifest. You'll learn how to create installer packages, configure automated builds, and navigate the WinGet submission workflow to make your extension easily discoverable and installable for users.
277277

278278
### Requirements
279279

@@ -296,7 +296,7 @@ Publishing to WinGet is the recommended distribution method for Command Palette
296296
1. Locate `CLSID`
297297
1. Open the extension's main `.cs` file (for example, `<ExtensionName>.cs`).
298298
1. Look for the `[Guid("...")]` attribute above the class declaration.
299-
1. This GUID is your CLSID - Keep note of this because it will be used in th next step
299+
1. This GUID is your CLSID - Keep note of this because it will be used in the next step
300300

301301
```csharp
302302
// Example from <ExtensionName>.cs
@@ -308,8 +308,8 @@ Publishing to WinGet is the recommended distribution method for Command Palette
308308
> **What is a CLSID?**
309309
> A CLSID (Class Identifier) is a unique identifier that Windows uses to identify COM (Component Object Model) components. Each Command Palette extension needs a unique CLSID so Windows can properly register and load your extension. This GUID is automatically generated when you create your extension project.
310310

311-
1. Make sure that your in the directory that contains your `<ExtensionName>.cs` for the next two files being created.
312-
1. Create a `setup-template.iss` file, for a simple extension you can copy and customize the following:
311+
1. Make sure that you're in the directory that contains your `<ExtensionName>.cs` for the next two files being created.
312+
1. Create a `setup-template.iss` file. For a simple extension, you can copy and customize the following template:
313313

314314
**Template: `setup-template.iss`**
315315

@@ -352,7 +352,7 @@ Root: HKCU; Subkey: "SOFTWARE\Classes\CLSID\{{CLSID-HERE}}"; ValueData: "EXTENSI
352352
Root: HKCU; Subkey: "SOFTWARE\Classes\CLSID\{{CLSID-HERE}}\LocalServer32"; ValueData: "{app}\EXTENSION_NAME.exe -RegisterProcessAsComServer"
353353
```
354354

355-
1. Create a `build-exe.ps1` file, for a simple extension you can copy and customize the following:
355+
1. Create a `build-exe.ps1` file. For a simple extension, you can copy and customize the following template:
356356

357357
**Template: `build-exe.ps1`**
358358

@@ -469,7 +469,7 @@ Write-Host "`n🎉 Build completed successfully!" -ForegroundColor Green
469469
```
470470

471471
> [!TIP]
472-
> You can test this locally by having [.NET 9](https://dotnet.microsoft.com/download/dotnet/9.0) and [Inno Setup](https://jrsoftware.org/isdl.php) installed.
472+
> You can test this process locally by installing [.NET 9](https://dotnet.microsoft.com/download/dotnet/9.0) and [Inno Setup](https://jrsoftware.org/isdl.php) installed.
473473
>
474474
> ```powershell
475475
> # verify .Net 9 is installed
@@ -478,7 +478,7 @@ Write-Host "`n🎉 Build completed successfully!" -ForegroundColor Green
478478
> # verify Inno Setup is installed
479479
> Test-Path "${env:ProgramFiles(x86)}\Inno Setup 6\iscc.exe"
480480
>
481-
> # build installer, this will take a while
481+
> # build installer, this step takes a while
482482
> .\build-exe.ps1 -Version "0.0.1.0"
483483
>
484484
> # verify that <ExtensionName>-Setup-0.0.1.0.exe is listed
@@ -491,10 +491,10 @@ Write-Host "`n🎉 Build completed successfully!" -ForegroundColor Green
491491
> **What are GitHub Actions?**
492492
> GitHub Actions is a CI/CD platform that automates software workflows directly in your GitHub repository. For Command Palette extensions, GitHub Actions can automatically build your installer whenever you push code changes, create releases, and even submit updates to WinGet - eliminating manual build steps and ensuring consistent, reproducible builds.
493493
494-
Now we'll set up GitHub Actions to automate the build and release process:
494+
Now set up GitHub Actions to automate the build and release process:
495495
496-
1. `cd ..` up a directory, you should be in the directory that contains `<ExtensionName>.sln`
497-
1. create a new repo:
496+
1. Run `cd ..` to go up a directory. You should be in the directory that contains `<ExtensionName>.sln`.
497+
1. Create a new repo.
498498
499499
```powershell
500500
mkdir .github/workflows
@@ -633,17 +633,17 @@ jobs:
633633
shell: pwsh
634634
```
635635
636-
This file is a Github Action scrip that does the following:
636+
This file is a GitHub Action script that does the following tasks:
637637
638638
- Setup (.NET, Inno Setup)
639639
- Get Version (simple version detection)
640640
- Build App (straightforward dotnet publish)
641641
- Create Installer (simple Inno Setup call)
642642
- Upload Results (clear artifact + release steps)
643643
644-
1. Update the placeholders in `release-extension.yml`:
645-
1. git commit the 3 new files: `build-exe.ps1`, `setup.iss`,`release-extension.yml`
646-
1. Push changes to Github.
644+
1. Update the placeholders in `release-extension.yml`.
645+
1. Commit the three new files: `build-exe.ps1`, `setup.iss`, and `release-extension.yml`.
646+
1. Push changes to GitHub.
647647
1. Trigger the GitHub Action:
648648

649649
```powershell
@@ -663,8 +663,7 @@ Verify your GitHub Actions setup by checking:
663663
### WinGet submission
664664

665665
> [!IMPORTANT]
666-
> The first submission must be manual. `wingetcreate new` requires interactive input for package details
667-
666+
> You must manually submit the first version. `wingetcreate new` requires interactive input for package details
668667

669668
#### Manual first submission
670669

@@ -678,22 +677,22 @@ Verify your GitHub Actions setup by checking:
678677
> [!TIP]
679678
> To get the GitHub Release URL: Go to your release page, under **Assets**, right-click the `.exe` file and select "Copy link address".
680679

681-
1. When `wingetcreate` prompts you, press **Enter** if the suggested response is pulled from the EXE file, for example: `PackageIdentifier`, `PackageVersion`, `Publisher`, etc.
680+
1. When `wingetcreate` prompts you, press **Enter** if the suggested response is pulled from the EXE file, for example: `PackageIdentifier`, `PackageVersion`, `Publisher`, and so on.
682681
- **For optional modification questions**, answer **No**:
683682
- "Would you like to modify the optional default locale fields?" → **No**
684683
- "Would you like to modify the optional installer fields?" → **No**
685684
- "Would you like to make changes to this manifest?" → **No**
686685
- **Final submission question**:
687686
- "Would you like to submit your manifest to the Windows Package Manager repository?" → **Yes**
688687

689-
After answering "Yes" to submit:
688+
After you answer "Yes" to submit:
690689

691690
- `wingetcreate` forks the microsoft/winget-pkgs repository to your GitHub account
692691
- Creates a new branch with your package manifests
693692
- Opens a pull request automatically
694693
- Provides the PR URL for tracking
695694

696-
After submitting your pull request, the WinGet team will review your manifest for compliance and accuracy. You can monitor the PR status on GitHub and respond to any feedback from reviewers. Once approved and merged, your extension will be available through WinGet within a few hours.
695+
After you submit your pull request, the WinGet team reviews your manifest for compliance and accuracy. You can monitor the PR status on GitHub and respond to any feedback from reviewers. Once approved and merged, your extension will be available through WinGet within a few hours.
697696

698697
#### WinGet updates via GitHub Actions
699698

0 commit comments

Comments
 (0)