Files
PowerToys/doc/devdocs/modules/launcher/new-plugin-checklist.md
Clint Rutkas 12098cb17f Moving Version to Directory.Build.props (#34055)
<!-- Enter a brief description/summary of your PR here. What does it
fix/what does it change/how was it tested (even manually, if necessary)?
-->
## Summary of the Pull Request

In prep for WinAppSdk, trying to consolidate items. Version.prop is one
of the first items.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] **Closes:** #xxx
- [ ] **Communication:** I've discussed this with core contributors
already. If work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end user facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx

<!-- Provide a more detailed description of the PR, other things fixed
or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments

<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed

---------

Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
2024-08-05 06:32:05 -07:00

2.8 KiB

New plugin checklist

  • The plugin is a project under modules\launcher\Plugins
  • Microsoft plugin project name pattern: Microsoft.PowerToys.Run.Plugin.{PluginName}
  • Community plugin project name pattern: Community.PowerToys.Run.Plugin.{PluginName}
  • The plugin target framework should be net8.0-windows
  • If the plugin uses any 3rd party dependencies the project file should import DynamicPlugin.props
  • The plugin has to contain a plugin.json file of the following format in its root folder:
{
  "ID": string, // GUID string
  "ActionKeyword": string, // Direct activation phrase
  "IsGlobal": boolean,
  "Name": string, // Has to be unique, same as 'PluginName' in the project name pattern  
  "Author": string,
  "Version": "1.0.0", // For future compatibility
  "Language": "csharp", // So far we support only csharp 
  "Website": "https://aka.ms/powertoys",
  "ExecuteFileName": string, // Should be {Type}.PowerToys.Run.Plugin.{PluginName}.dll
  "IcoPathDark": string, // Path to dark theme icon. The path is relative to the root plugin folder 
  "IcoPathLight": string // Path to light theme icon. The path is relative to the root plugin folder
  "DynamicLoading": bool // Sets whether the plugin should dynamically load any dependencies isolated from the core application.  
}
  • Make sure your Main class contains a public, static string property for the PluginID. The plugin id has to be the same as the one in the plugin.jsonfile.
public static string PluginID => "xxxxxxx"; // The part xxxxxxx stands for the plugin ID.
  • Do not use plugin name or PowerToys as prefixes for entities inside of the plugin project
  • The plugin has to have Unit tests. Use MSTest framework
  • Plugin's output code and assets have to be included in the installer Product.wxs
  • Test the plugin with a local build. Build the installer, install, check that the plugin works as expected
  • All plugin's binaries have to be included in the signed build pipeline.user.windows.yml
  • The plugin target framework has to be net8.0-windows. All dependencies should be compatible with .NET 8.

Some localization steps can only be done after the first pass by the localization team to provide the localized resources. In the PR that adds a new plugin, reference a new issue to track the work for fully enabling localization for the new plugin.