## Summary of the Pull Request Generating a bug report while PowerToys is running fails with `Failed to copy PowerToys folder` because the Runner holds `settings.json.cli-lock` exclusively. Exclude that root synchronization file before copying settings so report generation can proceed. This fixes the regression introduced by #50507. ## PR Checklist - [ ] Closes: No linked issue. - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: Not applicable. Validation is manual; no automated test additions are included in this PR. There are no new user-facing strings, development documentation, binaries, packaging changes, or external documentation changes. ## Detailed Description of the Pull Request / Additional comments In `tools/BugReportTool/BugReportTool/Main.cpp`, create the report directory and copy each settings-root entry recursively, skipping `settings.json.cli-lock` with a case-insensitive filename comparison. The file is excluded before any copy attempts to open it. Other diagnostic files and nested directories are preserved, and unrelated copy errors retain the existing failure path. ## Validation Steps Performed - Built `BugReportTool` in Release x64 using the repository build wrapper: exit code 0 for commit `27489cd9746830a3a196074bf47409b47a2f6242`. - On local Windows, ran the installed `0.102.2883.0` report tool and then the PR executable against real PowerToys user data while the same installed Runner held the root CLI lock exclusively throughout. Each child used separate temporary and output directories; installed binaries were untouched. The baseline exited naturally with code 1, `Failed to copy PowerToys folder`, and no ZIP. - The PR executable exited naturally with code 0 and generated a 919,234-byte ZIP containing 641 entries. Verified parseable settings JSON, 43 nonempty nested Runner logs, nonempty GPO/Windows/monitor reports, and exclusion of the root `settings.json.cli-lock`. The full run took about 97 minutes because registry collection was slow on this host. - CI run 391437 passed all 10 checks. Release x64 and ARM64 builds completed with 0 errors and 0 warnings. The existing x64 native suite reported 11,066 passed, 21 skipped, and 0 failed; ARM64 tests were skipped. --------- Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
Microsoft PowerToys
Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.
Installation · Documentation · Blog · Release notes
🔨 Utilities
PowerToys includes over 30 utilities to help you customize and optimize your Windows experience:
📦 Installation
For detailed installation instructions and system requirements, visit the installation docs.
But to get started quickly, choose one of the installation methods below:
Download the .exe file from GitHub
Go to the PowerToys GitHub releases, scroll down and select Assets to reveal the installation files, and choose the one that matches your architecture and install scope. For most devices, that would be x64 per-user.
WinGet
Download PowerToys from [WinGet](https://github.com/microsoft/winget-cli#installing-the-client). Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:
- User scope installer (default)
winget install Microsoft.PowerToys -s winget
- Machine-wide scope installer
winget install --scope machine Microsoft.PowerToys -s winget
Other methods
There are [community driven install methods](https://learn.microsoft.com/windows/powertoys/install#community-driven-install-tools) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.
✨ What's new?
To see what's new, check out the release notes.
🛣️ Roadmap
For v0.102, we're working on modernizing several utilities with WinUI 3, expanding Command Palette with tabs and JavaScript/TypeScript extensions, and adding new productivity improvements across PowerToys.
❤️ PowerToys Community
The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldn't be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Your contributions and feedback improve PowerToys month after month!
Contributing
This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows. We ask that before you start work on a feature that you would like to contribute, please read our Contributor's Guide. We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you grant us the rights to use your contribution and that you have permission to do so. For guidance on developing for PowerToys, please read the developer docs for a detailed breakdown. This includes how to setup your computer to compile.
Code of conduct
This project has adopted the Microsoft Open Source Code of Conduct.
Privacy statement
The application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our PowerToys Data and Privacy documentation.
