mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-24 09:07:59 +08:00
602a3ff090
* 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
2.6 KiB
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 thePluginID
. The plugin id has to be the same as the one in theplugin.json
file.
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.
- Add the resource folder to
21247c0bb0/installer/PowerToysSetup/Product.wxs (L825)
- Add the resource files under the section
21247c0bb0/installer/PowerToysSetup/Product.wxs (L882)