diff --git a/.config/configuration.vsEnterprise.winget b/.config/configuration.vsEnterprise.winget index 08c9983562..da062e121a 100644 --- a/.config/configuration.vsEnterprise.winget +++ b/.config/configuration.vsEnterprise.winget @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 -# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#compiling-powertoys +# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings @@ -13,11 +13,11 @@ properties: - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: - description: Install Visual Studio 2022 Enterprise (Any edition will work) + description: Install Visual Studio 2026 Enterprise (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: - id: Microsoft.VisualStudio.2022.Enterprise + id: Microsoft.VisualStudio.Enterprise source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: @@ -29,7 +29,7 @@ properties: securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Enterprise - channelId: VisualStudio.17.Release + channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 diff --git a/.config/configuration.vsProfessional.winget b/.config/configuration.vsProfessional.winget index 4d7e4a31c3..93eabc621d 100644 --- a/.config/configuration.vsProfessional.winget +++ b/.config/configuration.vsProfessional.winget @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 -# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#compiling-powertoys +# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings @@ -13,11 +13,11 @@ properties: - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: - description: Install Visual Studio 2022 Professional (Any edition will work) + description: Install Visual Studio 2026 Professional (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: - id: Microsoft.VisualStudio.2022.Professional + id: Microsoft.VisualStudio.Professional source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: @@ -29,7 +29,7 @@ properties: securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Professional - channelId: VisualStudio.17.Release + channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 diff --git a/.config/configuration.winget b/.config/configuration.winget index 2016dcdc33..03aaf55e36 100644 --- a/.config/configuration.winget +++ b/.config/configuration.winget @@ -1,5 +1,5 @@ # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 -# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#compiling-powertoys +# Reference: https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md#getting-started properties: resources: - resource: Microsoft.Windows.Settings/WindowsSettings @@ -13,11 +13,11 @@ properties: - resource: Microsoft.WinGet.DSC/WinGetPackage id: vsPackage directives: - description: Install Visual Studio 2022 Community (Any edition will work) + description: Install Visual Studio 2026 Community (Any edition will work) # Requires elevation for the set operation securityContext: elevated settings: - id: Microsoft.VisualStudio.2022.Community + id: Microsoft.VisualStudio.Community source: winget - resource: Microsoft.VisualStudio.DSC/VSComponents dependsOn: @@ -29,7 +29,7 @@ properties: securityContext: elevated settings: productId: Microsoft.VisualStudio.Product.Community - channelId: VisualStudio.17.Release + channelId: VisualStudio.18.Release vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig' configurationVersion: 0.2.0 diff --git a/doc/devdocs/development/new-powertoy.md b/doc/devdocs/development/new-powertoy.md index 1e0f7bccfa..33a2cd63f0 100644 --- a/doc/devdocs/development/new-powertoy.md +++ b/doc/devdocs/development/new-powertoy.md @@ -12,22 +12,11 @@ A PowerToy module is a self-contained utility integrated into the PowerToys ecos ### Requirements -- [Visual Studio 2026](https://visualstudio.microsoft.com/downloads/) and the following workloads/individual components: - - Desktop Development with C++ - - WinUI application development - - .NET desktop development - - Windows 10 SDK (10.0.22621.0) - - Windows 11 SDK (10.0.26100.3916) -- .NET 8 SDK -- Fork the [PowerToys repository](https://github.com/microsoft/PowerToys/tree/main) locally -- [Validate that you are able to build and run](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/development/debugging.md) `PowerToys.slnx`. +Follow the [Getting Started](../readme.md#getting-started) guide to set up your development environment, then [validate that you are able to build and run](debugging.md) `PowerToys.slnx`. Optional: - [WiX v5 toolset](https://github.com/microsoft/PowerToys/tree/main) for the installer -> [!NOTE] -> To ensure all the correct VS Workloads are installed, use [the WinGet configuration files](https://github.com/microsoft/PowerToys/tree/e13d6a78aafbcf32a4bb5f8581d041e1d057c3f1/.config) in the project repository. (Use the one that matches your VS distribution. ie: VS Community would use `configuration.winget`) - ### Folder structure ``` diff --git a/doc/devdocs/readme.md b/doc/devdocs/readme.md index fdec742d7b..e7c96c7776 100644 --- a/doc/devdocs/readme.md +++ b/doc/devdocs/readme.md @@ -7,10 +7,21 @@ Welcome to the PowerToys developer documentation. This documentation provides in ### Prerequisites 1. Windows 10 April 2018 Update (version 1803) or newer -1. Visual Studio Community/Professional/Enterprise 2022 17.4 or newer, or Visual Studio 2026 -1. A local clone of the PowerToys repository +1. [Visual Studio 2026](https://visualstudio.microsoft.com/downloads/) (recommended) or Visual Studio 2022 17.4+ with the following workloads/components: + - Desktop Development with C++ + - WinUI application development + - .NET desktop development + - Windows 10 SDK (10.0.22621.0) + - Windows 11 SDK (10.0.26100.3916) +1. .NET 8 SDK 1. Enable long paths in Windows (see [Enable Long Paths](https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation#enabling-long-paths-in-windows-10-version-1607-and-later) for details) +> **Tip:** You can install Visual Studio with all required workloads automatically using the [WinGet configuration files](https://github.com/microsoft/PowerToys/tree/main/.config) in the repository: +> ```powershell +> winget configure .config\configuration.winget +> ``` +> Pick the file that matches your VS edition (e.g., `configuration.vsProfessional.winget` or `configuration.vsEnterprise.winget`). + ### Fork, Clone, and Set Up 1. Fork the repo on GitHub if you haven't already @@ -37,7 +48,7 @@ Run with `-Help` to see all available options. 1. Open the `PowerToys.slnx` file. 1. If you see a dialog that says `install extra components` in the solution explorer pane, click `install` -Alternatively, import the `.vsconfig` file from the repository root using Visual Studio Installer to install all required workloads. You can also use the [WinGet configuration files](https://github.com/microsoft/PowerToys/tree/main/.config) in the repository (pick the one that matches your VS distribution). +Alternatively, import the `.vsconfig` file from the repository root using Visual Studio Installer to install all required workloads. #### Initialize submodules @@ -81,6 +92,10 @@ You can also build from the command line using the provided scripts in `tools\bu See [Debugging](development/debugging.md) for detailed debugging techniques, including Visual Studio setup, attaching to child processes, and troubleshooting build errors. +### Creating a New PowerToy + +See [Creating a New PowerToy](development/new-powertoy.md) for an end-to-end guide covering module architecture, settings integration, installer packaging, and testing. + ## Development Guidelines - [Coding Guidelines](development/guidelines.md) - Development guidelines and best practices @@ -89,7 +104,6 @@ See [Debugging](development/debugging.md) for detailed debugging techniques, inc - [Localization](development/localization.md) - How to support multiple languages - [UI Testing](development/ui-tests.md) - How to write UI tests for PowerToys - [Developing with VS Code](development/dev-with-vscode.md) - Build, debug, and contribute using VS Code -- [Creating a New PowerToy](development/new-powertoy.md) - End-to-end guide for building a new module ## Rules