PowerToys/doc/devdocs/modules/launcher/new-plugin-checklist.md
Heiko 602a3ff090
[PTRun][Enterprise]GPO for plugin enabled state ()
* try code for gpo with pluginID param

* fix typo

* fixes

* update admx

* Add second policy to admx

* spelling fixes

* admx clean up

* add gpo code

* small fixes

* fixes

* fix cast

* update settings code

* bug fixes

* fix plugins disabled warning

* Info bar in settings

* settings ui fixes

* code clean up

* fix spelling

* fix spelling

* code optimization

* changes

* fix code

* switch to char*

* update comments

* validate plugin ID

* spell fixes

* spell fixes

* fix IPlugin interface

* Update Directory.Packages.props

hopefully fixes unit tests

* revert change of nuget pkg

* fixes

* fix spell check

* add todo comment

* improve gpo.h

* improve gpo.h

* update gpo.h

* clean up code in gpo.h

* fix build

* try to fix build

* xaml fix

* Fix getting string value from the registry

* communicate policy state suing settings.json

* various changes and gpo docs

* spell fixes

* PT Run: Policy handling

* spell fix

* fix logging

* fix admx revision

* revision fix 2

* review feedback 1

* review feedback 2

* dev docs update

* fix typo
2023-10-11 15:37:15 +01:00

2.6 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 project file should import Version.props and specify <Version>$(Version).0</Version>
  • Make sure *.csproj specify only x64 platform target
  • 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 
}
  • 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 .NET Core 3.1. All dependencies have to have .NET 5 version

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.