Compare commits

..

109 Commits

Author SHA1 Message Date
Stefan Markovic
d986d2e421 [Thumbnail providers] Cover errors and edge cases (#23947)
* [Thumbnail providers] Cover errors and edge cases

* Add TODO comment

* Fix tests
2023-02-07 20:18:50 +00:00
Seraphima Zykova
5e30d1e5aa [FancyZones] Keep the same layouts on the new virtual desktops. (#23927) 2023-02-07 12:07:23 +00:00
Seraphima Zykova
9ffaa0328b [FancyZones] Remove app from app-zone-history when dragging starts (#23926) 2023-02-07 12:07:17 +00:00
Seraphima Zykova
ca3b2563a8 [FancyZones] Fix window resize on layout change (#23829) 2023-02-06 17:16:12 +01:00
sosssego
e24f6849d5 [Settings][Hosts]Correct Hosts image in settings (#23830) 2023-02-06 16:49:31 +01:00
Heiko
cedb51bdad [PTRun]Fix dispatcher crash on Adobe Reader (#23789)
* improve thumbnail handling and fix dispatcher crash

* spell check

* fix spellcheck 2

* restore old code

* add adobe thumbnail check

* clean spell-check

* fix reading of default reg value

* switch to real time evaluation

* fix spelling

* add comment

* improve comments

* Add additional logs and exception handler

* result cache, code improvements, comment improvements

* reset log marker to report when switching back to Adobe

* spell checker

* Improve log text

* fix bug where detection was incorrect

* spell check

* fix return on exception
2023-02-06 16:49:25 +01:00
Jaime Bernardo
1856052014 [Flyout][Hotfix]Appear next to the tray icon position (#23772)
* [Flyout]Appear next to the tray icon position

* fix spellchecker
2023-02-06 16:49:15 +01:00
Stefan Markovic
91998ef875 [Installer][Hotfix]Revert HKCU to HKLM (#23754)
* Revert HKCU to HKLM

* Update comments
2023-02-06 16:49:06 +01:00
Seraphima Zykova
6668ec40fc [FancyZones][Hotfix]Opacity reset fix (#23818) 2023-02-06 16:48:57 +01:00
Seraphima Zykova
2e27cac8c8 [FancyZones] Fix crashing on win + arrows usage (#23757) 2023-02-06 16:48:42 +01:00
Seraphima Zykova
fcd05f2f51 [FancyZones] Improve code quality (part 5: work area initialization) (#23671) 2023-01-31 10:55:46 +01:00
Niels Laute
c1c14b4f2e [Settings][runner]Quick access system tray launcher (#22408)
* Init

* Fix running settings

* UI design

* Left click trigger
Wire up colorpicker and pt run

* Wire up others

* Update FlyoutWindow.xaml.cs

* Removed comments

* Update FlyoutWindow.xaml

* More work

* Open Settings page

* More UI work

* Resolve conflicts

* [General] SystemTray Flyout: Add update on tray items' visibility when module gets enabled/disabled
Also remove context menu opening on tray icon.

* Adding app list

* Adding more buttons, resolving conflicts

* [General] Flyout: improving opening, closing flyout/settings window. Implementing basic bahaviour on enabling/disabling modules.

* [General] FlyoutWindow: proceed with implementation. GPO works. Main functionallity works (launching and enabling apps).

* [general] flyout: fix exit button

* [general] flyout: implement double click handling

* Localization

* [Generel] Flyout: Re-implement flyout launching, add workaround: disable flyout hiding in case the user switches on modules on the all apps page
+ minor changes

* [general] flyout: restore the context menu when right clicking on system tray icon

* Fix spellchecker

* [installer] fixing missing dll files + suppress error on not signed script

* Fix spell checker

* Fix flyout not focusing when activated

* Refresh Settings UI enabled state when flyout changes

* fix spellcheck

* Remove VCM from the list

* [General] flyout: fix settings window opening. Switch to general page only if there is no page opened

* [general] flyout: add launching hosts app

* Fix CI build

* adding check on elevation when launching hosts

* Use localization strings that already exist

* Remove dll not present in arm64 build

* Adding GPO policy check for the launcher page items

* fix hosts launching

* Add telemetry

* Also hide from all apps list when gpo is force enabling

* fix spellchecker

* Improve focus issues

* Fix flickering Bitmap Icons

* Fix telemetry error

* Fix telemetry call

* Fix wrong comment

---------

Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
Co-authored-by: Laszlo Nemeth <laszlo.nemeth.hu@gmail.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
2023-01-30 23:00:11 +00:00
norwayman22
fb2b150a1d [QuickAccent]Added support for Norwegian letters (#23487)
* [QuickAccent]Added support for Norwegian letters

* Add language to Settings
2023-01-30 18:51:19 +00:00
Seraphima Zykova
92f61d6ef5 [FancyZones] Improve code quality (part 4) (#23638) 2023-01-30 17:39:46 +01:00
Jeremy Sinclair
c94c79a057 [Build][Installer] Fix Runtime Parsing for .NET Runtime and WPF dependencies (#23626)
* Update parseRuntimes to use separate JSON for .NET Runtime / WPF

* Update parseRuntimes script to filter duplicate dlls from WPF Runtime List

* Fix spelling

* Override dlls

---------

Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
2023-01-27 10:08:15 -05:00
Seraphima Zykova
dbcf1fca15 [FancyZones] Improve code quality (part 3: window dragging) (#23040) 2023-01-26 18:02:46 +01:00
Jeremy Sinclair
923c220338 [ci]Enhance ARM64 configuration verification (#23509)
* Use case-sensitive equality check for platform name

* Add missing platform message.

* Update spelling
2023-01-26 16:40:15 +00:00
Jaime Bernardo
8a0cf5ed97 [build][installer]Call powershell with unrestricted flag (#23619) 2023-01-26 16:39:45 +00:00
Davide Giacometti
1f307ba2f0 [Launcher][WindowWalker]Show all open windows with action keyword (#23307) 2023-01-26 12:33:12 +00:00
Stefan Markovic
67ae9b0376 [devdocs] Add disk usage footprint doc (#23248)
* [devdocs] Add disk usage footprint doc

* Spelling

* Add conclusion

* Minor fix

* Add version

* Add more details

* Update disk-usage-footprint.md (#23280)

* Update disk-usage-footprint.md

* Update disk-usage-footprint.md

* Update expect.txt

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

* Update doc/devdocs/disk-usage-footprint.md

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>

Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>
2023-01-25 18:36:25 +01:00
Jaime Bernardo
97e5e22b4e [Awake][Settings]Don't hide "Keep screen on" (#23575)
* [Awake][Settings]Don't hide "Keep screen on"

* Change tray menu as well
2023-01-24 13:10:31 +00:00
Seraphima Zykova
6f0b16de49 [FancyZones] Improve code quality (part 2: WorkArea init) (#23030)
* init WorkArea with a rectangle
* keep the highlighted zones state in a separate class
2023-01-23 18:13:05 +01:00
Stefan Markovic
cc5633db30 [installer] Extract module related stuff from Product.wxs to per-module .wxs file (#23378)
* Extract module related stuff from Product.wxs to per-module .wxs file

* Spellcheck

* Minor changes
2023-01-23 15:59:18 +01:00
Jaime Bernardo
af70b6b689 Revert "[ci]Fix dead links for WiX 3 binaries" (#23433)
This reverts commit 07f3507f11.
2023-01-19 12:07:50 +00:00
Seraphima Zykova
87743e8e5d [FancyZones] Improve code quality (part 1: moved utils) (#23028) 2023-01-17 11:50:40 +01:00
Laszlo Nemeth
047d5987c4 [OOBE]What's new: fix link click, opening url in browser (#23255) 2023-01-16 15:18:04 +00:00
Stefan Markovic
da45647a39 [installer] Move all installer registry entries to HKCU (#23252)
* Move registry entries to HKCU

* Use the same reg key for PowerRename
2023-01-16 14:22:06 +01:00
Stefan Markovic
79a4c4051e [installer] remove duplicated dlls (#23305)
* Added PowerShell script for parsing .NET Runtimes from deps.json

* Removed static list set of .NET Runtime and WPF file list

* Updated DepsFilesLists to write output. Moved to CustomActions directory

* Added space between runtime files variables

* Fix Parameter and Set-Content invocation

* Added PreBuild event to call parseRuntimes script

* Update spelling

* Removed runtime files from Product.wxs

* Updated script to add support for Product.wxs

* Modify process to create copies of unmodified files and restore them on post build.

* Fix spacing

* Fix spelling

* Updated script to create new Guid for Dotnet component

* Fix invalid regex

* Remove reverting Product.wxs in Custom Actions project

* Add Post Build Action in Installer to revert Product.wxs

* Set Post Build Event to run always on Installer

* Fix path to Product.wxs in Post Build Event

* Final fix to Product.wxs path

* Switch to use powershell.exe and read from ColorPicker directory.

* wip: fix release pipeline

* remove conditions for build events in PowerToysInstaller.wixproj

* System.Text.Json.dll

* System.CodeDom.dll

* System.Management.dll

* WindowsBase.dll

* Other

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
2023-01-16 14:21:44 +01:00
Jaime Bernardo
07f3507f11 [ci]Fix dead links for WiX 3 binaries (#23367)
* [ci]Fix dead links on WiX 3 binaries
2023-01-16 13:19:36 +00:00
Evyatar-E
218a739996 [QuickAccent]Additional chars for hebrew (#23304) 2023-01-16 11:46:29 +00:00
sosssego
d84a13bb7e [Analyzers][CPP]Turn on warning 26471 (#23103)
Don't use reinterpret_cast. A cast from void* can use static_cast
2023-01-16 11:18:55 +00:00
Aaron Junker
1a1f4351ca [QuickAccent]Add combining characters (#23044)
* Add combining characters

* Fix spelling

* Change activation to VK_PERIOD
2023-01-12 16:02:25 +00:00
Jeremy Sinclair
7a0dd5b455 [Build][Installer]Automatically add list of .NET Runtime deps to Installer during build (#23102)
* Added PowerShell script for parsing .NET Runtimes from deps.json

* Removed static list set of .NET Runtime and WPF file list

* Updated DepsFilesLists to write output. Moved to CustomActions directory

* Added space between runtime files variables

* Fix Parameter and Set-Content invocation

* Added PreBuild event to call parseRuntimes script

* Update spelling

* Removed runtime files from Product.wxs

* Updated script to add support for Product.wxs

* Modify process to create copies of unmodified files and restore them on post build.

* Fix spacing

* Fix spelling

* Updated script to create new Guid for Dotnet component

* Fix invalid regex

* Remove reverting Product.wxs in Custom Actions project

* Add Post Build Action in Installer to revert Product.wxs

* Set Post Build Event to run always on Installer

* Fix path to Product.wxs in Post Build Event

* Final fix to Product.wxs path

* Switch to use powershell.exe and read from ColorPicker directory.

* wip: fix release pipeline

* remove conditions for build events in PowerToysInstaller.wixproj
2023-01-12 14:25:36 +00:00
Niels Laute
dae0520375 Adding animations (#23208) 2023-01-11 17:45:06 +01:00
Jaime Bernardo
eb2968de6e [ImageResizer]Fix call to AssocGetPerceivedType (#23267) 2023-01-11 14:13:00 +00:00
sosssego
3a924ab333 [Analyzers][CPP]Hide the rules that are marked as info (#23121)
Make the logs cleaner and the warning reports usefull
2023-01-10 14:11:20 +00:00
Heiko
196db19be8 [PTRun][System] Recycle Bin command: Allow opening RB + Improvements (#23045) 2023-01-10 14:09:23 +00:00
Aditya Goturu
25e9241d42 [PTRun]Add option to tab through results only (#22965)
* Added option to tab through results directly instead of context menu options

With reference to #22964

* Move setting to search results group
2023-01-10 14:04:50 +00:00
אביתר
9baaaefc5f [QuickAccent]Support the Hebrew character set (#22712)
Co-authored-by: אביתר אסתרסון <79063413+EvyatarEsterson@users.noreply.github.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
2023-01-09 14:07:35 +00:00
Clint Rutkas
3fb707f78d [ci]Verify notice.md and NuGet packages are synced (#23000)
* Create verifyNoticeMdAgainstNugetPackages.ps1

* Update build-powertoys-steps.yml

* Update verifyNoticeMdAgainstNugetPackages.ps1

* Update verifyNoticeMdAgainstNugetPackages.ps1

* Update build-powertoys-steps.yml

* Update build-powertoys-steps.yml

* Update NOTICE.md

* Update NOTICE.md

* Update NOTICE.md

* Update verifyNoticeMdAgainstNugetPackages.ps1

* Update verifyNoticeMdAgainstNugetPackages.ps1

* adding back in the Community Toolkit items

weird, some how there was a checkin with this being removed

* Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>

* Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>

* Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>

* Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>

* shifting the restore for setup back to where it was plus moving the verification to end.

* moved wrong powershell, fliping back

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
2023-01-09 12:27:57 +00:00
Joonatan
8b98ed7447 [QuickAccent]Add support for Estonian (#22923) 2023-01-09 12:26:45 +00:00
Davide Giacometti
ad18765ebc [DevFilePreview]JSON: Don't escape HTML-sensitive characters (#23054) 2023-01-09 11:08:15 +00:00
Aaron Junker
473e5dbf75 [QuickAccent] Add dashes (#20469)
* Add dashes
2023-01-08 23:20:42 +00:00
Jaime Bernardo
9434936679 0.66 changelog (#23094)
Co-authored-by: Aaron Junker <aaron.junker@outlook.com>
Co-authored-by: Jay <65828559+Jay-o-Way@users.noreply.github.com>
2023-01-05 09:44:06 -08:00
Jaime Bernardo
a510d5e3ce [TextExtractor]Properly initialize PreferredLanguage (#23095) 2023-01-04 15:56:50 +00:00
Jaime Bernardo
9a77c3a87a [Installer]Add missing Json dll to Text Extractor (#23092) 2023-01-04 11:45:45 +00:00
Taras
14ad19e1e3 [QuickAccent]Add setting to sort characters by use frequency (#22847)
* [Quick Accent] add toggle switch to sort characters by usage frequency

* [Quick Accent] if enabled, then sort by frequency for all toolbar triggers

* [Quick Accent] add "start selection from the left" toggle switch

* [Quick Accent] fix error SA1000: The keyword 'new' should not be followed by a space

* Fix C# analyzer build error
2023-01-03 12:44:57 +00:00
sosssego
b1c535a2ce [Analyzers][CPP]Turn on warning 26466 (#22639)
* Turn on warning 26466

* changes from comments
2023-01-03 12:19:07 +00:00
sosssego
6287460614 [Analyzers][CPP] Turn on warning 26403 (#22795) 2023-01-03 12:16:27 +00:00
Laszlo Nemeth
dd62dab831 [TextExtractor] Extend settings with preferred language (#22901)
* [TextExtractor] Extend settings with preferred language

* TextExtractor simplifying code, adding update languages on dropdown opening

* fix typo

* TextExtractor fixing bug with order of languages
2022-12-28 19:54:59 +01:00
Clint Rutkas
1f4ba8f267 unit tests nugets updated (#22952) 2022-12-28 10:43:31 -08:00
Jaime Bernardo
c0b78835ac [GPO]Chore: move asset files to src path (#22906) 2022-12-28 19:01:00 +01:00
Sanidhya Singh
4fe1acab36 Fixes Ordered Lists Numbering (#22944)
- Previously there was a mixture of `1.` `1.` `1.` ... and `1.` `2.` `3.` ... indexing in the readme doc which is changed to a uniform use of  `1.` `1.` `1.` ....
- There were errors in numbering at 2 places which get fixed by this.
2022-12-23 09:09:55 -08:00
Jaime Bernardo
46099058b5 [common]Add null checks to FindDesktopFolderView (#22908) 2022-12-20 19:29:24 +00:00
Jaime Bernardo
4f4810acc4 [MouseHighlighter]Fix crash on non initialized shapes (#22907) 2022-12-20 19:29:05 +00:00
Laszlo Nemeth
3739b771e5 [ColorPicker]Fix localization of color names (#22837)
* [ColorPicker] Restructure to have color names localized

* [ColorPicker] Restrucure code to have localised color names

* Fix analyzer errors

* [ColorPicker] add comments
2022-12-20 15:03:25 +00:00
Ikko Ashimine
37cb62f6eb [ColorPicker]Fix typo in ColorFormatHelper.cs (#22873)
occurence -> occurrence
2022-12-20 15:02:20 +00:00
Jaime Bernardo
0de4750fad [Test]Update Microsoft.NET.Test.Sdk to 17.4.1 (#22900) 2022-12-20 14:22:37 +00:00
Seraphima Zykova
91ffe5e707 [FZEditor]Reduce layout shortcut tooltip delay (#22889) 2022-12-19 16:54:57 +00:00
Seraphima Zykova
d0c9350ac4 [FZEditor]Fix crash when deleting a zone while dragging it (#22884) 2022-12-19 16:51:27 +00:00
sosssego
6244604d03 [Analyzers][CPP]Turn on warning 26475 (#22824) 2022-12-18 16:00:55 +00:00
sosssego
5fd7e2f7e6 [Analyzers][CPP]Turn on warning 26819 (#22796) 2022-12-18 15:58:30 +00:00
Laszlo Nemeth
3cdac58070 [TextExtractor]Select OCR language in context menu (#22777)
* TextExtractor Add language selection.

* TextExtractor adding resources
2022-12-18 15:35:03 +00:00
Davide Giacometti
6d138e80fb [Analyzers] Update StyleCop and enable SA1200 (#22707)
* update StyleCop and enable SA1200

* Fix merge issues

* fix build and added using rule
2022-12-18 13:27:14 +00:00
sosssego
617150cf50 [Analyzers][CPP]Turn on warning 26410 (#22744) 2022-12-18 11:46:06 +00:00
sosssego
d1b55d9ff4 [Analyzers][CPP]Turn on warning 26427 (#22743) 2022-12-18 11:45:19 +00:00
sosssego
2f6d512614 [Analyzers][CPP]Turn on warning 26445 (#22644) 2022-12-18 11:31:43 +00:00
Stefan Markovic
c2325181ea Remove unused Newtonsoft.Json package references (#22812)
* Remove unused Newtonsoft.Json package references
Replace with System.Text.Json in Settings test

* spellcheck

* Remove obsolete test

* Revert settings part

* Revert "Revert settings part"

This reverts commit ad2934ce0b.

* Increase JS heap size in CI
2022-12-16 18:46:07 +01:00
Stefan Markovic
a6c13dcfbe Run settings elevated when PT is running elevated (#22815)
* Run settings elevated when PT is running elevated

* Address PR comment
2022-12-16 15:14:50 +01:00
Niels Laute
f574694cc0 [Settings]Improve Shortcut Control visibility and accessibility (#22813) 2022-12-16 14:03:54 +00:00
Niels Laute
b775d0710f [Settings] Custom color format UI tweaks (#22790)
* Custom color format tweaks

* Delete vs. remove

* Update expect.txt

* [ColorPicker]Support BGR and RGB decimal value formats (#22771)

* ColorPicker add both decimal value formats

* ColorPicker, custom format dialog, resizing columns

* Custom color format tweaks

* Delete vs. remove

* Update expect.txt

* Fix rebase

* Fix error
2022-12-16 10:15:55 +00:00
Jaime Bernardo
b17955c968 [FileLocksmith]Move hanging operations to a distinct thread (#22806) 2022-12-16 09:37:33 +00:00
Taras
0de7781b51 [Quick Accent]Fix the first character selection in the toolbar (#22808) 2022-12-16 09:36:55 +00:00
Jeremy Sinclair
57bde1c54c [ARM64][Build] Prefer Arm64 Build Tools when building from Arm64 devices (#22792)
* Set PreferredToolArchitecture to arm64 if Arm64 processor
2022-12-15 18:40:29 -05:00
sosssego
02aa5cab96 [Analyzers][CPP]Rewrite the ruleset to include cpp core guidelines rules (#22602) 2022-12-15 16:29:00 +00:00
Stefan Markovic
7674a6fe47 Bump WinAppSDK to v1.2 (#22733)
* Bump WinAppSDK to v1.2

* Remove AppWindowTitleBar.IsCustomizationSupported

* Fix resizing and background color
2022-12-15 12:17:56 +01:00
Laszlo Nemeth
96ac6a6a12 [ColorPicker]Support BGR and RGB decimal value formats (#22771)
* ColorPicker add both decimal value formats

* ColorPicker, custom format dialog, resizing columns
2022-12-15 09:33:17 +00:00
Davide Giacometti
5b4e678f14 [Hosts]Warn about duplicated entries (#22606)
* find duplicated entries

* addressed PR feedback

Co-authored-by: Davide <25966642+davidegiacometti@users.noreply.github.com>
2022-12-14 15:52:00 +00:00
Andon Dragomanov
b56e62e5de [QuickAccent]Added support for Macedonian accent letters (#22721)
* Added support for Macedonian accent letters

* Reordering of resources and enums by alphabetical order
2022-12-14 14:56:43 +00:00
char46
a167c8d3ac [Quick Accent]Add Pinyin accents (#22631)
* [Quick Accent]Add Pinyin accents

* Add Mandarin tone.

* Update Languages.cs

* add space before closing brace

* Remove CR from each lines
2022-12-14 14:35:57 +00:00
Stefan Markovic
6ac508fb93 Self-contained .NET (#22217)
* dotnet sc

* MD preview - C# app

 - working self-contained

* Gcode preview - C# app

* DevFiles preview - C# app

* Fix passing path with spaces as cmd arg and monacocpp proj file

* Pdf preview - C# app

* Svg preview - C# app

* Fix comment

* Gcode thumbnail - C# app

TODO:
	- installer
	- why IThumbnailProvider and IIntializeWithFile doesn't work?

* Pdf thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Pdf thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Fix GcodeThumbnailProviderCpp.vcxproj

* Svg thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Fix Svg tests

* Thumbnail providers - installer

* Self-contained Hosts and FileLocksmith

* Fix hardcoded <RuntimeIdentifier>

* Remove unneeded files

* Try to fix Nuget in PR CI

* Prefix new dlls with PowerToys.
Sign new dlls and exes

* Add new .exe files to ProcessList

* ci: debug by listing all env vars

* ci: try setting variable in the right ci file

* Bring back hardcoded RuntimeIdentifier

* ci: Add comment and remove debug action

* Remove unneeded lib

* [WIP] Platform conditional dotnet files & hardlinks

* Cleanup

* Update expect.txt

* Test fix - ARM installer

* Fix uninstall bug

* Update docs

* Fix failing test

* Add dll details

* Minor cleanup

* Improve resizing

* Add some logs

* Test fix - release build

* Remove InvokeOnControlThread

* Test fix: logger initialization

* Fix arm64 installer

Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Dustin L. Howett <dustin@howett.net>
2022-12-14 13:37:23 +01:00
Stefan Markovic
a2c0febccc [ci]Fix build error introduced by C# tools update (#22779)
* Fix build error introduced by C# tools update

* Remove duplicate project properties - included in Directory.Build.props
2022-12-14 11:43:02 +01:00
Taras
9cf404250b [Quick Accent] fix showing toolbar in the corner position (#22736)
* [Quick Accent] fix showing toolbar in the corner position

* [Quick Accent] set horizontal allignment according to toolbar position

* [Quick Accent] fix spelling mistake
2022-12-14 12:17:38 +02:00
Clint Rutkas
b5f6722ae7 Update to dev setup readme.md (#22687) 2022-12-13 10:13:13 -08:00
Jaime Bernardo
150f26731c [VCM]Only use File Watchers if module is enabled (#22757) 2022-12-13 17:35:23 +00:00
Davide Giacometti
d50b89262c [QuickAccent]Set initial selection when characters change (#22704) 2022-12-13 17:20:29 +00:00
Jaime Bernardo
f465daf585 [Logs]Don't create a thread for each logger (#22755) 2022-12-13 17:16:31 +00:00
Taras
f987a48b3a [Quick Accent]Increase default input delay to 300ms (#22680)
* [Quick Accent] change default input delay and default activation key

* [Quick Accent] use default activation key 'Both' as before

* [Quick Accent] use PowerAccentSettings.DefaultInputTimeMs

* [Quick Accent] add more comments
2022-12-13 17:15:56 +00:00
Laszlo Nemeth
ba0d41f743 [ColorPicker]Fixing decimal value calculation (#22669) 2022-12-13 16:59:57 +00:00
Laszlo Nemeth
9480013868 [Settings][Accessibility] Set name for ShortcutControl (#22622) 2022-12-13 14:14:09 +00:00
Clint Rutkas
96a4e071d6 Enable a new rule for fabric bot to aid in localization triaging (#22740) 2022-12-12 13:12:26 -08:00
sosssego
e42bbaaaf7 [Analyzers][CPP] Turn on warning 4702 (#22285)
* Turn on 4702
unreachable code

* fix warnings that didnt show locally

* add comments about disable warnings

* improve comments

* changes from comments

* fix from PR comments
2022-12-12 17:21:48 +00:00
Laszlo Nemeth
6cbb094cfb [Settings]Fix using navigation items in scan mode (#22545) 2022-12-12 16:34:21 +00:00
Davide Giacometti
cd1b7dbc2c cleaned-up dispose TODO (#22703) 2022-12-10 17:20:10 +01:00
Jaime Bernardo
6b199a1154 [ci]Skip C++ code analysis to speed up release pipelines (#22555)
C++ code analysis is a heavy process, which we are running in the PR CIs already, so code that gets into main should be checked already.
This PR conditionally removes C++ code analysis from the release pipelines. This saves 10-15 minutes in build time.

## Validation Steps Performed
Verified the release CI shaved some time off.
2022-12-09 18:09:26 -06:00
Niels Laute
b6a905709a [QuickAccent]Theming support (#22446)
* Adding theme awereness

* Adding theming colors

* High contrast

* Downgrade ModernWPF package

* Adding ModernWPF and PowerToys.Common.UI to installer

* Removing unused file and MahApps

* Removed MahApps from installer string

* fix projects and setup

* removed PowerAccent

* addressed PR feedback

Co-authored-by: Davide <25966642+davidegiacometti@users.noreply.github.com>
2022-12-09 20:40:00 +00:00
Laszlo Nemeth
e5d001e434 [ColorPicker]Fix format name duplicates (#22565)
* ColorPicker fix format name duplicates

* ColorPicker: extend settings-loading with security code which skips color formats with empty name or duplicate names

* Spell checker fix, typo, sorry
2022-12-09 16:30:06 +00:00
Jaime Bernardo
7d53b9a5b5 [Settings][Awake]Show display option on indefinite (#22596) 2022-12-09 16:27:49 +00:00
sosssego
febe1aa9a0 [Analyzers][CPP] Turn on warnings 26800, 28251, 6387 and 6248 (#22411) 2022-12-09 14:08:51 +00:00
AO2233
a8a618af1d [TextExtractor]Fix error blanks in Japanese OCR (#22443)
* fix error blanks in japanese OCR

Kanji ,Hiragana, Katakana, Hankaku-Katakana do not need blank. (not only the range of CJKUnifiedIdeographs). Maybe there are more symbols that don't require spaces like \u3001 \u3002. But give it to ocr engine to improve may be a better choice ?

* Update ImageMethods.cs

fixing spelling

* Update expect.txt

adding in Hankaku

* Update ImageMethods.cs
2022-12-09 14:07:45 +00:00
Daniel Richter
08d569ccf6 [PTRun] Drag and drop files (#22409)
* [PTRun] Support drag&drop to other application for files in result list

* [PTRun] use file/folder thumbnail as drag image

* (fix spellcheck)

* [PTRun] use _mouseDownResultViewModel.Image to generate the drag image

* fix spelling + refactoring
2022-12-09 13:01:44 +00:00
Laszlo Nemeth
bb92b03156 [ColorPicker]Use the new custom formats when picking colors without editor (#22552)
* ColorPicker fixing 'old' formats still represented in the old pre-defined format in color picker module.

* Fixing color picker tests, adding format strings
2022-12-09 11:21:59 +00:00
sosssego
d8b92662ba [Analyzers][CPP]Turn on warning 4505 (#22301)
* Turn on warning 4505
supress it in the fancyzone tests

* comment on disabled warnings

* improving comments

* change strategy to have less #pragma
2022-12-09 10:58:59 +00:00
Jaime Bernardo
f97cda9196 0.65 changelog (#22501)
Co-authored-by: Clint Rutkas <clint@rutkas.com>
2022-12-06 14:12:42 -08:00
Aaron Junker
759c5a2eb8 Update COMMUNITY.md (#22378) 2022-12-06 07:25:28 +01:00
Jaime Bernardo
d300b007f2 [ImageResizer]Fix silent context menu crash (#22503) 2022-12-05 23:53:59 +00:00
Laszlo Nemeth
ba9e2449f3 [Settings]Better logging when upgrading settings from a old format (#22497)
* SettingUtils fixing error reporting when reading settings in old format

* Making the error message even more informative
2022-12-05 18:52:43 +00:00
Jaime Bernardo
42c77d7d42 [Settings][GPO]Fix warning for FancyZones (#22496) 2022-12-05 17:34:16 +00:00
Laszlo Nemeth
5c01e3a826 [Settings][ColorPicker]Fix issues related to custom color formats (#22493)
* ColorPicker fixing problem settings not sent to CP module (when newly created formats change)

* ColorPicker fixing problem Move Up button diabled for the 2nd element of the color formats list after creating a new color format.
2022-12-05 17:22:32 +00:00
811 changed files with 19931 additions and 19174 deletions

View File

@@ -79,6 +79,7 @@
^\Q.pipelines/ESRPSigning_core.json\E$
^\Qsrc/modules/colorPicker/ColorPickerUI/Shaders/GridShader.cso\E$
^\Qsrc/common/ManagedCommon/ColorFormatHelper.cs\E$
^\Qinstaller/PowerToysSetup/Settings.wxs\E$
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/CorruptJson/Microsoft/PowerToys/settings.json\E$
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.18.2/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.19.2/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$

View File

@@ -63,6 +63,7 @@ APPIDS
appium
Applets
Applicationcan
applicationconfiguration
applicationframehost
Applist
applog
@@ -75,6 +76,7 @@ appxpackage
APSTUDIO
AQS
Aqtobe
ARCHITEW
arcosh
ARemapped
argb
@@ -159,7 +161,6 @@ bpp
bricelam
BRIGHTGREEN
Browsable
brucelindbloom
bsd
bstr
bti
@@ -191,6 +192,7 @@ CDeclaration
CDEF
cdpx
CENTERALIGN
ceq
cguid
changecursor
Changemove
@@ -201,7 +203,7 @@ Choibalsan
chrdavis
chromaticities
Chrzan
CHT
cht
Chukotka
Chuuk
CIELAB
@@ -234,6 +236,7 @@ CMock
CMONITORS
cmpgt
cmyk
cne
cnt
Cocklebiddy
coclass
@@ -254,13 +257,11 @@ comctl
COMDAT
comdef
comdlg
comhost
cominterop
commandline
COMMANDTITLE
commctrl
Comoros
companding
COMPOSITIONFULL
comsupp
comsuppw
@@ -313,6 +314,7 @@ Ctx
CUI
Cunha
currentculture
CURRENTDIR
CURSORINFO
cursorpos
customaction
@@ -325,12 +327,10 @@ cwd
cxfksword
CXSMICON
CXVIRTUALSCREEN
cxxopts
cyberrex
CYSMICON
CYVIRTUALSCREEN
cziplib
cziplob
Dac
dacl
damienleroy
@@ -383,12 +383,14 @@ DENORMAL
Deondre
depersist
deprioritized
depsfileslistspath
depsjsonpath
deref
DESKTOPABSOLUTEEDITING
DESKTOPABSOLUTEPARSING
desktopshorcutinstalled
desktopwindowxamlsource
DEU
deu
devblogs
devdocs
devenum
@@ -469,19 +471,17 @@ EFile
ekus
emmintrin
Emoji
emptyrecyclebin
ENABLEDELAYEDEXPANSION
enabledisable
ENABLEDPOPUP
endpointvolume
endregion
ENTERSIZEMOVE
ENU
enu
enumerationoptions
EOAC
epicgames
epu
Eqn
ERASEBKGND
EREOF
EResize
@@ -490,6 +490,7 @@ ERRORLEVEL
ERRORTITLE
ESettings
esize
esn
esrp
Eswatini
etl
@@ -533,7 +534,6 @@ Faroe
FARPROC
fdw
feimage
ffaa
fff
fileapi
FILEEXPLORER
@@ -552,7 +552,6 @@ FILEVERSION
Filtergraph
Filterkeyboard
Filterx
finalizer
findfast
firefox
FIXEDFILEINFO
@@ -618,6 +617,7 @@ HACCEL
handlekeyboardhookevent
handlerroutine
hangeul
Hankaku
hanselman
Hanzi
Hardlines
@@ -642,6 +642,7 @@ hdc
hdrop
HEB
Heiko
Helpline
helptext
Heure
HGFE
@@ -787,15 +788,12 @@ Interlop
INTRESOURCE
INVALIDARG
invalidoperatioexception
iobjectwithsitesetsite
iolewindowcontextsensitivehelp
ipc
ipcmanager
IPlugin
IPower
ipreview
IPREVIEW
ipreviewhandler
ipreviewhandlertranslateaccelerator
ipreviewhandlervisualssetfont
IProperty
IPublic
@@ -823,9 +821,8 @@ jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi
jjw
jobject
jpe
JPN
jpn
jpnime
JSONOf
Jsons
jsonval
junja
@@ -846,13 +843,13 @@ keyevent
KEYEVENTF
keynum
keyremaps
keystokes
Keytool
keyup
Khakassia
Khanty
Khovd
KILLFOCUS
killrunner
Kitts
Knownfolders
Krai
@@ -864,7 +861,6 @@ Kyrgyzstan
Kyzylorda
LAlt
Lambson
LANGID
langword
Lastdevice
Laute
@@ -905,6 +901,7 @@ lmcons
LMEM
LMENU
lnk
LOADFROMFILE
LOADLIBRARYASDATAFILE
LOBYTE
LOCALAPPDATA
@@ -916,6 +913,7 @@ LOCATIONCHANGE
logconsole
logfile
LOGFONT
LOGFONTW
LOGMSG
logon
LOGPIXELSX
@@ -982,6 +980,8 @@ MAPPEDTOSAMEKEY
MAPTOSAMESHORTCUT
MAPVK
Markdig
markdownpreviewhandler
MARKDOWNPREVIEWHANDLERCPP
Markovic
Marquesas
martinchrzan
@@ -1014,6 +1014,7 @@ Metadatas
metafile
mfapi
mfc
mfcm
mfidl
mfobjects
mfplat
@@ -1073,7 +1074,6 @@ mru
msbuild
msc
msclr
mscoree
mscorlib
msdata
msedge
@@ -1142,7 +1142,7 @@ newdev
newitem
newpath
newrow
newtonsoft
Newtonsoft
niels
nielslaute
NIF
@@ -1198,7 +1198,7 @@ NPH
NResize
NTAPI
ntdll
NTFS
ntfs
NTSTATUS
nugets
nullonfailure
@@ -1369,6 +1369,7 @@ proactively
PROCESSKEY
PRODEXT
PRODUCTVERSION
productwxspath
Progman
programdata
PROGRAMFILES
@@ -1440,13 +1441,14 @@ rectp
rects
recyclebin
redirectedfrom
Redist
redist
redistributable
reencode
reencoded
REFCLSID
REFGUID
REFIID
Refreshable
REGCLS
regedit
regfile
@@ -1477,6 +1479,7 @@ rescap
resgen
resheader
resizers
RESIZETOFIT
resmimetype
RESOURCEID
resourcemanager
@@ -1518,7 +1521,6 @@ Rsp
Rstrtmgr
RTB
RTLREADING
RTSS
ruleset
runas
rundll
@@ -1527,9 +1529,11 @@ RUNLEVEL
runsettings
runtimeclass
runtimeconfig
runtimedepsjsonpath
runtimeobject
runtimepack
runtimes
RUS
rus
Rutkas
RValue
rvm
@@ -1573,7 +1577,6 @@ SETFOCUS
SETFOREGROUND
SETICON
setlocal
Setrect
SETREDRAW
SETTEXT
SETTINGCHANGE
@@ -1594,6 +1597,7 @@ shellex
SHELLEXECUTEINFO
SHELLEXECUTEINFOW
shellscalingapi
shemptyrecyclebina
SHFILEINFO
SHGFI
Shl
@@ -1798,6 +1802,7 @@ THH
THICKFRAME
THISCOMPONENT
THotkey
thumbcache
TILEDWINDOW
timedate
timediff
@@ -1872,7 +1877,7 @@ uniquifier
Uniquifies
unitconverter
unittests
unk
Unk
unknwn
UNLEN
Unmap
@@ -2007,7 +2012,6 @@ WINDOWPOSCHANGING
Windowsapp
WINDOWSBUILDNUMBER
Windowscodecs
windowsdesktop
windowssearch
windowssettings
WINDOWSTYLES
@@ -2070,6 +2074,7 @@ workspaces
wox
wparam
wpf
wpfdepsjsonpath
wpftmp
wpr
wprp

View File

@@ -860,6 +860,69 @@
],
"taskName": "Author Response needed"
}
},
{
"taskType": "trigger",
"capabilityId": "IssueResponder",
"subCapability": "IssueCommentResponder",
"version": "1.0",
"id": "mgZxIoqeF7GWUo7-t3773",
"config": {
"conditions": {
"operator": "and",
"operands": [
{
"name": "commentContains",
"parameters": {
"commentPattern": "\\/loc\\b",
"isRegex": true
}
},
{
"operator": "or",
"operands": [
{
"name": "activitySenderHasAssociation",
"parameters": {
"association": "OWNER"
}
},
{
"name": "activitySenderHasAssociation",
"parameters": {
"association": "MEMBER"
}
}
]
}
]
},
"eventType": "issue",
"eventNames": [
"issue_comment"
],
"actions": [
{
"name": "removeLabel",
"parameters": {
"label": "Needs-Triage"
}
},
{
"name": "addLabel",
"parameters": {
"label": "Loc-Sent To Team"
}
},
{
"name": "addReply",
"parameters": {
"comment": "Hi! Thanks for making us aware of the problem. We raised the issue with our internal localization team. This issue should be fixed hopefully in the next version of PowerToys."
}
}
],
"taskName": "Filed ADO item with Localization team"
}
}
],
"userGroups": []

View File

@@ -46,26 +46,35 @@
"modules\\FancyZones\\PowerToys.FancyZones.exe",
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandler.dll",
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandler.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandler.exe",
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandlerCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProvider.dll",
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProvider.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProvider.exe",
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProviderCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.ManagedTelemetry.dll",
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandler.dll",
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandler.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandler.exe",
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandlerCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandler.dll",
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandler.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandler.exe",
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandlerCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandler.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandler.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandler.exe",
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandlerCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProvider.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProvider.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProvider.exe",
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProviderCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.powerpreview.dll",
"modules\\FileExplorerPreview\\PowerToys.PreviewHandlerCommon.dll",
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProvider.dll",
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProvider.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProvider.exe",
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProviderCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandler.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandler.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandler.exe",
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandlerCpp.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProvider.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProvider.comhost.dll",
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProvider.exe",
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProviderCpp.dll",
"modules\\Hosts\\PowerToys.HostsModuleInterface.dll",
"modules\\Hosts\\PowerToys.Hosts.dll",
@@ -76,13 +85,6 @@
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.exe",
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.dll",
"modules\\Peek\\Peek.Common.dll",
"modules\\Peek\\Peek.FilePreviewer.dll",
"modules\\Peek\\Powertoys.Peek.UI.dll",
"modules\\Peek\\Powertoys.Peek.UI.exe",
"modules\\Peek\\WIC.dll",
"modules\\Peek\\Powertoys.Peek.dll",
"modules\\ImageResizer\\PowerToys.ImageResizer.exe",
"modules\\ImageResizer\\PowerToys.ImageResizer.dll",
"modules\\ImageResizer\\PowerToys.ImageResizerExt.dll",
@@ -130,8 +132,6 @@
"modules\\MouseUtils\\PowerToys.MousePointerCrosshairs.dll",
"modules\\PowerAccent\\PowerAccent.Core.dll",
"modules\\PowerAccent\\PowerAccent.dll",
"modules\\PowerAccent\\PowerAccent.exe",
"modules\\PowerAccent\\PowerToys.PowerAccent.dll",
"modules\\PowerAccent\\PowerToys.PowerAccent.exe",
"modules\\PowerAccent\\PowerToys.PowerAccentModuleInterface.dll",
@@ -247,6 +247,7 @@
"modules\\launcher\\Interop.Microsoft.Office.Interop.OneNote.dll",
"modules\\launcher\\hyjiacan.py4n.dll",
"Settings\\Microsoft.Graphics.Canvas.Interop.dll",
"Settings\\clrcompression.dll",
"Settings\\CommunityToolkit.Labs.WinUI.SettingsControls.dll",
"ColorCode.Core.dll",
"ColorCode.UWP.dll",

View File

@@ -9,6 +9,8 @@ jobs:
variables:
BuildConfiguration: ${{ parameters.configuration }}
BuildPlatform: ${{ parameters.platform }}
NUGET_RESTORE_MSBUILD_ARGS: /p:Platform=${{ parameters.platform }} # Required for nuget to work due to self contained
NODE_OPTIONS: --max_old_space_size=16384
pool:
demands: ImageOverride -equals WinDevVS17-latest
${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}:

View File

@@ -8,7 +8,7 @@ steps:
clean: true
- task: PowerShell@2
displayName: Verifying Nuget packages for PowerToys.sln
displayName: Verifying Nuget package versions for PowerToys.sln
inputs:
filePath: '$(build.sourcesdirectory)\.pipelines\verifyNugetPackages.ps1'
arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln'
@@ -69,7 +69,7 @@ steps:
configPath: NuGet.config
restoreSolution: PowerToys.sln
restoreDirectory: '$(Build.SourcesDirectory)\packages'
- task: VSBuild@1
displayName: 'Build PowerToys.sln'
inputs:
@@ -137,12 +137,6 @@ steps:
msbuildArgs: ${{ parameters.additionalBuildArguments }}
maximumCpuCount: true
- task: PowerShell@2
displayName: Download and install WiX 3.14 development build
inputs:
targetType: filePath
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
- task: NuGetCommand@2
displayName: Restore NuGet packages for PowerToysSetup.sln
inputs:
@@ -152,6 +146,12 @@ steps:
restoreSolution: installer\PowerToysSetup.sln
restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'
- task: PowerShell@2
displayName: Download and install WiX 3.14 development build
inputs:
targetType: filePath
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
- task: VSBuild@1
displayName: 'Build PowerToys MSI'
inputs:
@@ -227,3 +227,10 @@ steps:
**\powerpreviewTest.dll
**\UnitTests-FancyZones.dll
!**\obj\**
- task: PowerShell@2
displayName: Verifying Notice.md and Nuget packages match
inputs:
filePath: '$(build.sourcesdirectory)\.pipelines\verifyNoticeMdAgainstNugetPackages.ps1'
arguments: -path '$(build.sourcesdirectory)\'
pwsh: true

View File

@@ -22,6 +22,7 @@ parameters:
variables:
IsPipeline: 1 # The installer uses this to detect whether it should pick up localizations
SkipCppCodeAnalysis: 1 # Skip the code analysis to speed up release CI. It runs on PR CI, anyway
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
resources:
@@ -38,6 +39,8 @@ jobs:
${{ config }}_${{ platform }}:
BuildConfiguration: ${{ config }}
BuildPlatform: ${{ platform }}
NUGET_RESTORE_MSBUILD_ARGS: /p:Platform=${{ platform }} # Required for nuget to work due to self contained
NODE_OPTIONS: --max_old_space_size=16384
displayName: Build
timeoutInMinutes: 120 # Some of the loc stuff adds quite a bit of time.
cancelTimeoutInMinutes: 1
@@ -314,7 +317,7 @@ jobs:
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysSetupCustomActions
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysSetupCustomActions /p:RunBuildEvents=true
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
maximumCpuCount: true
@@ -359,7 +362,7 @@ jobs:
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /target:PowerToysInstaller /bl:$(Build.SourcesDirectory)\msbuild.binlog
msbuildArgs: /p:CIBuild=true /target:PowerToysInstaller /bl:$(Build.SourcesDirectory)\msbuild.binlog /p:RunBuildEvents=false
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the CustomActions dll
@@ -545,7 +548,7 @@ jobs:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: GPO Files'
inputs:
PathtoPublish: doc\gpo\assets
PathtoPublish: src\gpo\assets
ArtifactName: GroupPolicyObjectsFiles

View File

@@ -22,7 +22,7 @@ catch {
$solutionFile = [Microsoft.Build.Construction.SolutionFile]::Parse($solution);
$arm64SlnConfigs = $solutionFile.SolutionConfigurations | Where-Object {
$_.PlatformName -eq "ARM64"
$_.PlatformName -ceq "ARM64"
};
# Should have two configurations. Debug and Release.
@@ -39,9 +39,9 @@ $projects = $solutionFile.ProjectsInOrder | Where-Object {
# Enumerate through the projects and add any project with a mismatched platform and project configuration
foreach ($project in $projects) {
foreach ($slnConfig in $arm64SlnConfigs.FullName) {
if ($project.ProjectConfigurations.$slnConfig.FullName -ne $slnConfig) {
$errorTable[$project.ProjectName] += @(""
| Select-Object @{n = "Configuration"; e = { $project.ProjectConfigurations.$slnConfig.FullName } },
if ($project.ProjectConfigurations.$slnConfig.FullName -cne $slnConfig) {
$errorTable[$project.ProjectName] += @(""`
| Select-Object @{n = "Configuration"; e = { $project.ProjectConfigurations.$slnConfig.FullName ?? "Missing platform" } },
@{n = "ExpectedConfiguration"; e = { $slnConfig } })
}
}

View File

@@ -0,0 +1,73 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$path
)
$noticeFile = Get-Content -Raw "NOTICE.md"
Write-Host $noticeFile
Write-Host "Verifying NuGet packages"
$projFiles = Get-ChildItem $path -Filter *.csproj -force -Recurse
$projFiles.Count
Write-Host "Going through all csproj files"
$totalList = $projFiles | ForEach-Object -Parallel {
$csproj = $_
$nugetTemp = @();
#Workaround for preventing exit code from dotnet process from reflecting exit code in PowerShell
$procInfo = New-Object System.Diagnostics.ProcessStartInfo -Property @{
FileName = "dotnet.exe";
Arguments = "list $csproj package";
RedirectStandardOutput = $true;
RedirectStandardError = $true;
}
$proc = [System.Diagnostics.Process]::Start($procInfo);
while (!$proc.StandardOutput.EndOfStream) {
$nugetTemp += $proc.StandardOutput.ReadLine();
}
$proc = $null;
$procInfo = $null;
if($nugetTemp -is [array] -and $nugetTemp.count -gt 3)
{
$temp = New-Object System.Collections.ArrayList
$temp.AddRange($nugetTemp)
$temp.RemoveRange(0, 3)
foreach($p in $temp)
{
# breaking item down to usable array and getting 1 and 2, see below of a sample output
# > PACKAGE VERSION VERSION
$p = -split $p
$p = $p[1, 2]
$tempString = $p[0] + " " + $p[1]
if(![string]::IsNullOrWhiteSpace($tempString))
{
echo "- $tempString";
}
}
$csproj = $null;
}
} -ThrottleLimit 4 | Sort-Object
$returnList = [System.Collections.Generic.HashSet[string]]($totalList) -join "`r`n"
Write-Host $returnList
if (!$noticeFile.Trim().EndsWith($returnList.Trim()))
{
Write-Host -ForegroundColor Red "Notice.md does not match NuGet list."
exit 1
}
exit 0

View File

@@ -62,7 +62,8 @@ $items | ForEach-Object {
(-not $_.Name.EndsWith("Microsoft.WindowsAppRuntime.Bootstrap.dll")) -and
(-not $_.Name.EndsWith("MRM.dll")) -and
(-not $_.Name.EndsWith("PushNotificationsLongRunningTask.ProxyStub.dll")) -and
(-not $_.Name.EndsWith("WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll"))
(-not $_.Name.EndsWith("WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll")) -and
(-not $_.Name.EndsWith("System.Diagnostics.EventLog.Messages.dll"))
)
{
Write-Host "Version not set: " + $_.FullName

View File

@@ -18,10 +18,6 @@ Damien has helped out by developing and contributing the Quick Accent utility.
### [@davidegiacometti](https://github.com/davidegiacometti) - [Davide Giacometti](https://www.linkedin.com/in/davidegiacometti/)
Davide has helped fix multiple bugs, added new utilities, features, as well as help us with the ARM64 effort by porting applications to .NET Core.
### [@dend](https://github.com/dend/) - Den Delimarsky
PowerToys Awake is a tool to keep your computer awake.
### [@franky920920](https://github.com/franky920920) - [Franky Chen](https://frankychen.net)
Franky has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes to PowerToys.
@@ -87,7 +83,11 @@ Image Resizer is from Brice.
### [@chrdavis](https://github.com/chrdavis/) - Chris Davis
PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Explorer
PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Explorer.
### [@dend](https://github.com/dend/) - Den Delimarsky
PowerToys Awake is a tool to keep your computer awake.
### [@Niels9001](https://github.com/niels9001/) - [Niels Laute](https://nielslaute.com/)

View File

@@ -30,19 +30,24 @@
</ClCompile>
</ItemDefinitionGroup>
<!-- Run code analysis locally and in PR CI, but not on release CI -->
<PropertyGroup Condition="'$(SkipCppCodeAnalysis)' == ''">
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>$(MsbuildThisFileDirectory)\CppRuleSet.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<!-- C++ source compile-specific things for all configurations -->
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<PreferredToolArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'ARM64' or '$(PROCESSOR_ARCHITEW6432)' == 'ARM64'">arm64</PreferredToolArchitecture>
<VcpkgEnabled>false</VcpkgEnabled>
<ExternalIncludePath>$(MSBuildThisFileFullPath)\..\deps\;$(MSBuildThisFileFullPath)\..\packages\;$(ExternalIncludePath)</ExternalIncludePath>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>$(MsbuildThisFileDirectory)\CppRuleSet.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<WarningLevel>Level4</WarningLevel>
<DisableSpecificWarnings>26800;28251;6387;4505;4679;4702;6248;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<DisableSpecificWarnings>4679;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<DisableAnalyzeExternal >true</DisableAnalyzeExternal>
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
<ConformanceMode>false</ConformanceMode>
@@ -115,4 +120,4 @@
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
</Project>
</Project>

View File

@@ -1,258 +1,324 @@
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Cpp Rule Set" Description="Based on Microsoft Native Recommended Rules. These rules focus on the most critical and common problems in your native code, including potential security holes and application crashes. You should include this rule set in any custom rule set you create for your native projects. This ruleset is designed to work with Visual Studio Professional edition and higher." ToolsVersion="17.0">
<RuleSet Name="Cpp Rule Set" Description="Based on Microsoft Native Recommended Rules and CPP core guideline rules." ToolsVersion="17.0">
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C26100" Action="Info" />
<Rule Id="C26101" Action="Info" />
<Rule Id="C26110" Action="Info" />
<Rule Id="C26111" Action="Info" />
<Rule Id="C26112" Action="Info" />
<Rule Id="C26115" Action="Info" />
<Rule Id="C26116" Action="Info" />
<Rule Id="C26117" Action="Info" />
<Rule Id="C26140" Action="Info" />
<Rule Id="C26437" Action="Info" />
<Rule Id="C26439" Action="Info" />
<Rule Id="C26441" Action="Info" />
<Rule Id="C26444" Action="Info" />
<Rule Id="C26449" Action="Info" />
<Rule Id="C26450" Action="Info" />
<Rule Id="C26100" Action="Hidden" />
<Rule Id="C26101" Action="Hidden" />
<Rule Id="C26110" Action="Hidden" />
<Rule Id="C26111" Action="Hidden" />
<Rule Id="C26112" Action="Hidden" />
<Rule Id="C26115" Action="Hidden" />
<Rule Id="C26116" Action="Hidden" />
<Rule Id="C26117" Action="Hidden" />
<Rule Id="C26140" Action="Hidden" />
<Rule Id="C26400" Action="Hidden" />
<Rule Id="C26401" Action="Hidden" />
<Rule Id="C26402" Action="Error" />
<Rule Id="C26403" Action="Error" />
<Rule Id="C26404" Action="Error" />
<Rule Id="C26405" Action="Error" />
<Rule Id="C26406" Action="Error" />
<Rule Id="C26407" Action="Error" />
<Rule Id="C26408" Action="Hidden" />
<Rule Id="C26409" Action="Hidden" />
<Rule Id="C26410" Action="Error" />
<Rule Id="C26411" Action="Error" />
<Rule Id="C26414" Action="Hidden" />
<Rule Id="C26415" Action="Hidden" />
<Rule Id="C26416" Action="Error" />
<Rule Id="C26417" Action="Hidden" />
<Rule Id="C26418" Action="Hidden" />
<Rule Id="C26426" Action="Hidden" />
<Rule Id="C26427" Action="Error" />
<Rule Id="C26429" Action="Hidden" />
<Rule Id="C26430" Action="Hidden" />
<Rule Id="C26431" Action="Hidden" />
<Rule Id="C26432" Action="Hidden" />
<Rule Id="C26433" Action="Hidden" />
<Rule Id="C26434" Action="Hidden" />
<Rule Id="C26435" Action="Hidden" />
<Rule Id="C26436" Action="Hidden" />
<Rule Id="C26437" Action="Error" />
<Rule Id="C26438" Action="Hidden" />
<Rule Id="C26439" Action="Error" />
<Rule Id="C26440" Action="Hidden" />
<Rule Id="C26441" Action="Error" />
<Rule Id="C26443" Action="Error" />
<Rule Id="C26444" Action="Error" />
<Rule Id="C26445" Action="Error" />
<Rule Id="C26446" Action="Hidden" />
<Rule Id="C26447" Action="Hidden" />
<Rule Id="C26448" Action="Hidden" />
<Rule Id="C26449" Action="Error" />
<Rule Id="C26450" Action="Error" />
<Rule Id="C26451" Action="Error" />
<Rule Id="C26452" Action="Info" />
<Rule Id="C26453" Action="Info" />
<Rule Id="C26454" Action="Info" />
<Rule Id="C26478" Action="Info" />
<Rule Id="C26479" Action="Info" />
<Rule Id="C26452" Action="Error" />
<Rule Id="C26453" Action="Error" />
<Rule Id="C26454" Action="Error" />
<Rule Id="C26455" Action="Hidden" />
<Rule Id="C26456" Action="Hidden" />
<Rule Id="C26459" Action="Hidden" />
<Rule Id="C26460" Action="Hidden" />
<Rule Id="C26461" Action="Hidden" />
<Rule Id="C26462" Action="Hidden" />
<Rule Id="C26463" Action="Error" />
<Rule Id="C26464" Action="Error" />
<Rule Id="C26465" Action="Hidden" />
<Rule Id="C26466" Action="Error" />
<Rule Id="C26471" Action="Error" />
<Rule Id="C26472" Action="Hidden" />
<Rule Id="C26473" Action="Hidden" />
<Rule Id="C26474" Action="Hidden" />
<Rule Id="C26475" Action="Error" />
<Rule Id="C26476" Action="Hidden" />
<Rule Id="C26477" Action="Hidden" />
<Rule Id="C26478" Action="Error" />
<Rule Id="C26479" Action="Error" />
<Rule Id="C26481" Action="Hidden" />
<Rule Id="C26482" Action="Hidden" />
<Rule Id="C26483" Action="Error" />
<Rule Id="C26485" Action="Hidden" />
<Rule Id="C26490" Action="Hidden" />
<Rule Id="C26491" Action="Hidden" />
<Rule Id="C26492" Action="Hidden" />
<Rule Id="C26493" Action="Hidden" />
<Rule Id="C26494" Action="Hidden" />
<Rule Id="C26495" Action="Error" />
<Rule Id="C26498" Action="Info" />
<Rule Id="C26800" Action="Info" />
<Rule Id="C26810" Action="Info" />
<Rule Id="C26811" Action="Info" />
<Rule Id="C26813" Action="Info" />
<Rule Id="C26815" Action="Info" />
<Rule Id="C26816" Action="Info" />
<Rule Id="C26817" Action="Info" />
<Rule Id="C26819" Action="Info" />
<Rule Id="C26820" Action="Info" />
<Rule Id="C26827" Action="Info" />
<Rule Id="C26828" Action="Info" />
<Rule Id="C28020" Action="Info" />
<Rule Id="C28021" Action="Info" />
<Rule Id="C28022" Action="Info" />
<Rule Id="C28023" Action="Info" />
<Rule Id="C28024" Action="Info" />
<Rule Id="C28039" Action="Info" />
<Rule Id="C28112" Action="Info" />
<Rule Id="C28113" Action="Info" />
<Rule Id="C28125" Action="Info" />
<Rule Id="C28137" Action="Info" />
<Rule Id="C28138" Action="Info" />
<Rule Id="C28159" Action="Info" />
<Rule Id="C28160" Action="Info" />
<Rule Id="C28163" Action="Info" />
<Rule Id="C28164" Action="Info" />
<Rule Id="C28182" Action="Info" />
<Rule Id="C28183" Action="Info" />
<Rule Id="C28193" Action="Info" />
<Rule Id="C28196" Action="Info" />
<Rule Id="C28202" Action="Info" />
<Rule Id="C28203" Action="Info" />
<Rule Id="C28205" Action="Info" />
<Rule Id="C28206" Action="Info" />
<Rule Id="C28207" Action="Info" />
<Rule Id="C28209" Action="Info" />
<Rule Id="C28210" Action="Info" />
<Rule Id="C28211" Action="Info" />
<Rule Id="C28212" Action="Info" />
<Rule Id="C28213" Action="Info" />
<Rule Id="C28214" Action="Info" />
<Rule Id="C28215" Action="Info" />
<Rule Id="C28216" Action="Info" />
<Rule Id="C28217" Action="Info" />
<Rule Id="C28218" Action="Info" />
<Rule Id="C28219" Action="Info" />
<Rule Id="C28220" Action="Info" />
<Rule Id="C28221" Action="Info" />
<Rule Id="C28222" Action="Info" />
<Rule Id="C28223" Action="Info" />
<Rule Id="C28224" Action="Info" />
<Rule Id="C28225" Action="Info" />
<Rule Id="C28226" Action="Info" />
<Rule Id="C28227" Action="Info" />
<Rule Id="C28228" Action="Info" />
<Rule Id="C28229" Action="Info" />
<Rule Id="C28230" Action="Info" />
<Rule Id="C28231" Action="Info" />
<Rule Id="C28232" Action="Info" />
<Rule Id="C28233" Action="Info" />
<Rule Id="C28234" Action="Info" />
<Rule Id="C28235" Action="Info" />
<Rule Id="C28236" Action="Info" />
<Rule Id="C28237" Action="Info" />
<Rule Id="C28238" Action="Info" />
<Rule Id="C28239" Action="Info" />
<Rule Id="C28240" Action="Info" />
<Rule Id="C28241" Action="Info" />
<Rule Id="C28243" Action="Info" />
<Rule Id="C28244" Action="Info" />
<Rule Id="C28245" Action="Info" />
<Rule Id="C28246" Action="Info" />
<Rule Id="C28250" Action="Info" />
<Rule Id="C28251" Action="Info" />
<Rule Id="C28252" Action="Info" />
<Rule Id="C28253" Action="Info" />
<Rule Id="C28254" Action="Info" />
<Rule Id="C28262" Action="Info" />
<Rule Id="C28263" Action="Info" />
<Rule Id="C28267" Action="Info" />
<Rule Id="C28272" Action="Info" />
<Rule Id="C28273" Action="Info" />
<Rule Id="C28275" Action="Info" />
<Rule Id="C28279" Action="Info" />
<Rule Id="C28280" Action="Info" />
<Rule Id="C28282" Action="Info" />
<Rule Id="C28285" Action="Info" />
<Rule Id="C28286" Action="Info" />
<Rule Id="C28287" Action="Info" />
<Rule Id="C28288" Action="Info" />
<Rule Id="C28289" Action="Info" />
<Rule Id="C28290" Action="Info" />
<Rule Id="C28291" Action="Info" />
<Rule Id="C28300" Action="Info" />
<Rule Id="C28301" Action="Info" />
<Rule Id="C28302" Action="Info" />
<Rule Id="C28303" Action="Info" />
<Rule Id="C28304" Action="Info" />
<Rule Id="C28305" Action="Info" />
<Rule Id="C28306" Action="Info" />
<Rule Id="C28307" Action="Info" />
<Rule Id="C28308" Action="Info" />
<Rule Id="C28309" Action="Info" />
<Rule Id="C28350" Action="Info" />
<Rule Id="C28351" Action="Info" />
<Rule Id="C33001" Action="Info" />
<Rule Id="C33004" Action="Info" />
<Rule Id="C33005" Action="Info" />
<Rule Id="C33010" Action="Info" />
<Rule Id="C33011" Action="Info" />
<Rule Id="C33020" Action="Info" />
<Rule Id="C6001" Action="Info" />
<Rule Id="C6011" Action="Info" />
<Rule Id="C6029" Action="Info" />
<Rule Id="C6031" Action="Info" />
<Rule Id="C6053" Action="Info" />
<Rule Id="C6054" Action="Info" />
<Rule Id="C6059" Action="Info" />
<Rule Id="C6063" Action="Info" />
<Rule Id="C6064" Action="Info" />
<Rule Id="C6066" Action="Info" />
<Rule Id="C6067" Action="Info" />
<Rule Id="C6101" Action="Info" />
<Rule Id="C6200" Action="Info" />
<Rule Id="C6201" Action="Info" />
<Rule Id="C6214" Action="Info" />
<Rule Id="C6215" Action="Info" />
<Rule Id="C6216" Action="Info" />
<Rule Id="C6217" Action="Info" />
<Rule Id="C6220" Action="Info" />
<Rule Id="C6226" Action="Info" />
<Rule Id="C6230" Action="Info" />
<Rule Id="C6235" Action="Info" />
<Rule Id="C6236" Action="Info" />
<Rule Id="C6237" Action="Info" />
<Rule Id="C6242" Action="Info" />
<Rule Id="C6248" Action="Info" />
<Rule Id="C6250" Action="Info" />
<Rule Id="C6255" Action="Info" />
<Rule Id="C6258" Action="Info" />
<Rule Id="C6259" Action="Info" />
<Rule Id="C6260" Action="Info" />
<Rule Id="C6262" Action="Info" />
<Rule Id="C6263" Action="Info" />
<Rule Id="C6268" Action="Info" />
<Rule Id="C6269" Action="Info" />
<Rule Id="C6270" Action="Info" />
<Rule Id="C6271" Action="Info" />
<Rule Id="C6272" Action="Info" />
<Rule Id="C6273" Action="Info" />
<Rule Id="C6274" Action="Info" />
<Rule Id="C6276" Action="Info" />
<Rule Id="C6277" Action="Info" />
<Rule Id="C6278" Action="Info" />
<Rule Id="C6279" Action="Info" />
<Rule Id="C6280" Action="Info" />
<Rule Id="C6281" Action="Info" />
<Rule Id="C6282" Action="Info" />
<Rule Id="C6283" Action="Info" />
<Rule Id="C6284" Action="Info" />
<Rule Id="C6285" Action="Info" />
<Rule Id="C6286" Action="Info" />
<Rule Id="C6287" Action="Info" />
<Rule Id="C6288" Action="Info" />
<Rule Id="C6289" Action="Info" />
<Rule Id="C6290" Action="Info" />
<Rule Id="C6291" Action="Info" />
<Rule Id="C6292" Action="Info" />
<Rule Id="C6293" Action="Info" />
<Rule Id="C6294" Action="Info" />
<Rule Id="C6295" Action="Info" />
<Rule Id="C6296" Action="Info" />
<Rule Id="C6297" Action="Info" />
<Rule Id="C6299" Action="Info" />
<Rule Id="C6302" Action="Info" />
<Rule Id="C6303" Action="Info" />
<Rule Id="C6305" Action="Info" />
<Rule Id="C6306" Action="Info" />
<Rule Id="C6308" Action="Info" />
<Rule Id="C6310" Action="Info" />
<Rule Id="C6312" Action="Info" />
<Rule Id="C6314" Action="Info" />
<Rule Id="C6317" Action="Info" />
<Rule Id="C6318" Action="Info" />
<Rule Id="C6319" Action="Info" />
<Rule Id="C6324" Action="Info" />
<Rule Id="C6328" Action="Info" />
<Rule Id="C6331" Action="Info" />
<Rule Id="C6332" Action="Info" />
<Rule Id="C6333" Action="Info" />
<Rule Id="C6335" Action="Info" />
<Rule Id="C6381" Action="Info" />
<Rule Id="C6383" Action="Info" />
<Rule Id="C6384" Action="Info" />
<Rule Id="C6385" Action="Info" />
<Rule Id="C6386" Action="Info" />
<Rule Id="C6387" Action="Info" />
<Rule Id="C6388" Action="Info" />
<Rule Id="C6500" Action="Info" />
<Rule Id="C6501" Action="Info" />
<Rule Id="C6503" Action="Info" />
<Rule Id="C6504" Action="Info" />
<Rule Id="C6505" Action="Info" />
<Rule Id="C6506" Action="Info" />
<Rule Id="C6508" Action="Info" />
<Rule Id="C6509" Action="Info" />
<Rule Id="C6510" Action="Info" />
<Rule Id="C6511" Action="Info" />
<Rule Id="C6513" Action="Info" />
<Rule Id="C6514" Action="Info" />
<Rule Id="C6515" Action="Info" />
<Rule Id="C6516" Action="Info" />
<Rule Id="C6517" Action="Info" />
<Rule Id="C6518" Action="Info" />
<Rule Id="C6522" Action="Info" />
<Rule Id="C6525" Action="Info" />
<Rule Id="C6527" Action="Info" />
<Rule Id="C6530" Action="Info" />
<Rule Id="C6540" Action="Info" />
<Rule Id="C6551" Action="Info" />
<Rule Id="C6552" Action="Info" />
<Rule Id="C6701" Action="Info" />
<Rule Id="C6702" Action="Info" />
<Rule Id="C6703" Action="Info" />
<Rule Id="C6704" Action="Info" />
<Rule Id="C6705" Action="Info" />
<Rule Id="C6706" Action="Info" />
<Rule Id="C6993" Action="Info" />
<Rule Id="C6995" Action="Info" />
<Rule Id="C6997" Action="Info" />
<Rule Id="C26496" Action="Hidden" />
<Rule Id="C26497" Action="Hidden" />
<Rule Id="C26498" Action="Error" />
<Rule Id="C26800" Action="Hidden" />
<Rule Id="C26810" Action="Error" />
<Rule Id="C26811" Action="Hidden" />
<Rule Id="C26812" Action="Hidden" />
<Rule Id="C26813" Action="Hidden" />
<Rule Id="C26814" Action="Hidden" />
<Rule Id="C26815" Action="Hidden" />
<Rule Id="C26816" Action="Hidden" />
<Rule Id="C26817" Action="Hidden" />
<Rule Id="C26818" Action="Hidden" />
<Rule Id="C26819" Action="Error" />
<Rule Id="C26820" Action="Error" />
<Rule Id="C26826" Action="Hidden" />
<Rule Id="C26827" Action="Error" />
<Rule Id="C26828" Action="Error" />
<Rule Id="C28020" Action="Hidden" />
<Rule Id="C28021" Action="Hidden" />
<Rule Id="C28022" Action="Hidden" />
<Rule Id="C28023" Action="Hidden" />
<Rule Id="C28024" Action="Hidden" />
<Rule Id="C28039" Action="Hidden" />
<Rule Id="C28112" Action="Hidden" />
<Rule Id="C28113" Action="Hidden" />
<Rule Id="C28125" Action="Hidden" />
<Rule Id="C28137" Action="Hidden" />
<Rule Id="C28138" Action="Hidden" />
<Rule Id="C28159" Action="Hidden" />
<Rule Id="C28160" Action="Hidden" />
<Rule Id="C28163" Action="Hidden" />
<Rule Id="C28164" Action="Hidden" />
<Rule Id="C28182" Action="Hidden" />
<Rule Id="C28183" Action="Hidden" />
<Rule Id="C28193" Action="Hidden" />
<Rule Id="C28196" Action="Hidden" />
<Rule Id="C28202" Action="Hidden" />
<Rule Id="C28203" Action="Hidden" />
<Rule Id="C28205" Action="Hidden" />
<Rule Id="C28206" Action="Hidden" />
<Rule Id="C28207" Action="Hidden" />
<Rule Id="C28209" Action="Hidden" />
<Rule Id="C28210" Action="Hidden" />
<Rule Id="C28211" Action="Hidden" />
<Rule Id="C28212" Action="Hidden" />
<Rule Id="C28213" Action="Hidden" />
<Rule Id="C28214" Action="Hidden" />
<Rule Id="C28215" Action="Hidden" />
<Rule Id="C28216" Action="Hidden" />
<Rule Id="C28217" Action="Hidden" />
<Rule Id="C28218" Action="Hidden" />
<Rule Id="C28219" Action="Hidden" />
<Rule Id="C28220" Action="Hidden" />
<Rule Id="C28221" Action="Hidden" />
<Rule Id="C28222" Action="Hidden" />
<Rule Id="C28223" Action="Hidden" />
<Rule Id="C28224" Action="Hidden" />
<Rule Id="C28225" Action="Hidden" />
<Rule Id="C28226" Action="Hidden" />
<Rule Id="C28227" Action="Hidden" />
<Rule Id="C28228" Action="Hidden" />
<Rule Id="C28229" Action="Hidden" />
<Rule Id="C28230" Action="Hidden" />
<Rule Id="C28231" Action="Hidden" />
<Rule Id="C28232" Action="Hidden" />
<Rule Id="C28233" Action="Hidden" />
<Rule Id="C28234" Action="Hidden" />
<Rule Id="C28235" Action="Hidden" />
<Rule Id="C28236" Action="Hidden" />
<Rule Id="C28237" Action="Hidden" />
<Rule Id="C28238" Action="Hidden" />
<Rule Id="C28239" Action="Hidden" />
<Rule Id="C28240" Action="Hidden" />
<Rule Id="C28241" Action="Hidden" />
<Rule Id="C28243" Action="Hidden" />
<Rule Id="C28244" Action="Hidden" />
<Rule Id="C28245" Action="Hidden" />
<Rule Id="C28246" Action="Hidden" />
<Rule Id="C28250" Action="Hidden" />
<Rule Id="C28251" Action="Hidden" />
<Rule Id="C28252" Action="Hidden" />
<Rule Id="C28253" Action="Hidden" />
<Rule Id="C28254" Action="Hidden" />
<Rule Id="C28262" Action="Hidden" />
<Rule Id="C28263" Action="Hidden" />
<Rule Id="C28267" Action="Hidden" />
<Rule Id="C28272" Action="Hidden" />
<Rule Id="C28273" Action="Hidden" />
<Rule Id="C28275" Action="Hidden" />
<Rule Id="C28279" Action="Hidden" />
<Rule Id="C28280" Action="Hidden" />
<Rule Id="C28282" Action="Hidden" />
<Rule Id="C28285" Action="Hidden" />
<Rule Id="C28286" Action="Hidden" />
<Rule Id="C28287" Action="Hidden" />
<Rule Id="C28288" Action="Hidden" />
<Rule Id="C28289" Action="Hidden" />
<Rule Id="C28290" Action="Hidden" />
<Rule Id="C28291" Action="Hidden" />
<Rule Id="C28300" Action="Hidden" />
<Rule Id="C28301" Action="Hidden" />
<Rule Id="C28302" Action="Hidden" />
<Rule Id="C28303" Action="Hidden" />
<Rule Id="C28304" Action="Hidden" />
<Rule Id="C28305" Action="Hidden" />
<Rule Id="C28306" Action="Hidden" />
<Rule Id="C28307" Action="Hidden" />
<Rule Id="C28308" Action="Hidden" />
<Rule Id="C28309" Action="Hidden" />
<Rule Id="C28350" Action="Hidden" />
<Rule Id="C28351" Action="Hidden" />
<Rule Id="C33001" Action="Hidden" />
<Rule Id="C33004" Action="Hidden" />
<Rule Id="C33005" Action="Hidden" />
<Rule Id="C33010" Action="Hidden" />
<Rule Id="C33011" Action="Hidden" />
<Rule Id="C33020" Action="Hidden" />
<Rule Id="C6001" Action="Hidden" />
<Rule Id="C6011" Action="Hidden" />
<Rule Id="C6029" Action="Hidden" />
<Rule Id="C6031" Action="Hidden" />
<Rule Id="C6053" Action="Hidden" />
<Rule Id="C6054" Action="Hidden" />
<Rule Id="C6059" Action="Hidden" />
<Rule Id="C6063" Action="Hidden" />
<Rule Id="C6064" Action="Hidden" />
<Rule Id="C6066" Action="Hidden" />
<Rule Id="C6067" Action="Hidden" />
<Rule Id="C6101" Action="Hidden" />
<Rule Id="C6200" Action="Hidden" />
<Rule Id="C6201" Action="Hidden" />
<Rule Id="C6214" Action="Hidden" />
<Rule Id="C6215" Action="Hidden" />
<Rule Id="C6216" Action="Hidden" />
<Rule Id="C6217" Action="Hidden" />
<Rule Id="C6220" Action="Hidden" />
<Rule Id="C6226" Action="Hidden" />
<Rule Id="C6230" Action="Hidden" />
<Rule Id="C6235" Action="Hidden" />
<Rule Id="C6236" Action="Hidden" />
<Rule Id="C6237" Action="Hidden" />
<Rule Id="C6242" Action="Hidden" />
<Rule Id="C6248" Action="Hidden" />
<Rule Id="C6250" Action="Hidden" />
<Rule Id="C6255" Action="Hidden" />
<Rule Id="C6258" Action="Hidden" />
<Rule Id="C6259" Action="Hidden" />
<Rule Id="C6260" Action="Hidden" />
<Rule Id="C6262" Action="Hidden" />
<Rule Id="C6263" Action="Hidden" />
<Rule Id="C6268" Action="Hidden" />
<Rule Id="C6269" Action="Hidden" />
<Rule Id="C6270" Action="Hidden" />
<Rule Id="C6271" Action="Hidden" />
<Rule Id="C6272" Action="Hidden" />
<Rule Id="C6273" Action="Hidden" />
<Rule Id="C6274" Action="Hidden" />
<Rule Id="C6276" Action="Hidden" />
<Rule Id="C6277" Action="Hidden" />
<Rule Id="C6278" Action="Hidden" />
<Rule Id="C6279" Action="Hidden" />
<Rule Id="C6280" Action="Hidden" />
<Rule Id="C6281" Action="Hidden" />
<Rule Id="C6282" Action="Hidden" />
<Rule Id="C6283" Action="Hidden" />
<Rule Id="C6284" Action="Hidden" />
<Rule Id="C6285" Action="Hidden" />
<Rule Id="C6286" Action="Hidden" />
<Rule Id="C6287" Action="Hidden" />
<Rule Id="C6288" Action="Hidden" />
<Rule Id="C6289" Action="Hidden" />
<Rule Id="C6290" Action="Hidden" />
<Rule Id="C6291" Action="Hidden" />
<Rule Id="C6292" Action="Hidden" />
<Rule Id="C6293" Action="Hidden" />
<Rule Id="C6294" Action="Hidden" />
<Rule Id="C6295" Action="Hidden" />
<Rule Id="C6296" Action="Hidden" />
<Rule Id="C6297" Action="Hidden" />
<Rule Id="C6299" Action="Hidden" />
<Rule Id="C6302" Action="Hidden" />
<Rule Id="C6303" Action="Hidden" />
<Rule Id="C6305" Action="Hidden" />
<Rule Id="C6306" Action="Hidden" />
<Rule Id="C6308" Action="Hidden" />
<Rule Id="C6310" Action="Hidden" />
<Rule Id="C6312" Action="Hidden" />
<Rule Id="C6314" Action="Hidden" />
<Rule Id="C6317" Action="Hidden" />
<Rule Id="C6318" Action="Hidden" />
<Rule Id="C6319" Action="Hidden" />
<Rule Id="C6324" Action="Hidden" />
<Rule Id="C6328" Action="Hidden" />
<Rule Id="C6331" Action="Hidden" />
<Rule Id="C6332" Action="Hidden" />
<Rule Id="C6333" Action="Hidden" />
<Rule Id="C6335" Action="Hidden" />
<Rule Id="C6381" Action="Hidden" />
<Rule Id="C6383" Action="Hidden" />
<Rule Id="C6384" Action="Hidden" />
<Rule Id="C6385" Action="Hidden" />
<Rule Id="C6386" Action="Hidden" />
<Rule Id="C6387" Action="Hidden" />
<Rule Id="C6388" Action="Hidden" />
<Rule Id="C6500" Action="Hidden" />
<Rule Id="C6501" Action="Hidden" />
<Rule Id="C6503" Action="Hidden" />
<Rule Id="C6504" Action="Hidden" />
<Rule Id="C6505" Action="Hidden" />
<Rule Id="C6506" Action="Hidden" />
<Rule Id="C6508" Action="Hidden" />
<Rule Id="C6509" Action="Hidden" />
<Rule Id="C6510" Action="Hidden" />
<Rule Id="C6511" Action="Hidden" />
<Rule Id="C6513" Action="Hidden" />
<Rule Id="C6514" Action="Hidden" />
<Rule Id="C6515" Action="Hidden" />
<Rule Id="C6516" Action="Hidden" />
<Rule Id="C6517" Action="Hidden" />
<Rule Id="C6518" Action="Hidden" />
<Rule Id="C6522" Action="Hidden" />
<Rule Id="C6525" Action="Hidden" />
<Rule Id="C6527" Action="Hidden" />
<Rule Id="C6530" Action="Hidden" />
<Rule Id="C6540" Action="Hidden" />
<Rule Id="C6551" Action="Hidden" />
<Rule Id="C6552" Action="Hidden" />
<Rule Id="C6701" Action="Hidden" />
<Rule Id="C6702" Action="Hidden" />
<Rule Id="C6703" Action="Hidden" />
<Rule Id="C6704" Action="Hidden" />
<Rule Id="C6705" Action="Hidden" />
<Rule Id="C6706" Action="Hidden" />
<Rule Id="C6993" Action="Hidden" />
<Rule Id="C6995" Action="Hidden" />
<Rule Id="C6997" Action="Hidden" />
</Rules>
</RuleSet>

View File

@@ -29,14 +29,14 @@
</PropertyGroup>
<ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<Compile Include="$(MSBuildThisFileDirectory)\src\codeAnalysis\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" />
<AdditionalFiles Include="$(MSBuildThisFileDirectory)\src\codeAnalysis\StyleCop.json" Link="StyleCop.json" />
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="7.0.0-preview1.22464.1">
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="7.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

View File

@@ -274,3 +274,55 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## NuGet Packages used by PowerToys
- CommunityToolkit.Labs.WinUI.SettingsControls 0.0.7
- CommunityToolkit.Mvvm 8.0.0
- CommunityToolkit.WinUI.UI 7.1.2
- CommunityToolkit.WinUI.UI.Controls 7.1.2
- ControlzEx 5.0.1
- HelixToolkit 2.20.2
- HelixToolkit.Core.Wpf 2.20.2
- hyjiacan.pinyin4net 4.1.1
- Interop.Microsoft.Office.Interop.OneNote 1.1.0.2
- LazyCache 2.4.0
- Mages 2.0.1
- Markdig.Signed 0.27.0
- Microsoft.CodeAnalysis.NetAnalyzers 7.0.0
- Microsoft.Data.Sqlite 7.0.0
- Microsoft.Extensions.Hosting 7.0.0
- Microsoft.NET.Test.Sdk 17.4.1
- Microsoft.Toolkit.Uwp.Notifications 7.1.2
- Microsoft.Web.WebView2 1.0.1343.22
- Microsoft.Windows.CsWin32 0.2.46-beta
- Microsoft.Windows.CsWinRT 2.0.0
- Microsoft.Windows.SDK.BuildTools 10.0.22621.755
- Microsoft.WindowsAppSDK 1.2.221116.1
- Microsoft.Xaml.Behaviors.WinUI.Managed 2.0.9
- Microsoft.Xaml.Behaviors.Wpf 1.1.39
- ModernWpfUI 0.9.4
- Moq 4.18.3
- MSTest.TestAdapter 3.0.1
- MSTest.TestFramework 3.0.1
- NLog 5.0.4
- NLog.Extensions.Logging 5.0.4
- NLog.Schema 5.0.4
- ScipBe.Common.Office.OneNote 3.0.1
- StyleCop.Analyzers 1.2.0-beta.435
- System.CommandLine 2.0.0-beta1.20071.2
- System.ComponentModel.Composition 7.0.0
- System.Configuration.ConfigurationManager 6.0.0
- System.Data.OleDb 7.0.0
- System.Drawing.Common 7.0.0
- System.IO.Abstractions 17.2.3
- System.IO.Abstractions.TestingHelpers 17.2.3
- System.Management 7.0.0
- System.Reactive 5.0.0
- System.Runtime.Caching 7.0.0
- System.ServiceProcess.ServiceController 7.0.0
- UnicodeInformation 2.6.0
- UnitsNet 4.145.0
- Vanara.PInvoke.Shell32 3.4.11
- Vanara.PInvoke.User32 3.4.11
- WinUIEx 1.8.0

View File

@@ -421,8 +421,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PowerAccent", "PowerAccent"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerAccentModuleInterface", "src\modules\poweraccent\PowerAccentModuleInterface\PowerAccentModuleInterface.vcxproj", "{34A354C5-23C7-4343-916C-C52DAF4FC39D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerAccent", "src\modules\poweraccent\PowerAccent\PowerAccent.csproj", "{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerAccent.Core", "src\modules\poweraccent\PowerAccent.Core\PowerAccent.Core.csproj", "{3264DF53-C805-4B0C-867C-FCEAF7AEF762}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerAccent.UI", "src\modules\poweraccent\PowerAccent.UI\PowerAccent.UI.csproj", "{31CAD28E-778A-441C-85BC-40AB3EAA2A10}"
@@ -470,19 +468,23 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GPOWrapper", "src\common\GP
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GPOWrapperProjection", "src\common\GPOWrapperProjection\GPOWrapperProjection.csproj", "{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Peek", "Peek", "{17B4FA70-001E-4D33-BBBB-0D142DBC2E20}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarkdownPreviewHandlerCpp", "src\modules\previewpane\MarkdownPreviewHandlerCpp\MarkdownPreviewHandlerCpp.vcxproj", "{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.UI.WPF", "src\modules\peek\Peek.UI.WPF\Peek.UI.WPF.csproj", "{C0240BC3-95AF-4B38-811A-76E3FD56B576}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GcodePreviewHandlerCpp", "src\modules\previewpane\GcodePreviewHandlerCpp\GcodePreviewHandlerCpp.vcxproj", "{5A5DD09D-723A-44D3-8F2B-293584C3D731}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Peek", "src\modules\peek\peek\peek.vcxproj", "{A1425B53-3D61-4679-8623-E64A0D3D0A48}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MonacoPreviewHandlerCpp", "src\modules\previewpane\MonacoPreviewHandlerCpp\MonacoPreviewHandlerCpp.vcxproj", "{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.UI", "src\modules\peek\Peek.UI\Peek.UI.csproj", "{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdfPreviewHandlerCpp", "src\modules\previewpane\PdfPreviewHandlerCpp\PdfPreviewHandlerCpp.vcxproj", "{54F7C616-FD41-4E62-BFF9-015686914F4D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.Common", "src\modules\peek\Peek.Common\Peek.Common.csproj", "{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SvgPreviewHandlerCpp", "src\modules\previewpane\SvgPreviewHandlerCpp\SvgPreviewHandlerCpp.vcxproj", "{143F13E3-D2E3-4D83-B035-356612D99956}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.FilePreviewer", "src\modules\peek\Peek.FilePreviewer\Peek.FilePreviewer.csproj", "{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GcodeThumbnailProviderCpp", "src\modules\previewpane\GcodeThumbnailProviderCpp\GcodeThumbnailProviderCpp.vcxproj", "{56CC2F10-6E41-453D-BE16-C593A5E58482}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIC", "src\modules\peek\WIC\WIC.csproj", "{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdfThumbnailProviderCpp", "src\modules\previewpane\PdfThumbnailProviderCpp\PdfThumbnailProviderCpp.vcxproj", "{CA5518ED-0458-4B09-8F53-4122B9888655}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StlThumbnailProviderCpp", "src\modules\previewpane\StlThumbnailProviderCpp\StlThumbnailProviderCpp.vcxproj", "{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SvgThumbnailProviderCpp", "src\modules\previewpane\SvgThumbnailProviderCpp\SvgThumbnailProviderCpp.vcxproj", "{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1713,18 +1715,6 @@ Global
{34A354C5-23C7-4343-916C-C52DAF4FC39D}.Release|x64.Build.0 = Release|x64
{34A354C5-23C7-4343-916C-C52DAF4FC39D}.Release|x86.ActiveCfg = Release|x64
{34A354C5-23C7-4343-916C-C52DAF4FC39D}.Release|x86.Build.0 = Release|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|ARM64.Build.0 = Debug|ARM64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|x64.ActiveCfg = Debug|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|x64.Build.0 = Debug|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|x86.ActiveCfg = Debug|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Debug|x86.Build.0 = Debug|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|ARM64.ActiveCfg = Release|ARM64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|ARM64.Build.0 = Release|ARM64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|x64.ActiveCfg = Release|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|x64.Build.0 = Release|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|x86.ActiveCfg = Release|x64
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C}.Release|x86.Build.0 = Release|x64
{3264DF53-C805-4B0C-867C-FCEAF7AEF762}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3264DF53-C805-4B0C-867C-FCEAF7AEF762}.Debug|ARM64.Build.0 = Debug|ARM64
{3264DF53-C805-4B0C-867C-FCEAF7AEF762}.Debug|x64.ActiveCfg = Debug|x64
@@ -1923,84 +1913,114 @@ Global
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.Release|x64.Build.0 = Release|x64
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.Release|x86.ActiveCfg = Release|x64
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.Release|x86.Build.0 = Release|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|ARM64.Build.0 = Debug|ARM64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|x64.ActiveCfg = Debug|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|x64.Build.0 = Debug|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|x86.ActiveCfg = Debug|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Debug|x86.Build.0 = Debug|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|ARM64.ActiveCfg = Release|ARM64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|ARM64.Build.0 = Release|ARM64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|x64.ActiveCfg = Release|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|x64.Build.0 = Release|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|x86.ActiveCfg = Release|x64
{C0240BC3-95AF-4B38-811A-76E3FD56B576}.Release|x86.Build.0 = Release|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|ARM64.Build.0 = Debug|ARM64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|x64.ActiveCfg = Debug|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|x64.Build.0 = Debug|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|x86.ActiveCfg = Debug|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Debug|x86.Build.0 = Debug|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|ARM64.ActiveCfg = Release|ARM64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|ARM64.Build.0 = Release|ARM64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|x64.ActiveCfg = Release|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|x64.Build.0 = Release|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|x86.ActiveCfg = Release|x64
{A1425B53-3D61-4679-8623-E64A0D3D0A48}.Release|x86.Build.0 = Release|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|ARM64.Build.0 = Debug|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|ARM64.Deploy.0 = Debug|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x64.ActiveCfg = Debug|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x64.Build.0 = Debug|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x64.Deploy.0 = Debug|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x86.ActiveCfg = Debug|x86
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x86.Build.0 = Debug|x86
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Debug|x86.Deploy.0 = Debug|x86
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|ARM64.ActiveCfg = Release|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|ARM64.Build.0 = Release|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|ARM64.Deploy.0 = Release|ARM64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x64.ActiveCfg = Release|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x64.Build.0 = Release|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x64.Deploy.0 = Release|x64
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x86.ActiveCfg = Release|x86
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x86.Build.0 = Release|x86
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}.Release|x86.Deploy.0 = Release|x86
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|ARM64.ActiveCfg = Debug|ARM64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|ARM64.Build.0 = Debug|ARM64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|x64.ActiveCfg = Debug|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|x64.Build.0 = Debug|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|x86.ActiveCfg = Debug|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Debug|x86.Build.0 = Debug|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|ARM64.ActiveCfg = Release|ARM64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|ARM64.Build.0 = Release|ARM64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|x64.ActiveCfg = Release|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|x64.Build.0 = Release|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|x86.ActiveCfg = Release|x64
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}.Release|x86.Build.0 = Release|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|ARM64.Build.0 = Debug|ARM64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|x64.ActiveCfg = Debug|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|x64.Build.0 = Debug|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|x86.ActiveCfg = Debug|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Debug|x86.Build.0 = Debug|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|ARM64.ActiveCfg = Release|ARM64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|ARM64.Build.0 = Release|ARM64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|x64.ActiveCfg = Release|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|x64.Build.0 = Release|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|x86.ActiveCfg = Release|x64
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}.Release|x86.Build.0 = Release|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|ARM64.Build.0 = Debug|ARM64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|x64.ActiveCfg = Debug|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|x64.Build.0 = Debug|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|x86.ActiveCfg = Debug|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Debug|x86.Build.0 = Debug|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|ARM64.ActiveCfg = Release|ARM64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|ARM64.Build.0 = Release|ARM64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|x64.ActiveCfg = Release|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|x64.Build.0 = Release|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|x86.ActiveCfg = Release|x64
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}.Release|x86.Build.0 = Release|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|ARM64.ActiveCfg = Debug|ARM64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|ARM64.Build.0 = Debug|ARM64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|x64.ActiveCfg = Debug|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|x64.Build.0 = Debug|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|x86.ActiveCfg = Debug|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|x86.Build.0 = Debug|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|ARM64.ActiveCfg = Release|ARM64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|ARM64.Build.0 = Release|ARM64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|x64.ActiveCfg = Release|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|x64.Build.0 = Release|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|x86.ActiveCfg = Release|x64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Release|x86.Build.0 = Release|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|ARM64.Build.0 = Debug|ARM64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|x64.ActiveCfg = Debug|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|x64.Build.0 = Debug|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|x86.ActiveCfg = Debug|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Debug|x86.Build.0 = Debug|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|ARM64.ActiveCfg = Release|ARM64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|ARM64.Build.0 = Release|ARM64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|x64.ActiveCfg = Release|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|x64.Build.0 = Release|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|x86.ActiveCfg = Release|x64
{5A5DD09D-723A-44D3-8F2B-293584C3D731}.Release|x86.Build.0 = Release|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|ARM64.Build.0 = Debug|ARM64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|x64.ActiveCfg = Debug|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|x64.Build.0 = Debug|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|x86.ActiveCfg = Debug|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Debug|x86.Build.0 = Debug|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|ARM64.ActiveCfg = Release|ARM64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|ARM64.Build.0 = Release|ARM64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|x64.ActiveCfg = Release|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|x64.Build.0 = Release|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|x86.ActiveCfg = Release|x64
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9}.Release|x86.Build.0 = Release|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|ARM64.Build.0 = Debug|ARM64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|x64.ActiveCfg = Debug|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|x64.Build.0 = Debug|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|x86.ActiveCfg = Debug|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Debug|x86.Build.0 = Debug|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|ARM64.ActiveCfg = Release|ARM64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|ARM64.Build.0 = Release|ARM64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|x64.ActiveCfg = Release|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|x64.Build.0 = Release|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|x86.ActiveCfg = Release|x64
{54F7C616-FD41-4E62-BFF9-015686914F4D}.Release|x86.Build.0 = Release|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|ARM64.ActiveCfg = Debug|ARM64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|ARM64.Build.0 = Debug|ARM64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|x64.ActiveCfg = Debug|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|x64.Build.0 = Debug|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|x86.ActiveCfg = Debug|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Debug|x86.Build.0 = Debug|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|ARM64.ActiveCfg = Release|ARM64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|ARM64.Build.0 = Release|ARM64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|x64.ActiveCfg = Release|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|x64.Build.0 = Release|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|x86.ActiveCfg = Release|x64
{143F13E3-D2E3-4D83-B035-356612D99956}.Release|x86.Build.0 = Release|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|ARM64.ActiveCfg = Debug|ARM64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|ARM64.Build.0 = Debug|ARM64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|x64.ActiveCfg = Debug|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|x64.Build.0 = Debug|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|x86.ActiveCfg = Debug|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Debug|x86.Build.0 = Debug|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|ARM64.ActiveCfg = Release|ARM64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|ARM64.Build.0 = Release|ARM64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|x64.ActiveCfg = Release|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|x64.Build.0 = Release|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|x86.ActiveCfg = Release|x64
{56CC2F10-6E41-453D-BE16-C593A5E58482}.Release|x86.Build.0 = Release|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|ARM64.ActiveCfg = Debug|ARM64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|ARM64.Build.0 = Debug|ARM64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|x64.ActiveCfg = Debug|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|x64.Build.0 = Debug|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|x86.ActiveCfg = Debug|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Debug|x86.Build.0 = Debug|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|ARM64.ActiveCfg = Release|ARM64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|ARM64.Build.0 = Release|ARM64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|x64.ActiveCfg = Release|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|x64.Build.0 = Release|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|x86.ActiveCfg = Release|x64
{CA5518ED-0458-4B09-8F53-4122B9888655}.Release|x86.Build.0 = Release|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|ARM64.Build.0 = Debug|ARM64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|x64.ActiveCfg = Debug|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|x64.Build.0 = Debug|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|x86.ActiveCfg = Debug|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Debug|x86.Build.0 = Debug|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|ARM64.ActiveCfg = Release|ARM64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|ARM64.Build.0 = Release|ARM64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|x64.ActiveCfg = Release|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|x64.Build.0 = Release|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|x86.ActiveCfg = Release|x64
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D}.Release|x86.Build.0 = Release|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|ARM64.ActiveCfg = Debug|ARM64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|ARM64.Build.0 = Debug|ARM64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|x64.ActiveCfg = Debug|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|x64.Build.0 = Debug|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|x86.ActiveCfg = Debug|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Debug|x86.Build.0 = Debug|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|ARM64.ActiveCfg = Release|ARM64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|ARM64.Build.0 = Release|ARM64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|x64.ActiveCfg = Release|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|x64.Build.0 = Release|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|x86.ActiveCfg = Release|x64
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA}.Release|x86.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -2141,7 +2161,6 @@ Global
{18B3DB45-4FFE-4D01-97D6-5223FEEE1853} = {6C7F47CC-2151-44A3-A546-41C70025132C}
{0F14491C-6369-4C45-AAA8-135814E66E6B} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{34A354C5-23C7-4343-916C-C52DAF4FC39D} = {0F14491C-6369-4C45-AAA8-135814E66E6B}
{7B4CDB0D-28C9-4F95-88AA-73FCC06E354C} = {0F14491C-6369-4C45-AAA8-135814E66E6B}
{3264DF53-C805-4B0C-867C-FCEAF7AEF762} = {0F14491C-6369-4C45-AAA8-135814E66E6B}
{31CAD28E-778A-441C-85BC-40AB3EAA2A10} = {0F14491C-6369-4C45-AAA8-135814E66E6B}
{A50C70A6-2DA0-4027-B90E-B1A40755A8A5} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
@@ -2163,13 +2182,15 @@ Global
{C604B37E-9D0E-4484-8778-E8B31B0E1B3A} = {AB82E5DD-C32D-4F28-9746-2C780846188E}
{E599C30B-9DC8-4E5A-BF27-93D4CCEDE788} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{17B4FA70-001E-4D33-BBBB-0D142DBC2E20} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{C0240BC3-95AF-4B38-811A-76E3FD56B576} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{A1425B53-3D61-4679-8623-E64A0D3D0A48} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF} = {17B4FA70-001E-4D33-BBBB-0D142DBC2E20}
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545} = {2F305555-C296-497E-AC20-5FA1B237996A}
{5A5DD09D-723A-44D3-8F2B-293584C3D731} = {2F305555-C296-497E-AC20-5FA1B237996A}
{B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9} = {2F305555-C296-497E-AC20-5FA1B237996A}
{54F7C616-FD41-4E62-BFF9-015686914F4D} = {2F305555-C296-497E-AC20-5FA1B237996A}
{143F13E3-D2E3-4D83-B035-356612D99956} = {2F305555-C296-497E-AC20-5FA1B237996A}
{56CC2F10-6E41-453D-BE16-C593A5E58482} = {2F305555-C296-497E-AC20-5FA1B237996A}
{CA5518ED-0458-4B09-8F53-4122B9888655} = {2F305555-C296-497E-AC20-5FA1B237996A}
{D6DCC3AE-18C0-488A-B978-BAA9E3CFF09D} = {2F305555-C296-497E-AC20-5FA1B237996A}
{2BBC9E33-21EC-401C-84DA-BB6590A9B2AA} = {2F305555-C296-497E-AC20-5FA1B237996A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0}

140
README.md
View File

@@ -30,15 +30,14 @@ Microsoft PowerToys is a set of utilities for power users to tune and streamline
- Windows 11 or Windows 10 version 2004 (code name 20H1 / build number 19041) or newer.
- Our installer will install the following items:
- [.NET 6.0.10 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/6.0#runtime-desktop-6.0.10).
- [Microsoft Edge WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) bootstrapper. This will install the latest version.
### Via GitHub with EXE [Recommended]
Go to [Microsoft PowerToys GitHub releases page][github-release-link], click on `Assets` at the bottom to show the files available in the release. Please use the appropriate the PowerToys installer that matches your machine's architecture. For most, it is `x64`.
- **For x64 processors (most common):** [PowerToysSetup-0.64.1-x64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.64.1/PowerToysSetup-0.64.1-x64.exe)
- **For ARM64 processors:** [PowerToysSetup-0.64.1-arm64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.64.1/PowerToysSetup-0.64.1-arm64.exe)
- **For x64 processors (most common):** [PowerToysSetup-0.66.0-x64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.66.0/PowerToysSetup-0.66.0-x64.exe)
- **For ARM64 processors:** [PowerToysSetup-0.66.0-arm64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.66.0/PowerToysSetup-0.66.0-arm64.exe)
This is our preferred method.
@@ -55,7 +54,7 @@ winget install Microsoft.PowerToys -s winget
### Other install methods
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, this will have the install instructions.
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, this will have the install instructions.
## Contributing
@@ -73,121 +72,102 @@ For guidance on developing for PowerToys, please read the [developer docs](/doc/
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
### 0.64 - October 2022 Update
### 0.66 - December 2022 Update
In this release, we focused on releasing new features and improvements.
In this release, we focused on stability and improvements.
**Highlights**
- New utility: File Locksmith allows seeing which processes are currently using the selected files.
- New utility: Hosts File Editor allows you to edit your hosts file in an Editor UI. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Settings has a new feature for backing up / restoring the settings from a file. Thanks [@jefflord](https://github.com/jefflord)!
- FancyZones allows you to set defaults for horizontal/vertical screens to get better intended behavior for new screens and cases where a monitor ID resets.
- PowerToys ships with Group Policy Objects settings for force disabling and enabling PowerToys utilities in organizations. Check the [GPO docs](https://github.com/microsoft/PowerToys/tree/main/doc/gpo) for more details.
- Added a warning about deprecating Video Conference Mute in the future (v0.67), please check https://github.com/microsoft/PowerToys/issues/21473 for more information.
- PowerToy utilities now ship with self-contained .NET 7, meaning it's not necessary to install .NET as part of the installer and it's easier to keep up to date.
- It's possible to pick which of the installed OCR languages is used by Text Extractor by selecting it in the right-click context menu.
- Added a setting to sort the order of the accented characters by usage frequency in Quick Accent.
### Known issues
### General
- The Text Extractor utility [fails to recognize text in some cases on ARM64 devices running Windows 10](https://github.com/microsoft/PowerToys/issues/20278).
- After installing PowerToys, [the new Windows 11 context menu entries for PowerRename and Image Resizer might not appear before a system restart](https://github.com/microsoft/PowerToys/issues/19124).
- There are reports of users who are [unable to open the Settings window](https://github.com/microsoft/PowerToys/issues/18015). This is being caused by incompatibilities with some applications (RTSS RivaTuner Statistics Server is a known examples of this). If you're affected by this, please check the linked issue to verify if any of the presented solutions works for you.
### Always on Top
- Detect and put a window on top again if it's no longer on top.
- Reduced resource consumption caused by logging. A thread for each logger was being created even for disabled utilities.
- The .NET 7 dependency is now shipped self-contained within the utilities, using deep links to reduce storage space usage.
### Color Picker
- Added the hexadecimal integer format. Thanks [@marius-bughiu](https://github.com/marius-bughiu)!
- Fixed an issue where the custom color formats were not working when picking colors without using the editor.
- Fixed a crash when using duplicated names for color formats.
- Added two decimal formats, to distinguish between RGB and BGR.
- Fixed color name localization, which was not working correctly on 0.65.
### FancyZones
- Added a way for users to configure default layouts for horizontal and vertical screens.
- Replaced remaining Number Boxes in FancyZones Editor with Sliders, to improve accessibility for screen readers.
- Fixed an issue breaking window switching shortcuts.
- Fixed an editor crash caused by deleting a zone while trying to move it.
- Reduce the time it takes the tooltip for layout shortcut setting to appear in the editor.
### File Locksmith
- Added a new utility: File Locksmith.
- Thanks [@niels9001](https://github.com/niels9001) for the design on the UI!
### Group Policy Objects
- Group Policy Objects settings for force disabling and enabling PowerToys utilities.
- Thanks [@htcfreek](https://github.com/htcfreek) for your help in reviewing to make sure the shipped settings conform to system administrators expectations!
- Fixed an issue causing File Locksmith to hang when looking for open handles in some machines.
### Hosts File Editor
- Added a new utility: Hosts File Editor. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Thanks [@niels9001](https://github.com/niels9001) for the design help on the UI!
- Thanks [@davidegiacometti](https://github.com/davidegiacometti) for fixing the bugs found and adding features up until release!
- Thanks [@AtariDreams](https://github.com/AtariDreams) for consolidating the packages comparing to the rest of the project!
- Thanks [@htcfreek](https://github.com/htcfreek) for adding a scrollviewer to the entry editor!
### Keyboard Manager
- Fixed a delay that was not being cancelled properly. Thanks [@AtariDreams](https://github.com/AtariDreams)!
### Mouse Utilities
- Changed the opacity setting to the 1-100 range. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Added a warning when duplicated entries are detected. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
### PowerToys Run
- Changed image loading to release the images in PowerToys Run main executable. This is a try to fix the "app.dark.png" missing issues received after a PowerToys update.
- Fixed the PowerToys Run hiding after the default action failed. Thanks [@hlaueriksson](https://github.com/hlaueriksson)!
- Fixed the PowerToys Run allows showing after a context menu action succeeded. Thanks [@hlaueriksson](https://github.com/hlaueriksson)!
- Support drag and dropping for file results. Thanks [@daniel-richter](https://github.com/daniel-richter)!
### Quick Accent
- Corrected "Dutch" word to "German". Thanks [@damienleroy](https://github.com/damienleroy)!
- Added the Portuguese language accents. Thanks [@pcanavar](https://github.com/pcanavar)!
- Fixed positioning of toolbar on scaled desktops.
### Screen Ruler
- Improved the acrylic brush used in the menu. Thanks [@niels9001](https://github.com/niels9001)!
- Added support for dark theme. Thanks [@niels9001](https://github.com/niels9001)!
- Increased default input delay to improve out of the box experience.
- Fixed a bug causing the first character to not be selected when opening the overlay. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Fixed the positioning of the overlay when showing near the horizontal edges of the screen.
- Added additional Pinyin characters. Thanks [@char-46](https://github.com/char-46)!
- Added Macedonian characters. Thanks [@ad-mca-mk](https://github.com/ad-mca-mk)!
- Added a setting to sort characters by usage frequency.
- Added a setting to always start selection in the first character, even when using the arrow keys as the activation method.
### Settings
- Added a feature to backup/restore settings to/from a file. Thanks [@jefflord](https://github.com/jefflord)!
- Fixed an issue causing shortcuts shown in OOBE not updating to new values when the window was re-opened.
- Fixed the "Documents" folder usage in the backup/restore feature. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Fixed an error that hid the option to keep the display on when using the "Indefinitely Awake" mode.
- Fixed an accessibility issue causing the navigation bar to not work with narrator in scan mode.
- Fixed an accessibility issue where the name for the shortcut control was not being read correctly.
- Tweaked the Color Picker custom color format UI. Thanks [@niels9001](https://github.com/niels9001)!
- Improved the shortcut control visibility and accessibility. Thanks [@niels9001](https://github.com/niels9001)!
- Fixed an issue causing the Settings to not be saved correctly on scenarios where the admin user would be different then the user running PowerToys.
- Added a setting to pick which language should be used by default when using Text Extractor.
### Text Extractor
- Added a warning about how to install languages for OCR recognition.
- Fixed the overlay not focusing after the first activation.
- Added spaces between CJK and non-CJK words. Thanks [@maggch97](https://github.com/maggch97)!
- Improve behavior for CJK languages by not adding spaces for some characters that don't need them. Thanks [@AO2233](https://github.com/AO2233)!
- OCR language can now be picked in the right-click context menu.
### Video Conference Mute
- Added a setting to hide the Video Conference Mute overlay when muted. Thanks [@akabhirav](https://github.com/akabhirav)!
- Added a warning about deprecating Video Conference Mute in the future (v0.67), please check https://github.com/microsoft/PowerToys/issues/21473 for more information.
### Installer
- Reduced resource consumption by not starting the File Watchers when the utility is disabled.
- Added some missing files that were causing Settings and PowerRename to not function correctly on some configurations.
- Updated the .NET dependency to 6.0.10.
### Documentation
- Updated the development setup documentation.
- Improved the Markdown documentation lists numbering in many docs. Thanks [@sanidhyas3s](https://github.com/sanidhyas3s)!
### Development
- Consolidated nuget packages and removed a few unused packages.
- Updated the Windows.CppRT to the latest version. Thanks [@AtariDreams](https://github.com/AtariDreams)!
- Removed the cxxopts dependency, which was no longer used. Thanks [@AtariDreams](https://github.com/AtariDreams)!
- Updated the cziplob dependency to 0.25. Thanks [@AtariDreams](https://github.com/AtariDreams)!
- Updated the System.IO.Abstractions dependency. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Turned on C++ code analysis and incrementally fixing warnings.
- Added the install method to the issue template on GitHub, since some issues seem to be related to specific installation methods.
- Automated installer hash creation in the release CI.
- Simplified use of `.First()` on ImageResizer. Thanks [@AtariDreams](https://github.com/AtariDreams)!
- Improved and clarified the issues templates. Thanks [@Jay-o-Way](https://github.com/Jay-o-Way)!
- Fixed a PTRun unit test to be more compatible with .NET 6. Thanks [@AtariDreams](https://github.com/AtariDreams)!
- C++ code analysis no longer runs on release CI to speed up building release candidates. It still runs on GitHub CI and when building locally to maintain code quality.
- Cleaned up "to-do" comments referring to disposing memory on C#. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Added a fabric bot rule for localization issues.
- Fixed a CI build error after a .NET tools update.
- Update the Windows App SDK dependency version to 1.2.
- When building for arm64, the arm64 build tools are now preferred when building on an arm64 device. Thanks [@snickler](https://github.com/snickler)!
- Updated the C# test framework and removed unused Newtonsoft.Json package references.
- Updated StyleCop and fixed/enabled more warnings. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
- Fixed a language typo in the code. Thanks [@eltociear](https://github.com/eltociear)!
- Improved code quality around some silent crashes that were being reported to Microsoft servers.
- Moved the GPO asset files to source instead of docs in the repo.
- Upgraded the unit test NuGet packages.
#### What is being planned for version 0.65
#### What is being planned for version 0.67
For [v0.65][github-next-release-work], we'll work on below:
For [v0.67][github-next-release-work], we'll work on below:
- Ship .NET self contained and shared between utilities
- Allow installing without UAC.
- Add a flyout menu to the system tray icon for quick access.
- Stability / bug fixes
## PowerToys Community
@@ -215,5 +195,5 @@ The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has
[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs
<!-- items that need to be updated release to release -->
[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F38
[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F37
[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F40
[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F39

View File

@@ -0,0 +1,82 @@
# PowerToys disk usage footprint overview
As of the v0.66 of PowerToys, core runtime dlls are being shipped self-contained as a part of PowerToys. During the installation process, hard-links are being created for every module that needs any of these shared libraries.
## Why do this work?
Our main motivations for doing are the following:
1. Be able to install PowerToys without UAC elevation
2. PowerToys has a reduced disk space when components are shared.
3. Reduce additional downloads for dependencies
## Current self-contained runtimes
These dll's are installed in `<PowerToysInstallDir>/dll/<Item>` folder structure.
- [Windows Application SDK runtime](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads)
- [.NET Desktop Runtime 7](https://dotnet.microsoft.com/download/dotnet/7.0)
- [Microsoft Visual C++ Runtime](https://learn.microsoft.com/cpp/windows/latest-supported-vc-redist?view=msvc-170)
## So why does PowerToys have a larger footprint now?
Before the hard-link work was done, each of these runtimes had to be installed, so there were more items being installed outside just the PowerToys install directory. This space would not have been accounted.
File Explorer treats hard-links the same as "original"/regular files/directories (https://learn.microsoft.com/troubleshoot/windows-server/backup-and-storage/disk-space-problems-on-ntfs-volumes#other-ntfs-features-that-may-cause-file-allocation-confusion), not as links. This results in File Explorer reporting size of PowerToys installation directory bigger than it is (more than 2GB).
## How much space is actually being used
As of v0.66 of PowerToys, the installed footprint is ~660MB.
When we were prototyping and validating, here was our running table of results and why we took the route we did.
| Moment | Installer size | App size | Installation dir size | Real size | Deps downloaded and installed during PT install | Total (installer size + real size + deps downloaded and installed during PT install) |
|---|---|---|---|---|---|---|
| v0.62.0.1<br/>no deps self-contained | 125 MB | 817 MB | 529 MB | 534 MB | 418 MB | 1,077 MB |
| v0.63.0<br/>WAS and VCRedist | 83 MB | 587 MB | 567 MB | 396 MB | 394 MB | 873 MB |
| v0.63.0<br/>WAS1.2preview and VCRedist| 80 MB | 574 MB | 539 MB | 385 MB | 394 MB | 859 MB |
| Full Test<br/>WAS, VCRedist, .NET | 149 MB | 705 MB | 1,760 MB | 557 MB | 0 MB | 706 MB |
## Our process to verify current install footprint
We created a quick virtual machine. We chose to use our fresh Windows 10 test virtual machines here.
### Empty disk details
<img src="../images/disk-usage/empty_disk_details.png">
### Install PowerToys to empty disk
<img src="../images/disk-usage/PowerToys_install_dir.png">
### PowerToys installation directory size shown by File Explorer
As mentioned above, File Explorer shows size of PowerToys installation dir as every hard-link is a regular file for itself
<img src="../images/disk-usage/install_dir_size_v0.66.png">
### PowerToys size shown by App->Installed apps
<img src="../images/disk-usage/add_remove_size_v0.66.png">
### Disk usage with PowerToys installed
Real disk usage of PowerToys is shown by inspecting disk usage after installing PowerToys. Used space is now 695MB, comparing to ~35MB used space for empty disk gives us the size of ~660MB for PowerToys installation dir.
<img src="../images/disk-usage/used_disk_space_v0.66.png">
### PowerShell command calculating size of non-hardlinks files
Size of regular files (non-hard-links) and hard-links can also be obtained by running following PowerShell command in PowerToys installation dir:
```
Regular files:
ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -ne HardLink | Measure-Object -Property Length -Sum
Hard-links
ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -e HardLink | Measure-Object -Property Length -Sum
```
Running these commands for PowerToys v0.66 shows that size of regular files is way less than size of hard-links pointing to some of those regular files because PowerShell (same as File Explorer) also takes the size of hard-links as of regular files.
<img src="../images/disk-usage/pwsh_v0.66.png">

View File

@@ -13,7 +13,7 @@ Available commands:
* Lock
* Sleep
* Hibernate
* Empty Recycle Bin
* Open / Empty Recycle Bin
* UEFI Firmware Settings (Only available on systems, that boot in UEFI mode.)
* IP / MAC / Address => Show informations about network connections.
@@ -42,6 +42,7 @@ Available commands:
### [`ResultHelper.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/ResultHelper.cs)
- The [`ResultHelper`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/ResultHelper.cs) class contains methods for working with the results and some of the result features (tool tip, copy to clipboard, execute command).
- **Recycle Bin command:** The context menu action to empty the Recycle Bin is executed as an async task to not block PowerToys Run. (While the task is running the static class variable `executingEmptyRecycleBinTask` is set to true, to block multiple executions at the same time)
### [`NetworkConnectionProperties.cs`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/NetworkConnectionProperties.cs)
- The [`NetworkConnectionProperties`](/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.System/Components/NetworkConnectionProperties.cs) class contains methods to get the properties of a network interface/connection.

View File

@@ -38,16 +38,17 @@ Once you've discussed your proposed feature/fix/etc. with a team member, and you
### Prerequisites for Compiling PowerToys
1. Windows 10 April 2018 Update (version 1803) or newer
2. Visual Studio Community/Professional/Enterprise 2022
3. Install the [required Windows Apps SDK workloads](https://learn.microsoft.com/windows/apps/windows-app-sdk/set-up-your-development-environment?tabs=vs-2022-17-1-a%2Cvs-2022-17-1-b#required-workloads-and-components), the [Windows App SDK 1.0.3 C# Visual Studio 2022 extension](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads) and the [Windows Apps SDK 1.0.3 runtime](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads#windows-app-sdk-10).
4. Once you've cloned and started the `PowerToys.sln`, in the solution explorer, if you see a dialog that says `install extra components`, click `install`
1. Visual Studio Community/Professional/Enterprise 2022 17.4 or newer
1. Git clone PowerToys repository
1. Open started the `PowerToys.sln`
1. If you see a dialog that says `install extra components` in the solution explorer pane, click `install`
### Get Submodules to compile
We have submodules that need to be initialized before you can compile most parts of PowerToys. This should be a one time step.
1. Open a terminal
2. Navigate to the folder you cloned PowerToys to.
3. Run `git submodule update --init --recursive`
1. Navigate to the folder you cloned PowerToys to.
1. Run `git submodule update --init --recursive`
### Compiling Source Code
@@ -64,22 +65,22 @@ Our installer is two parts, an EXE and an MSI. The EXE (Bootstrapper) contains
The installer can only be compiled in `Release` mode, step 1 and 2 must be done before the MSI will be able to be compiled.
1. Compile `PowerToys.sln`. Instructions are listed above.
2. Compile `BugReportTool.sln` tool. Path from root: `tools\BugReportTool\BugReportTool.sln` (details listed below)
3. Compile `WebcamReportTool.sln` tool. Path from root: `tools\WebcamReportTool\WebcamReportTool.sln` (details listed below)
3. Compile `StylesReportTool.sln` tool. Path from root: `tools\StylesReportTool\StylesReportTool.sln` (details listed below)
4. Compile `PowerToysSetup.sln` Path from root: `installer\PowerToysSetup.sln` (details listed below)
1. Compile `BugReportTool.sln` tool. Path from root: `tools\BugReportTool\BugReportTool.sln` (details listed below)
1. Compile `WebcamReportTool.sln` tool. Path from root: `tools\WebcamReportTool\WebcamReportTool.sln` (details listed below)
1. Compile `StylesReportTool.sln` tool. Path from root: `tools\StylesReportTool\StylesReportTool.sln` (details listed below)
1. Compile `PowerToysSetup.sln` Path from root: `installer\PowerToysSetup.sln` (details listed below)
### Prerequisites for building the MSI installer
1. Install the [WiX Toolset Visual Studio 2022 Extension](https://marketplace.visualstudio.com/items?itemName=WixToolset.WixToolsetVisualStudio2022Extension).
2. Install the [WiX Toolset build tools](https://wixtoolset.org/releases/v3-14-0-6526/).
3. Download [WiX binaries](https://wixtoolset.org/downloads/v3.14.0.6526/wix314-binaries.zip) and extract `wix.targets` to `C:\Program Files (x86)\WiX Toolset v3.14`.
1. Install the [WiX Toolset build tools](https://wixtoolset.org/releases/v3-14-0-6526/).
1. Download [WiX binaries](https://wixtoolset.org/downloads/v3.14.0.6526/wix314-binaries.zip) and extract `wix.targets` to `C:\Program Files (x86)\WiX Toolset v3.14`.
### Locally building the installer prerequisite projects all at once from the command-line
1. Open a `Developer Command Prompt for VS 2022`
2. Ensure `nuget.exe` is in your `%path%`
3. In the repo root, run these commands:
1. Ensure `nuget.exe` is in your `%path%`
1. In the repo root, run these commands:
```
nuget restore .\tools\BugReportTool\BugReportTool.sln
@@ -95,26 +96,26 @@ msbuild -p:Platform=x64 -p:Configuration=Release .\tools\StylesReportTool\Styles
### Locally compiling the Bug reporting tool
1. Open `tools\BugReportTool\BugReportTool.sln`
2. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
3. From the `Build` menu, choose `Build Solution`.
1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
1. From the `Build` menu, choose `Build Solution`.
### Locally compiling the Webcam reporting tool
1. Open `tools\WebcamReportTool\WebcamReportTool.sln`
2. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
3. From the `Build` menu, choose `Build Solution`.
1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
1. From the `Build` menu, choose `Build Solution`.
### Locally compiling the Window styles reporting tool
1. Open `tools\StylesReportTool\StylesReportTool.sln`
2. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
3. From the `Build` menu, choose `Build Solution`.
1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
1. From the `Build` menu, choose `Build Solution`.
### Locally compiling the installer
1. Open `installer\PowerToysSetup.sln`
2. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
3. From the `Build` menu choose `Build Solution`.
1. In Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`
1. From the `Build` menu choose `Build Solution`.
The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment>
<!-- AlwaysOnTop -->
<DirectoryRef Id="AlwaysOnTopInstallFolder" FileSource="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)">
<Component Id="Module_AlwaysOnTopInterface" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)\PowerToys.AlwaysOnTopModuleInterface.dll" />
</Component>
<Component Id="Module_AlwaysOnTop" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)\PowerToys.AlwaysOnTop.exe" />
</Component>
</DirectoryRef>
<ComponentGroup Id="AlwaysOnTopComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_AlwaysOnTop"/>
<ComponentRef Id="Module_AlwaysOnTopInterface"/>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define AwakeFiles=PowerToys.AwakeModuleInterface.dll;PowerToys.ManagedCommon.dll;System.Management.dll;System.CodeDom.dll;System.Text.Json.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.UI.Lib.dll;NLog.config;NLog.dll;PowerToys.Awake.deps.json;PowerToys.Awake.dll;PowerToys.Awake.exe;PowerToys.Awake.runtimeconfig.json;System.CommandLine.dll;System.IO.Abstractions.dll;System.Reactive.dll;System.Runtime.Caching.dll;Ijwhost.dll;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll?>
<Fragment>
<!-- Awake -->
<DirectoryRef Id="AwakeInstallFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_Awake" Guid="0D571D9A-743B-4CC5-9297-F0289FBE3398" Win64="yes">
<?foreach File in $(var.AwakeFiles)?>
<File Id="AwakeFile_$(var.File)" Source="$(var.BinDir)modules\$(var.AwakeProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<!-- Awake images -->
<DirectoryRef Id="AwakeImagesFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)\Images">
<Component Id="Module_Awake_Images" >
<File Id="Awake_Awake.ico" Source="$(var.BinDir)modules\$(var.AwakeProjectName)\Images\Awake.ico" />
</Component>
</DirectoryRef>
<ComponentGroup Id="AwakeComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_Awake"/>
<ComponentRef Id="Module_Awake_Images"/>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ColorPickerFiles=PowerToys.ColorPicker.dll;System.IO.Abstractions.dll;System.CodeDom.dll;System.Text.Json.dll;PowerToys.ColorPickerUI.exe;PowerToys.ColorPickerUI.dll;PowerToys.ColorPickerUI.deps.json;PowerToys.ColorPickerUI.runtimeconfig.json;PowerToys.Settings.UI.Lib.dll;PowerToys.ManagedTelemetry.dll;PowerToys.ManagedCommon.dll;System.Management.dll;ControlzEx.dll;Microsoft.Xaml.Behaviors.dll;ModernWpf.Controls.dll;ModernWpf.dll;System.ComponentModel.Composition.dll;PowerToys.Common.UI.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;Ijwhost.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?>
<Fragment>
<!-- Color Picker -->
<DirectoryRef Id="ColorPickerInstallFolder" FileSource="$(var.BinDir)modules\$(var.ColorPickerProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_ColorPicker" Guid="963A986E-289D-45CC-BC6B-9A2C9EF3DB33" Win64="yes">
<?foreach File in $(var.ColorPickerFiles)?>
<File Id="ColorPickerFile_$(var.File)" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<!-- Color Picker Resources -->
<DirectoryRef Id="ColorPickerResourcesFolder" FileSource="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources">
<Component Id="Module_ColorPicker_Cursor">
<File Id="ColorPickerFile_colorPicker.cur" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources\colorPicker.cur" />
</Component>
<Component Id="Module_ColorPicker_Icon">
<File Id="ColorPickerFile_icon.ico" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources\icon.ico" />
</Component>
</DirectoryRef>
<ComponentGroup Id="ColorPickerComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_ColorPicker" />
<ComponentRef Id="Module_ColorPicker_Icon"/>
<ComponentRef Id="Module_ColorPicker_Cursor"/>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,27 @@
<Include>
<!-- Names of folders and projects -->
<?define FancyZonesProjectName="FancyZones"?>
<?define ImageResizerProjectName="ImageResizer"?>
<?define KeyboardManagerProjectName="KeyboardManager"?>
<?define PowerAccentProjectName="PowerAccent"?>
<?define PowerRenameProjectName="PowerRename"?>
<?define FileLocksmithProjectName="FileLocksmith"?>
<?define ColorPickerProjectName="ColorPicker"?>
<?define PowerOCRProjectName="PowerOCR"?>
<?define VideoConferenceProjectName="VideoConference"?>
<?define AwakeProjectName="Awake"?>
<?define MouseUtilsProjectName="MouseUtils"?>
<?define AlwaysOnTopProjectName="AlwaysOnTop"?>
<?define MeasureToolProjectName="MeasureTool"?>
<?define HostsProjectName="Hosts"?>
<?define RepoDir="$(var.ProjectDir)..\..\" ?>
<?if $(var.Platform) = x64?>
<?define PlatformLK="x64" ?>
<?define BinDir="$(var.RepoDir)x64\$(var.Configuration)\" ?>
<?else?>
<?define PlatformLK="arm64" ?>
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?>
<?endif?>
<?define BinX32Dir="$(var.RepoDir)x86\$(var.Configuration)\" ?>
</Include>

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define PowerToysInteropFiles=concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_atomic_wait.dll;msvcp140_codecvt_ids.dll;PowerToys.Interop.dll;vcamp140.dll;vccorlib140.dll;vcomp140.dll;vcruntime140.dll;vcruntime140_1.dll?>
<?define DotnetRuntimeFiles= ?>
<?define DotnetRuntimeWPFFiles= ?>
<Fragment>
<DirectoryRef Id="INSTALLFOLDER" FileSource="$(var.BinDir)">
<Component Id="powertoys_toast_clsid" Win64="yes">
<RemoveFolder Id='Remove_powertoys_toast_clsid' On='uninstall' />
<RegistryKey Root="HKCR" Key="Software\Classes\CLSID\{DD5CACDA-7C2E-4997-A62A-04A597B58F76}">
<RegistryValue Type="string" Value="PowerToys Toast Notifications Background Activator" />
<RegistryValue Type="string" Key="LocalServer32" Value="[INSTALLFOLDER]PowerToys.exe -ToastActivated" />
<RegistryValue Type="string" Key="LocalServer32" Name="ThreadingModel" Value="Apartment" />
</RegistryKey>
</Component>
<Component Id="powertoys_exe" Win64="yes" Guid="30261594-41A6-4509-AD09-FBC4E692F441">
<File Id="PowerToys.exe" Checksum="yes" />
<RegistryKey Root="HKLM" Key="Software\Classes\powertoys">
<RegistryValue Type="string" Name="URL Protocol" Value="" KeyPath="yes"/>
<RegistryValue Type="string" Value="URL:PowerToys custom internal URI protocol"/>
<RegistryKey Key="DefaultIcon">
<RegistryValue Type="string" Value="PowerToys.exe" />
</RegistryKey>
<RegistryKey Key="shell\open\command">
<RegistryValue Type="string" Value="&quot;[INSTALLFOLDER]PowerToys.exe&quot; &quot;%1&quot;" />
</RegistryKey>
</RegistryKey>
</Component>
<Component Id="BackgroundActivator_dll" Win64="yes">
<File Id="PowerToys.BackgroundActivatorDLL.dll" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="PowerToys_ActionRunner_exe" Win64="yes">
<File Id="PowerToys.ActionRunner.exe" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="PowerToys_Update_exe" Win64="yes">
<File Id="PowerToys.Update.exe" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="License_rtf" Win64="yes">
<File Source="$(var.RepoDir)\installer\License.rtf" Id="License.rtf" KeyPath="yes" />
</Component>
<Component Id="Notice_md" Win64="yes">
<File Source="$(var.RepoDir)\Notice.md" Id="Notice.md" KeyPath="yes" />
</Component>
</DirectoryRef>
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="PowerToysStartMenuShortcut" >
<Shortcut Id="ApplicationStartMenuShortcut"
Name="PowerToys (Preview)"
Description="PowerToys - Windows system utilities to maximize productivity"
Icon="powertoys.exe"
IconIndex="0"
Target="[!PowerToys.exe]"
WorkingDirectory="INSTALLFOLDER">
<ShortcutProperty Key="System.AppUserModel.ID" Value="Microsoft.PowerToysWin32"/>
</Shortcut>
<RemoveFolder Id="CleanUpStartMenuShortCut" Directory="ApplicationProgramsFolder" On="uninstall"/>
<!-- ApplicationStartMenuShortcut is implicitly installed in HKCU, so WIX won't allow changing this reg value to HKLM. -->
<RegistryValue Root="HKCU" Key="Software\Microsoft\PowerToys" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<DirectoryRef Id="DotnetDlls">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Dlls_DotnetFiles_Component" Guid="19488F16-3399-40AB-B7C4-CE3F27C1B294" Win64="yes">
<?foreach File in $(var.DotnetRuntimeFiles)?>
<File Source="$(var.BinDir)Settings\$(var.File)" />
<?endforeach?>
<?foreach File in $(var.DotnetRuntimeWPFFiles)?>
<File Source="$(var.BinDir)\modules\\ColorPicker\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<DirectoryRef Id="PowerToysInteropDlls">
<?foreach File in $(var.PowerToysInteropFiles)?>
<Component Id="Dlls_PowerToysInteropFiles_$(var.File)" Win64="yes">
<File Id="Dlls_PowerToysInterop_File_$(var.File)" Source="$(var.BinDir)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="ModulesInstallFolder" FileSource="$(var.BinDir)modules\">
<Component Id="Module_PowerPreview_Registry" Win64="yes">
<!-- TODO: Remove this - Update Key to use IE11 for prevhost.exe -->
<RegistryKey Root="HKLM" Key="Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION">
<RegistryValue Type="integer" Name="prevhost.exe" Value="11000" />
</RegistryKey>
<!-- TODO: Remove this - Update Key to use IE11 for dllhost.exe -->
<RegistryKey Root="HKLM" Key="Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION">
<RegistryValue Type="integer" Name="dllhost.exe" Value="11000" />
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="DesktopFolder">
<Component Id="DesktopShortcut" >
<Condition>INSTALLDESKTOPSHORTCUT</Condition>
<!-- DesktopShortcutId is implicitly installed in HKCU, so WIX won't allow changing this reg value to HKLM. -->
<RegistryValue Root="HKCU"
Key="Software\[Manufacturer]\[ProductName]"
Name="desktopshorcutinstalled"
Type="integer"
Value="1"
KeyPath="yes"/>
<Shortcut Id="DesktopShortcutId"
Name="PowerToys (Preview)"
Description="PowerToys - Windows system utilities to maximize productivity"
Target="[!PowerToys.exe]"
WorkingDirectory="INSTALLFOLDER"
Icon="powertoys.exe"
Directory="DesktopFolder"/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="CoreComponents" Directory="INSTALLFOLDER">
<ComponentRef Id="powertoys_exe" />
<ComponentRef Id="PowerToysStartMenuShortcut"/>
<ComponentRef Id="BackgroundActivator_dll" />
<ComponentRef Id="PowerToys_ActionRunner_exe" />
<ComponentRef Id="PowerToys_Update_exe" />
<ComponentRef Id="powertoys_toast_clsid" />
<ComponentRef Id="License_rtf" />
<ComponentRef Id="Notice_md" />
<ComponentRef Id="DesktopShortcut" />
<ComponentRef Id="Module_PowerPreview_Registry" />
<ComponentRef Id="Dlls_DotnetFiles_Component" />
<?foreach File in $(var.PowerToysInteropFiles)?>
<ComponentRef Id="Dlls_PowerToysInteropFiles_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define FancyZonesFiles=PowerToys.FancyZonesModuleInterface.dll;PowerToys.FancyZonesEditor.dll;PowerToys.FancyZonesEditor.runtimeconfig.json;PowerToys.FancyZonesEditor.deps.json;PowerToys.FancyZonesEditor.exe;PowerToys.FancyZones.exe;ControlzEx.dll;Microsoft.Xaml.Behaviors.dll;ModernWpf.dll;ModernWpf.Controls.dll;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.Common.UI.dll;PowerToys.ManagedTelemetry.dll;System.IO.Abstractions.dll;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;Ijwhost.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll?>
<Fragment>
<!-- FancyZone -->
<DirectoryRef Id="FancyZonesInstallFolder" FileSource="$(var.BinDir)modules\">
<?foreach File in $(var.FancyZonesFiles)?>
<Component Id="Module_FancyZones_$(var.File)" Win64="yes">
<File Id="Module_FancyZones_File_$(var.File)" Source="$(var.BinDir)modules\$(var.FancyZonesProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<ComponentGroup Id="FancyZonesComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.FancyZonesFiles)?>
<ComponentRef Id="Module_FancyZones_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?if $(var.Platform) = x64?>
<?define PowerPreviewFiles=System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll;mfc140.dll;mfc140chs.dll;mfc140cht.dll;mfc140deu.dll;mfc140enu.dll;mfc140esn.dll;mfc140fra.dll;mfc140ita.dll;mfc140jpn.dll;mfc140kor.dll;mfc140rus.dll;mfc140u.dll;mfcm140.dll;mfcm140u.dll;PowerToys.MarkdownPreviewHandlerCpp.dll;PowerToys.powerpreview.dll;PowerToys.PreviewHandlerCommon.dll;PowerToys.PreviewHandlerCommon.deps.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.SvgPreviewHandlerCpp.dll;PowerToys.SvgPreviewHandler.dll;PowerToys.SvgPreviewHandler.exe;PowerToys.SvgPreviewHandler.runtimeconfig.json;PowerToys.SvgPreviewHandler.deps.json;PowerToys.SvgThumbnailProvider.exe;PowerToys.SvgThumbnailProvider.dll;PowerToys.SvgThumbnailProviderCpp.dll;PowerToys.SvgThumbnailProvider.runtimeconfig.json;PowerToys.SvgThumbnailProvider.deps.json;PowerToys.MarkdownPreviewHandler.dll;PowerToys.MarkdownPreviewHandler.exe;PowerToys.MarkdownPreviewHandler.runtimeconfig.json;PowerToys.MarkdownPreviewHandler.deps.json;Markdig.Signed.dll;System.IO.Abstractions.dll;monaco_languages.json;monacoSpecialLanguages.js;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;PowerToys.MonacoPreviewHandlerCpp.dll;PowerToys.MonacoPreviewHandler.dll;PowerToys.MonacoPreviewHandler.exe;PowerToys.MonacoPreviewHandler.runtimeconfig.json;PowerToys.MonacoPreviewHandler.deps.json;ControlzEx.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Web.WebView2.WinForms.dll;Microsoft.Web.WebView2.Wpf.dll;WebView2Loader.dll;index.html;PowerToys.PdfPreviewHandlerCpp.dll;PowerToys.PdfPreviewHandler.dll;PowerToys.PdfPreviewHandler.exe;PowerToys.PdfPreviewHandler.runtimeconfig.json;PowerToys.PdfPreviewHandler.deps.json;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.PdfThumbnailProvider.exe;PowerToys.PdfThumbnailProvider.dll;PowerToys.PdfThumbnailProviderCpp.dll;PowerToys.PdfThumbnailProvider.runtimeconfig.json;PowerToys.PdfThumbnailProvider.deps.json;PowerToys.GcodePreviewHandler.dll;PowerToys.GcodePreviewHandlerCpp.dll;PowerToys.GcodePreviewHandler.exe;PowerToys.GcodePreviewHandler.runtimeconfig.json;PowerToys.GcodePreviewHandler.deps.json;PowerToys.GcodeThumbnailProvider.dll;PowerToys.GcodeThumbnailProvider.exe;PowerToys.GcodeThumbnailProviderCpp.dll;PowerToys.GcodeThumbnailProvider.runtimeconfig.json;PowerToys.GcodeThumbnailProvider.deps.json;PowerToys.StlThumbnailProvider.exe;PowerToys.StlThumbnailProvider.dll;PowerToys.StlThumbnailProviderCpp.dll;PowerToys.StlThumbnailProvider.runtimeconfig.json;PowerToys.StlThumbnailProvider.deps.json;HelixToolkit.dll;HelixToolkit.Core.Wpf.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.GPOWrapper.dll?>
<?else?>
<?define PowerPreviewFiles=System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll;PowerToys.MarkdownPreviewHandlerCpp.dll;PowerToys.powerpreview.dll;PowerToys.PreviewHandlerCommon.dll;PowerToys.PreviewHandlerCommon.deps.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.SvgPreviewHandlerCpp.dll;PowerToys.SvgPreviewHandler.dll;PowerToys.SvgPreviewHandler.exe;PowerToys.SvgPreviewHandler.runtimeconfig.json;PowerToys.SvgPreviewHandler.deps.json;PowerToys.SvgThumbnailProvider.exe;PowerToys.SvgThumbnailProvider.dll;PowerToys.SvgThumbnailProviderCpp.dll;PowerToys.SvgThumbnailProvider.runtimeconfig.json;PowerToys.SvgThumbnailProvider.deps.json;PowerToys.MarkdownPreviewHandler.dll;PowerToys.MarkdownPreviewHandler.exe;PowerToys.MarkdownPreviewHandler.runtimeconfig.json;PowerToys.MarkdownPreviewHandler.deps.json;Markdig.Signed.dll;System.IO.Abstractions.dll;monaco_languages.json;monacoSpecialLanguages.js;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;PowerToys.MonacoPreviewHandlerCpp.dll;PowerToys.MonacoPreviewHandler.dll;PowerToys.MonacoPreviewHandler.exe;PowerToys.MonacoPreviewHandler.runtimeconfig.json;PowerToys.MonacoPreviewHandler.deps.json;ControlzEx.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Web.WebView2.WinForms.dll;Microsoft.Web.WebView2.Wpf.dll;WebView2Loader.dll;index.html;PowerToys.PdfPreviewHandlerCpp.dll;PowerToys.PdfPreviewHandler.dll;PowerToys.PdfPreviewHandler.exe;PowerToys.PdfPreviewHandler.runtimeconfig.json;PowerToys.PdfPreviewHandler.deps.json;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.PdfThumbnailProvider.exe;PowerToys.PdfThumbnailProvider.dll;PowerToys.PdfThumbnailProviderCpp.dll;PowerToys.PdfThumbnailProvider.runtimeconfig.json;PowerToys.PdfThumbnailProvider.deps.json;PowerToys.GcodePreviewHandler.dll;PowerToys.GcodePreviewHandlerCpp.dll;PowerToys.GcodePreviewHandler.exe;PowerToys.GcodePreviewHandler.runtimeconfig.json;PowerToys.GcodePreviewHandler.deps.json;PowerToys.GcodeThumbnailProvider.dll;PowerToys.GcodeThumbnailProvider.exe;PowerToys.GcodeThumbnailProviderCpp.dll;PowerToys.GcodeThumbnailProvider.runtimeconfig.json;PowerToys.GcodeThumbnailProvider.deps.json;PowerToys.StlThumbnailProvider.exe;PowerToys.StlThumbnailProvider.dll;PowerToys.StlThumbnailProviderCpp.dll;PowerToys.StlThumbnailProvider.runtimeconfig.json;PowerToys.StlThumbnailProvider.deps.json;HelixToolkit.dll;HelixToolkit.Core.Wpf.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.GPOWrapper.dll?>
<?endif?>
<Fragment>
<DirectoryRef Id="FileExplorerPreviewInstallFolder" FileSource="$(var.RepoDir)\modules\FileExplorerPreview\">
<?foreach File in $(var.PowerPreviewFiles)?>
<Component Id="Module_PowerPreview_$(var.File)" Win64="yes">
<File Id="Module_PowerPreview_$(var.File)" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.BinDir)modules\FileExplorerPreview\customLanguages">
<Component Id="MonacoPreviewHandlerMonacoCustomLanguagesRegJS" Win64="yes">
<File Id="MonacoPreviewHandler_MonacoCustomLanguagesRegJS" Source="$(var.BinDir)modules\FileExplorerPreview\customLanguages\reg.js" />
</Component>
</DirectoryRef>
<ComponentGroup Id="FileExplorerPreviewComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.PowerPreviewFiles)?>
<ComponentRef Id="Module_PowerPreview_$(var.File)" />
<?endforeach?>
<ComponentRef Id="MonacoPreviewHandlerMonacoCustomLanguagesRegJS" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define FileLocksmithFiles=Microsoft.Win32.SystemEvents.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Mvvm.dll;CommunityToolkit.Labs.WinUI.SettingsControls.dll;Ijwhost.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.FileLocksmithExt.dll;PowerToys.FileLocksmithLib.Interop.dll;PowerToys.FileLocksmithUI.exe;PowerToys.FileLocksmithUI.dll;PowerToys.FileLocksmithUI.deps.json;PowerToys.FileLocksmithUI.runtimeconfig.json;System.CodeDom.dll;System.Drawing.Common.dll;System.Management.dll;WinRT.Runtime.dll;WinUIEx.dll;resources.pri;PowerToys.GPOWrapper.dll;WindowsBase.dll;System.Text.Json.dll?>
<?define FileLocksmithAssetsFiles=Icon.ico?>
<Fragment>
<!-- FileLocksmith -->
<DirectoryRef Id="FileLocksmithInstallFolder" FileSource="$(var.BinDir)modules\$(var.FileLocksmithProjectName)">
<?foreach File in $(var.FileLocksmithFiles)?>
<Component Id="FileLocksmith_$(var.File)" Win64="yes">
<File Id="FileLocksmithFile_$(var.File)" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<!-- !Warning! Make sure to change Component Guid if you update something here -->
<Component Id="Module_FileLocksmith" Guid="108D3EC1-E6E0-4E81-88EF-25966133CB41" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{84D68575-E186-46AD-B0CB-BAEB45EE29C0}">
<RegistryValue Type="string" Value="File Locksmith Shell Extension" />
<RegistryValue Type="string" Name="ContextMenuOptIn" Value="" />
<RegistryValue Type="string" Key="InprocServer32" Value="[FileLocksmithInstallFolder]PowerToys.FileLocksmithExt.dll" />
<RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" />
</RegistryKey>
<RegistryKey Root="HKLM" Key="Software\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\FileLocksmithExt">
<RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/>
</RegistryKey>
<RegistryKey Root="HKLM" Key="Software\Classes\Drive\ShellEx\ContextMenuHandlers\FileLocksmithExt">
<RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/>
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="FileLocksmithAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets">
<?foreach File in $(var.FileLocksmithAssetsFiles)?>
<Component Id="FileLocksmith_Assets_$(var.File)" Win64="yes">
<File Id="FileLocksmithAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="FileLocksmith_Assets_Applist_Scale100" Win64="yes">
<File Id="FL_AppList_Scale100" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-100.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale125" Win64="yes">
<File Id="FL_AppList_Scale125" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-125.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale150" Win64="yes">
<File Id="FL_AppList_Scale150" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-150.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale200" Win64="yes">
<File Id="FL_AppList_Scale200" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-200.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale400" Win64="yes">
<File Id="FL_AppList_Scale400" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-400.png" />
</Component>
</DirectoryRef>
<ComponentGroup Id="FileLocksmithComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_FileLocksmith" />
<?foreach File in $(var.FileLocksmithFiles)?>
<ComponentRef Id="FileLocksmith_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.FileLocksmithAssetsFiles)?>
<ComponentRef Id="FileLocksmith_Assets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale100" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale125" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale150" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale200" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale400" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define HostsFiles=Accessibility.dll;ColorCode.Core.dll;ColorCode.WinUI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Mvvm.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.Controls.Core.dll;CommunityToolkit.WinUI.UI.Controls.DataGrid.dll;CommunityToolkit.WinUI.UI.Controls.Input.dll;CommunityToolkit.WinUI.UI.Controls.Layout.dll;CommunityToolkit.WinUI.UI.Controls.Markdown.dll;CommunityToolkit.WinUI.UI.Controls.Media.dll;CommunityToolkit.WinUI.UI.Controls.Primitives.dll;CommunityToolkit.WinUI.UI.dll;ControlzEx.dll;Ijwhost.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.Configuration.Binder.dll;Microsoft.Extensions.Configuration.CommandLine.dll;Microsoft.Extensions.Configuration.dll;Microsoft.Extensions.Configuration.EnvironmentVariables.dll;Microsoft.Extensions.Configuration.FileExtensions.dll;Microsoft.Extensions.Configuration.Json.dll;Microsoft.Extensions.Configuration.UserSecrets.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.DependencyInjection.dll;Microsoft.Extensions.FileProviders.Abstractions.dll;Microsoft.Extensions.FileProviders.Physical.dll;Microsoft.Extensions.FileSystemGlobbing.dll;Microsoft.Extensions.Hosting.Abstractions.dll;Microsoft.Extensions.Hosting.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Logging.Configuration.dll;Microsoft.Extensions.Logging.Console.dll;Microsoft.Extensions.Logging.Debug.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Logging.EventLog.dll;Microsoft.Extensions.Logging.EventSource.dll;Microsoft.Extensions.Options.ConfigurationExtensions.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;Microsoft.Graphics.Canvas.Interop.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;Microsoft.Xaml.Behaviors.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;PowerToys.Common.UI.dll;PowerToys.Hosts.deps.json;PowerToys.Hosts.dll;PowerToys.Hosts.exe;PowerToys.Hosts.runtimeconfig.json;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.UI.Lib.dll;resources.pri;System.IO.Abstractions.dll;System.Management.dll;WinRT.Runtime.dll;WinUIEx.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll;System.Text.Json.dll?>
<?define HostsMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?>
<Fragment>
<!-- Hosts -->
<DirectoryRef Id="HostsInstallFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)">
<Component Id="Module_HostsInterface" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.HostsProjectName)\PowerToys.HostsModuleInterface.dll" />
</Component>
<?foreach File in $(var.HostsFiles)?>
<Component Id="H_$(var.File)" Win64="yes">
<File Id="H_$(var.File)" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="HostsMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.HostsMicrosoftUIXamlAssetsInstallFiles)?>
<Component Id="HostsMicrosoftUIXamlAssets_$(var.File)" Win64="yes">
<File Id="HostsMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="HostsAssetsFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)\Assets">
<Component Id="HostsAssets_AppList_Scale100" Win64="yes">
<File Id="HA_AppList_Scale100" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-100.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale125" Win64="yes">
<File Id="HA_AppList_Scale125" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-125.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale150" Win64="yes">
<File Id="HA_AppList_Scale150" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-150.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale200" Win64="yes">
<File Id="HA_AppList_Scale200" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-200.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale400" Win64="yes">
<File Id="HA_AppList_Scale400" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-400.png" />
</Component>
<Component Id="HostsAssets_Hosts" Win64="yes">
<File Id="HA_Hosts" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\Hosts.ico" />
</Component>
</DirectoryRef>
<ComponentGroup Id="HostsComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_HostsInterface"/>
<?foreach File in $(var.HostsFiles)?>
<ComponentRef Id="H_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.HostsMicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="HostsMicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="HostsAssets_AppList_Scale100" />
<ComponentRef Id="HostsAssets_AppList_Scale125" />
<ComponentRef Id="HostsAssets_AppList_Scale150" />
<ComponentRef Id="HostsAssets_AppList_Scale200" />
<ComponentRef Id="HostsAssets_AppList_Scale400" />
<ComponentRef Id="HostsAssets_Hosts" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ImageResizerFiles=ImageResizer.ico;PowerToys.ImageResizer.exe;PowerToys.ImageResizerExt.dll;PowerToys.ImageResizer.dll;PowerToys.ImageResizer.deps.json;PowerToys.ImageResizer.runtimeconfig.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Common.UI.dll;ControlzEx.dll;ModernWpf.Controls.dll;ModernWpf.dll;Microsoft.Xaml.Behaviors.dll;System.IO.Abstractions.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;Ijwhost.dll;ImageResizerContextMenuPackage.msix;PowerToys.ImageResizerContextMenu.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll?>
<?define ImageResizerSparsePackageAssets=LargeTile.png;SmallTile.png;SplashScreen.png;Square150x150Logo.png;Square44x44Logo.png;storelogo.png;Wide310x150Logo.png?>
<Fragment>
<!-- Image Resizer -->
<DirectoryRef Id="ImageResizerInstallFolder" FileSource="$(var.BinDir)modules\$(var.ImageResizerProjectName)">
<?foreach File in $(var.ImageResizerFiles)?>
<Component Id="Module_ImageResizer_$(var.File)" Win64="yes">
<File Id="Module_ImageResizer_File_$(var.File)" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="Module_ImageResizer_Registry" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32">
<RegistryValue Value="[ImageResizerInstallFolder]PowerToys.ImageResizerExt.dll" Type="string" />
<RegistryValue Name="ThreadingModel" Value="Apartment" Type="string" />
</RegistryKey>
<RegistryValue Root="HKCR"
Key="SOFTWARE\Classes\Directory\ShellEx\DragDropHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<!-- Registry Keys for the context menu handler for each of the following image formats: bmp, dib, gif, jfif, jpe, jpeg, jpg, jxr, png, rle, tif, tiff, wdp -->
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.bmp\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.dib\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.gif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.jfif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.jpe\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.jpeg\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.jpg\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.jxr\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.png\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.rle\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.tif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.tiff\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
<RegistryValue Root="HKCR"
Key="SystemFileAssociations\.wdp\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" />
</Component>
</DirectoryRef>
<DirectoryRef Id="ImageResizerAssetsFolder" FileSource="$(var.BinDir)modules\$(var.ImageResizerProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="ImageResizer_ImageResizerSparsePackageAssets" Guid="CC1B81A0-7971-4FAA-A3E6-4CE4DD0EC7C1" Win64="yes">
<?foreach File in $(var.ImageResizerSparsePackageAssets)?>
<File Id="ImageResizerSparsePackageAssets_$(var.File)" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\Assets\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<ComponentGroup Id="ImageResizerComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.ImageResizerFiles)?>
<ComponentRef Id="Module_ImageResizer_$(var.File)" />
<?endforeach?>
<ComponentRef Id="ImageResizer_ImageResizerSparsePackageAssets" />
<ComponentRef Id="Module_ImageResizer_Registry" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment>
<!-- KBM -->
<DirectoryRef Id="KeyboardManagerInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\">
<Component Id="Module_KeyboardManager" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\PowerToys.KeyboardManager.dll" />
</Component>
</DirectoryRef>
<!-- KBM Editor -->
<DirectoryRef Id="KeyboardManagerEditorInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor">
<Component Id="Module_KeyboardManager_Editor" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor\PowerToys.KeyboardManagerEditor.exe" />
</Component>
</DirectoryRef>
<!-- KBM Engine -->
<DirectoryRef Id="KeyboardManagerEngineInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine">
<Component Id="Module_KeyboardManager_Engine" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine\PowerToys.KeyboardManagerEngine.exe" />
</Component>
</DirectoryRef>
<ComponentGroup Id="KeyboardManagerComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_KeyboardManager" />
<ComponentRef Id="Module_KeyboardManager_Editor" />
<ComponentRef Id="Module_KeyboardManager_Engine" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define MeasureToolFiles=Ijwhost.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.MeasureToolCore.dll;PowerToys.MeasureToolUI.deps.json;PowerToys.MeasureToolUI.dll;PowerToys.MeasureToolUI.exe;PowerToys.MeasureToolUI.runtimeconfig.json;resources.pri;System.CodeDom.dll;System.Management.dll;System.Text.Json.dll;WinRT.Runtime.dll;WinUIEx.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll?>
<?define MeasureToolMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?>
<Fragment>
<!-- Measure Tool -->
<DirectoryRef Id="MeasureToolInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)">
<Component Id="Module_MeasureToolInterface" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\PowerToys.MeasureToolModuleInterface.dll" />
</Component>
<?foreach File in $(var.MeasureToolFiles)?>
<Component Id="MT_$(var.File)" Win64="yes">
<File Id="MT_$(var.File)" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="MeasureToolMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.MeasureToolMicrosoftUIXamlAssetsInstallFiles)?>
<Component Id="MeasureToolMicrosoftUIXamlAssets_$(var.File)" Win64="yes">
<File Id="MeasureToolMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<ComponentGroup Id="MeasureToolComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_MeasureToolInterface"/>
<?foreach File in $(var.MeasureToolFiles)?>
<ComponentRef Id="MT_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.MeasureToolMicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="MeasureToolMicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment>
<!-- MouseUtils -->
<DirectoryRef Id="MouseUtilsInstallFolder" FileSource="$(var.BinDir)modules\$(var.MouseUtilsProjectName)">
<Component Id="Module_FindMyMouse" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.FindMyMouse.dll" KeyPath="yes" />
</Component>
<Component Id="Module_MouseHighlighter" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.MouseHighlighter.dll" KeyPath="yes" />
</Component>
<Component Id="Module_MousePointerCrosshairs" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.MousePointerCrosshairs.dll" KeyPath="yes" />
</Component>
</DirectoryRef>
<ComponentGroup Id="MouseUtilsComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_FindMyMouse"/>
<ComponentRef Id="Module_MouseHighlighter"/>
<ComponentRef Id="Module_MousePointerCrosshairs" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define PowerAccentFiles=ControlzEx.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerAccent.Core.dll;PowerToys.PowerAccentModuleInterface.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.PowerAccent.deps.json;PowerToys.PowerAccent.dll;PowerToys.PowerAccent.exe;PowerToys.PowerAccent.runtimeconfig.json;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;System.IO.Abstractions.dll;System.Management.dll;Vanara.Core.dll;Vanara.PInvoke.ComCtl32.dll;Vanara.PInvoke.Cryptography.dll;Vanara.PInvoke.Gdi32.dll;Vanara.PInvoke.Kernel32.dll;Vanara.PInvoke.Ole.dll;Vanara.PInvoke.Rpc.dll;Vanara.PInvoke.Security.dll;Vanara.PInvoke.Shared.dll;Vanara.PInvoke.Shell32.dll;Vanara.PInvoke.ShlwApi.dll;Vanara.PInvoke.User32.dll;PowerToys.PowerAccentKeyboardService.dll;Microsoft.Windows.SDK.NET.dll;System.CodeDom.dll;System.Text.Json.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll;UnicodeInformation.dll;ModernWpf.dll;ModernWpf.Controls.dll?>
<Fragment>
<!-- PowerAccent -->
<DirectoryRef Id="PowerAccentInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerAccentProjectName)">
<?foreach File in $(var.PowerAccentFiles)?>
<Component Id="PowerAccent_$(var.File)" Win64="yes">
<File Id="PowerAccentFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerAccentProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<ComponentGroup Id="PowerAccentComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.PowerAccentFiles)?>
<ComponentRef Id="PowerAccent_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define PowerRenameFiles=PowerRenameUI.ico;PowerToys.PowerRename.exe;resources.pri;PowerToys.PowerRenameExt.dll;PowerRenameContextMenuPackage.msix;PowerToys.PowerRenameContextMenu.dll?>
<?define PowerRenameSparsePackageAssets=LargeTile.png;SmallTile.png;SplashScreen.png;Square150x150Logo.png;Square44x44Logo.png;storelogo.png;Wide310x150Logo.png?>
<?define PowerRenameMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?>
<Fragment>
<!-- PowerRename -->
<DirectoryRef Id="PowerRenameInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)">
<?foreach File in $(var.PowerRenameFiles)?>
<Component Id="PowerRename_$(var.File)" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<!-- !Warning! Make sure to change Component Guid if you update something here -->
<Component Id="Module_PowerRename" Guid="40D43079-240E-402D-8CE8-571BFFA71175" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{0440049F-D1DC-4E46-B27B-98393D79486B}">
<RegistryValue Type="string" Value="PowerRename Shell Extension" />
<RegistryValue Type="string" Name="ContextMenuOptIn" Value="" />
<RegistryValue Type="string" Key="InprocServer32" Value="[PowerRenameInstallFolder]PowerToys.PowerRenameExt.dll" />
<RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" />
</RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\PowerRenameExt">
<RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/>
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="PowerRenameMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.PowerRenameMicrosoftUIXamlAssetsInstallFiles)?>
<Component Id="PowerRenameMicrosoftUIXamlAssets_$(var.File)" Win64="yes">
<File Id="PowerRenameMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="PowerRenameAssetsFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_PowerRename_Assets" Guid="BA290033-7861-44B7-8A04-7E4C3CC7F0AE" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\file.png" />
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\folder.png" />
</Component>
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="PowerRename_PowerRenameSparsePackageAssets" Guid="A32B528D-2771-4853-9775-1791D39DF30E" Win64="yes">
<?foreach File in $(var.PowerRenameSparsePackageAssets)?>
<File Id="PowerRenameSparsePackageAssets_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<ComponentGroup Id="PowerRenameComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_PowerRename" />
<?foreach File in $(var.PowerRenameFiles)?>
<ComponentRef Id="PowerRename_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.PowerRenameMicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="PowerRenameMicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="Module_PowerRename_Assets" />
<ComponentRef Id="PowerRename_PowerRenameSparsePackageAssets" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -6,21 +6,13 @@
<?define BinDir="$(var.RepoDir)$(var.Platform)\$(var.Configuration)\" ?>
<?define PowerToysPlatform="x64"?>
<?define Dotnet7DownloadUrl="https://download.visualstudio.microsoft.com/download/pr/5b2fbe00-507e-450e-8b52-43ab052aadf2/79d54c3a19ce3fce314f2367cf4e3b21/windowsdesktop-runtime-7.0.0-win-x64.exe"?>
<?define Dotnet7PayloadSize="57756472"?>
<?define Dotnet7PayloadHash="DB56882D3263C9E533EA7003D018CB7D65F11C10"?>
<?define PlatformProgramFiles="[ProgramFiles64Folder]"?>
<?else?>
<!-- stable WIX 3 doesn't support ARM64, so we build installers as x86 -->
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?>
<?define PowerToysPlatform="ARM64"?>
<?define Dotnet7DownloadUrl="https://download.visualstudio.microsoft.com/download/pr/bce1b608-3a2a-45e6-ab7b-8c414b9e2c56/74703a44afc5f7550eba824143fc20a7/windowsdesktop-runtime-7.0.0-win-arm64.exe"?>
<?define Dotnet7PayloadSize="53133216"?>
<?define Dotnet7PayloadHash="8A7271390C2538268EFC71F3E49C80017F406C16"?>
<!--TODO: define to ARM64 Program files once it's available-->
<!--TODO: define to ARM64 Program files once it's available-->
<?define PlatformProgramFiles="[ProgramFiles6432Folder]"?>
<?endif?>
@@ -41,7 +33,6 @@
SuppressRepair="yes" />
</BootstrapperApplicationRef>
<util:FileSearch Variable="HasDotnet700" Path="$(var.PlatformProgramFiles)dotnet\shared\Microsoft.WindowsDesktop.App\7.0.0\System.Xaml.dll" Result="exists" />
<util:RegistrySearch Variable="HasWebView2PerMachine" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
<util:RegistrySearch Variable="HasWebView2PerUser" Root="HKCU" Key="Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
@@ -73,26 +64,6 @@
PerMachine="yes"
Vital="no">
</ExePackage>
<ExePackage
DisplayName="Downloading and installing .NET 7 Desktop Runtime"
Name="windowsdesktop-runtime-7.0.0-win-$(var.PowerToysPlatform).exe"
Compressed="no"
Id="DotnetRuntime7"
DetectCondition="HasDotnet700"
DownloadUrl="$(var.Dotnet7DownloadUrl)"
InstallCommand="/install /quiet /norestart"
RepairCommand="/repair /passive /norestart"
Permanent="yes"
PerMachine="yes"
UninstallCommand="/uninstall /quiet /norestart">
<ExitCode Value="1638" Behavior="success"/>
<RemotePayload
Description="Microsoft Windows Desktop Runtime - 7.0.0 ($(var.PowerToysPlatform))"
ProductName="Microsoft Windows Desktop Runtime - 7.0.0 ($(var.PowerToysPlatform))"
Size="$(var.Dotnet7PayloadSize)"
Version="7.0.0.31819"
Hash="$(var.Dotnet7PayloadHash)" />
</ExePackage>
<ExePackage
DisplayName="Installing Microsoft Edge WebView2"
Name="MicrosoftEdgeWebview2Setup.exe"

View File

@@ -24,7 +24,13 @@ SET PTRoot=..\..\..\..
call "..\..\publish.cmd" arm64
)</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<RunPostBuildEvent>Always</RunPostBuildEvent>
<PostBuildEvent>
call move /Y ..\..\Core.wxs.bk ..\..\Core.wxs
call move /Y ..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h.bk ..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h
</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<Name>PowerToysInstaller</Name>
</PropertyGroup>
@@ -56,7 +62,32 @@ call "..\..\publish.cmd" arm64
<Compile Include="CustomDialogs\PTLicenseDlg.wxs" />
<Compile Include="CustomDialogs\WixUI_PTInstallDir.wxs" />
<Compile Include="Product.wxs" />
<Compile Include="AlwaysOnTop.wxs" />
<Compile Include="Awake.wxs" />
<Compile Include="ColorPicker.wxs" />
<Compile Include="FancyZones.wxs" />
<Compile Include="FileExplorerPreview.wxs" />
<Compile Include="FileLocksmith.wxs" />
<Compile Include="Hosts.wxs" />
<Compile Include="ImageResizer.wxs" />
<Compile Include="KeyboardManager.wxs" />
<Compile Include="MeasureTool.wxs" />
<Compile Include="MouseUtils.wxs" />
<Compile Include="PowerAccent.wxs" />
<Compile Include="PowerRename.wxs" />
<Compile Include="Run.wxs" />
<Compile Include="Settings.wxs" />
<Compile Include="ShortcutGuide.wxs" />
<Compile Include="TextExtractor.wxs" />
<Compile Include="Tools.wxs" />
<Compile Include="VideoConference.wxs" />
<Compile Include="MonacoSRC.wxs" />
<Compile Include="Core.wxs" />
<Compile Include="Resources.wxs" />
<Compile Include="WinAppSDK.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUtilExtension">

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,318 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<!-- Languages for localization on build farm -->
<!-- qps-ploc;qps-ploca;qps-plocm; -->
<?define LocLanguageList = cs-CZ;de-DE;es-ES;fr-FR;hu-HU;it-IT;ja-JP;ko-KR;nl-NL;pl-PL;pt-BR;pt-PT;ru-RU;sv-SE;tr-TR;zh-CN;zh-TW?>
<Fragment>
<!-- Resource directories should be added only if the installer is built on the build farm -->
<?ifdef env.IsPipeline?>
<?foreach ParentDirectory in LauncherInstallFolder;FancyZonesInstallFolder;ImageResizerInstallFolder;ColorPickerInstallFolder;FileExplorerPreviewInstallFolder;HistoryPluginFolder;CalculatorPluginFolder;FolderPluginFolder;ProgramPluginFolder;ShellPluginFolder;IndexerPluginFolder;UnitConverterPluginFolder;UriPluginFolder;WindowWalkerPluginFolder;OneNotePluginFolder;RegistryPluginFolder;VSCodeWorkspacesPluginFolder;ServicePluginFolder;SystemPluginFolder;TimeDatePluginFolder;TimeZonePluginFolder;WindowsSettingsPluginFolder;WindowsTerminalPluginFolder;WebSearchPluginFolder?>
<DirectoryRef Id="$(var.ParentDirectory)">
<!-- Resource file directories -->
<?foreach Language in $(var.LocLanguageList)?>
<!--NB: Ids can't contain hyphens-->
<?if $(var.Language) = cs-CZ?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = de-DE?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = es-ES?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = fr-FR?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = hu-HU?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = it-IT?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ko-KR?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = nl-NL?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = pl-PL?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define IdSafeLanguage = pt_PT?>
<!--
<?elseif $(var.Language) = qps-ploc?>
<?define IdSafeLanguage = qps_ploc?>
<?elseif $(var.Language) = qps-ploca?>
<?define IdSafeLanguage = qps_ploca?>
<?elseif $(var.Language) = qps-plocm?>
<?define IdSafeLanguage = qps_plocm?>
-->
<?elseif $(var.Language) = ru-RU?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sv-SE?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = tr-TR?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = zh-CN?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?endif?>
<Directory Id="Resource$(var.IdSafeLanguage)$(var.ParentDirectory)" Name="$(var.Language)" />
<?undef IdSafeLanguage?>
<?endforeach?>
</DirectoryRef>
<?endforeach?>
<?endif?>
<ComponentGroup Id="ResourcesComponentGroup">
<!-- Resource components should be added only if the installer is built on the build farm -->
<?ifdef env.IsPipeline?>
<!-- Components for adding resource files -->
<?foreach Language in $(var.LocLanguageList)?>
<!--NB: Ids can't contain hyphens-->
<?if $(var.Language) = cs-CZ?>
<!-- CompGUIDPrefix is language-dependent guid prefix missing the last 2 digits. -->
<?define CompGUIDPrefix = 3E93405A-B91B-4E04-BAEC-26BEEE60F9?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = de-DE?>
<?define CompGUIDPrefix = AF28C057-7ED9-474C-8E7E-D583BE8ECF?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = es-ES?>
<?define CompGUIDPrefix = DD1FEEBD-55F0-44BA-A0FF-62C5C1C952?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = fr-FR?>
<?define CompGUIDPrefix = F9F86D61-C747-43FC-8509-F3D1F198E1?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = hu-HU?>
<?define CompGUIDPrefix = 9A919A40-E457-47F5-97C8-E886F06DDE?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = it-IT?>
<?define CompGUIDPrefix = 48FBF6D9-32DB-46FF-A64C-225269E738?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define CompGUIDPrefix = FB8E04AB-C8E8-43C0-8883-19F73E4EBA?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ko-KR?>
<?define CompGUIDPrefix = 86C8F07C-80CA-420A-B6E7-86933D640C?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = nl-NL?>
<?define CompGUIDPrefix = C68F115F-28DD-4B45-9512-405C432458?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = pl-PL?>
<?define CompGUIDPrefix = 97494A31-5F57-4EC1-A6A9-994DF0813B?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define CompGUIDPrefix = F4985235-2AB9-446B-BF8E-B14929A160?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define CompGUIDPrefix = 58155841-D53A-4330-89D3-5C0338B928?>
<?define IdSafeLanguage = pt_PT?>
<!--
<?elseif $(var.Language) = qps-ploc?>
<?define CompGUIDPrefix = 75710CB2-DBDA-420B-9676-34D5F9D4A2?>
<?define IdSafeLanguage = qps_ploc?>
<?elseif $(var.Language) = qps-ploca?>
<?define CompGUIDPrefix = 55AF2A35-F959-49AB-B9EF-DFC9964A4F?>
<?define IdSafeLanguage = qps_ploca?>
<?elseif $(var.Language) = qps-plocm?>
<?define CompGUIDPrefix = D8CE2F7B-B0A1-4687-BFB7-1792B2FCCD?>
<?define IdSafeLanguage = qps_plocm?>
-->
<?elseif $(var.Language) = ru-RU?>
<?define CompGUIDPrefix = 157BAF33-8D3F-46B7-9CF9-2C18E601CC?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sv-SE?>
<?define CompGUIDPrefix = 85B4199F-5F89-42C3-B7C2-DBCD3E5267?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = tr-TR?>
<?define CompGUIDPrefix = EA375345-F52A-499B-A45E-108CE67EAF?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = zh-CN?>
<?define CompGUIDPrefix = F8EE7CE9-58EA-4850-B76F-C22362DC0E?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define CompGUIDPrefix = F07F3210-79E2-4C38-AEF7-D8EBE06621?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?define CompGUIDPrefix = 94D9A417-56FC-435D-8167-A45F5D7A75?>
<?endif?>
<Component
Id="Launcher_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)LauncherInstallFolder"
Guid="$(var.CompGUIDPrefix)00">
<File Id="Launcher_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\$(var.Language)\PowerToys.PowerLauncher.resources.dll" />
</Component>
<Component
Id="FancyZonesEditor_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FancyZonesInstallFolder"
Guid="$(var.CompGUIDPrefix)01">
<File Id="FancyZonesEditor_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.FancyZonesProjectName)\$(var.Language)\PowerToys.FancyZonesEditor.resources.dll" />
</Component>
<Component
Id="ImageResizer_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)ImageResizerInstallFolder"
Guid="$(var.CompGUIDPrefix)02">
<File Id="ImageResizer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\$(var.Language)\PowerToys.ImageResizer.resources.dll" />
</Component>
<Component
Id="ColorPicker_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)ColorPickerInstallFolder"
Guid="$(var.CompGUIDPrefix)03">
<File Id="ColorPicker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\$(var.Language)\PowerToys.ColorPickerUI.resources.dll" />
</Component>
<Component
Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)04">
<File Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MarkdownPreviewHandler.resources.dll" />
</Component>
<Component
Id="SVGPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)05">
<File Id="SVGPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.SvgPreviewHandler.resources.dll" />
</Component>
<Component
Id="PDFPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)06">
<File Id="PDFPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.PdfPreviewHandler.resources.dll" />
</Component>
<Component
Id="GcodePreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)07">
<File Id="GcodePreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.GcodePreviewHandler.resources.dll" />
</Component>
<!-- PowerToys Run aka Launcher plugin resources -->
<Component
Id="Launcher_Calculator_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder"
Guid="$(var.CompGUIDPrefix)08">
<File Id="Launcher_Calculator_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Calculator.resources.dll" />
</Component>
<Component
Id="Launcher_Folder_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder"
Guid="$(var.CompGUIDPrefix)09">
<File Id="Launcher_Folder_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Folder\$(var.Language)\Microsoft.Plugin.Folder.resources.dll" />
</Component>
<Component
Id="Launcher_Program_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0A"
Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder">
<File Id="Launcher_Program_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Program\$(var.Language)\Microsoft.Plugin.Program.resources.dll" />
</Component>
<Component
Id="Launcher_Shell_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0B"
Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder">
<File Id="Launcher_Shell_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Shell\$(var.Language)\Microsoft.Plugin.Shell.resources.dll" />
</Component>
<Component
Id="Launcher_Indexer_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0C"
Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder">
<File Id="Launcher_Indexer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\$(var.Language)\Microsoft.Plugin.Indexer.resources.dll" />
</Component>
<Component
Id="Launcher_Uri_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0D"
Directory="Resource$(var.IdSafeLanguage)UriPluginFolder">
<File Id="Launcher_Uri_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Uri\$(var.Language)\Microsoft.Plugin.Uri.resources.dll" />
</Component>
<Component
Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0E"
Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder">
<File Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\$(var.Language)\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.resources.dll" />
</Component>
<Component Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0F"
Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder">
<File Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\$(var.Language)\Microsoft.Plugin.WindowWalker.resources.dll" />
</Component>
<Component
Id="Launcher_Registry_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)10"
Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder">
<File Id="Launcher_Registry_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Registry\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Registry.resources.dll" />
</Component>
<Component
Id="Launcher_Service_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)11"
Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder">
<File Id="Launcher_Service_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Service\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Service.resources.dll" />
</Component>
<Component
Id="Launcher_System_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)12"
Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder">
<File Id="Launcher_System_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\System\$(var.Language)\Microsoft.PowerToys.Run.Plugin.System.resources.dll" />
</Component>
<Component
Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)13"
Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder">
<File Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsSettings.resources.dll" />
</Component>
<Component
Id="Launcher_TimeZone_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)14"
Directory="Resource$(var.IdSafeLanguage)TimeZonePluginFolder">
<File Id="Launcher_TimeZone_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\TimeZone\$(var.Language)\Microsoft.PowerToys.Run.Plugin.TimeZone.resources.dll" />
</Component>
<Component
Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)15"
Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder">
<File Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.resources.dll" />
</Component>
<Component
Id="Launcher_WebSearch_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)16"
Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder">
<File Id="Launcher_WebSearch_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\$(var.Language)\Community.PowerToys.Run.Plugin.WebSearch.resources.dll" />
</Component>
<Component
Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)17"
Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder">
<File Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\$(var.Language)\Community.PowerToys.Run.Plugin.UnitConverter.resources.dll" />
</Component>
<Component
Id="Launcher_TimeDate_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)18"
Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder">
<File Id="Launcher_TimeDate_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\$(var.Language)\Microsoft.PowerToys.Run.Plugin.TimeDate.resources.dll" />
</Component>
<Component
Id="Launcher_OneNote_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)19"
Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder">
<File Id="Launcher_OneNote_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\$(var.Language)\Microsoft.PowerToys.Run.Plugin.OneNote.resources.dll" />
</Component>
<Component
Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)1A">
<File Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MonacoPreviewHandler.resources.dll" />
</Component>
<Component
Id="Launcher_History_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder"
Guid="$(var.CompGUIDPrefix)1B">
<File Id="Launcher_History_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\History\$(var.Language)\Microsoft.PowerToys.Run.Plugin.History.resources.dll" />
</Component>
<?undef IdSafeLanguage?>
<?undef CompGUIDPrefix?>
<?endforeach?>
<?endif?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,311 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define launcherImagesComponentFiles=app.dark.png;app.light.png;app_error.dark.png;app_error.light.png;RunAsset.ico?>
<?define calcComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Calculator.deps.json;Microsoft.PowerToys.Run.Plugin.Calculator.dll;PowerToys.ManagedTelemetry.dll?>
<?define FolderComponentFiles=plugin.json;Microsoft.Plugin.Folder.deps.json;Microsoft.Plugin.Folder.dll;PowerToys.ManagedTelemetry.dll;Ijwhost.dll?>
<?define FolderImagesComponentFiles=copy.dark.png;copy.light.png;delete.dark.png;delete.light.png;file.dark.png;file.light.png;folder.dark.png;folder.light.png;user.dark.png;user.light.png;Warning.dark.png;Warning.light.png?>
<?define ProgramComponentFiles=plugin.json;Microsoft.Plugin.Program.deps.json;Microsoft.Plugin.Program.dll;PowerToys.ManagedTelemetry.dll?>
<?define ProgramImagesComponentFiles=app.dark.png;app.light.png;disable.light.png;disable.dark.png;folder.light.png;folder.dark.png;shell.light.png;shell.dark.png;user.light.png;user.dark.png?>
<?define ShellComponentFiles=plugin.json;Microsoft.Plugin.Shell.deps.json;Microsoft.Plugin.Shell.dll;PowerToys.ManagedTelemetry.dll?>
<?define HistoryPluginComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.History.deps.json;Microsoft.PowerToys.Run.Plugin.History.dll?>
<?define ShellImagesComponentFiles=shell.light.png;shell.dark.png;user.light.png;user.dark.png?>
<?define IndexerComponentFiles=Microsoft.Plugin.Indexer.deps.json;Microsoft.Plugin.Indexer.dll;plugin.json;PowerToys.ManagedTelemetry.dll;Ijwhost.dll?>
<?define IndexerImagesComponentFiles=indexer.dark.png;indexer.light.png;Warning.light.png;Warning.dark.png?>
<?define UnitConvCompFiles=plugin.json;Community.PowerToys.Run.Plugin.UnitConverter.deps.json;Community.PowerToys.Run.Plugin.UnitConverter.dll?>
<?define WebSrchCompFiles=plugin.json;Community.PowerToys.Run.Plugin.WebSearch.deps.json;Community.PowerToys.Run.Plugin.WebSearch.dll?>
<?define UriComponentFiles=plugin.json;Microsoft.Plugin.Uri.deps.json;Microsoft.Plugin.Uri.dll;PowerToys.ManagedTelemetry.dll?>
<?define VSCWrkCompFiles=plugin.json;Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll?>
<?define WindowWlkrCompFiles=plugin.json;Microsoft.Plugin.WindowWalker.deps.json;Microsoft.Plugin.WindowWalker.dll;PowerToys.ManagedTelemetry.dll?>
<?define WindowWlkrImagesCompFiles=windowwalker.dark.png;windowwalker.light.png;info.dark.png;info.light.png?>
<?define OneNoteComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.OneNote.deps.json;Microsoft.PowerToys.Run.Plugin.OneNote.dll;PowerToys.ManagedTelemetry.dll?>
<?define RegistryComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Registry.deps.json;Microsoft.PowerToys.Run.Plugin.Registry.dll;PowerToys.ManagedTelemetry.dll?>
<?define ServiceComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Service.deps.json;Microsoft.PowerToys.Run.Plugin.Service.dll?>
<?define SystemComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.System.deps.json;Microsoft.PowerToys.Run.Plugin.System.dll?>
<?define SystemImagesComponentFiles=lock.dark.png;lock.light.png;logoff.dark.png;logoff.light.png;recyclebin.dark.png;recyclebin.light.png;restart.dark.png;restart.light.png;shutdown.dark.png;shutdown.light.png;sleep.dark.png;sleep.light.png;firmwareSettings.dark.png;firmwareSettings.light.png;networkAdapter.dark.png;networkAdapter.light.png?>
<?define TimeDateComponentFiles=Microsoft.PowerToys.Run.Plugin.TimeDate.deps.json;Microsoft.PowerToys.Run.Plugin.TimeDate.dll;plugin.json;PowerToys.ManagedTelemetry.dll?>
<?define TimeDateImagesComponentFiles=calendar.dark.png;calendar.light.png;time.dark.png;time.light.png;timeDate.dark.png;timeDate.light.png;Warning.dark.png;Warning.light.png?>
<?define TimeZoneComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.TimeZone.deps.json;Microsoft.PowerToys.Run.Plugin.TimeZone.dll;PowerToys.ManagedTelemetry.dll?>
<?define WinSetCmpFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.WindowsSettings.deps.json;Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll;PowerToys.ManagedTelemetry.dll?>
<?define WinTermCmpFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.WindowsTerminal.deps.json;Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll;PowerToys.ManagedTelemetry.dll?>
<Fragment>
<ComponentGroup Id="RunComponentGroup">
<Component Id="launcherShortcutComponent" Directory="LauncherInstallFolder" >
<!-- Toast Notification AUMID -->
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\AppUserModelId\PowerToysRun">
<RegistryValue Type="string" Name="DisplayName" Value="PowerToys Run" />
<RegistryValue Type="string" Name="IconUri" Value="[LauncherImagesFolder]RunAsset.ico" />
</RegistryKey>
</Component>
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="launcherInstallComponent" Guid="7362E89D-0FC8-4536-940F-F0FDF5735C39" Directory="LauncherInstallFolder" >
<File Source="$(var.BinDir)modules\Launcher\PowerToys.Launcher.dll" />
<?foreach File in e_sqlite3.dll;hyjiacan.py4n.dll;Mages.Core.dll;NLog.dll;NLog.Extensions.Logging.dll;PowerToys.PowerLauncher.deps.json;PowerToys.PowerLauncher.dll;PowerToys.PowerLauncher.exe;Microsoft.Xaml.Behaviors.dll;PowerToys.PowerLauncher.runtimeconfig.json;System.Data.OleDb.dll;UnitsNet.dll;Wox.Infrastructure.dll;Wox.Plugin.dll;PowerToys.ManagedTelemetry.dll;PowerToys.PowerLauncher.Telemetry.dll;Microsoft.Data.Sqlite.dll;SQLitePCLRaw.batteries_v2.dll;SQLitePCLRaw.core.dll;SQLitePCLRaw.provider.e_sqlite3.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.DependencyInjection.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;ControlzEx.dll;PowerToys.ManagedCommon.dll;System.Management.dll;System.IO.Abstractions.dll;PowerToys.Common.UI.dll;System.ServiceProcess.ServiceController.dll;Microsoft.Toolkit.Uwp.Notifications.dll;ModernWpf.Controls.dll;ModernWpf.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;System.Reactive.dll;System.Text.Json.dll;Ijwhost.dll;ScipBe.Common.Office.OneNote.dll;Interop.Microsoft.Office.Interop.OneNote.dll;LazyCache.dll;Microsoft.Extensions.Caching.Abstractions.dll;Microsoft.Extensions.Caching.Memory.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?>
<File Id="File_$(var.File)" Source="$(var.BinDir)modules\launcher\$(var.File)" />
<?endforeach?>
<File Source="$(var.BinDir)Settings\PowerToys.Settings.UI.Lib.dll" />
</Component>
<?foreach File in $(var.launcherImagesComponentFiles)?>
<Component Id="launcherImagesComponent_$(var.File)" Win64="yes" Directory="LauncherImagesFolder">
<File Id="launcherImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Calculator Plugin -->
<?foreach File in $(var.calcComponentFiles)?>
<Component Id="calcComponent_$(var.File)" Win64="yes" Directory="CalculatorPluginFolder">
<File Id="calcComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="calculatorImagesComponentLight" Directory="CalculatorImagesFolder" >
<File Id="calculatorPluginImg_calculator_light" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\Images\calculator.light.png" />
</Component>
<Component Id="calculatorImagesComponentDark" Directory="CalculatorImagesFolder" >
<File Id="calculatorPluginImg_calculator_dark" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\Images\calculator.dark.png" />
</Component>
<!-- Folder Plugin -->
<?foreach File in $(var.FolderComponentFiles)?>
<Component Id="FolderComponent_$(var.File)" Win64="yes" Directory="FolderPluginFolder">
<File Id="FolderComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Folder\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.FolderImagesComponentFiles)?>
<Component Id="FolderImagesComponent_$(var.File)" Win64="yes" Directory="FolderPluginImagesFolder">
<File Id="FolderImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Folder\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Program Plugin -->
<?foreach File in $(var.ProgramComponentFiles)?>
<Component Id="ProgramComponent_$(var.File)" Win64="yes" Directory="ProgramPluginFolder">
<File Id="ProgramComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Program\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.ProgramImagesComponentFiles)?>
<Component Id="ProgramImagesComponent_$(var.File)" Win64="yes" Directory="ProgramImagesFolder">
<File Id="ProgramImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Program\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Shell Plugin -->
<?foreach File in $(var.ShellComponentFiles)?>
<Component Id="ShellComponent_$(var.File)" Win64="yes" Directory="ShellPluginFolder">
<File Id="ShellComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Shell\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.ShellImagesComponentFiles)?>
<Component Id="ShellImagesComponent_$(var.File)" Win64="yes" Directory="ShellImagesFolder">
<File Id="ShellImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Shell\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Indexer Plugin -->
<?foreach File in $(var.IndexerComponentFiles)?>
<Component Id="IndexerComponent_$(var.File)" Win64="yes" Directory="IndexerPluginFolder">
<File Id="IndexerComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.IndexerImagesComponentFiles)?>
<Component Id="IndexerImagesComponent_$(var.File)" Win64="yes" Directory="IndexerImagesFolder">
<File Id="IndexerImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- UnitConverter Plugin -->
<?foreach File in $(var.UnitConvCompFiles)?>
<Component Id="UnitConvComp_$(var.File)" Win64="yes" Directory="UnitConverterPluginFolder">
<File Id="UnitConvCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="UnitConverterImagesComponentLight" Directory="UnitConverterImagesFolder" >
<File Id="UnitConverterLight" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\Images\unitconverter.light.png" />
</Component>
<Component Id="UnitConverterImagesComponentDark" Directory="UnitConverterImagesFolder" >
<File Id="UnitConverterDark" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\Images\unitconverter.dark.png" />
</Component>
<!-- WebSearch Plugin -->
<?foreach File in $(var.WebSrchCompFiles)?>
<Component Id="WebSrchComp_$(var.File)" Win64="yes" Directory="WebSearchPluginFolder">
<File Id="WebSrchCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WebSearchImagesComponentLight" Directory="WebSearchImagesFolder" >
<File Id="WebSearchLight" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\Images\WebSearch.light.png" />
</Component>
<Component Id="WebSearchImagesComponentDark" Directory="WebSearchImagesFolder" >
<File Id="WebSearchDark" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\Images\WebSearch.dark.png" />
</Component>
<!-- History Plugin -->
<?foreach File in $(var.HistoryPluginComponentFiles)?>
<Component Id="HistoryComponent_$(var.File)" Win64="yes" Directory="HistoryPluginFolder">
<File Id="HistoryComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\History\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="HistoryImagesComponentLight" Directory="HistoryImagesFolder" >
<File Id="HistoryLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\History\Images\history.light.png" />
</Component>
<Component Id="HistoryImagesComponentDark" Directory="HistoryImagesFolder" >
<File Id="HistoryDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\History\Images\history.dark.png" />
</Component>
<!-- Uri Plugin -->
<?foreach File in $(var.UriComponentFiles)?>
<Component Id="UriComponent_$(var.File)" Win64="yes" Directory="UriPluginFolder">
<File Id="UriComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Uri\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="UriImagesComponentLight" Directory="UriImagesFolder" >
<File Id="UriLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Uri\Images\Uri.light.png" />
</Component>
<Component Id="UriImagesComponentDark" Directory="UriImagesFolder" >
<File Id="UriDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Uri\Images\Uri.dark.png" />
</Component>
<!-- VSCodeWorkspaces Plugin -->
<?foreach File in $(var.VSCWrkCompFiles)?>
<Component Id="VSCWrkComp_$(var.File)" Win64="yes" Directory="VSCodeWorkspacesPluginFolder">
<File Id="VSCWrkCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="VSCodeWorkspacesDepsComponent" Directory="VSCodeWorkspacesPluginFolder">
<File Id="VSCodeWorkspaceFolder_deps" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.deps.json" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentLight" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceCodeLight" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\code-light.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentDark" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceCodeDark" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\code-dark.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentFolder" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceFolder" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\folder.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentMonitor" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceRemote" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\monitor.png" />
</Component>
<!-- WindowWalker Plugin -->
<?foreach File in $(var.WindowWlkrCompFiles)?>
<Component Id="WindowWlkrComp_$(var.File)" Win64="yes" Directory="WindowWalkerPluginFolder">
<File Id="WindowWlkrCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.WindowWlkrImagesCompFiles)?>
<Component Id="WindowWalkerImagesComp_$(var.File)" Win64="yes" Directory="WindowWalkerImagesFolder">
<File Id="WindowWalkerImagesComp_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- OneNote Plugin -->
<?foreach File in $(var.OneNoteComponentFiles)?>
<Component Id="OneNoteComp_$(var.File)" Win64="yes" Directory="OneNotePluginFolder">
<File Id="OneNoteCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="OneNoteImagesComponentLight" Directory="OneNoteImagesFolder" >
<File Id="OneNoteLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\Images\oneNote.light.png" />
</Component>
<Component Id="OneNoteImagesComponentDark" Directory="OneNoteImagesFolder" >
<File Id="OneNoteDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\Images\oneNote.dark.png" />
</Component>
<!-- Registry Plugin -->
<?foreach File in $(var.RegistryComponentFiles)?>
<Component Id="RegistryComponent_$(var.File)" Win64="yes" Directory="RegistryPluginFolder">
<File Id="RegistryComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Registry\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="RegistryImagesComponentLight" Directory="RegistryImagesFolder" >
<File Id="RegistryLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Registry\Images\reg.light.png" />
</Component>
<Component Id="RegistryImagesComponentDark" Directory="RegistryImagesFolder" >
<File Id="RegistryDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Registry\Images\reg.dark.png" />
</Component>
<!-- Service Plugin -->
<?foreach File in $(var.ServiceComponentFiles)?>
<Component Id="ServiceComponent_$(var.File)" Win64="yes" Directory="ServicePluginFolder">
<File Id="ServiceComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Service\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="ServiceImagesComponentLight" Directory="ServiceImagesFolder" >
<File Id="ServiceLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Service\Images\service.light.png" />
</Component>
<Component Id="ServiceImagesComponentDark" Directory="ServiceImagesFolder" >
<File Id="ServiceDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Service\Images\service.dark.png" />
</Component>
<!-- System Plugin -->
<?foreach File in $(var.SystemComponentFiles)?>
<Component Id="SystemComponent_$(var.File)" Win64="yes" Directory="SystemPluginFolder">
<File Id="SystemComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\System\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.SystemImagesComponentFiles)?>
<Component Id="SystemImagesComponent_$(var.File)" Win64="yes" Directory="SystemImagesFolder">
<File Id="SystemImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\System\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- TimeDate Plugin -->
<?foreach File in $(var.TimeDateComponentFiles)?>
<Component Id="TimeDateComponent_$(var.File)" Win64="yes" Directory="TimeDatePluginFolder">
<File Id="TimeDateComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.TimeDateImagesComponentFiles)?>
<Component Id="TimeDateImagesComponent_$(var.File)" Win64="yes" Directory="TimeDateImagesFolder">
<File Id="TimeDateImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- TimeZone Plugin -->
<?foreach File in $(var.TimeZoneComponentFiles)?>
<Component Id="TimeZoneComponent_$(var.File)" Win64="yes" Directory="TimeZonePluginFolder">
<File Id="TimeZoneComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\TimeZone\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="TimeZoneImagesComponentLight" Directory="TimeZoneImagesFolder" >
<File Id="TimeZoneLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\TimeZone\Images\timeZone.light.png" />
</Component>
<Component Id="TimeZoneImagesComponentDark" Directory="TimeZoneImagesFolder" >
<File Id="TimeZoneDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\TimeZone\Images\timeZone.dark.png" />
</Component>
<!-- WindowsSettings Plugin -->
<?foreach File in $(var.WinSetCmpFiles)?>
<Component Id="WinSetCmp_$(var.File)" Win64="yes" Directory="WindowsSettingsPluginFolder">
<File Id="WinSetCmpFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WindowsSettingsImagesComponentLight" Directory="WindowsSettingsImagesFolder" >
<File Id="WindowsSettingsLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\Images\WindowsSettings.light.png" />
</Component>
<Component Id="WindowsSettingsImagesComponentDark" Directory="WindowsSettingsImagesFolder" >
<File Id="WindowsSettingsDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\Images\WindowsSettings.dark.png" />
</Component>
<!-- WindowsTerminal Plugin -->
<?foreach File in $(var.WinTermCmpFiles)?>
<Component Id="WinTermCmp_$(var.File)" Win64="yes" Directory="WindowsTerminalPluginFolder">
<File Id="WinTermCmpFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WindowsTerminalImagesComponentLight" Directory="WindowsTerminalImagesFolder" >
<File Id="WindowsTerminalLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\Images\WindowsTerminal.light.png" />
</Component>
<Component Id="WindowsTerminalImagesComponentDark" Directory="WindowsTerminalImagesFolder" >
<File Id="WindowsTerminalDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\Images\WindowsTerminal.dark.png" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define SettingsV2Files=WinUIEx.dll;backup_restore_settings.json;Ijwhost.dll;ColorCode.Core.dll;ColorCode.WinUI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Labs.WinUI.SettingsControls.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.Controls.Core.dll;CommunityToolkit.WinUI.UI.Controls.DataGrid.dll;CommunityToolkit.WinUI.UI.Controls.Input.dll;CommunityToolkit.WinUI.UI.Controls.Layout.dll;CommunityToolkit.WinUI.UI.Controls.Markdown.dll;CommunityToolkit.WinUI.UI.Controls.Media.dll;CommunityToolkit.WinUI.UI.Controls.Primitives.dll;CommunityToolkit.WinUI.UI.dll;icon.ico;Microsoft.Graphics.Canvas.Interop.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.deps.json;PowerToys.Settings.dll;PowerToys.Settings.exe;PowerToys.Settings.runtimeconfig.json;PowerToys.Settings.UI.Lib.dll;resources.pri;System.CodeDom.dll;System.IO.Abstractions.dll;WinRT.Runtime.dll;Microsoft.Graphics.Canvas.dll;System.Management.dll;PowerToys.GPOWrapper.dll;System.Text.Json.dll;WindowsBase.dll?>
<?define SettingsV2AssetsModulesFiles=ColorPicker.png;FancyZones.png;FileLocksmith.png;AlwaysOnTop.png;HostsFileEditor.png;Awake.png;ImageResizer.png;KBM.png;MouseUtils.png;PowerAccent.png;PowerOCR.png;PowerLauncher.png;PowerPreview.png;PowerRename.png;PT.png;ScreenRuler.png;ShortcutGuide.png;VideoConference.png?>
<?define SettingsV2OOBEAssetsModulesFiles=ColorPicker.gif;AlwaysOnTop.png;HostsFileEditor.png;Awake.png;FancyZones.gif;FileExplorer.png;FileLocksmith.gif;ImageResizer.gif;KBM.gif;MouseUtils.gif;PowerAccent.gif;PowerOCR.gif;PowerRename.gif;Run.gif;ScreenRuler.gif;OOBEShortcutGuide.png;VideoConferenceMute.png;OOBEPTHero.png?>
<?define SettingsV2OOBEAssetsFluentIconsFiles=ColorPicker.png;FancyZones.png;FileLocksmith.png;AlwaysOnTop.png;Awake.png;FileExplorerPreview.png;FindMyMouse.png;Hosts.png;ImageResizer.png;KeyboardManager.png;MouseHighlighter.png;MouseCrosshairs.png;MouseUtils.png;PowerAccent.png;PowerOcr.png;PowerRename.png;PowerToys.png;PowerToysRun.png;ScreenRuler.png;Settings.png;ShortcutGuide.png;VideoConferenceMute.png?>
<?define SettingsV2MicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?>
<Fragment>
<!-- SettingsV2 components -->
<DirectoryRef Id="SettingsV2InstallFolder" FileSource="$(var.BinDir)Settings\">
<?foreach File in $(var.SettingsV2Files)?>
<Component Id="SV2C_$(var.File)" Win64="yes">
<File Id="SV2_$(var.File)" Source="$(var.BinDir)Settings\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="SettingsV2AssetsInstallFolder" FileSource="$(var.BinDir)Settings\Assets">
<Component Id="SettingsV2Assets_LogoScale200" Win64="yes">
<File Id="SV2A_LogoScale200" Source="$(var.BinDir)Settings\Assets\Logo.scale-200.png" />
</Component>
<Component Id="SettingsV2Assets_SplashScreen" Win64="yes">
<File Id="SV2A_SplashScreen" Source="$(var.BinDir)Settings\Assets\SplashScreen.png" />
</Component>
<Component Id="SettingsV2Assets_StoreLogo_Scale100" Win64="yes">
<File Id="SV2A_StoreLogoScale100" Source="$(var.BinDir)Settings\Assets\StoreLogo.scale-100.png" />
</Component>
<Component Id="SettingsV2Assets_StoreLogo" Win64="yes">
<File Id="SV2A_StoreLogo" Source="$(var.BinDir)Settings\Assets\StoreLogo.png" />
</Component>
<Component Id="SettingsV2Assets_Square150x150sc200" Win64="yes">
<File Id="SV2A_Square150x150sc200" Source="$(var.BinDir)Settings\Assets\Square150x150Logo.scale-200.png" />
</Component>
<Component Id="SettingsV2Assets_Square44x44ts24" Win64="yes">
<File Id="SV2A_Square44x44ts24" Source="$(var.BinDir)Settings\Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
</Component>
<Component Id="SettingsV2Assets_Wide310x150sc200" Win64="yes">
<File Id="SV2A_Wide310x150sc200" Source="$(var.BinDir)Settings\Assets\Wide310x150Logo.scale-200.png" />
</Component>
<Component Id="SettingsV2Assets_Square44x44Logo200" Win64="yes">
<File Id="SV2A_Square44x44Logo200" Source="$(var.BinDir)Settings\Assets\Square44x44Logo.scale-200.png" />
</Component>
</DirectoryRef>
<DirectoryRef Id="SettingsV2AssetsModulesInstallFolder" FileSource="$(var.BinDir)Settings\Assets\Modules">
<?foreach File in $(var.SettingsV2AssetsModulesFiles)?>
<Component Id="SettingsV2AssetsModules_$(var.File)" Win64="yes">
<File Id="S2AMF_$(var.File)" Source="$(var.BinDir)Settings\Assets\Modules\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="SettingsV2OOBEAssetsModulesInstallFolder" FileSource="$(var.BinDir)Settings\Assets\Modules\OOBE">
<?foreach File in $(var.SettingsV2OOBEAssetsModulesFiles)?>
<Component Id="SettingsV2OOBEAssetsModules_$(var.File)" Win64="yes">
<File Id="SettingsV2OOBEAssetsModules_$(var.File)" Source="$(var.BinDir)Settings\Assets\Modules\OOBE\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="SettingsV2OOBEAssetsFluentIconsInstallFolder" FileSource="$(var.BinDir)Settings\Assets\FluentIcons">
<?foreach File in $(var.SettingsV2OOBEAssetsFluentIconsFiles)?>
<Component Id="SettingsV2OOBEAssetsFluentIcons_$(var.File)" Win64="yes">
<File Id="SettingsV2OOBEAssetsFluentIconsFile_$(var.File)" Source="$(var.BinDir)Settings\Assets\FluentIcons\FluentIcons$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="SettingsV2MicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.SettingsV2MicrosoftUIXamlAssetsInstallFiles)?>
<Component Id="SettingsV2MicrosoftUIXamlAssets_$(var.File)" Win64="yes">
<File Id="SettingsV2MicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<ComponentGroup Id="SettingsComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.SettingsV2Files)?>
<ComponentRef Id="SV2C_$(var.File)" />
<?endforeach?>
<ComponentRef Id="SettingsV2Assets_LogoScale200" />
<ComponentRef Id="SettingsV2Assets_SplashScreen" />
<ComponentRef Id="SettingsV2Assets_StoreLogo_Scale100" />
<ComponentRef Id="SettingsV2Assets_StoreLogo" />
<ComponentRef Id="SettingsV2Assets_Square150x150sc200" />
<ComponentRef Id="SettingsV2Assets_Square44x44ts24" />
<ComponentRef Id="SettingsV2Assets_Wide310x150sc200" />
<ComponentRef Id="SettingsV2Assets_Square44x44Logo200" />
<?foreach File in $(var.SettingsV2AssetsModulesFiles)?>
<ComponentRef Id="SettingsV2AssetsModules_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2OOBEAssetsFluentIconsFiles)?>
<ComponentRef Id="SettingsV2OOBEAssetsFluentIcons_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2OOBEAssetsModulesFiles)?>
<ComponentRef Id="SettingsV2OOBEAssetsModules_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2MicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="SettingsV2MicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ShortcutGuideExecutable=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuide?>
<?define ShortcutGuideModuleInterface=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuideModuleInterface?>
<?define ShortcutGuideSvgsFiles=0.svg;1.svg;2.svg;3.svg;4.svg;5.svg;6.svg;7.svg;8.svg;9.svg;no_active_window.svg;overlay.svg;overlay_portrait.svg?>
<Fragment>
<!-- Shortcut guide files -->
<DirectoryRef Id="ShortcutGuideSvgsInstallFolder" FileSource="$(var.ShortcutGuideExecutable)\svgs\">
<?foreach File in $(var.ShortcutGuideSvgsFiles)?>
<Component Id="ShortcutGuideSvgs_$(var.File)" Win64="yes">
<File Source="$(var.ShortcutGuideExecutable)\svgs\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<!-- Shortcut guide -->
<DirectoryRef Id="ShortcutGuideModuleInterfaceInstallFolder" FileSource="$(var.ShortcutGuideModuleInterface)">
<Component Id="Module_ShortcutGuideModuleInterface" Win64="yes">
<File Source="$(var.ShortcutGuideModuleInterface)\PowerToys.ShortcutGuideModuleInterface.dll" KeyPath="yes" />
</Component>
</DirectoryRef>
<DirectoryRef Id="ShortcutGuideExecutableInstallFolder" FileSource="$(var.ShortcutGuideExecutable)">
<Component Id="Module_ShortcutGuideExecutable" Win64="yes">
<File Source="$(var.ShortcutGuideExecutable)\PowerToys.ShortcutGuide.exe" KeyPath="yes" />
</Component>
</DirectoryRef>
<ComponentGroup Id="ShortcutGuideComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.ShortcutGuideSvgsFiles)?>
<ComponentRef Id="ShortcutGuideSvgs_$(var.File)" />
<?endforeach?>
<ComponentRef Id="Module_ShortcutGuideModuleInterface" />
<ComponentRef Id="Module_ShortcutGuideExecutable" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define TextExtractorFiles=PowerToys.PowerOCR.dll;ControlzEx.dll;Ijwhost.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.Common.UI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;System.Text.Json.dll;PowerToys.PowerOCR.deps.json;PowerToys.PowerOCR.exe;PowerToys.PowerOCR.runtimeconfig.json;PowerToys.PowerOCRModuleInterface.dll;PowerToys.Settings.UI.Lib.dll;System.ComponentModel.Composition.dll;System.IO.Abstractions.dll;System.Management.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?>
<Fragment>
<!-- QuickAccent Resources -->
<DirectoryRef Id="PowerOCRInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerOCRProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_PowerOCR" Guid="5640A7E8-E165-4368-8F08-F8E1E9242BDD" Win64="yes">
<?foreach File in $(var.TextExtractorFiles)?>
<File Id="PowerOCRFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerOCRProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef>
<ComponentGroup Id="TextExtractorComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_PowerOCR" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment>
<DirectoryRef Id="ToolsFolder">
<Component Id="BugReportTool_exe" Win64="yes">
<File Source="$(var.BinDir)BugReportTool\PowerToys.BugReportTool.exe" Id="BugReportTool.exe" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="WebcamReportTool_exe" Win64="yes">
<File Source="$(var.BinDir)WebcamReportTool\PowerToys.WebcamReportTool.exe" Id="WebcamReportTool.exe" Checksum="yes" />
</Component>
<Component Id="StylesReportTool_exe" Win64="yes">
<File Source="$(var.BinDir)StylesReportTool\PowerToys.StylesReportTool.exe" Id="StylesReportTool.exe" Checksum="yes" />
</Component>
</DirectoryRef>
<ComponentGroup Id="ToolComponentGroup" Directory="ToolsFolder">
<ComponentRef Id="BugReportTool_exe" />
<ComponentRef Id="WebcamReportTool_exe" />
<ComponentRef Id="StylesReportTool_exe" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment>
<DirectoryRef Id="VideoConferenceInstallFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_VideoConference" Guid="21DA4677-4AE8-4F01-BFC9-448E338DF864" Win64="yes">
<Condition>WINDOWSBUILDNUMBER >= 19041</Condition>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceModule.dll" />
<File Source="$(var.BinX32Dir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x86.dll" />
<?if $(var.Platform) = x64?>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x64.dll" KeyPath="yes" />
<?else?>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_ARM64.dll" KeyPath="yes" />
<?endif?>
</Component>
</DirectoryRef>
<DirectoryRef Id="VideoConferenceIconsFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_VideoConferenceIcons" Guid="9910F3D9-1BDF-43DB-BA0C-C558B121DF18" Win64="yes">
<Condition>WINDOWSBUILDNUMBER >= 19041</Condition>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-Off Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-Off Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-On Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-On Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-NotInUse Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-NotInUse Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-Off Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-Off Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-On Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\On-On Light.png" />
</Component>
</DirectoryRef>
<ComponentGroup Id="VideoConferenceComponentGroup" Directory="INSTALLFOLDER">
<ComponentRef Id="Module_VideoConference" />
<ComponentRef Id="Module_VideoConferenceIcons" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,364 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
<?include $(sys.CURRENTDIR)\Common.wxi?>
<?define WinAppSDKFiles=CoreMessagingXP.dll;DWriteCore.dll;DwmSceneI.dll;MRM.dll;Microsoft.DirectManipulation.dll;Microsoft.InputStateManager.dll;Microsoft.Internal.FrameworkUdk.dll;Microsoft.UI.Composition.OSSupport.dll;Microsoft.UI.Input.dll;Microsoft.UI.Windowing.Core.dll;Microsoft.UI.Xaml.Controls.dll;Microsoft.UI.Xaml.Controls.pri;Microsoft.UI.Xaml.Internal.dll;Microsoft.UI.Xaml.Phone.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Windows.AppNotifications.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.dll;Microsoft.WindowsAppRuntime.Bootstrap.dll;Microsoft.Windows.PushNotifications.Projection.dll;Microsoft.Windows.System.Projection.dll;Microsoft.WindowsAppRuntime.Insights.Resource.dll;Microsoft.WindowsAppRuntime.Release.Net.dll;Microsoft.WindowsAppRuntime.dll;Microsoft.ui.xaml.dll;Microsoft.ui.xaml.resources.19h1.dll;Microsoft.ui.xaml.resources.common.dll;PushNotificationsLongRunningTask.ProxyStub.dll;WinUIEdit.dll;WindowsAppRuntime.png;WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll;dcompi.dll;dwmcorei.dll;marshal.dll;wuceffectsi.dll?>
<!-- Localization languages shipped with WinAppSDK. We should ship these as well. -->
<?define WinAppSDKLocLanguageList = af-ZA;ar-SA;az-Latn-AZ;bg-BG;bs-Latn-BA;ca-ES;cs-CZ;cy-GB;da-DK;de-DE;el-GR;en-GB;en-us;es-ES;es-MX;et-EE;eu-ES;fa-IR;fi-FI;fr-CA;fr-FR;gl-ES;he-IL;hi-IN;hr-HR;hu-HU;id-ID;is-IS;it-IT;ja-JP;ka-GE;kk-KZ;ko-KR;lt-LT;lv-LV;ms-MY;nb-NO;nl-NL;nn-NO;pl-PL;pt-BR;pt-PT;ro-RO;ru-RU;sk-SK;sl-SI;sq-AL;sr-Cyrl-RS;sr-Latn-RS;sv-SE;th-TH;tr-TR;uk-UA;vi-VN;zh-CN;zh-TW?>
<Fragment>
<DirectoryRef Id="WinAppSDKDlls">
<?foreach File in $(var.WinAppSDKFiles)?>
<Component Id="Dlls_WinAppSdkFiles_$(var.File)" Win64="yes">
<File Id="Dlls_WinAppSdk_File_$(var.File)" Source="$(var.BinDir)Settings\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef>
<?foreach ParentDirectory in SettingsV2InstallFolder;PowerRenameInstallFolder;MeasureToolInstallFolder;HostsInstallFolder;FileLocksmithInstallFolder?>
<DirectoryRef Id="$(var.ParentDirectory)">
<?foreach Language in $(var.WinAppSDKLocLanguageList)?>
<?if $(var.Language) = af-ZA?>
<?define IdSafeLanguage = af_ZA?>
<?elseif $(var.Language) = ar-SA?>
<?define IdSafeLanguage = ar_SA?>
<?elseif $(var.Language) = az-Latn-AZ?>
<?define IdSafeLanguage = az_Latn_AZ?>
<?elseif $(var.Language) = bg-BG?>
<?define IdSafeLanguage = bg_BG?>
<?elseif $(var.Language) = bs-Latn-BA?>
<?define IdSafeLanguage = bs_Latn_BA?>
<?elseif $(var.Language) = ca-ES?>
<?define IdSafeLanguage = ca_ES?>
<?elseif $(var.Language) = cs-CZ?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = cy-GB?>
<?define IdSafeLanguage = cy_GB?>
<?elseif $(var.Language) = da-DK?>
<?define IdSafeLanguage = da_DK?>
<?elseif $(var.Language) = de-DE?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = el-GR?>
<?define IdSafeLanguage = el_GR?>
<?elseif $(var.Language) = en-GB?>
<?define IdSafeLanguage = en_GB?>
<?elseif $(var.Language) = en-us?>
<?define IdSafeLanguage = en_us?>
<?elseif $(var.Language) = es-ES?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = es-MX?>
<?define IdSafeLanguage = es_MX?>
<?elseif $(var.Language) = et-EE?>
<?define IdSafeLanguage = et_EE?>
<?elseif $(var.Language) = eu-ES?>
<?define IdSafeLanguage = eu_ES?>
<?elseif $(var.Language) = fa-IR?>
<?define IdSafeLanguage = fa_IR?>
<?elseif $(var.Language) = fi-FI?>
<?define IdSafeLanguage = fi_FI?>
<?elseif $(var.Language) = fr-CA?>
<?define IdSafeLanguage = fr_CA?>
<?elseif $(var.Language) = fr-FR?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = gl-ES?>
<?define IdSafeLanguage = gl_ES?>
<?elseif $(var.Language) = he-IL?>
<?define IdSafeLanguage = he_IL?>
<?elseif $(var.Language) = hi-IN?>
<?define IdSafeLanguage = hi_IN?>
<?elseif $(var.Language) = hr-HR?>
<?define IdSafeLanguage = hr_HR?>
<?elseif $(var.Language) = hu-HU?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = id-ID?>
<?define IdSafeLanguage = id_ID?>
<?elseif $(var.Language) = is-IS?>
<?define IdSafeLanguage = is_IS?>
<?elseif $(var.Language) = it-IT?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ka-GE?>
<?define IdSafeLanguage = ka_GE?>
<?elseif $(var.Language) = kk-KZ?>
<?define IdSafeLanguage = kk_KZ?>
<?elseif $(var.Language) = ko-KR?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = lt-LT?>
<?define IdSafeLanguage = lt_LT?>
<?elseif $(var.Language) = lv-LV?>
<?define IdSafeLanguage = lv_LV?>
<?elseif $(var.Language) = ms-MY?>
<?define IdSafeLanguage = ms_MY?>
<?elseif $(var.Language) = nb-NO?>
<?define IdSafeLanguage = nb_NO?>
<?elseif $(var.Language) = nl-NL?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = nn-NO?>
<?define IdSafeLanguage = nn_NO?>
<?elseif $(var.Language) = pl-PL?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define IdSafeLanguage = pt_PT?>
<?elseif $(var.Language) = ro-RO?>
<?define IdSafeLanguage = ro_RO?>
<?elseif $(var.Language) = ru-RU?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sk-SK?>
<?define IdSafeLanguage = sk_SK?>
<?elseif $(var.Language) = sl-SI?>
<?define IdSafeLanguage = sl_SI?>
<?elseif $(var.Language) = sq-AL?>
<?define IdSafeLanguage = sq_AL?>
<?elseif $(var.Language) = sr-Cyrl-RS?>
<?define IdSafeLanguage = sr_Cyrl_RS?>
<?elseif $(var.Language) = sr-Latn-RS?>
<?define IdSafeLanguage = sr_Latn_RS?>
<?elseif $(var.Language) = sv-SE?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = th-TH?>
<?define IdSafeLanguage = th_TH?>
<?elseif $(var.Language) = tr-TR?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = uk-UA?>
<?define IdSafeLanguage = uk_UA?>
<?elseif $(var.Language) = vi-VN?>
<?define IdSafeLanguage = vi_VN?>
<?elseif $(var.Language) = zh-CN?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?endif?>
<Directory Id="WinAppSDKLoc$(var.IdSafeLanguage)$(var.ParentDirectory)" Name="$(var.Language)" />
<?undef IdSafeLanguage?>
<?endforeach?>
</DirectoryRef>
<?endforeach?>
<ComponentGroup Id="WindowsAppSDKComponentGroup">
<?foreach Language in $(var.WinAppSDKLocLanguageList)?>
<?if $(var.Language) = af-ZA?>
<?define CompGUIDPrefix = 3C8E6C25-772A-4686-8FE3-8BE63F8D19?>
<?define IdSafeLanguage = af_ZA?>
<?elseif $(var.Language) = ar-SA?>
<?define CompGUIDPrefix = E2E65A7F-48CA-49E1-847B-5B1116D32E?>
<?define IdSafeLanguage = ar_SA?>
<?elseif $(var.Language) = az-Latn-AZ?>
<?define CompGUIDPrefix = 601F5B70-D386-4F68-B958-9D3F07167C?>
<?define IdSafeLanguage = az_Latn_AZ?>
<?elseif $(var.Language) = bg-BG?>
<?define CompGUIDPrefix = 9DD6C8F9-8599-46E4-B9B6-8B8CB095F9?>
<?define IdSafeLanguage = bg_BG?>
<?elseif $(var.Language) = bs-Latn-BA?>
<?define CompGUIDPrefix = CF68A082-D286-4556-BDF1-FBD9C7FE37?>
<?define IdSafeLanguage = bs_Latn_BA?>
<?elseif $(var.Language) = ca-ES?>
<?define CompGUIDPrefix = 298A66A5-9683-4ABF-A1C5-D97DA031B3?>
<?define IdSafeLanguage = ca_ES?>
<?elseif $(var.Language) = cs-CZ?>
<?define CompGUIDPrefix = EDEC8BF7-6602-47E5-AC04-3D392BDD83?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = cy-GB?>
<?define CompGUIDPrefix = 6E328AD9-58D4-4615-8A64-9710D5EA81?>
<?define IdSafeLanguage = cy_GB?>
<?elseif $(var.Language) = da-DK?>
<?define CompGUIDPrefix = BC5D9E5C-D4B8-4CEB-A944-1A34FD46E5?>
<?define IdSafeLanguage = da_DK?>
<?elseif $(var.Language) = de-DE?>
<?define CompGUIDPrefix = 4E1F60E3-6257-4492-AD9E-22124393F7?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = el-GR?>
<?define CompGUIDPrefix = 0A340858-D5DF-44D1-90F9-E5435128D5?>
<?define IdSafeLanguage = el_GR?>
<?elseif $(var.Language) = en-GB?>
<?define CompGUIDPrefix = 2F06617A-9700-4223-A309-58F2C1DA88?>
<?define IdSafeLanguage = en_GB?>
<?elseif $(var.Language) = en-us?>
<?define CompGUIDPrefix = A817585B-4AD2-4030-844B-1B2975DE6C?>
<?define IdSafeLanguage = en_us?>
<?elseif $(var.Language) = es-ES?>
<?define CompGUIDPrefix = 987CE029-212B-40AF-956E-D0D76F5EE8?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = es-MX?>
<?define CompGUIDPrefix = 9E806BDC-CB61-43C5-A314-6CB3C7CE17?>
<?define IdSafeLanguage = es_MX?>
<?elseif $(var.Language) = et-EE?>
<?define CompGUIDPrefix = 07C20887-C0FD-4686-8D6C-CD70D4099E?>
<?define IdSafeLanguage = et_EE?>
<?elseif $(var.Language) = eu-ES?>
<?define CompGUIDPrefix = 43FDBB2A-DCF0-4E5C-98B2-DF5F8A7ABC?>
<?define IdSafeLanguage = eu_ES?>
<?elseif $(var.Language) = fa-IR?>
<?define CompGUIDPrefix = 9A709AF1-A967-4188-9A6E-0EE1A01091?>
<?define IdSafeLanguage = fa_IR?>
<?elseif $(var.Language) = fi-FI?>
<?define CompGUIDPrefix = 7C933CD2-E937-4BEF-835D-7D27660BF1?>
<?define IdSafeLanguage = fi_FI?>
<?elseif $(var.Language) = fr-CA?>
<?define CompGUIDPrefix = 547742D0-6025-43A1-B37A-D7FE1C7AB7?>
<?define IdSafeLanguage = fr_CA?>
<?elseif $(var.Language) = fr-FR?>
<?define CompGUIDPrefix = 5C208D3F-0A62-4DD3-9A3C-D5F5931BC0?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = gl-ES?>
<?define CompGUIDPrefix = CC8360F1-B761-485F-AE34-D5E76C2133?>
<?define IdSafeLanguage = gl_ES?>
<?elseif $(var.Language) = he-IL?>
<?define CompGUIDPrefix = 5D3703BA-B7F8-45E6-8727-E184890524?>
<?define IdSafeLanguage = he_IL?>
<?elseif $(var.Language) = hi-IN?>
<?define CompGUIDPrefix = 85D55059-CFE3-47CD-A000-D795DCD0FF?>
<?define IdSafeLanguage = hi_IN?>
<?elseif $(var.Language) = hr-HR?>
<?define CompGUIDPrefix = 2BD6767A-A7C5-440B-BDC7-EA505F6B69?>
<?define IdSafeLanguage = hr_HR?>
<?elseif $(var.Language) = hu-HU?>
<?define CompGUIDPrefix = FB99F97C-A1C3-407E-AA4A-264621D1C4?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = id-ID?>
<?define CompGUIDPrefix = CBBA3A3A-B336-4CB0-ACB1-4BB666855D?>
<?define IdSafeLanguage = id_ID?>
<?elseif $(var.Language) = is-IS?>
<?define CompGUIDPrefix = 57E8C11E-6D1F-4F29-A440-9F6175C607?>
<?define IdSafeLanguage = is_IS?>
<?elseif $(var.Language) = it-IT?>
<?define CompGUIDPrefix = 1C4F8911-96E4-4903-A92B-CD48BF09DE?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define CompGUIDPrefix = EF51BC22-3D3E-4767-8558-BE43F729FD?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ka-GE?>
<?define CompGUIDPrefix = 7F625700-74B5-4F55-8F80-E86B4DC784?>
<?define IdSafeLanguage = ka_GE?>
<?elseif $(var.Language) = kk-KZ?>
<?define CompGUIDPrefix = 3F4019C3-2FA3-48BA-9096-C02E6679B5?>
<?define IdSafeLanguage = kk_KZ?>
<?elseif $(var.Language) = ko-KR?>
<?define CompGUIDPrefix = F6C1AAAD-1917-48AC-B89A-3953D01C20?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = lt-LT?>
<?define CompGUIDPrefix = 6E48287B-937D-43D0-A7FB-161717D5E2?>
<?define IdSafeLanguage = lt_LT?>
<?elseif $(var.Language) = lv-LV?>
<?define CompGUIDPrefix = F2E02A03-361C-43FA-ACFA-53369774A6?>
<?define IdSafeLanguage = lv_LV?>
<?elseif $(var.Language) = ms-MY?>
<?define CompGUIDPrefix = 4D141E3C-7F30-4689-9D8D-36C1245845?>
<?define IdSafeLanguage = ms_MY?>
<?elseif $(var.Language) = nb-NO?>
<?define CompGUIDPrefix = 939F5123-0700-4C0C-891F-04E331FC5E?>
<?define IdSafeLanguage = nb_NO?>
<?elseif $(var.Language) = nl-NL?>
<?define CompGUIDPrefix = 5E97EAE0-F207-47F1-B4BD-12113D983C?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = nn-NO?>
<?define CompGUIDPrefix = A1E74004-671D-46DC-AECD-826D068B26?>
<?define IdSafeLanguage = nn_NO?>
<?elseif $(var.Language) = pl-PL?>
<?define CompGUIDPrefix = E1D983A8-D406-4C60-AE61-9F362CBEF2?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define CompGUIDPrefix = E6E4AF39-7758-4F52-B6CA-CD6D4513B7?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define CompGUIDPrefix = 8F4BB964-3EB7-4D91-816D-D0E25D69D0?>
<?define IdSafeLanguage = pt_PT?>
<?elseif $(var.Language) = ro-RO?>
<?define CompGUIDPrefix = 8324BA46-F54F-4696-B348-3193856660?>
<?define IdSafeLanguage = ro_RO?>
<?elseif $(var.Language) = ru-RU?>
<?define CompGUIDPrefix = 13BB6E4C-A928-4FD5-A0CA-CE45B8B857?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sk-SK?>
<?define CompGUIDPrefix = 63D22C1D-D00A-4194-B64F-9CA2DF93D5?>
<?define IdSafeLanguage = sk_SK?>
<?elseif $(var.Language) = sl-SI?>
<?define CompGUIDPrefix = C007A438-5EBD-4E2A-9E03-8C9521762B?>
<?define IdSafeLanguage = sl_SI?>
<?elseif $(var.Language) = sq-AL?>
<?define CompGUIDPrefix = 9058E23A-A9DD-45A2-A85C-5DE97D0F2A?>
<?define IdSafeLanguage = sq_AL?>
<?elseif $(var.Language) = sr-Cyrl-RS?>
<?define CompGUIDPrefix = 7D21E8FC-368D-4393-A055-44D742C7A0?>
<?define IdSafeLanguage = sr_Cyrl_RS?>
<?elseif $(var.Language) = sr-Latn-RS?>
<?define CompGUIDPrefix = F8B974A0-4BEA-44F7-8603-7D9BE3003F?>
<?define IdSafeLanguage = sr_Latn_RS?>
<?elseif $(var.Language) = sv-SE?>
<?define CompGUIDPrefix = A56ECD85-B52C-421D-8C8A-CBADE0A92F?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = th-TH?>
<?define CompGUIDPrefix = C71B1361-A45E-42AB-8A20-95ED3AF74E?>
<?define IdSafeLanguage = th_TH?>
<?elseif $(var.Language) = tr-TR?>
<?define CompGUIDPrefix = 025B5CE3-6470-4C01-A606-DFC74A47E0?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = uk-UA?>
<?define CompGUIDPrefix = AD78BE3F-6A3B-414D-AAEC-BC4C801B64?>
<?define IdSafeLanguage = uk_UA?>
<?elseif $(var.Language) = vi-VN?>
<?define CompGUIDPrefix = 9F21001A-87DA-4D9E-A298-FEDC375D0C?>
<?define IdSafeLanguage = vi_VN?>
<?elseif $(var.Language) = zh-CN?>
<?define CompGUIDPrefix = C8BB7DD7-EB7B-478E-925D-6F64107590?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define CompGUIDPrefix = E472BBC5-604D-44A2-8B95-3A456CFF56?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?define CompGUIDPrefix = 51B656B3-2D45-49D8-9871-F0A1C8BEEE?>
<?endif?>
<Component
Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)SettingsV2InstallFolder"
Guid="$(var.CompGUIDPrefix)01">
<File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<Component
Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)PowerRenameInstallFolder"
Guid="$(var.CompGUIDPrefix)02">
<File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<Component
Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)MeasureToolInstallFolder"
Guid="$(var.CompGUIDPrefix)03">
<File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<Component
Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder"
Guid="$(var.CompGUIDPrefix)04">
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<Component
Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder"
Guid="$(var.CompGUIDPrefix)05">
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<?undef IdSafeLanguage?>
<?undef CompGUIDPrefix?>
<?endforeach?>
<?foreach File in $(var.WinAppSDKFiles)?>
<ComponentRef Id="Dlls_WinAppSdkFiles_$(var.File)" />
<?endforeach?>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -15,6 +15,8 @@
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Management.Deployment.h>
#include "DepsFilesLists.h"
using namespace std;
HINSTANCE DLL_HANDLE = nullptr;
@@ -32,56 +34,6 @@ const DWORD USERNAME_LEN = UNLEN + 1; // User Name + '\0'
static const wchar_t* POWERTOYS_EXE_COMPONENT = L"{A2C66D91-3485-4D00-B04D-91844E6B345B}";
static const wchar_t* POWERTOYS_UPGRADE_CODE = L"{42B84BF7-5FBF-473B-9C8B-049DC16F7708}";
const std::vector<std::wstring> winAppSdkFiles = {
L"CoreMessagingXP.dll",
L"DWriteCore.dll",
L"DwmSceneI.dll",
L"MRM.dll",
L"Microsoft.DirectManipulation.dll",
L"Microsoft.InputStateManager.dll",
L"Microsoft.Internal.FrameworkUdk.dll",
L"Microsoft.UI.Composition.OSSupport.dll",
L"Microsoft.UI.Input.dll",
L"Microsoft.UI.Windowing.Core.dll",
L"Microsoft.UI.Xaml.Controls.dll",
L"Microsoft.UI.Xaml.Controls.pri",
L"Microsoft.UI.Xaml.Internal.dll",
L"Microsoft.UI.Xaml.Phone.dll",
L"Microsoft.Web.WebView2.Core.dll",
L"Microsoft.Windows.AppNotifications.Projection.dll",
L"Microsoft.Windows.ApplicationModel.Resources.dll",
L"Microsoft.WindowsAppRuntime.Bootstrap.dll",
L"Microsoft.Windows.PushNotifications.Projection.dll",
L"Microsoft.Windows.System.Projection.dll",
L"Microsoft.WindowsAppRuntime.Insights.Resource.dll",
L"Microsoft.WindowsAppRuntime.Release.Net.dll",
L"Microsoft.WindowsAppRuntime.dll",
L"Microsoft.ui.xaml.dll",
L"Microsoft.ui.xaml.resources.19h1.dll",
L"Microsoft.ui.xaml.resources.common.dll",
L"PushNotificationsLongRunningTask.ProxyStub.dll",
L"WinUIEdit.dll",
L"WindowsAppRuntime.png",
L"WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll",
L"dcompi.dll",
L"dwmcorei.dll",
L"marshal.dll",
L"wuceffectsi.dll" };
const std::vector<std::wstring> powerToysInteropFiles = {
L"concrt140.dll",
L"msvcp140.dll",
L"msvcp140_1.dll",
L"msvcp140_2.dll",
L"msvcp140_atomic_wait.dll",
L"msvcp140_codecvt_ids.dll",
L"PowerToys.Interop.dll",
L"vcamp140.dll",
L"vccorlib140.dll",
L"vcomp140.dll",
L"vcruntime140.dll",
L"vcruntime140_1.dll" };
struct WcaSink : spdlog::sinks::base_sink<std::mutex>
{
virtual void sink_it_(const spdlog::details::log_msg& msg) override
@@ -504,7 +456,7 @@ LExit:
{
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Failed to create a scheduled task to start PowerToys at user login. You can re-try to create the scheduled task using the PowerToys settings."));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
}
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
@@ -621,7 +573,7 @@ LExit:
{
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Failed to remove the PowerToys folder from the scheduled task. These can be removed manually later."));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
}
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
@@ -894,7 +846,7 @@ LExit:
{
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Failed to add certificate to store"));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
}
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
@@ -926,7 +878,7 @@ LExit:
{
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Failed to install virtual camera driver"));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
}
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
@@ -967,7 +919,7 @@ LExit:
{
PMSIHANDLE hRecord = MsiCreateRecord(0);
MsiRecordSetString(hRecord, 0, TEXT("Failed to uninstall virtual camera driver"));
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
MsiProcessMessage(hInstall, static_cast<INSTALLMESSAGE>(INSTALLMESSAGE_WARNING + MB_OK), hRecord);
}
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
@@ -1103,6 +1055,7 @@ const std::wstring PTInteropConsumers[] =
L"modules\\PowerAccent",
L"modules\\FileLocksmith",
L"modules\\Hosts",
L"modules\\FileExplorerPreview",
};
UINT __stdcall CreatePTInteropHardlinksCA(MSIHANDLE hInstall)
@@ -1141,6 +1094,87 @@ LExit:
return WcaFinalize(er);
}
UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
std::wstring installationFolder, dotnetRuntimeFilesSrcDir, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir, hostsDir, fileLocksmithDir;
hr = WcaInitialize(hInstall, "CreateDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize");
hr = getInstallFolder(hInstall, installationFolder);
ExitOnFailure(hr, "Failed to get installation folder");
dotnetRuntimeFilesSrcDir = installationFolder + L"dll\\dotnet\\";
colorPickerDir = installationFolder + L"modules\\ColorPicker\\";
powerOCRDir = installationFolder + L"modules\\PowerOCR\\";
launcherDir = installationFolder + L"modules\\launcher\\";
fancyZonesDir = installationFolder + L"modules\\FancyZones\\";
imageResizerDir = installationFolder + L"modules\\ImageResizer\\";
settingsDir = installationFolder + L"Settings\\";
awakeDir = installationFolder + L"modules\\Awake\\";
measureToolDir = installationFolder + L"modules\\MeasureTool\\";
powerAccentDir = installationFolder + L"modules\\PowerAccent\\";
fileExplorerAddOnsDir = installationFolder + L"modules\\FileExplorerPreview\\";
hostsDir = installationFolder + L"modules\\Hosts\\";
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
for (auto file : dotnetRuntimeFiles)
{
std::error_code ec;
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (colorPickerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerOCRDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (launcherDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fancyZonesDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (imageResizerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (settingsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (awakeDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (measureToolDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerAccentDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileExplorerAddOnsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (hostsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileLocksmithDir + file).c_str(), ec);
if (ec.value() != S_OK)
{
std::wstring errorMessage{ L"Error creating hard link for: " };
errorMessage += file;
errorMessage += L", error code: " + std::to_wstring(ec.value());
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
}
for (auto file : dotnetRuntimeWPFFiles)
{
std::error_code ec;
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (awakeDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (colorPickerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerOCRDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (launcherDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fancyZonesDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (imageResizerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerAccentDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileExplorerAddOnsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (hostsDir + file).c_str(), ec);
if (ec.value() != S_OK)
{
std::wstring errorMessage{ L"Error creating hard link for: " };
errorMessage += file;
errorMessage += L", error code: " + std::to_wstring(ec.value());
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
}
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall DeleteWinAppSDKHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
@@ -1213,6 +1247,78 @@ LExit:
return WcaFinalize(er);
}
UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
std::wstring installationFolder, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir,
hostsDir, fileLocksmithDir;
hr = WcaInitialize(hInstall, "DeleteDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize");
hr = getInstallFolder(hInstall, installationFolder);
ExitOnFailure(hr, "Failed to get installation folder");
colorPickerDir = installationFolder + L"modules\\ColorPicker\\";
powerOCRDir = installationFolder + L"modules\\PowerOCR\\";
launcherDir = installationFolder + L"modules\\launcher\\";
fancyZonesDir = installationFolder + L"modules\\FancyZones\\";
imageResizerDir = installationFolder + L"modules\\ImageResizer\\";
settingsDir = installationFolder + L"Settings\\";
awakeDir = installationFolder + L"modules\\Awake\\";
measureToolDir = installationFolder + L"modules\\MeasureTool\\";
powerAccentDir = installationFolder + L"modules\\PowerAccent\\";
fileExplorerAddOnsDir = installationFolder + L"modules\\FileExplorerPreview\\";
hostsDir = installationFolder + L"modules\\Hosts\\";
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
try
{
for (auto file : dotnetRuntimeFiles)
{
DeleteFile((colorPickerDir + file).c_str());
DeleteFile((powerOCRDir + file).c_str());
DeleteFile((launcherDir + file).c_str());
DeleteFile((fancyZonesDir + file).c_str());
DeleteFile((imageResizerDir + file).c_str());
DeleteFile((settingsDir + file).c_str());
DeleteFile((awakeDir + file).c_str());
DeleteFile((measureToolDir + file).c_str());
DeleteFile((powerAccentDir + file).c_str());
DeleteFile((fileExplorerAddOnsDir + file).c_str());
DeleteFile((hostsDir + file).c_str());
DeleteFile((fileLocksmithDir + file).c_str());
}
for (auto file : dotnetRuntimeWPFFiles)
{
DeleteFile((awakeDir + file).c_str());
DeleteFile((colorPickerDir + file).c_str());
DeleteFile((powerOCRDir + file).c_str());
DeleteFile((launcherDir + file).c_str());
DeleteFile((fancyZonesDir + file).c_str());
DeleteFile((imageResizerDir + file).c_str());
DeleteFile((powerAccentDir + file).c_str());
DeleteFile((fileExplorerAddOnsDir + file).c_str());
DeleteFile((hostsDir + file).c_str());
}
}
catch (std::exception e)
{
std::string errorMessage{ "Exception thrown while trying to delete dotnet runtime hardlinks: " };
errorMessage += e.what();
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
@@ -1230,7 +1336,7 @@ UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
}
processes.resize(bytes / sizeof(processes[0]));
std::array<std::wstring_view, 10> processesToTerminate = {
std::array<std::wstring_view, 9> processesToTerminate = {
L"PowerToys.PowerLauncher.exe",
L"PowerToys.Settings.exe",
L"PowerToys.Awake.exe",
@@ -1239,7 +1345,6 @@ UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
L"PowerToys.FileLocksmithUI.exe",
L"PowerToys.ColorPickerUI.exe",
L"PowerToys.AlwaysOnTop.exe",
L"PowerToys.PeekUI.exe",
L"PowerToys.exe"
};

View File

@@ -7,6 +7,8 @@ EXPORTS
DeleteWinAppSDKHardlinksCA
CreatePTInteropHardlinksCA
DeletePTInteropHardlinksCA
CreateDotnetRuntimeHardlinksCA
DeleteDotnetRuntimeHardlinksCA
DetectPrevInstallPathCA
RemoveScheduledTasksCA
TelemetryLogInstallSuccessCA

View File

@@ -0,0 +1,60 @@
#pragma once
#include <vector>
#include <string>
inline const std::vector<std::wstring> winAppSdkFiles = {
L"CoreMessagingXP.dll",
L"DWriteCore.dll",
L"DwmSceneI.dll",
L"MRM.dll",
L"Microsoft.DirectManipulation.dll",
L"Microsoft.InputStateManager.dll",
L"Microsoft.Internal.FrameworkUdk.dll",
L"Microsoft.UI.Composition.OSSupport.dll",
L"Microsoft.UI.Input.dll",
L"Microsoft.UI.Windowing.Core.dll",
L"Microsoft.UI.Xaml.Controls.dll",
L"Microsoft.UI.Xaml.Controls.pri",
L"Microsoft.UI.Xaml.Internal.dll",
L"Microsoft.UI.Xaml.Phone.dll",
L"Microsoft.Web.WebView2.Core.dll",
L"Microsoft.Windows.AppNotifications.Projection.dll",
L"Microsoft.Windows.ApplicationModel.Resources.dll",
L"Microsoft.WindowsAppRuntime.Bootstrap.dll",
L"Microsoft.Windows.PushNotifications.Projection.dll",
L"Microsoft.Windows.System.Projection.dll",
L"Microsoft.WindowsAppRuntime.Insights.Resource.dll",
L"Microsoft.WindowsAppRuntime.Release.Net.dll",
L"Microsoft.WindowsAppRuntime.dll",
L"Microsoft.ui.xaml.dll",
L"Microsoft.ui.xaml.resources.19h1.dll",
L"Microsoft.ui.xaml.resources.common.dll",
L"PushNotificationsLongRunningTask.ProxyStub.dll",
L"WinUIEdit.dll",
L"WindowsAppRuntime.png",
L"WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll",
L"dcompi.dll",
L"dwmcorei.dll",
L"marshal.dll",
L"wuceffectsi.dll"
};
inline const std::vector<std::wstring> powerToysInteropFiles = {
L"concrt140.dll",
L"msvcp140.dll",
L"msvcp140_1.dll",
L"msvcp140_2.dll",
L"msvcp140_atomic_wait.dll",
L"msvcp140_codecvt_ids.dll",
L"PowerToys.Interop.dll",
L"vcamp140.dll",
L"vccorlib140.dll",
L"vcomp140.dll",
L"vcruntime140.dll",
L"vcruntime140_1.dll"
};
inline const std::vector<std::wstring> dotnetRuntimeFiles = { };
inline const std::vector<std::wstring> dotnetRuntimeWPFFiles = { };

View File

@@ -43,6 +43,20 @@
<LinkIncremental>false</LinkIncremental>
<IncludePath>..\..\src\common\Telemetry;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>
call cmd /C "copy ""$(ProjectDir)DepsFilesLists.h"" ""$(ProjectDir)DepsFilesLists.h.bk"""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Core.wxs"" ""$(ProjectDir)..\PowerToysSetup\Core.wxs.bk""""
call powershell.exe -NonInteractive -executionpolicy Unrestricted -File parseRuntimes.ps1 -runtimedepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\Settings\PowerToys.Settings.deps.json" -wpfdepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\modules\ColorPicker\PowerToys.ColorPickerUI.deps.json" -depsfileslistspath "$(ProjectDir)DepsFilesLists.h" -productwxspath "$(ProjectDir)..\PowerToysSetup\Core.wxs"
</Command>
<Message>Backing up original files and populating .NET and WPF Runtime dependencies </Message>
</PreBuildEvent>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(RunBuildEvents)'=='false'">
<PreBuildEventUseInBuild>false</PreBuildEventUseInBuild>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>inc;..\..\src\;..\..\src\common\Telemetry;telemetry;$(WixSdkPath)VS2017\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -109,6 +123,7 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DepsFilesLists.h" />
<ClInclude Include="RcResource.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />

View File

@@ -14,6 +14,7 @@
</ClInclude>
<ClInclude Include="resource.h" />
<ClInclude Include="RcResource.h" />
<ClInclude Include="DepsFilesLists.h" />
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def" />

View File

@@ -0,0 +1,85 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[string]$runtimedepsjsonpath,
[Parameter(Mandatory = $True, Position = 2)]
[string]$wpfdepsjsonpath,
[Parameter(Mandatory = $True, Position = 3)]
[string]$depsfileslistspath,
[Parameter(Mandatory = $True, Position = 4)]
[string]$productwxspath
)
function Get-RuntimePack ($depsJsonFile, $runtimeName) {
Write-Host "Parsing $runtimeName Runtime"
$runtimePackList = ([array]$depsJsonFile.targets.PSObject.Properties)[-1].Value.PSObject.Properties | Where-Object { $_.Name -match "runtimepack.$runtimeName" };
if ($runtimePackList.Length -eq 0) {
Write-Host -ForegroundColor Red "$runtimeName has not been found"
exit 1
}
# Enumerate through array of custom objects and parse the names of the property values into a HashTable
$runtimePackList | ForEach-Object {
$runtimes += @{"$($_.Name -replace "runtimepack\.(\S+)\.\S+/\S+",'$1')" = $_.Value.PSObject.Properties.Value | ForEach-Object {
$_.PSObject.Properties.Name
}
}
}
Write-Output $runtimes;
}
function Update-RuntimeHashTable () {
$runtimes = Get-RuntimePack $runtimeFile "Microsoft.NETCore.App.Runtime"
$runtimes = Get-RuntimePack $wpfRuntimeFile "Microsoft.WindowsDesktop.App.Runtime"
# Find the dlls that exist in both the .NET Runtime and WPF Runtime deps list and filter out of WPF
$runtimeFileComparison = Compare-Object -ReferenceObject $runtimes["Microsoft.NETCore.App.Runtime"] -DifferenceObject $runtimes["Microsoft.WindowsDesktop.App.Runtime"] -IncludeEqual -ExcludeDifferent
$runtimes["Microsoft.WindowsDesktop.App.Runtime"] = $runtimes["Microsoft.WindowsDesktop.App.Runtime"] | Where-Object { $_ -notin $runtimeFileComparison.InputObject }
Write-Output $runtimes;
}
function Update-RuntimeFileList($runtimeToken, $runtimeKey) {
$depsFilesLists -replace "($runtimeToken = )(.*);", "`$1 {`r`n$(($runtimes[$runtimeKey] | ForEach-Object {' L"'+$_+'"'} | Sort-Object) -join ",`r`n") };"
}
function Update-ProductWxsRuntimeFileList($runtimeToken, $runtimeKey) {
$productWxs -replace "(define $runtimeToken=)(.*)?>", "`$1$($runtimes[$runtimeKey] -join ';')?>"
}
function Update-DotnetFilesComponentGuid() {
$productWxs -replace "Dlls_DotnetFiles_Component"" Guid=""([{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?)""", "Dlls_DotnetFiles_Component"" Guid=""$((New-Guid).ToString().ToUpper())"""
}
# Read the DepsFilesLists.h file
$depsFilesLists = Get-Content $depsfileslistspath;
# Read Product.wxs file
$productWxs = Get-Content $productwxspath;
# Read the deps.json file and convert it to a JSON object
$runtimeFile = Get-Content $runtimedepsjsonpath | ConvertFrom-Json;
$wpfRuntimeFile = Get-Content $wpfdepsjsonpath | ConvertFrom-Json;
$runtimes = @{}
$runtimes = Update-RuntimeHashTable
Write-Host "Writing Microsoft.NETCore.App.Runtime files"
$depsFilesLists = Update-RuntimeFileList "dotnetRuntimeFiles" "Microsoft.NETCore.App.Runtime"
$productWxs = Update-ProductWxsRuntimeFileList "DotnetRuntimeFiles" "Microsoft.NETCore.App.Runtime"
Write-Host "Writing Microsoft.WindowsDesktop.App.Runtime files"
$depsFilesLists = Update-RuntimeFileList "dotnetRuntimeWPFFiles" "Microsoft.WindowsDesktop.App.Runtime"
$productWxs = Update-ProductWxsRuntimeFileList "DotnetRuntimeWPFFiles" "Microsoft.WindowsDesktop.App.Runtime"
Write-Host "Update DotnetFiles Component GUID"
$productWxs = Update-DotnetFilesComponentGuid
Write-Host "Updating $depsfileslistspath"
Set-Content -Path $depsfileslistspath -Value $depsFilesLists
Write-Host "Updating $productwxspath"
Set-Content -Path $productwxspath -Value $productWxs

View File

@@ -8,7 +8,6 @@ dotnet_diagnostic.CA1303.severity = suggestion
# CA1051: Do not declare visible instance fields
dotnet_code_quality.ca1051.exclude_structs = true
csharp_using_directive_placement = inside_namespace:warning
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = block_scoped:silent

View File

@@ -79,7 +79,7 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
hMapFile = OpenFileMappingW(FILE_MAP_WRITE, FALSE, pidFile.data());
if (hMapFile)
{
pidBuffer = reinterpret_cast<PDWORD>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD)));
pidBuffer = static_cast<PDWORD>(MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(DWORD)));
if (pidBuffer)
{
*pidBuffer = 0;

View File

@@ -12,7 +12,6 @@ using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:PrefixLocalCallsWithThis", Justification = "We follow the C# Core Coding Style which avoids using `this` unless absolutely necessary.")]
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1200:UsingDirectivesMustBePlacedWithinNamespace", Justification = "We follow the C# Core Coding Style which puts using statements outside the namespace.")]
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:ElementsMustAppearInTheCorrectOrder", Justification = "It is not a priority and have hight impact in code changes.")]
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "It is not a priority and have hight impact in code changes.")]
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1203:ConstantsMustAppearBeforeFields", Justification = "It is not a priority and have hight impact in code changes.")]

View File

@@ -15,7 +15,8 @@
"newlineAtEndOfFile": "require"
},
"orderingRules": {
"usingDirectivesPlacement": "outsideNamespace"
"usingDirectivesPlacement": "outsideNamespace",
"systemUsingDirectivesFirst": true
}
}
}

View File

@@ -2,13 +2,13 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
namespace ManagedCommon
{
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
public static class ColorFormatHelper
{
/// <summary>
@@ -16,7 +16,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The cyan[0..1], magenta[0..1], yellow[0..1] and black key[0..1] of the converted color</returns>
public static (double cyan, double magenta, double yellow, double blackKey) ConvertToCMYKColor(Color color)
public static (double Cyan, double Magenta, double Yellow, double BlackKey) ConvertToCMYKColor(Color color)
{
// special case for black (avoid division by zero)
if (color.R == 0 && color.G == 0 && color.B == 0)
@@ -48,7 +48,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue [0°..360°], saturation [0..1] and brightness [0..1] of the converted color</returns>
public static (double hue, double saturation, double brightness) ConvertToHSBColor(Color color)
public static (double Hue, double Saturation, double Brightness) ConvertToHSBColor(Color color)
{
// HSB and HSV represents the same color space
return ConvertToHSVColor(color);
@@ -59,7 +59,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue [0°..360°], saturation [0..1] and value [0..1] of the converted color</returns>
public static (double hue, double saturation, double value) ConvertToHSVColor(Color color)
public static (double Hue, double Saturation, double Value) ConvertToHSVColor(Color color)
{
var min = Math.Min(Math.Min(color.R, color.G), color.B) / 255d;
var max = Math.Max(Math.Max(color.R, color.G), color.B) / 255d;
@@ -72,7 +72,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue [0°..360°], saturation [0..1] and intensity [0..1] of the converted color</returns>
public static (double hue, double saturation, double intensity) ConvertToHSIColor(Color color)
public static (double Hue, double Saturation, double Intensity) ConvertToHSIColor(Color color)
{
// special case for black
if (color.R == 0 && color.G == 0 && color.B == 0)
@@ -96,7 +96,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue [0°..360°], saturation [0..1] and lightness [0..1] values of the converted color</returns>
public static (double hue, double saturation, double lightness) ConvertToHSLColor(Color color)
public static (double Hue, double Saturation, double Lightness) ConvertToHSLColor(Color color)
{
var min = Math.Min(Math.Min(color.R, color.G), color.B) / 255d;
var max = Math.Max(Math.Max(color.R, color.G), color.B) / 255d;
@@ -120,7 +120,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue [0°..360°], whiteness [0..1] and blackness [0..1] of the converted color</returns>
public static (double hue, double whiteness, double blackness) ConvertToHWBColor(Color color)
public static (double Hue, double Whiteness, double Blackness) ConvertToHWBColor(Color color)
{
var min = Math.Min(Math.Min(color.R, color.G), color.B) / 255d;
var max = Math.Max(Math.Max(color.R, color.G), color.B) / 255d;
@@ -133,10 +133,10 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The lightness [0..100] and two chromaticities [-128..127]</returns>
public static (double lightness, double chromaticityA, double chromaticityB) ConvertToCIELABColor(Color color)
public static (double Lightness, double ChromaticityA, double ChromaticityB) ConvertToCIELABColor(Color color)
{
var xyz = ConvertToCIEXYZColor(color);
var lab = GetCIELABColorFromCIEXYZ(xyz.x, xyz.y, xyz.z);
var lab = GetCIELABColorFromCIEXYZ(xyz.X, xyz.Y, xyz.Z);
return lab;
}
@@ -150,7 +150,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The X [0..1], Y [0..1] and Z [0..1]</returns>
public static (double x, double y, double z) ConvertToCIEXYZColor(Color color)
public static (double X, double Y, double Z) ConvertToCIEXYZColor(Color color)
{
double r = color.R / 255d;
double g = color.G / 255d;
@@ -177,7 +177,7 @@ namespace ManagedCommon
/// <param name="y">The <see cref="y"/> represents the luminance</param>
/// <param name="z">The <see cref="z"/> is quasi-equal to blue (of CIE RGB)</param>
/// <returns>The lightness [0..100] and two chromaticities [-128..127]</returns>
private static (double lightness, double chromaticityA, double chromaticityB)
private static (double Lightness, double ChromaticityA, double ChromaticityB)
GetCIELABColorFromCIEXYZ(double x, double y, double z)
{
// sRGB reference white (x=0.3127, y=0.3290, Y=1.0), actually CIE Standard Illuminant D65 truncated to 4 decimal places,
@@ -215,7 +215,7 @@ namespace ManagedCommon
/// </summary>
/// <param name="color">The <see cref="Color"/> to convert</param>
/// <returns>The hue, whiteness [0..1] and blackness [0..1] of the converted color</returns>
public static (string hue, double whiteness, double blackness) ConvertToNaturalColor(Color color)
public static (string Hue, double Whiteness, double Blackness) ConvertToNaturalColor(Color color)
{
var min = Math.Min(Math.Min(color.R, color.G), color.B) / 255d;
var max = Math.Max(Math.Max(color.R, color.G), color.B) / 255d;
@@ -285,10 +285,15 @@ namespace ManagedCommon
{ "Xv", 'i' }, // X value int
{ "Yv", 'i' }, // Y value int
{ "Zv", 'i' }, // Z value int
{ "Dv", 'i' }, // Decimal value int
{ "Na", 's' }, // Color name string
{ "Dr", 'i' }, // Decimal value (RGB) int
{ "Dv", 'i' }, // Decimal value (BGR) int
// Removed Parameter Na, as the color name gets replaced separately, in localised way
// { "Na", 's' }, // Color name string
};
public static string GetColorNameParameter() => "%Na";
private static readonly Dictionary<char, string> FormatTypeToStringFormatters = new Dictionary<char, string>()
{
{ 'b', "b" }, // 0..255 byte
@@ -347,7 +352,7 @@ namespace ManagedCommon
formatString = string.Concat(formatString.AsSpan(0, formatterPosition), GetStringRepresentation(color.Value, paramFormat, paramType), formatString.AsSpan(formatterPosition + paramCount + 1));
}
// search for the next occurence of the formatter char
// search for the next occurrence of the formatter char
formatterPosition = formatString.IndexOf('%', formatterPosition + 1);
}
@@ -447,10 +452,14 @@ namespace ManagedCommon
var (_, _, z) = ConvertToCIEXYZColor(color);
z = Math.Round(z * 100, 4);
return z.ToString(CultureInfo.InvariantCulture);
case "Dr":
return ((color.R * 65536) + (color.G * 256) + color.B).ToString(CultureInfo.InvariantCulture);
case "Dv":
return (color.R + (color.G * 256) + (color.B * 65536)).ToString(CultureInfo.InvariantCulture);
case "Na":
return ColorNameHelper.GetColorName(color);
// Removed Parameter Na, as the color name gets replaced separately, in localised way
// case "Na":
// return ColorNameHelper.GetColorName(color);
default: return string.Empty;
}
}

View File

@@ -85,86 +85,86 @@ namespace ManagedCommon
// of that color, which are defined as follows:
private static string[] colorNamesLight =
{
CommonResources.TEXT_COLOR_CORAL,
CommonResources.TEXT_COLOR_ROSE,
CommonResources.TEXT_COLOR_LIGHTORANGE,
CommonResources.TEXT_COLOR_TAN,
CommonResources.TEXT_COLOR_TAN,
CommonResources.TEXT_COLOR_LIGHTYELLOW,
CommonResources.TEXT_COLOR_LIGHTYELLOW,
CommonResources.TEXT_COLOR_TAN,
CommonResources.TEXT_COLOR_LIGHTGREEN,
CommonResources.TEXT_COLOR_LIME,
CommonResources.TEXT_COLOR_LIGHTGREEN,
CommonResources.TEXT_COLOR_LIGHTGREEN,
CommonResources.TEXT_COLOR_AQUA,
CommonResources.TEXT_COLOR_SKYBLUE,
CommonResources.TEXT_COLOR_LIGHTTURQUOISE,
CommonResources.TEXT_COLOR_PALEBLUE,
CommonResources.TEXT_COLOR_LIGHTBLUE,
CommonResources.TEXT_COLOR_ICEBLUE,
CommonResources.TEXT_COLOR_PERIWINKLE,
CommonResources.TEXT_COLOR_LAVENDER,
CommonResources.TEXT_COLOR_PINK,
CommonResources.TEXT_COLOR_TAN,
CommonResources.TEXT_COLOR_ROSE,
"TEXT_COLOR_CORAL",
"TEXT_COLOR_ROSE",
"TEXT_COLOR_LIGHTORANGE",
"TEXT_COLOR_TAN",
"TEXT_COLOR_TAN",
"TEXT_COLOR_LIGHTYELLOW",
"TEXT_COLOR_LIGHTYELLOW",
"TEXT_COLOR_TAN",
"TEXT_COLOR_LIGHTGREEN",
"TEXT_COLOR_LIME",
"TEXT_COLOR_LIGHTGREEN",
"TEXT_COLOR_LIGHTGREEN",
"TEXT_COLOR_AQUA",
"TEXT_COLOR_SKYBLUE",
"TEXT_COLOR_LIGHTTURQUOISE",
"TEXT_COLOR_PALEBLUE",
"TEXT_COLOR_LIGHTBLUE",
"TEXT_COLOR_ICEBLUE",
"TEXT_COLOR_PERIWINKLE",
"TEXT_COLOR_LAVENDER",
"TEXT_COLOR_PINK",
"TEXT_COLOR_TAN",
"TEXT_COLOR_ROSE",
};
private static string[] colorNamesMid =
{
CommonResources.TEXT_COLOR_CORAL,
CommonResources.TEXT_COLOR_RED,
CommonResources.TEXT_COLOR_ORANGE,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_TAN,
CommonResources.TEXT_COLOR_GOLD,
CommonResources.TEXT_COLOR_YELLOW,
CommonResources.TEXT_COLOR_OLIVEGREEN,
CommonResources.TEXT_COLOR_OLIVEGREEN,
CommonResources.TEXT_COLOR_GREEN,
CommonResources.TEXT_COLOR_GREEN,
CommonResources.TEXT_COLOR_BRIGHTGREEN,
CommonResources.TEXT_COLOR_TEAL,
CommonResources.TEXT_COLOR_AQUA,
CommonResources.TEXT_COLOR_TURQUOISE,
CommonResources.TEXT_COLOR_PALEBLUE,
CommonResources.TEXT_COLOR_BLUE,
CommonResources.TEXT_COLOR_BLUEGRAY,
CommonResources.TEXT_COLOR_INDIGO,
CommonResources.TEXT_COLOR_PURPLE,
CommonResources.TEXT_COLOR_PINK,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_RED,
"TEXT_COLOR_CORAL",
"TEXT_COLOR_RED",
"TEXT_COLOR_ORANGE",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_TAN",
"TEXT_COLOR_GOLD",
"TEXT_COLOR_YELLOW",
"TEXT_COLOR_OLIVEGREEN",
"TEXT_COLOR_OLIVEGREEN",
"TEXT_COLOR_GREEN",
"TEXT_COLOR_GREEN",
"TEXT_COLOR_BRIGHTGREEN",
"TEXT_COLOR_TEAL",
"TEXT_COLOR_AQUA",
"TEXT_COLOR_TURQUOISE",
"TEXT_COLOR_PALEBLUE",
"TEXT_COLOR_BLUE",
"TEXT_COLOR_BLUEGRAY",
"TEXT_COLOR_INDIGO",
"TEXT_COLOR_PURPLE",
"TEXT_COLOR_PINK",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_RED",
};
private static string[] colorNamesDark =
{
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_DARKRED,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_DARKYELLOW,
CommonResources.TEXT_COLOR_DARKYELLOW,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_DARKGREEN,
CommonResources.TEXT_COLOR_DARKGREEN,
CommonResources.TEXT_COLOR_DARKGREEN,
CommonResources.TEXT_COLOR_DARKGREEN,
CommonResources.TEXT_COLOR_DARKTEAL,
CommonResources.TEXT_COLOR_DARKTEAL,
CommonResources.TEXT_COLOR_DARKTEAL,
CommonResources.TEXT_COLOR_DARKBLUE,
CommonResources.TEXT_COLOR_DARKBLUE,
CommonResources.TEXT_COLOR_BLUEGRAY,
CommonResources.TEXT_COLOR_INDIGO,
CommonResources.TEXT_COLOR_DARKPURPLE,
CommonResources.TEXT_COLOR_PLUM,
CommonResources.TEXT_COLOR_BROWN,
CommonResources.TEXT_COLOR_DARKRED,
"TEXT_COLOR_BROWN",
"TEXT_COLOR_DARKRED",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_DARKYELLOW",
"TEXT_COLOR_DARKYELLOW",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_DARKGREEN",
"TEXT_COLOR_DARKGREEN",
"TEXT_COLOR_DARKGREEN",
"TEXT_COLOR_DARKGREEN",
"TEXT_COLOR_DARKTEAL",
"TEXT_COLOR_DARKTEAL",
"TEXT_COLOR_DARKTEAL",
"TEXT_COLOR_DARKBLUE",
"TEXT_COLOR_DARKBLUE",
"TEXT_COLOR_BLUEGRAY",
"TEXT_COLOR_INDIGO",
"TEXT_COLOR_DARKPURPLE",
"TEXT_COLOR_PLUM",
"TEXT_COLOR_BROWN",
"TEXT_COLOR_DARKRED",
};
public static string GetColorName(Color color)
public static string GetColorNameIdentifier(Color color)
{
var (hue, sat, lum) = ColorFormatHelper.ConvertToHSLColor(color);
@@ -175,26 +175,26 @@ namespace ManagedCommon
// First, if we're in the achromatic state, return the appropriate achromatic color name.
if (lum > 240)
{
return CommonResources.TEXT_COLOR_WHITE;
return "TEXT_COLOR_WHITE";
}
else if (lum < 20)
{
return CommonResources.TEXT_COLOR_BLACK;
return "TEXT_COLOR_BLACK";
}
if (sat <= 20)
{
if (lum > 170)
{
return CommonResources.TEXT_COLOR_LIGHTGRAY;
return "TEXT_COLOR_LIGHTGRAY";
}
else if (lum > 100)
{
return CommonResources.TEXT_COLOR_GRAY;
return "TEXT_COLOR_GRAY";
}
else
{
return CommonResources.TEXT_COLOR_DARKGRAY;
return "TEXT_COLOR_DARKGRAY";
}
}

View File

@@ -59,383 +59,5 @@ namespace ManagedCommon {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Aqua.
/// </summary>
public static string TEXT_COLOR_AQUA {
get {
return ResourceManager.GetString("TEXT_COLOR_AQUA", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Black.
/// </summary>
public static string TEXT_COLOR_BLACK {
get {
return ResourceManager.GetString("TEXT_COLOR_BLACK", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Blue.
/// </summary>
public static string TEXT_COLOR_BLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_BLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Blue gray.
/// </summary>
public static string TEXT_COLOR_BLUEGRAY {
get {
return ResourceManager.GetString("TEXT_COLOR_BLUEGRAY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Bright green.
/// </summary>
public static string TEXT_COLOR_BRIGHTGREEN {
get {
return ResourceManager.GetString("TEXT_COLOR_BRIGHTGREEN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Brown.
/// </summary>
public static string TEXT_COLOR_BROWN {
get {
return ResourceManager.GetString("TEXT_COLOR_BROWN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Coral.
/// </summary>
public static string TEXT_COLOR_CORAL {
get {
return ResourceManager.GetString("TEXT_COLOR_CORAL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark blue.
/// </summary>
public static string TEXT_COLOR_DARKBLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKBLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark gray.
/// </summary>
public static string TEXT_COLOR_DARKGRAY {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKGRAY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark green.
/// </summary>
public static string TEXT_COLOR_DARKGREEN {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKGREEN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark purple.
/// </summary>
public static string TEXT_COLOR_DARKPURPLE {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKPURPLE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark red.
/// </summary>
public static string TEXT_COLOR_DARKRED {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKRED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark teal.
/// </summary>
public static string TEXT_COLOR_DARKTEAL {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKTEAL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Dark yellow.
/// </summary>
public static string TEXT_COLOR_DARKYELLOW {
get {
return ResourceManager.GetString("TEXT_COLOR_DARKYELLOW", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Gold.
/// </summary>
public static string TEXT_COLOR_GOLD {
get {
return ResourceManager.GetString("TEXT_COLOR_GOLD", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Gray.
/// </summary>
public static string TEXT_COLOR_GRAY {
get {
return ResourceManager.GetString("TEXT_COLOR_GRAY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Green.
/// </summary>
public static string TEXT_COLOR_GREEN {
get {
return ResourceManager.GetString("TEXT_COLOR_GREEN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ice blue.
/// </summary>
public static string TEXT_COLOR_ICEBLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_ICEBLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Indigo.
/// </summary>
public static string TEXT_COLOR_INDIGO {
get {
return ResourceManager.GetString("TEXT_COLOR_INDIGO", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Lavender.
/// </summary>
public static string TEXT_COLOR_LAVENDER {
get {
return ResourceManager.GetString("TEXT_COLOR_LAVENDER", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light blue.
/// </summary>
public static string TEXT_COLOR_LIGHTBLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTBLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light gray.
/// </summary>
public static string TEXT_COLOR_LIGHTGRAY {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTGRAY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light green.
/// </summary>
public static string TEXT_COLOR_LIGHTGREEN {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTGREEN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light orange.
/// </summary>
public static string TEXT_COLOR_LIGHTORANGE {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTORANGE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light turquoise.
/// </summary>
public static string TEXT_COLOR_LIGHTTURQUOISE {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTTURQUOISE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Light yellow.
/// </summary>
public static string TEXT_COLOR_LIGHTYELLOW {
get {
return ResourceManager.GetString("TEXT_COLOR_LIGHTYELLOW", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Lime.
/// </summary>
public static string TEXT_COLOR_LIME {
get {
return ResourceManager.GetString("TEXT_COLOR_LIME", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Olive green.
/// </summary>
public static string TEXT_COLOR_OLIVEGREEN {
get {
return ResourceManager.GetString("TEXT_COLOR_OLIVEGREEN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Orange.
/// </summary>
public static string TEXT_COLOR_ORANGE {
get {
return ResourceManager.GetString("TEXT_COLOR_ORANGE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pale blue.
/// </summary>
public static string TEXT_COLOR_PALEBLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_PALEBLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Periwinkle.
/// </summary>
public static string TEXT_COLOR_PERIWINKLE {
get {
return ResourceManager.GetString("TEXT_COLOR_PERIWINKLE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pink.
/// </summary>
public static string TEXT_COLOR_PINK {
get {
return ResourceManager.GetString("TEXT_COLOR_PINK", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Plum.
/// </summary>
public static string TEXT_COLOR_PLUM {
get {
return ResourceManager.GetString("TEXT_COLOR_PLUM", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Purple.
/// </summary>
public static string TEXT_COLOR_PURPLE {
get {
return ResourceManager.GetString("TEXT_COLOR_PURPLE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Red.
/// </summary>
public static string TEXT_COLOR_RED {
get {
return ResourceManager.GetString("TEXT_COLOR_RED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Rose.
/// </summary>
public static string TEXT_COLOR_ROSE {
get {
return ResourceManager.GetString("TEXT_COLOR_ROSE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sky blue.
/// </summary>
public static string TEXT_COLOR_SKYBLUE {
get {
return ResourceManager.GetString("TEXT_COLOR_SKYBLUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tan.
/// </summary>
public static string TEXT_COLOR_TAN {
get {
return ResourceManager.GetString("TEXT_COLOR_TAN", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Teal.
/// </summary>
public static string TEXT_COLOR_TEAL {
get {
return ResourceManager.GetString("TEXT_COLOR_TEAL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Turquoise.
/// </summary>
public static string TEXT_COLOR_TURQUOISE {
get {
return ResourceManager.GetString("TEXT_COLOR_TURQUOISE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to White.
/// </summary>
public static string TEXT_COLOR_WHITE {
get {
return ResourceManager.GetString("TEXT_COLOR_WHITE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Yellow.
/// </summary>
public static string TEXT_COLOR_YELLOW {
get {
return ResourceManager.GetString("TEXT_COLOR_YELLOW", resourceCulture);
}
}
}
}

View File

@@ -117,172 +117,4 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="TEXT_COLOR_WHITE" xml:space="preserve">
<value>White</value>
<comment>White color</comment>
</data>
<data name="TEXT_COLOR_BLACK" xml:space="preserve">
<value>Black</value>
<comment>Black color</comment>
</data>
<data name="TEXT_COLOR_LIGHTGRAY" xml:space="preserve">
<value>Light gray</value>
<comment>Light gray color</comment>
</data>
<data name="TEXT_COLOR_GRAY" xml:space="preserve">
<value>Gray</value>
<comment>Gray color</comment>
</data>
<data name="TEXT_COLOR_DARKGRAY" xml:space="preserve">
<value>Dark gray</value>
<comment>Dark gray color</comment>
</data>
<data name="TEXT_COLOR_CORAL" xml:space="preserve">
<value>Coral</value>
<comment>Coral color</comment>
</data>
<data name="TEXT_COLOR_ROSE" xml:space="preserve">
<value>Rose</value>
<comment>Rose color</comment>
</data>
<data name="TEXT_COLOR_LIGHTORANGE" xml:space="preserve">
<value>Light orange</value>
<comment>Light orange color</comment>
</data>
<data name="TEXT_COLOR_TAN" xml:space="preserve">
<value>Tan</value>
<comment>Tan color</comment>
</data>
<data name="TEXT_COLOR_LIGHTYELLOW" xml:space="preserve">
<value>Light yellow</value>
<comment>Light yellow color</comment>
</data>
<data name="TEXT_COLOR_LIGHTGREEN" xml:space="preserve">
<value>Light green</value>
<comment>Light green color</comment>
</data>
<data name="TEXT_COLOR_LIME" xml:space="preserve">
<value>Lime</value>
<comment>Lime color</comment>
</data>
<data name="TEXT_COLOR_AQUA" xml:space="preserve">
<value>Aqua</value>
<comment>Aqua color</comment>
</data>
<data name="TEXT_COLOR_SKYBLUE" xml:space="preserve">
<value>Sky blue</value>
<comment>Sky blue color</comment>
</data>
<data name="TEXT_COLOR_LIGHTTURQUOISE" xml:space="preserve">
<value>Light turquoise</value>
<comment>Light turquoise color</comment>
</data>
<data name="TEXT_COLOR_PALEBLUE" xml:space="preserve">
<value>Pale blue</value>
<comment>Pale blue color</comment>
</data>
<data name="TEXT_COLOR_LIGHTBLUE" xml:space="preserve">
<value>Light blue</value>
<comment>Light blue color</comment>
</data>
<data name="TEXT_COLOR_ICEBLUE" xml:space="preserve">
<value>Ice blue</value>
<comment>Ice blue color</comment>
</data>
<data name="TEXT_COLOR_PERIWINKLE" xml:space="preserve">
<value>Periwinkle</value>
<comment>Periwinkle color</comment>
</data>
<data name="TEXT_COLOR_LAVENDER" xml:space="preserve">
<value>Lavender</value>
<comment>Lavender color</comment>
</data>
<data name="TEXT_COLOR_PINK" xml:space="preserve">
<value>Pink</value>
<comment>Pink color</comment>
</data>
<data name="TEXT_COLOR_RED" xml:space="preserve">
<value>Red</value>
<comment>Red color</comment>
</data>
<data name="TEXT_COLOR_ORANGE" xml:space="preserve">
<value>Orange</value>
<comment>Orange color</comment>
</data>
<data name="TEXT_COLOR_BROWN" xml:space="preserve">
<value>Brown</value>
<comment>Brown color</comment>
</data>
<data name="TEXT_COLOR_GOLD" xml:space="preserve">
<value>Gold</value>
<comment>Gold color</comment>
</data>
<data name="TEXT_COLOR_YELLOW" xml:space="preserve">
<value>Yellow</value>
<comment>Yellow color</comment>
</data>
<data name="TEXT_COLOR_OLIVEGREEN" xml:space="preserve">
<value>Olive green</value>
<comment>Olive green color</comment>
</data>
<data name="TEXT_COLOR_GREEN" xml:space="preserve">
<value>Green</value>
<comment>Green color</comment>
</data>
<data name="TEXT_COLOR_BRIGHTGREEN" xml:space="preserve">
<value>Bright green</value>
<comment>Rose color</comment>
</data>
<data name="TEXT_COLOR_TEAL" xml:space="preserve">
<value>Teal</value>
<comment>Teal color</comment>
</data>
<data name="TEXT_COLOR_TURQUOISE" xml:space="preserve">
<value>Turquoise</value>
<comment>Turquoise color</comment>
</data>
<data name="TEXT_COLOR_BLUE" xml:space="preserve">
<value>Blue</value>
<comment>Blue color</comment>
</data>
<data name="TEXT_COLOR_BLUEGRAY" xml:space="preserve">
<value>Blue gray</value>
<comment>Blue gray color</comment>
</data>
<data name="TEXT_COLOR_INDIGO" xml:space="preserve">
<value>Indigo</value>
<comment>Indigo color</comment>
</data>
<data name="TEXT_COLOR_PURPLE" xml:space="preserve">
<value>Purple</value>
<comment>Purple color</comment>
</data>
<data name="TEXT_COLOR_DARKRED" xml:space="preserve">
<value>Dark red</value>
<comment>Dark red color</comment>
</data>
<data name="TEXT_COLOR_DARKYELLOW" xml:space="preserve">
<value>Dark yellow</value>
<comment>Dark yellow color</comment>
</data>
<data name="TEXT_COLOR_DARKGREEN" xml:space="preserve">
<value>Dark green</value>
<comment>Dark green color</comment>
</data>
<data name="TEXT_COLOR_DARKTEAL" xml:space="preserve">
<value>Dark teal</value>
<comment>Dark teal color</comment>
</data>
<data name="TEXT_COLOR_DARKBLUE" xml:space="preserve">
<value>Dark blue</value>
<comment>Dark blue color</comment>
</data>
<data name="TEXT_COLOR_DARKPURPLE" xml:space="preserve">
<value>Dark purple</value>
<comment>Dark purple color</comment>
</data>
<data name="TEXT_COLOR_PLUM" xml:space="preserve">
<value>Plum</value>
<comment>Plum color</comment>
</data>
</root>

View File

@@ -2,12 +2,17 @@
#define HKEY_WINDOWS_THEME L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"
// disabling warning 4702 - unreachable code
// prevent the warning after the call off a infinite loop function
#pragma warning(push)
#pragma warning(disable : 4702)
DWORD WINAPI _checkTheme(LPVOID lpParam)
{
auto listener = (ThemeListener*)lpParam;
listener->CheckTheme();
return 0;
}
#pragma warning(pop)
void ThemeListener::AddChangedHandler(THEME_HANDLE handle)
{

View File

@@ -660,19 +660,19 @@ namespace UnitTestsCommonLib
TEST_METHOD (GetCodeFromJson)
{
HotkeyObject object = HotkeyObject::from_json(m_defaultHotkeyJson);
Assert::AreEqual(UINT(123), object.get_code());
Assert::AreEqual(123U, object.get_code());
}
TEST_METHOD (GetCodeFromJsonString)
{
HotkeyObject object = HotkeyObject::from_json_string(m_defaultHotkeyJson.Stringify());
Assert::AreEqual(UINT(123), object.get_code());
Assert::AreEqual(123U, object.get_code());
}
TEST_METHOD (GetCodeFromSettings)
{
HotkeyObject object = HotkeyObject::from_settings(true, true, true, true, 123);
Assert::AreEqual(UINT(123), object.get_code());
Assert::AreEqual(123U, object.get_code());
}
TEST_METHOD (GetWinPressedFromJson)

View File

@@ -12,6 +12,11 @@
#include <winrt/base.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
// Suppressing 26466 - Don't use static_cast downcasts - in CppUnitTest.h
#pragma warning(push)
#pragma warning(disable : 26466)
#include "CppUnitTest.h"
#pragma warning(pop)
#endif //PCH_H

View File

@@ -66,8 +66,6 @@ namespace Microsoft.Interop.Tests
ClientPipe.Dispose();
}
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
// TODO: set large fields to null
disposedValue = true;
}
}

View File

@@ -47,10 +47,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.1" />
</ItemGroup>
<ItemGroup>

View File

@@ -187,6 +187,10 @@ public
return gcnew String(CommonSharedConstants::FZE_EXIT_EVENT);
}
static String ^ FZEToggleEvent() {
return gcnew String(CommonSharedConstants::FANCY_ZONES_EDITOR_TOGGLE_EVENT);
}
static String ^ ColorPickerSendSettingsTelemetryEvent() {
return gcnew String(CommonSharedConstants::COLOR_PICKER_SEND_SETTINGS_TELEMETRY_EVENT);
}
@@ -203,13 +207,36 @@ public
return gcnew String(CommonSharedConstants::AWAKE_EXIT_EVENT);
}
static String^ ShowPeekEvent() {
return gcnew String(CommonSharedConstants::SHOW_PEEK_SHARED_EVENT);
}
static String ^ PowerAccentExitEvent() {
return gcnew String(CommonSharedConstants::POWERACCENT_EXIT_EVENT);
}
static String ^ ShortcutGuideTriggerEvent() {
return gcnew String(CommonSharedConstants::SHORTCUT_GUIDE_TRIGGER_EVENT);
}
static String
^ MeasureToolTriggerEvent() {
return gcnew String(CommonSharedConstants::MEASURE_TOOL_TRIGGER_EVENT);
}
static String ^ GcodePreviewResizeEvent() {
return gcnew String(CommonSharedConstants::GCODE_PREVIEW_RESIZE_EVENT);
}
static String ^ DevFilesPreviewResizeEvent() {
return gcnew String(CommonSharedConstants::DEV_FILES_PREVIEW_RESIZE_EVENT);
}
static String ^ MarkdownPreviewResizeEvent() {
return gcnew String(CommonSharedConstants::MARKDOWN_PREVIEW_RESIZE_EVENT);
}
static String ^ PdfPreviewResizeEvent() {
return gcnew String(CommonSharedConstants::PDF_PREVIEW_RESIZE_EVENT);
}
static String ^ SvgPreviewResizeEvent() {
return gcnew String(CommonSharedConstants::SVG_PREVIEW_RESIZE_EVENT);
}
};
}

View File

@@ -28,6 +28,8 @@ namespace CommonSharedConstants
// Path to the event used to show Color Picker
const wchar_t SHOW_COLOR_PICKER_SHARED_EVENT[] = L"Local\\ShowColorPickerEvent-8c46be2a-3e05-4186-b56b-4ae986ef2525";
const wchar_t SHORTCUT_GUIDE_TRIGGER_EVENT[] = L"Local\\ShortcutGuide-TriggerEvent-d4275ad3-2531-4d19-9252-c0becbd9b496";
const wchar_t SHORTCUT_GUIDE_EXIT_EVENT[] = L"Local\\ShortcutGuide-ExitEvent-35697cdd-a3d2-47d6-a246-34efcc73eac0";
const wchar_t FANCY_ZONES_EDITOR_TOGGLE_EVENT[] = L"Local\\FancyZones-ToggleEditorEvent-1e174338-06a3-472b-874d-073b21c62f14";
@@ -44,8 +46,23 @@ namespace CommonSharedConstants
// Path to the event used by PowerOCR
const wchar_t SHOW_POWEROCR_SHARED_EVENT[] = L"Local\\PowerOCREvent-dc864e06-e1af-4ecc-9078-f98bee745e3a";
// Path to the event used to show Peek
const wchar_t SHOW_PEEK_SHARED_EVENT[] = L"Local\\ShowPeekEvent";
// Path to the event used by MeasureTool
const wchar_t MEASURE_TOOL_TRIGGER_EVENT[] = L"Local\\MeasureToolEvent-3d46745f-09b3-4671-a577-236be7abd199";
// Path to the event used by GcodePreviewHandler
const wchar_t GCODE_PREVIEW_RESIZE_EVENT[] = L"Local\\PowerToysGcodePreviewResizeEvent-6ff1f9bd-ccbd-4b24-a79f-40a34fb0317d";
// Path to the event used by DevFilesPreviewHandler
const wchar_t DEV_FILES_PREVIEW_RESIZE_EVENT[] = L"Local\\PowerToysDevFilesPreviewResizeEvent-5707a22c-2cac-4ea2-82f0-27c03ef0b5f3";
// Path to the event used by MarkdownPreviewHandler
const wchar_t MARKDOWN_PREVIEW_RESIZE_EVENT[] = L"Local\\PowerToysMarkdownPreviewResizeEvent-54c9ab69-11f3-49e9-a98f-53221cfef3ec";
// Path to the event used by MarkdownPreviewHandler
const wchar_t PDF_PREVIEW_RESIZE_EVENT[] = L"Local\\PowerToysPdfPreviewResizeEvent-5a2f162a-f728-45fe-8bda-ef3d5e434ce7";
// Path to the event used by MarkdownPreviewHandler
const wchar_t SVG_PREVIEW_RESIZE_EVENT[] = L"Local\\PowerToysSvgPreviewResizeEvent-0701a4fc-d5a1-4ee7-b885-f83982c62a0d";
// Max DWORD for key code to disable keys.
const DWORD VK_DISABLED = 0x100;

View File

@@ -58,18 +58,24 @@ bool Logger::wasLogFailedShown()
void Logger::init(std::string loggerName, std::wstring logFilePath, std::wstring_view logSettingsPath)
{
auto logLevel = getLogLevel(logSettingsPath);
bool newLoggerCreated = false;
try
{
auto sink = make_shared<daily_file_sink_mt>(logFilePath, 0, 0, false, LogSettings::retention);
if (IsDebuggerPresent())
logger = spdlog::get(loggerName);
if (logger == nullptr)
{
auto msvc_sink = make_shared<msvc_sink_mt>();
msvc_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%n] [t-%t] [%l] %v");
logger = make_shared<spdlog::logger>(loggerName, sinks_init_list{ sink, msvc_sink });
}
else
{
logger = make_shared<spdlog::logger>(loggerName, sink);
auto sink = make_shared<daily_file_sink_mt>(logFilePath, 0, 0, false, LogSettings::retention);
if (IsDebuggerPresent())
{
auto msvc_sink = make_shared<msvc_sink_mt>();
msvc_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%n] [t-%t] [%l] %v");
logger = make_shared<spdlog::logger>(loggerName, sinks_init_list{ sink, msvc_sink });
}
else
{
logger = make_shared<spdlog::logger>(loggerName, sink);
}
newLoggerCreated = true;
}
}
catch (...)
@@ -89,10 +95,14 @@ void Logger::init(std::string loggerName, std::wstring logFilePath, std::wstring
return;
}
logger->set_level(logLevel);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [p-%P] [t-%t] [%l] %v");
spdlog::register_logger(logger);
spdlog::flush_every(std::chrono::seconds(3));
if (newLoggerCreated)
{
logger->set_level(logLevel);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%f] [p-%P] [t-%t] [%l] %v");
logger->flush_on(logLevel); // Auto flush on every log message.
spdlog::register_logger(logger);
}
logger->info("{} logger is initialized", loggerName);
}

View File

@@ -15,6 +15,24 @@ struct LogSettings
inline const static std::wstring updateLogPath = L"UpdateLogs\\update-log.txt";
inline const static std::string fileExplorerLoggerName = "FileExplorer";
inline const static std::wstring fileExplorerLogPath = L"Logs\\file-explorer-log.txt";
inline const static std::string gcodePrevLoggerName = "GcodePrevHandler";
inline const static std::wstring gcodePrevLogPath = L"logs\\FileExplorer_localLow\\GcodePreviewHandler\\gcode-prev-handler-log.txt";
inline const static std::string gcodeThumbLoggerName = "GcodeThumbnailProvider";
inline const static std::wstring gcodeThumbLogPath = L"logs\\FileExplorer_localLow\\GcodeThumbnailProvider\\gcode-thumbnail-provider-log.txt";
inline const static std::string mdPrevLoggerName = "MDPrevHandler";
inline const static std::wstring mdPrevLogPath = L"logs\\FileExplorer_localLow\\MDPrevHandler\\md-prev-handler-log.txt";
inline const static std::string monacoPrevLoggerName = "MonacoPrevHandler";
inline const static std::wstring monacoPrevLogPath = L"logs\\FileExplorer_localLow\\MonacoPrevHandler\\monaco-prev-handler-log.txt";
inline const static std::string pdfPrevLoggerName = "PdfPrevHandler";
inline const static std::wstring pdfPrevLogPath = L"logs\\FileExplorer_localLow\\PdfPrevHandler\\pdf-prev-handler-log.txt";
inline const static std::string pdfThumbLoggerName = "PdfThumbnailProvider";
inline const static std::wstring pdfThumbLogPath = L"logs\\FileExplorer_localLow\\PdfThumbnailProvider\\pdf-thumbnail-provider-log.txt";
inline const static std::string stlThumbLoggerName = "StlThumbnailProvider";
inline const static std::wstring stlThumbLogPath = L"logs\\FileExplorer_localLow\\StlThumbnailProvider\\stl-thumbnail-provider-log.txt";
inline const static std::string svgPrevLoggerName = "SvgPrevHandler";
inline const static std::wstring svgPrevLogPath = L"logs\\FileExplorer_localLow\\SvgPrevHandler\\svg-prev-handler-log.txt";
inline const static std::string svgThumbLoggerName = "SvgThumbnailProvider";
inline const static std::wstring svgThumbLogPath = L"logs\\FileExplorer_localLow\\SvgThumbnailProvider\\svg-thumbnail-provider-log.txt";
inline const static std::string launcherLoggerName = "launcher";
inline const static std::wstring launcherLogPath = L"LogsModuleInterface\\launcher-log.txt";
inline const static std::wstring awakeLogPath = L"Logs\\awake-log.txt";

View File

@@ -67,6 +67,10 @@ namespace updating
throw std::runtime_error("Release object doesn't have the required asset");
}
// disabling warning 4702 - unreachable code
// prevent the warning that may show up depend on the value of the constants (#defines)
#pragma warning(push)
#pragma warning(disable : 4702)
std::future<nonstd::expected<github_version_info, std::wstring>> get_github_version_info_async(const bool prerelease)
{
// If the current version starts with 0.0.*, it means we're on a local build from a farm and shouldn't check for updates.
@@ -126,6 +130,7 @@ namespace updating
}
co_return nonstd::make_unexpected(NETWORK_ERROR);
}
#pragma warning(pop)
std::filesystem::path get_pending_updates_path()
{

View File

@@ -34,7 +34,7 @@ namespace
{
CComPtr<IShellWindows> spShellWindows;
auto result = spShellWindows.CoCreateInstance(CLSID_ShellWindows);
if (result != S_OK)
if (result != S_OK || spShellWindows == nullptr)
{
Logger::warn(L"Failed to create instance. {}", GetErrorString(result));
return false;
@@ -47,7 +47,7 @@ namespace
result = spShellWindows->FindWindowSW(
&vtLoc, &vtEmpty, SWC_DESKTOP, &lhwnd, SWFO_NEEDDISPATCH, &spdisp);
if (result != S_OK)
if (result != S_OK || spdisp == nullptr)
{
Logger::warn(L"Failed to find the window. {}", GetErrorString(result));
return false;
@@ -56,7 +56,7 @@ namespace
CComPtr<IShellBrowser> spBrowser;
result = CComQIPtr<IServiceProvider>(spdisp)->QueryService(SID_STopLevelBrowser,
IID_PPV_ARGS(&spBrowser));
if (result != S_OK)
if (result != S_OK || spBrowser == nullptr)
{
Logger::warn(L"Failed to query service. {}", GetErrorString(result));
return false;
@@ -64,14 +64,14 @@ namespace
CComPtr<IShellView> spView;
result = spBrowser->QueryActiveShellView(&spView);
if (result != S_OK)
if (result != S_OK || spView == nullptr)
{
Logger::warn(L"Failed to query active shell window. {}", GetErrorString(result));
return false;
}
result = spView->QueryInterface(riid, ppv);
if (result != S_OK)
if (result != S_OK || ppv == nullptr || *ppv == nullptr )
{
Logger::warn(L"Failed to query interface. {}", GetErrorString(result));
return false;

View File

@@ -2,7 +2,12 @@
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
// disable warning 26471 - Don't use reinterpret_cast. A cast from void* can use static_cast
#pragma warning(push)
#pragma warning(disable: 26471)
#include <wil/resource.h>
#pragma warning(pop)
#include <optional>
#include <string>

View File

@@ -28,13 +28,12 @@ inline registry::ChangeSet getSvgPreviewHandlerChangeSet(const std::wstring inst
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::preview,
perUser,
L"{ddee2b8a-6807-48a6-bb20-2338174ff779}",
L"{FCDD4EED-41AA-492F-8A84-31A1546226E0}",
get_std_product_version(),
(fs::path{ installationDir } /
LR"d(modules\FileExplorerPreview\PowerToys.SvgPreviewHandler.comhost.dll)d")
LR"d(modules\FileExplorerPreview\PowerToys.SvgPreviewHandlerCpp.dll)d")
.wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.PreviewHandler.Svg.SvgPreviewHandler",
L"SvgPreviewHandler",
L"Svg Preview Handler",
NonLocalizable::ExtSVG);
}
@@ -44,11 +43,10 @@ inline registry::ChangeSet getMdPreviewHandlerChangeSet(const std::wstring insta
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::preview,
perUser,
L"{45769bcc-e8fd-42d0-947e-02beef77a1f5}",
L"{60789D87-9C3C-44AF-B18C-3DE2C2820ED3}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.MarkdownPreviewHandler.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.PreviewHandler.Markdown.MarkdownPreviewHandler",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.MarkdownPreviewHandlerCpp.dll)d").wstring(),
L"MarkdownPreviewHandler",
L"Markdown Preview Handler",
NonLocalizable::ExtMarkdown);
}
@@ -107,11 +105,10 @@ inline registry::ChangeSet getMonacoPreviewHandlerChangeSet(const std::wstring i
return generatePreviewHandler(PreviewHandlerType::preview,
perUser,
L"{afbd5a44-2520-4ae0-9224-6cfce8fe4400}",
L"{D8034CFA-F34B-41FE-AD45-62FCBB52A6DA}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.MonacoPreviewHandler.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.PreviewHandler.Monaco.MonacoPreviewHandler",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.MonacoPreviewHandlerCpp.dll)d").wstring(),
L"MonacoPreviewHandler",
L"Monaco Preview Handler",
extensions);
}
@@ -121,11 +118,10 @@ inline registry::ChangeSet getPdfPreviewHandlerChangeSet(const std::wstring inst
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::preview,
perUser,
L"{07665729-6243-4746-95b7-79579308d1b2}",
L"{A5A41CC7-02CB-41D4-8C9B-9087040D6098}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.PdfPreviewHandler.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.PreviewHandler.Pdf.PdfPreviewHandler",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.PdfPreviewHandlerCpp.dll)d").wstring(),
L"PdfPreviewHandler",
L"Pdf Preview Handler",
NonLocalizable::ExtPDF);
}
@@ -135,11 +131,10 @@ inline registry::ChangeSet getGcodePreviewHandlerChangeSet(const std::wstring in
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::preview,
perUser,
L"{ec52dea8-7c9f-4130-a77b-1737d0418507}",
L"{A0257634-8812-4CE8-AF11-FA69ACAEAFAE}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.GcodePreviewHandler.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.PreviewHandler.Gcode.GcodePreviewHandler",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.GcodePreviewHandlerCpp.dll)d").wstring(),
L"GcodePreviewHandler",
L"G-code Preview Handler",
NonLocalizable::ExtGCode);
}
@@ -149,11 +144,10 @@ inline registry::ChangeSet getSvgThumbnailHandlerChangeSet(const std::wstring in
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::thumbnail,
perUser,
L"{36B27788-A8BB-4698-A756-DF9F11F64F84}",
L"{10144713-1526-46C9-88DA-1FB52807A9FF}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.SvgThumbnailProvider.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.ThumbnailHandler.Svg.SvgThumbnailProvider",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.SvgThumbnailProviderCpp.dll)d").wstring(),
L"SvgThumbnailProvider",
L"Svg Thumbnail Provider",
NonLocalizable::ExtSVG,
L"Picture");
@@ -164,11 +158,10 @@ inline registry::ChangeSet getPdfThumbnailHandlerChangeSet(const std::wstring in
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::thumbnail,
perUser,
L"{BCC13D15-9720-4CC4-8371-EA74A274741E}",
L"{D8BB9942-93BD-412D-87E4-33FAB214DC1A}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.PdfThumbnailProvider.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.ThumbnailHandler.Pdf.PdfThumbnailProvider",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.PdfThumbnailProviderCpp.dll)d").wstring(),
L"PdfThumbnailProvider",
L"Pdf Thumbnail Provider",
NonLocalizable::ExtPDF);
}
@@ -178,11 +171,10 @@ inline registry::ChangeSet getGcodeThumbnailHandlerChangeSet(const std::wstring
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::thumbnail,
perUser,
L"{BFEE99B4-B74D-4348-BCA5-E757029647FF}",
L"{F2847CBE-CD03-4C83-A359-1A8052C1B9D5}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.GcodeThumbnailProvider.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.ThumbnailHandler.Gcode.GcodeThumbnailProvider",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.GcodeThumbnailProviderCpp.dll)d").wstring(),
L"GcodeThumbnailProvider",
L"G-code Thumbnail Provider",
NonLocalizable::ExtGCode);
}
@@ -192,11 +184,10 @@ inline registry::ChangeSet getStlThumbnailHandlerChangeSet(const std::wstring in
using namespace registry::shellex;
return generatePreviewHandler(PreviewHandlerType::thumbnail,
perUser,
L"{8BC8AFC2-4E7C-4695-818E-8C1FFDCEA2AF}",
L"{77257004-6F25-4521-B602-50ECC6EC62A6}",
get_std_product_version(),
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.StlThumbnailProvider.comhost.dll)d").wstring(),
registry::DOTNET_COMPONENT_CATEGORY_CLSID,
L"Microsoft.PowerToys.ThumbnailHandler.Stl.StlThumbnailProvider",
(fs::path{ installationDir } / LR"d(modules\FileExplorerPreview\PowerToys.StlThumbnailProviderCpp.dll)d").wstring(),
L"StlThumbnailProvider",
L"Stl Thumbnail Provider",
NonLocalizable::ExtSTL);
}

View File

@@ -315,11 +315,10 @@ namespace registry
std::wstring handlerClsid,
std::wstring powertoysVersion,
std::wstring fullPathToHandler,
std::wstring handlerCategory,
std::wstring className,
std::wstring displayName,
std::vector<std::wstring> fileTypes,
std::wstring fileKindType = L"" )
std::wstring fileKindType = L"")
{
const HKEY scope = perUser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
@@ -331,9 +330,6 @@ namespace registry
inprocServerPath += L'\\';
inprocServerPath += L"InprocServer32";
std::wstring implementedCategoriesPath = clsidPath + LR"d(\Implemented Categories\)d";
implementedCategoriesPath += handlerCategory;
std::wstring assemblyKeyValue;
if (const auto lastDotPos = className.rfind(L'.'); lastDotPos != std::wstring::npos)
{
@@ -356,13 +352,10 @@ namespace registry
// TODO: verify that we actually need all of those
vec_t changes = { { scope, clsidPath, L"DisplayName", displayName },
{ scope, clsidPath, std::nullopt, className },
{ scope, implementedCategoriesPath, std::nullopt, L"" },
{ scope, inprocServerPath, std::nullopt, fullPathToHandler },
{ scope, inprocServerPath, L"Assembly", assemblyKeyValue },
{ scope, inprocServerPath, L"Class", className },
{ scope, inprocServerPath, L"ThreadingModel", L"Both" },
{ scope, versionPath, L"Assembly", assemblyKeyValue },
{ scope, versionPath, L"Class", className } };
{ scope, inprocServerPath, L"ThreadingModel", L"Apartment" } };
for (const auto& fileType : fileTypes)
{

View File

@@ -1,6 +1,8 @@
#include "pch.h"
#include "NtdllExtensions.h"
#include <thread>
#include <atomic>
#define STATUS_INFO_LENGTH_MISMATCH ((LONG)0xC0000004)
@@ -165,66 +167,116 @@ std::vector<NtdllExtensions::HandleInfo> NtdllExtensions::handles() noexcept
std::vector<BYTE> object_info_buffer(DefaultResultBufferSize);
for (ULONG i = 0; i < info_ptr->HandleCount; i++)
std::atomic<ULONG> i = 0;
std::atomic<ULONG> handle_count = info_ptr->HandleCount;
std::atomic<HANDLE> process_handle = NULL;
std::atomic<HANDLE> handle_copy = NULL;
ULONG previous_i;
while (i < handle_count)
{
auto handle_info = info_ptr->Handles + i;
DWORD pid = handle_info->ProcessId;
previous_i = i;
HANDLE process_handle = NULL;
auto iter = pid_to_handle.find(pid);
if (iter != pid_to_handle.end())
{
process_handle = iter->second;
}
else
{
process_handle = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid);
if (!process_handle)
// The system calls we use in this block were reported to hang on some machines.
// We need to offload the cycle to another thread and keep track of progress to terminate and resume when needed.
// Unfortunately, there are no alternative APIs to what we're using that accept timeouts. (NtQueryObject and GetFileType)
auto offload_function = std::thread([&] {
for (; i < handle_count; i++)
{
continue;
process_handle = NULL;
handle_copy = NULL;
auto handle_info = info_ptr->Handles + i;
DWORD pid = handle_info->ProcessId;
auto iter = pid_to_handle.find(pid);
if (iter != pid_to_handle.end())
{
process_handle = iter->second;
}
else
{
process_handle = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid);
if (!process_handle)
{
continue;
}
pid_to_handle[pid] = process_handle;
}
// According to this:
// https://stackoverflow.com/questions/46384048/enumerate-handles
// NtQueryObject could hang
// TODO uncomment and investigate
// if (handle_info->GrantedAccess == 0x0012019f) {
// continue;
// }
HANDLE local_handle_copy;
auto dh_result = DuplicateHandle(process_handle, (HANDLE)handle_info->Handle, GetCurrentProcess(), &local_handle_copy, 0, 0, DUPLICATE_SAME_ACCESS);
if (dh_result == 0)
{
// Ignore this handle.
continue;
}
handle_copy = local_handle_copy;
ULONG return_length;
auto status = NtQueryObject(handle_copy, ObjectTypeInformation, object_info_buffer.data(), (ULONG)object_info_buffer.size(), &return_length);
if (NT_ERROR(status))
{
// Ignore this handle.
CloseHandle(handle_copy);
handle_copy = NULL;
continue;
}
auto object_type_info = (OBJECT_TYPE_INFORMATION*)object_info_buffer.data();
auto type_name = unicode_to_str(object_type_info->Name);
std::wstring file_name;
if (type_name == L"File")
{
file_name = file_handle_to_kernel_name(handle_copy, object_info_buffer);
result.push_back(HandleInfo{ pid, handle_info->Handle, type_name, file_name });
}
CloseHandle(handle_copy);
handle_copy = NULL;
}
pid_to_handle[pid] = process_handle;
}
});
// According to this:
// https://stackoverflow.com/questions/46384048/enumerate-handles
// NtQueryObject could hang
// TODO uncomment and investigate
// if (handle_info->GrantedAccess == 0x0012019f) {
// continue;
// }
HANDLE handle_copy;
auto dh_result = DuplicateHandle(process_handle, (HANDLE)handle_info->Handle, GetCurrentProcess(), &handle_copy, 0, 0, DUPLICATE_SAME_ACCESS);
if (dh_result == 0)
offload_function.detach();
do
{
// Ignore this handle.
continue;
}
Sleep(200); // Timeout in milliseconds for detecting that the system hang on getting information for a handle.
if (i >= handle_count)
{
// We're done.
break;
}
ULONG return_length;
auto status = NtQueryObject(handle_copy, ObjectTypeInformation, object_info_buffer.data(), (ULONG)object_info_buffer.size(), &return_length);
if (NT_ERROR(status))
{
// Ignore this handle.
CloseHandle(handle_copy);
continue;
}
if (previous_i >= i)
{
// The thread looks like it's hanging on some handle. Let's kill it and resume.
auto object_type_info = (OBJECT_TYPE_INFORMATION*)object_info_buffer.data();
auto type_name = unicode_to_str(object_type_info->Name);
// HACK: This is unsafe and may leak something, but looks like there's no way to properly clean up a thread when it's hanging on a system call.
TerminateThread(offload_function.native_handle(), 1);
std::wstring file_name = file_handle_to_kernel_name(handle_copy, object_info_buffer);
// Close Handles that might be lingering.
if (handle_copy!=NULL)
{
CloseHandle(handle_copy);
}
i++;
break;
}
previous_i = i;
} while (1);
if (type_name == L"File")
{
file_name = file_handle_to_kernel_name(handle_copy, object_info_buffer);
}
result.push_back(HandleInfo{ pid, handle_info->Handle, type_name, file_name });
CloseHandle(handle_copy);
}
for (auto [pid, handle] : pid_to_handle)

View File

@@ -27,7 +27,7 @@ private:
public:
struct ProcessInfo
{
DWORD pid;
DWORD pid = 0;
std::wstring name;
std::wstring user;
std::vector<std::wstring> modules;

View File

@@ -35,6 +35,7 @@ namespace FileLocksmith::Interop
std::wstring paths_file()
{
#pragma warning(suppress : 4691) // Weird warning about System::String from referenced library not being the one expected (?!)
std::wstring path = from_system_string(interop::Constants::AppDataPath());
path += L"\\";
path += constants::nonlocalizable::PowerToyName;
@@ -102,7 +103,7 @@ namespace FileLocksmith::Interop
while (!finished)
{
WCHAR ch;
WCHAR ch{};
// We have to read data like this
if (!stream.read(reinterpret_cast<char*>(&ch), 2))
{
@@ -157,7 +158,7 @@ namespace FileLocksmith::Interop
auto exec_path = executable_path();
SHELLEXECUTEINFOW exec_info;
SHELLEXECUTEINFOW exec_info{};
exec_info.cbSize = sizeof(exec_info);
exec_info.fMask = SEE_MASK_NOCLOSEPROCESS;
exec_info.hwnd = NULL;
@@ -181,7 +182,7 @@ namespace FileLocksmith::Interop
static System::Boolean SetDebugPrivilege()
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
TOKEN_PRIVILEGES tp{};
LUID luid;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken) != 0)
@@ -230,7 +231,7 @@ namespace FileLocksmith::Interop
bool elevated = false;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
{
TOKEN_ELEVATION elevation;
TOKEN_ELEVATION elevation{};
DWORD size;
if (GetTokenInformation(token, TokenElevation, &elevation, sizeof(elevation), &size))
{

View File

@@ -20,6 +20,8 @@
<SolidColorBrush x:Key="SubtleButtonForegroundPressed" Color="{ThemeResource TextFillColorSecondary}" />
<SolidColorBrush x:Key="SubtleButtonForegroundDisabled" Color="{ThemeResource TextFillColorDisabled}" />
<SolidColorBrush x:Key="WindowCaptionBackground">Transparent</SolidColorBrush>
<SolidColorBrush x:Key="WindowCaptionBackgroundDisabled">Transparent</SolidColorBrush>
<Style x:Key="SubtleButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource SubtleButtonBackground}" />

View File

@@ -2,12 +2,12 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml.Data;
namespace PowerToys.FileLocksmithUI.Converters
{
using System;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml.Data;
public sealed class FileCountConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)

View File

@@ -2,13 +2,13 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.IO;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml.Data;
namespace PowerToys.FileLocksmithUI.Converters
{
using System;
using System.IO;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml.Data;
public sealed class FileListToDescriptionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)

View File

@@ -2,16 +2,16 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Drawing;
using System.IO;
using CommunityToolkit.WinUI.UI;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Media.Imaging;
using Windows.Storage;
namespace PowerToys.FileLocksmithUI.Converters
{
using System;
using System.Drawing;
using System.IO;
using CommunityToolkit.WinUI.UI;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Media.Imaging;
using Windows.Storage;
public sealed class PidToIconConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)

View File

@@ -2,14 +2,14 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Globalization;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Data;
namespace PowerToys.FileLocksmithUI.Converters
{
using System;
using System.Globalization;
using FileLocksmith.Interop;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Data;
public sealed class UserToSystemWarningVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)

View File

@@ -21,6 +21,15 @@
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
<SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>
<ApplicationIcon>Assets/Icon.ico</ApplicationIcon>
<SelfContained>true</SelfContained>
</PropertyGroup>
<!-- SelfContained=true requires RuntimeIdentifier to be set -->
<PropertyGroup Condition="'$(Platform)'=='x64'">
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<RuntimeIdentifier>win10-arm64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup>
@@ -57,9 +66,9 @@
<PackageReference Include="CommunityToolkit.Labs.WinUI.SettingsControls" Version="0.0.7" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.0.0" />
<PackageReference Include="CommunityToolkit.WinUI.UI" Version="7.1.2" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.1.5" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.221116.1" />
<PackageReference Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.1" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
<PackageReference Include="WinUIEx" Version="1.8.0" />
<Manifest Include="$(ApplicationManifest)" />

View File

@@ -3,10 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
using ManagedCommon;
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using WinUIEx;
namespace FileLocksmithUI
@@ -22,24 +19,8 @@ namespace FileLocksmithUI
private void SetTitleBar()
{
if (AppWindowTitleBar.IsCustomizationSupported())
{
AppWindow window = this.GetAppWindow();
window.TitleBar.ExtendsContentIntoTitleBar = true;
window.TitleBar.ButtonBackgroundColor = Colors.Transparent;
SetTitleBar(titleBar);
}
else
{
var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
ThemeHelpers.SetImmersiveDarkMode(hWnd, ThemeHelpers.GetAppTheme() == AppTheme.Dark);
titleBar.Visibility = Visibility.Collapsed;
// Set window icon
WindowId windowId = Win32Interop.GetWindowIdFromWindow(hWnd);
AppWindow appWindow = AppWindow.GetFromWindowId(windowId);
appWindow.SetIcon("Assets/Icon.ico");
}
ExtendsContentIntoTitleBar = true;
SetTitleBar(titleBar);
}
public void Dispose()

View File

@@ -8,7 +8,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<TargetFramework>net7.0-windows10.0.19041.0</TargetFramework>
<PublishDir>$(PowerToysRoot)\$(Platform)\$(Configuration)\modules\FileLocksmith</PublishDir>
<RuntimeIdentifier>win10-$(Platform)</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<SelfContained>true</SelfContained>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun>False</PublishReadyToRun>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>

View File

@@ -2,23 +2,20 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using FileLocksmith.Interop;
using global::FileLocksmithUI.Helpers;
namespace PowerToys.FileLocksmithUI.ViewModels
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using FileLocksmith.Interop;
using global::FileLocksmithUI;
using global::FileLocksmithUI.Helpers;
using Microsoft.UI.Dispatching;
using Microsoft.UI.Xaml.Controls;
#pragma warning disable CA1708 // Identifiers should differ by more than case
public partial class MainViewModel : ObservableObject, IDisposable
#pragma warning restore CA1708 // Identifiers should differ by more than case
@@ -31,7 +28,7 @@ namespace PowerToys.FileLocksmithUI.ViewModels
private bool _disposed;
private CancellationTokenSource _cancelProcessWatching;
public ObservableCollection<ProcessResult> Processes { get; } = new ();
public ObservableCollection<ProcessResult> Processes { get; } = new();
public bool IsLoading
{

View File

@@ -2,12 +2,12 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using Microsoft.UI.Xaml.Controls;
using PowerToys.FileLocksmithUI.ViewModels;
namespace PowerToys.FileLocksmithUI.Views
{
using System;
using Microsoft.UI.Xaml.Controls;
using PowerToys.FileLocksmithUI.ViewModels;
public sealed partial class MainPage : Page
{
public MainViewModel ViewModel { get; private set; }

View File

@@ -15,11 +15,10 @@
<ItemGroup>
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
<PackageReference Include="Moq" Version="4.16.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
<PackageReference Include="Moq" Version="4.18.3" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.1" />
<PackageReference Include="System.IO.Abstractions" Version="17.2.3" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="17.2.3" />
</ItemGroup>

View File

@@ -21,6 +21,8 @@
<SolidColorBrush x:Key="SubtleButtonForegroundPressed" Color="{ThemeResource TextFillColorSecondary}" />
<SolidColorBrush x:Key="SubtleButtonForegroundDisabled" Color="{ThemeResource TextFillColorDisabled}" />
<SolidColorBrush x:Key="WindowCaptionBackground">Transparent</SolidColorBrush>
<SolidColorBrush x:Key="WindowCaptionBackgroundDisabled">Transparent</SolidColorBrush>
<Style x:Key="SubtleButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource SubtleButtonBackground}" />
@@ -40,20 +42,20 @@
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentPresenter
x:Name="ContentPresenter"
Padding="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
AnimatedIcon.State="Normal"
AutomationProperties.AccessibilityView="Raw"
Background="{TemplateBinding Background}"
BackgroundSizing="{TemplateBinding BackgroundSizing}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}"
CornerRadius="{TemplateBinding CornerRadius}">
x:Name="ContentPresenter"
Padding="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
AnimatedIcon.State="Normal"
AutomationProperties.AccessibilityView="Raw"
Background="{TemplateBinding Background}"
BackgroundSizing="{TemplateBinding BackgroundSizing}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
ContentTransitions="{TemplateBinding ContentTransitions}"
CornerRadius="{TemplateBinding CornerRadius}">
<ContentPresenter.BackgroundTransition>
<BrushTransition Duration="0:0:0.083" />
</ContentPresenter.BackgroundTransition>

View File

@@ -2,11 +2,11 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Runtime.InteropServices;
namespace Hosts.Helpers
{
using System;
using System.Runtime.InteropServices;
internal class NativeMethods
{
[DllImport("user32.dll", SetLastError = true)]

View File

@@ -20,6 +20,15 @@
<AssemblyName>PowerToys.Hosts</AssemblyName>
<DefineConstants>DISABLE_XAML_GENERATED_MAIN,TRACE</DefineConstants>
<ApplicationIcon>Assets/Hosts.ico</ApplicationIcon>
<SelfContained>true</SelfContained>
</PropertyGroup>
<!-- SelfContained=true requires RuntimeIdentifier to be set -->
<PropertyGroup Condition="'$(Platform)'=='x64'">
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<RuntimeIdentifier>win10-arm64</RuntimeIdentifier>
</PropertyGroup>
<!-- See https://learn.microsoft.com/windows/apps/develop/platform/csharp-winrt/net-projection-from-cppwinrt-component for more info -->
@@ -41,8 +50,8 @@
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.0.0" />
<PackageReference Include="CommunityToolkit.WinUI.UI.Controls" Version="7.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.1.5" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.1" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.221116.1" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
<PackageReference Include="Microsoft.Xaml.Behaviors.WinUI.Managed" Version="2.0.9" />
<PackageReference Include="System.IO.Abstractions" Version="17.2.3" />
<PackageReference Include="WinUIEx" Version="1.8.0" />

View File

@@ -3,10 +3,7 @@
// See the LICENSE file in the project root for more information.
using Hosts.Helpers;
using ManagedCommon;
using Microsoft.UI;
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using WinUIEx;
namespace Hosts
@@ -17,34 +14,14 @@ namespace Hosts
{
InitializeComponent();
if (AppWindowTitleBar.IsCustomizationSupported())
{
SetTitleBar();
}
else
{
titleBar.Visibility = Visibility.Collapsed;
// Set window icon
var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
WindowId windowId = Win32Interop.GetWindowIdFromWindow(hWnd);
AppWindow appWindow = AppWindow.GetFromWindowId(windowId);
appWindow.SetIcon("Assets/Hosts.ico");
if (ThemeHelpers.GetAppTheme() == AppTheme.Dark)
{
ThemeHelpers.SetImmersiveDarkMode(hWnd, true);
}
}
SetTitleBar();
BringToForeground();
}
private void SetTitleBar()
{
AppWindow window = this.GetAppWindow();
window.TitleBar.ExtendsContentIntoTitleBar = true;
window.TitleBar.ButtonBackgroundColor = Colors.Transparent;
ExtendsContentIntoTitleBar = true;
SetTitleBar(titleBar);
}

Some files were not shown because too many files have changed in this diff Show More