mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-15 20:19:17 +08:00
c098cfb193
* Updated the Wox.Plugin to correctly load and resolve plugin dependecies * Included new plugin.props in all plugins to enable dynamic dependecy loading * Updated dev docs to include new plugin.props in plugins * Fixed double dependecy loading bug * - Updated to only use dynamic loading when explicitly set by the plugin. - Removed no longer required props from default plugins which do not need dynamic loading. - Updated dev-docs to align with latest changes * Removed line spacing changes in plugins csproj * fixed spelling * csproj cleanup * removed unnecessary null checking --------- Co-authored-by: Corey Hayward <coreyh@tigereyeconsulting.com>
2.9 KiB
2.9 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>
- If the plugin uses any 3rd party dependencies the project file should import
DynamicPlugin.props
- 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
"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 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)