Once you've discussed your proposed feature/fix/etc. with a team member, and an approach or a spec has been written and approved, it's time to start development:
In progress
label to the issue, if not already present. Also add a Cost-Small/Medium/Large
estimate and make sure all appropriate labels are set.Squash and merge
option to merge a PR. If you don't want to squash it because there are logically different commits, use Rebase and merge
.Resolution-Fix-Committed
label, remove the In progress
label and if the issue is assigned to a project, move the item to the Done
status.PowerToys.sln
file.install extra components
in the solution explorer pane, click install
We have submodules that need to be initialized before you can compile most parts of PowerToys. This should be a one-time step.
git submodule update --init --recursive
PowerToys.sln
in Visual Studio.Solutions Configuration
drop-down menu select Release
or Debug
.Build
menu choose Build Solution
, or press Control+Shift+b on your keyboard.x64\Release\
.
x64\Release\PowerToys.exe
directly without installing PowerToys, but some modules (i.e. PowerRename, ImageResizer, File Explorer extension etc.) will not be available unless you also build the installer and install PowerToys.Our installer is two parts, an EXE and an MSI. The EXE (Bootstrapper) contains the MSI and handles more complex installation logic.
The installer can only be compiled in Release
mode; steps 1 and 2 must be performed before the MSI can be compiled.
PowerToys.sln
. Instructions are listed above.BugReportTool.sln
tool. Path from root: tools\BugReportTool\BugReportTool.sln
(details listed below)StylesReportTool.sln
tool. Path from root: tools\StylesReportTool\StylesReportTool.sln
(details listed below)PowerToysSetup.sln
Path from root: installer\PowerToysSetup.sln
(details listed below)wix.targets
to C:\Program Files (x86)\WiX Toolset v3.14
.Developer Command Prompt for VS 2022
nuget.exe
is in your %path%
nuget restore .\tools\BugReportTool\BugReportTool.sln
msbuild -p:Platform=x64 -p:Configuration=Release .\tools\BugReportTool\BugReportTool.sln
nuget restore .\tools\StylesReportTool\StylesReportTool.sln
msbuild -p:Platform=x64 -p:Configuration=Release .\tools\StylesReportTool\StylesReportTool.sln
If you prefer, you can alternatively build prerequisite projects for the installer using the Visual Studio UI.
tools\BugReportTool\BugReportTool.sln
Solutions Configuration
drop-down menu select Release
Build
menu, choose Build Solution
.tools\StylesReportTool\StylesReportTool.sln
Solutions Configuration
drop-down menu select Release
Build
menu, choose Build Solution
.installer\PowerToysSetup.sln
Solutions Configuration
drop-down menu select Release
Build
menu choose Build Solution
.The resulting PowerToysSetup.msi
installer will be available in the installer\PowerToysSetup\x64\Release\
folder.
Head over to the wiki to see the [full list of supported installer arguments][installerArgWiki].
To debug the PowerToys application in Visual Studio, set the runner
project as your start-up project, then start the debugger.
Some PowerToys modules must be run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations:
FancyZones
module will not be able to move an elevated window to a zone.Shortcut Guide
module will not appear if the foreground window belongs to an elevated application.Therefore, it is recommended to run Visual Studio with elevated privileges when debugging these scenarios. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the runner
project properties and navigate to the Linker -> Manifest File
settings, edit the UAC Execution Level
property and change it from highestAvailable (level='highestAvailable')
to `asInvoker (/level='asInvoker').
See the instructions on how to install the PowerToys Module project template.
Specifications for the PowerToys settings API.
Runner
The PowerToys Runner contains the project for the PowerToys.exe executable. It's responsible for:
Interface
The definition of the interface used by the runner
to manage the PowerToys. All PowerToys must implement this interface.
Common
The common lib, as the name suggests, contains code shared by multiple PowerToys components and modules, e.g. json parsing and IPC primitives.
Settings
Settings v2 is our current settings implementation. Please head over to the dev docs that describe the current settings system.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。