[Peek] Powertoys Peek MVP (#25922)

* Peek (#22498)

* Add peek dll project

* add spacebar preview and launch on hotkey press

* add todo

* add process handle to handle continuous press of hotkey

* add tool to stop all powertoys processes

* Add a blank Peek page and update nav menu

* Add some initial content to Peek page including a toggle

* refactor settings parsing

* rename spacebar peek to peek viewer

* rename script to stop powertoys processes

* remove tool

* Adding FileUtils for retrieving selected file in File Explorer

* Remove unnecessary SndPeekSettings

* Add shortcut setting

* Set the shortcut to ctrl+space

* Launching viewer with selected FE file

* Add PeekUI WinUI3 project with interop events

* Moving FileTypeUtils into PeekFileUtils project

* execute winui3 app on hotkey

* Fix paths with spaces

* remove winui3 project

* Resolve comment

* add wpf app with toggle visibility on hotkey

* fix visibility on startup

* remove window properties and add todos

* Fixed hidden extension and system file handling

* wip

* Add working WPF app with FileExplorer querying

* remove c++ projects

* Move native awaiter

* Working Image control with image files

* Resize and move window based on explorer monitor

* Image render, window positioning and sizing clean up

* add window management logic and selection logic

* add extension methods to add circular iterating capability to linkedlistnode

* Add OnArrowKeyPresshandler

* Added titlebar with file name and scaling with titlebar height

* fix flashing window on startup and process kept alive when powertoys exits

* remove wait for debugger loop in ui

* Add KeyIsDown method

* Fix KeyDown issue with Key handled and check for repeat

* Add thumbnail logic

* Add all folder items if only one item is selected

* File type helper

* Using hresult

* Add cancellation and rotation handling

* Use extension instead of path

* fIX CONFLICTS

* Fixing some file type checks

* Add new icon for Peek

* Update page with the new Peek icon

* Initialize IsEnabled and hook ActivationShortcut to dllmain

* add icon to taskbar and titlebar

* Add theme sensitive backgrounds

* rename event handlers

* add settings image

* Move window data into obserable object

* Refactor viewmodel, interop and helpers

* Clean up

* Add loading spinner

* Add todos

* Fix conflicts

* Move native code into its own folder

* Add peek to installer

* Fix building peek and peekui projects

* Replace UWP namespaces to WinAppSDK

* Working WASDK placeholder project

* Add exit when powertoys runner exit

* Working winui3 with image display

* Add WIC project with <TreatWarningAsErros> false for now

* Fit content to window

* Use Size from Windows.Foundation

* Change order

* Add some todos

* Refactored native/interop code and added helpers to imagepreviewer

* Rename projects

* Move some code

* Remove using

Co-authored-by: Michael Salmon <miksalmon@users.noreply.github.com>
Co-authored-by: Michael Salmon 🐟 <michaelpsalmon@outlook.com>
Co-authored-by: Alireza Ebadi Ghajari <alirezae@microsoft.com>
Co-authored-by: Jessie Su <Jessie.Su@microsoft.com>
Co-authored-by: sujessie <102062556+sujessie@users.noreply.github.com>

* Bump Microsoft.Windows.SDK.BuildTools version

* [Peek] Plugin pattern to enable any file type previewing (#22475)

* [Peek] Fetching image size through PropertyStore (#22530)

* Fetching metadata from PropertySTore

* Releasing objects to fix crash

* Creating new PropertyHelper

Co-authored-by: Daniel Chau <dancha@microsoft.com>

* Juliata/filetypes (#22538)

* Using the same list of file extensions as Lightbox's AppxManifest, and ensuring we convert file extension to lowercase

* Add IsFileTypeSupported to IPreviewer

* respond to PR comments

* Add scale awareness to window centering (#22541)

* [Peek] Fix installer builds, project configs and update assets (#22540)

* Update installer

* Fix installer errors

* Fix peek vcxproj

* Add package signing

* Add peek to arm64

* Add back ARM64 toMeasureToolUI

* Add versions to project

* Update assets and icons

* Add correct icon

* [Peek] Enable PropertyStore for offline files (#22567)

* Enabling PropertyStore for offline files

Co-authored-by: Daniel Chau <dancha@microsoft.com>

* [Peek] Adding unsupported file previewer (#22598)

* Unsupported file previewer

* Fix file display info

* Fix property store calls

* Update TODO

* [Peek] Add WebView2 integration (#22506)

* First commit with WIP logic to support WV2 in Peek module

* Minor code cleanup and try/catch block

* Added control to wrap WebView2 logic

* Cleanup

* Added logic to handle HTML previewing
Properly update FilePreview according to file type

* Code cleanup
Updated comments

* Updated comment

* Removed comment

* Code cleanup

* Improved opening of web browser preview to avoid "blank" or "seeing previous page" issue
Removed unused method
Added xaml fallback to guarantee default/starting state

* Removed folder

* Updated factory logic to match master

* address code review

* addressed PR review

* address PR review

* Address PR review

* address PR review

* Address PR review

* [Peek] Add basic file querying and navigation (#22589)

* Refactor to facilitate file data initialization

* Extract file-related code to new FileManager class

* Add temp basic version

* Clean + add todo for cancellations

* Fix various nav-related issues

* Temp - start moving iteration-related code to bg thread

* Minor tweaks

* Add FEHelper todo

* Rename FileManager + various tweaks

* Add basic throttling

* Improve bg thread synchronization

* Clean

* Clean

* Rename based on feedback

* Rename FileQuery

* Rename properties

* Rename remaining fields

* Add todos for nav success/failures

Co-authored-by: Esteban Margaron <emargaron@microsoft.com>

* [Peek] Add customized title bar  (#22600)

* Add basic button UI

* Add function to get default app name and to open file in default app

* Correct error output

* Add filename to titlebar

* Remove titlebar text from Resw

* Add basic button UI

* Add function to get default app name and to open file in default app

* Add filename to titlebar

* Correct error output

* Remove titlebar text from Resw

* Add SetDragRectangles

* Correct logic, update function name

* Add localization

* Cleanup and adaptive width

* Add fileIndex/NumberOfFiles for multiple files activation

* Refine titlebar styles

* Update error message; Return HResult from native methods; Update variable initialisation and string null testing

* Titlebar height and adaptive width refinement

* Add fallback to launch app picker if fail to open default app

* Temp change to hide AppTitle_FileCount

* Update launch button to command; Add keyboard accelerator

* Update titlebar inactive background color

* Update tooltip to add keyboard accelerator

* Add comments to resw file

* Fix accidental deletion from previous merge

Co-authored-by: Jojo Zhou <yizzho@microsoft.com>
Co-authored-by: Yawen Hou <yawenhou@microsoft.com>

* Fix crash

* Fix wrong thread exception

* Make CurrentItemIndex setter private

* Update titlebar filecount text

* Fix titlebar draggable region and interactive region (bump WinAppSdk to latest)

* [Peek] Unsupported File Previewer - Formatting string from resources (#22609)

* Moving to string resource usage

* Moving ReadableStringHelper to common project

* Fix comments

* [Peek] Fix foregrounding (#22633)

* Fixing foregrounding

* Get window handle inside BringToForeground extension method

Co-authored-by: Daniel Chau <dancha@microsoft.com>
Co-authored-by: Samuel Chapleau <sachaple@microsoft.com>

* [Peek] ImagePreviewer - Handle error states (#22637)

* add better preview state handling

* add error handling in imagepreviewer and better state handling

* fix error handling so exception is not bubbled up

* improve performance and hook up unsupported previewer on error

* remove commented code

* address pr comments

* [Peek] add PDF viewing support (#22636)

* [Peek] add PDF viewing support

* Fixed issue which would redirect some HTML and PDF files to external browser

* Fixed refactored interface name

* [Peek] Refine titlebar adaptive width (#22642)

* Adjust adaptive width of titlebar

* Remove visualstate setters for AppTitle_FileCount

Co-authored-by: Jojo Zhou <yizzho@microsoft.com>

* [Peek] New File Explorer tabs break Shell API to get selected files (#22641)

* fix FE tab bug

* remove unnecessary unsafe keyword

* [Peek] add extra logic to properly render PNG files with transparency (#22613)

* [Peek] added extra logic to render PNG files with proper transparency

* Moved logic to ThumbnailHelper
Cleanup

* Created a separated previewer for PNG to only load the preview image with thumbnail logic

* removed unused code

* Updated state loading change

* [Peek] Unsupported File Previewer - Setting Window Size (#22645)

* Adding setting for unsupported file window

* Fix

* [Peek] Add tooltip to File (#22640)

* Add tooltip to File

* Add placeholder text for no tooltip

* Address comments

* Use StringBuilder

Co-authored-by: Jojo Zhou <yizzho@microsoft.com>

* Add full image quality support (#22654)

* [Peek] Window foregrounding simplification and fixes + keep window visible if FE single selection changed (#22657)

* Use different apis to bring to foreground removing remote thread wait and work as well as library loading

* Keep window open if single selected file in FE is different

* Removed unused methods

* [Peek] Add cancellation token OnFilePropertyChanged (#22643)

* Cancel file loading before opening another file

* Add omitted cancellation checks

* Catch task cancelled exception; Add more cancellation checkpoints

* Add cancellation checkpoint beofre GetBitmapFromHBitmapAsync

* Correct typo

* Update to pass cancellation token individually to each async methods

* Add lost cancellationToken source

* Add cancellation token to PngPreviewer

Co-authored-by: Yawen Hou <yawenhou@microsoft.com>

* [Peek] Unsupported File Previewer - Preserve Transparency For File Icons (#22650)

* Preserving transparency or icons

* Remove TODO

Co-authored-by: Samuel Chapleau <sachaple@microsoft.com>

* [Peek] Update some installer build steps + assets update (#22683)

* Fix settings & peek.ui.wpf

* Add back missing icon

* Add missing files and actions to installer

* Keep window open if the selected file in explorer is different (only works for single file selection)

* Undo last

* [Peek] Add copy keyboard accelerator (#22647)

* add copy keyboard accelerator

* Fix comments

Co-authored-by: Samuel Chapleau <sachaple@microsoft.com>

* [Peek] add WV2 improvements (behavior and UX) (#22685)

* [Peek] added logic to get max monitor size for opening WebView2

* Removed ununsed dependency property

* Added workaround for cases where the web page would not finish navigating in a quick timing, for example google.com.

* Remove window extensions from common and use nullable size argument instead

Co-authored-by: Samuel Chapleau <sachaple@microsoft.com>

* [Peek] Merge main, self-contained .NET and fix WebView2 user data dir issue (#22899)

* Merge remote-tracking branch 'origin/main' into peek

* Test sc

* Set WebView2 user data dir

* spellcheck

* Fix comment

* Move check if higher quality image is already loaded to the exact line where we change the Preview bitmap (#23083)

* Fix opening Peek when FE window is set to full name path (#23082)

* Move check for png thubmnail loading priority

* Remove Peek.UI.WPF project

* Remove duplicated method in powertoys setup

* [Peek] Fix selecting files from the correct focused opened File Explorer tab & from Desktop (#23489)

* Get file based on active tab handle instead of window title

* Refactor code to get active tab

* Getting all items from the shell API working again, except for desktop

* Refactor and cleanup com & native code

* Add back removed peek xaml assets in Product.wxs

* Remove some dependencies that do not seem necessary in Product.wxs

* [Peek] Small images (#23554)

* change stretch value

* compare with actual window size

* consider scaling factor

* set max size

* clean up

* clean up

* clean up previewers

* scaling factor in bitmap previewer

* max image size property

* [Peek]Handle errors for HEIC/HEIF and fall back to default previewer if there is no thumbnail (#22684)

* Handle errors when getting filesize by falling back to default previewer

* Bringing back other file types that are fixed with these code changes

---------

Co-authored-by: Samuel Chapleau <sachaple@microsoft.com>

* [Peek] Add unsupported file icon fallback (#23735)

* Refactor icon retrieval, refactor hbitmap to bitmap conversion, add icon fallback

* Add svg to assets in installer

* [Peek] Refactoring of file system models, removal of PngPreviewer, retrieving of folder size via Scripting com reference and other fixes (#23955)

* Refactor icon retrieval, refactor hbitmap to bitmap conversion, add icon fallback

* Add svg to assets in installer

* - Refactor File class into IFileSystemItem, FileItem & FolderItem
- Display size for folders using Scripting namespace
- Remove default app buttons for files or folders not supporting it

* Add better content type via storage apis

* Add check for storagefile in PngPreviewer

* Fix png stretching

* Remove png previewer

* Rename ThumbnailOptions.None to ThumbnailOptions.ResizeToFit

* [Peek] Removed monitor percentage evaluation for the UnsupportedFilePreview control (#24002)

* Remove settings for percentage of windows and keep default min size.

* Fix margin on unsupported control

* Use nullable Size for image size & open file on background thread (#24004)

* [Peek] SVG support (#24237)

* svg previewer

* svg size

* set scaling factor

* set image size

* changed image source type

* non nullable image size

* notify svg previewer changed

* uncomment

* rename BitmapPreviewer

* move svg support

* remove svg previewer

* [Peek] Implementation of a performant and reliable Neighboring Files Query (#24943)

* Use IShellItemArray as the backing array of item

* Finalize and cleanup NFQ implementation

* Cleanup remainder of the code

* Remove unused using

* [Peek] Pin the window position  (#24927)

* [Peek] Telemetry and logging (#25231)

* text preview

* scrolling

* changed size

* webview2 preview

* common preview project

* previewpane: use common project

* peek: use common

* previewpane: moved md

* peek: md

* previewpane: clean up

* clean up

* moved monaco files

* moved formatters

* rename

* moved common monaco helper

* dev files support

* installer

* removed versions

* warnings: culture info

* warnings: names

* clean up

* warnings: dispose

* warnings: default values

* warnings

* warnings: charset

* warnings: exceptions

* suppress warning

* installer: added peek

* changed peek guid

* monaco folders

* peek deps

* peek files

* peek resources

* removed additional monaco folder

* set host name

* Update installer

* hardcode monaco path

* leave single webview control

* moved path to common

* project

* more meaningful todos

* moved temp folder cleanup

* todo

* extension check

* spell: monaco

* spellcheck

* spellcheck

* fix id

* fix spelling

* key to spelling

* id fix

* Fix monaco resolution at install time

* Fix user install. Add needed files

* installer: remove peek localization files. It's a WinUI app

* installer:fix signing

* removed unused

* settings: flyout enable/disable for Peek

* simplify string

* property changed handle

* [Peek][Settings] Peek OOBE page (#25895)

* [Peek] GPO (#25918)

* Add Native methods file to exception

* Fix merge issue on solution file

* Adjust spellcheck

* Remove boilerplate code

* Add module interface telemetry

* Remove change to README.md

* Add entry to README

* Clean up some non-changes

* Fix order of Peek in Settings menu

* [Settings] Make peek descriptions more descriptive

---------

Co-authored-by: Michael Salmon <miksalmon@users.noreply.github.com>
Co-authored-by: Michael Salmon 🐟 <michaelpsalmon@outlook.com>
Co-authored-by: Alireza Ebadi Ghajari <alirezae@microsoft.com>
Co-authored-by: Jessie Su <Jessie.Su@microsoft.com>
Co-authored-by: sujessie <102062556+sujessie@users.noreply.github.com>
Co-authored-by: Daniel Chau <d.chau@alumni.ubc.ca>
Co-authored-by: Daniel Chau <dancha@microsoft.com>
Co-authored-by: jth-ms <73617023+jth-ms@users.noreply.github.com>
Co-authored-by: Robson <rp.pontin@gmail.com>
Co-authored-by: estebanm123 <49930791+estebanm123@users.noreply.github.com>
Co-authored-by: Esteban Margaron <emargaron@microsoft.com>
Co-authored-by: Yawen Hou <Sytta@users.noreply.github.com>
Co-authored-by: Jojo Zhou <yizzho@microsoft.com>
Co-authored-by: Yawen Hou <yawenhou@microsoft.com>
Co-authored-by: Jojo Zhou <39350350+Joanna-Zhou@users.noreply.github.com>
Co-authored-by: Stefan Markovic <57057282+stefansjfw@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
This commit is contained in:
Samuel Chapleau
2023-05-10 10:43:03 -07:00
committed by GitHub
parent 7ae93a9c7f
commit 648f30d1ab
361 changed files with 10709 additions and 182 deletions

View File

@@ -3,11 +3,11 @@
(?:^|/)(?i)LICEN[CS]E (?:^|/)(?i)LICEN[CS]E
(?:^|/)3rdparty/ (?:^|/)3rdparty/
(?:^|/)go\.sum$ (?:^|/)go\.sum$
(?:^|/)MonacoPreviewHandler/customLanguages/ (?:^|/)FilePreviewCommon/customLanguages/
(?:^|/)MonacoPreviewHandler/generateLanguagesJson.html (?:^|/)FilePreviewCommon/generateLanguagesJson.html
(?:^|/)MonacoPreviewHandler/index.html (?:^|/)FilePreviewCommon/index.html
(?:^|/)MonacoPreviewHandler/monaco_languages.json (?:^|/)FilePreviewCommon/monaco_languages.json
(?:^|/)MonacoPreviewHandler/monacoSpecialLanguages.js (?:^|/)FilePreviewCommon/monacoSpecialLanguages.js
(?:^|/)monacoSRC/ (?:^|/)monacoSRC/
(?:^|/)package(?:-lock|)\.json$ (?:^|/)package(?:-lock|)\.json$
(?:^|/)timezones\.json$ (?:^|/)timezones\.json$
@@ -100,6 +100,7 @@
^src/modules/imageresizer/dll/ContextMenuHandler\.rgs$ ^src/modules/imageresizer/dll/ContextMenuHandler\.rgs$
^src/modules/imageresizer/dll/ImageResizerExt\.rgs$ ^src/modules/imageresizer/dll/ImageResizerExt\.rgs$
^src/modules/MouseUtils/MouseJumpUI/NativeMethods/User32/UI/WindowsAndMessaging/User32.SYSTEM_METRICS_INDEX.cs$ ^src/modules/MouseUtils/MouseJumpUI/NativeMethods/User32/UI/WindowsAndMessaging/User32.SYSTEM_METRICS_INDEX.cs$
^src/modules/peek/Peek\.Common/NativeMethods\.txt$
^src/modules/powerrename/testapp/PowerRenameTest\.vcxproj\.filters$ ^src/modules/powerrename/testapp/PowerRenameTest\.vcxproj\.filters$
^src/modules/previewpane/PreviewPaneUnitTests/HelperFiles/MarkdownWithHTMLImageTag\.txt$ ^src/modules/previewpane/PreviewPaneUnitTests/HelperFiles/MarkdownWithHTMLImageTag\.txt$
^src/modules/previewpane/UnitTests-MarkdownPreviewHandler/HelperFiles/MarkdownWithHTMLImageTag.txt$ ^src/modules/previewpane/UnitTests-MarkdownPreviewHandler/HelperFiles/MarkdownWithHTMLImageTag.txt$

View File

@@ -58,6 +58,7 @@ alekhyareddy
ALLAPPS ALLAPPS
ALLINPUT ALLINPUT
ALLOWUNDO ALLOWUNDO
ALLVIEW
ALPHATYPE ALPHATYPE
Altdown Altdown
alwaysontop alwaysontop
@@ -76,6 +77,7 @@ aocfnapldcnfbofgmbbllojgocaelgdd
AOT AOT
APARTMENTTHREADED APARTMENTTHREADED
APeriod APeriod
apidl
APIENTRY APIENTRY
APIIs APIIs
APPBARDATA APPBARDATA
@@ -100,6 +102,7 @@ ARCHITEW
arcosh arcosh
ARemapped ARemapped
argb argb
ari
arik arik
Arity Arity
arjunbalgovind arjunbalgovind
@@ -108,6 +111,7 @@ ARPPRODUCTICON
ARRAYSIZE ARRAYSIZE
arsinh arsinh
artanh artanh
arw
asdf asdf
AShortcut AShortcut
ASingle ASingle
@@ -213,6 +217,7 @@ BUILDNUMBER
buildtask buildtask
buildtransitive buildtransitive
BUTTONUP BUTTONUP
BVal
BValue BValue
BYPOSITION BYPOSITION
bytearray bytearray
@@ -220,10 +225,12 @@ CABD
CALG CALG
callbackptr callbackptr
cameligo cameligo
calpwstr
Cangjie Cangjie
CANRENAME CANRENAME
CAPTUREBLT CAPTUREBLT
CAPTURECHANGED CAPTURECHANGED
CARRAY
CAtl CAtl
CBA CBA
CBB CBB
@@ -247,6 +254,7 @@ CEAF
CEBAC CEBAC
CEBD CEBD
CECB CECB
CElems
CENTERALIGN CENTERALIGN
ceq ceq
certlm certlm
@@ -263,8 +271,10 @@ chdir
CHILDACTIVATE CHILDACTIVATE
CHILDWINDOW CHILDWINDOW
chrdavis chrdavis
Chromakey
Chrzan Chrzan
CHT CHT
cidl
CIELAB CIELAB
CIEXYZ CIEXYZ
cim cim
@@ -362,6 +372,7 @@ CRECT
critsec critsec
Crossdevice Crossdevice
CRSEL CRSEL
crw
CSearch CSearch
CSettings CSettings
CSIDL CSIDL
@@ -380,6 +391,7 @@ CURSORINFO
cursorpos cursorpos
customaction customaction
CUSTOMACTIONTEST CUSTOMACTIONTEST
CVal
cvd cvd
CVirtual CVirtual
cvtepu cvtepu
@@ -399,6 +411,7 @@ Dac
dacl dacl
DAF DAF
damienleroy damienleroy
DANGEROUSLYCOMMITMERELYTODISKCACHE
DARKPURPLE DARKPURPLE
DARKTEAL DARKTEAL
DARKYELLOW DARKYELLOW
@@ -428,12 +441,15 @@ dcommon
dcomp dcomp
dcompi dcompi
DComposition DComposition
DCR dcr
DCs dcs
Dct
DDCDD DDCDD
DDCE DDCE
DDEIf
DDevice DDevice
ddf ddf
Dds
DDxgi DDxgi
Deact Deact
debian debian
@@ -510,6 +526,7 @@ DQTYPE
DRAWFRAME DRAWFRAME
drawingcolor drawingcolor
dreamsofameaningfullife dreamsofameaningfullife
drf
drivedetectionwarning drivedetectionwarning
dshow dshow
DSTINVERT DSTINVERT
@@ -581,6 +598,7 @@ EFDD
EFE EFE
EFFEFC EFFEFC
EFile EFile
eip
ekus ekus
emmintrin emmintrin
Emoji Emoji
@@ -619,9 +637,13 @@ EWXLOGOFF
EWXPOWEROFF EWXPOWEROFF
EWXREBOOT EWXREBOOT
EWXSHUTDOWN EWXSHUTDOWN
Exa
exabyte
examplehandler examplehandler
examplepowertoy examplepowertoy
EXAND EXAND
Excep
EXCEPINFO
EXCLUDEFROMCAPTURE EXCLUDEFROMCAPTURE
exdisp exdisp
executionpolicy executionpolicy
@@ -637,6 +659,7 @@ EXSEL
exstyle exstyle
EXTENDEDKEY EXTENDEDKEY
EXTENDEDVERBS EXTENDEDVERBS
EXTRINSICPROPERTIES
eyetracker eyetracker
FABC FABC
fabricbot fabricbot
@@ -691,7 +714,7 @@ FILEOP
FILEOS FILEOS
FILESUBTYPE FILESUBTYPE
FILESYSPATH FILESYSPATH
FILETIME filetime
FILEVERSION FILEVERSION
Filtergraph Filtergraph
Filterkeyboard Filterkeyboard
@@ -736,6 +759,7 @@ GETDLGCODE
GETDPISCALEDSIZE GETDPISCALEDSIZE
GETICON GETICON
GETMINMAXINFO GETMINMAXINFO
GETPROPERTYSTOREFLAGS
GETSTATE GETSTATE
GETTEXT GETTEXT
GETTEXTLENGTH GETTEXTLENGTH
@@ -782,6 +806,7 @@ HCRYPTHASH
HCRYPTPROV HCRYPTPROV
hcwhite hcwhite
hdc hdc
HDR
hdrop hdrop
hdwwiz hdwwiz
HEB HEB
@@ -795,8 +820,9 @@ HHmmss
HHOOK HHOOK
hhx hhx
HIBYTE HIBYTE
HICON hicon
HIDEWINDOW HIDEWINDOW
hif
highlighter highlighter
HIMAGELIST HIMAGELIST
himl himl
@@ -846,6 +872,7 @@ HTCLIENT
HTHUMBNAIL HTHUMBNAIL
HTOUCHINPUT HTOUCHINPUT
HTTRANSPARENT HTTRANSPARENT
HVal
HValue HValue
Hvci Hvci
hwb hwb
@@ -859,12 +886,17 @@ HWNDPREV
hyjiacan hyjiacan
IBase IBase
IBeam IBeam
IBitmap
IBlock
ICapture ICapture
ICEBLUE ICEBLUE
IClass IClass
IColor
ICONERROR ICONERROR
IContext
IData IData
IDD IDD
IDecoder
IDesktop IDesktop
IDirect IDirect
idl idl
@@ -873,16 +905,20 @@ IDOn
IDR IDR
idx idx
IDXGI IDXGI
IEncoder
IEnum
IExec IExec
IEXPLORE IEXPLORE
Iface Iface
IFACEMETHOD IFACEMETHOD
IFACEMETHODIMP IFACEMETHODIMP
IFile
IFilter IFilter
IGraphics IGraphics
iid iid
Iindex Iindex
IIO IIO
iiq
Ijwhost Ijwhost
IKs IKs
ILogon ILogon
@@ -894,6 +930,7 @@ imageresizerinput
imageresizersettings imageresizersettings
imagingdevices imagingdevices
ime ime
IMetadata
imeutil imeutil
inetcpl inetcpl
Infobar Infobar
@@ -931,14 +968,17 @@ Interlop
INTRESOURCE INTRESOURCE
INVALIDARG INVALIDARG
invalidoperatioexception invalidoperatioexception
IPalette
ipc ipc
ipcmanager ipcmanager
IPlugin IPlugin
IPower IPower
IPREVIEW ipreview
ipreviewhandlervisualssetfont ipreviewhandlervisualssetfont
IProperty IProperty
IPublic IPublic
IQuery
IReader
irprops irprops
isbi isbi
ISearch ISearch
@@ -946,10 +986,12 @@ ISettings
isfinite isfinite
IShell IShell
isocpp isocpp
ISource
iss iss
ISurface
ITask ITask
ith ith
ITHUMBNAIL ithumbnail
IUI IUI
IUnknown IUnknown
IWbem IWbem
@@ -957,8 +999,10 @@ IWIC
iwr iwr
IYUV IYUV
JArray JArray
jfi
jfif jfif
jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi
jif
jjw jjw
jobject jobject
joefinapps joefinapps
@@ -973,6 +1017,7 @@ jxr
jyuwono jyuwono
KBDLLHOOKSTRUCT KBDLLHOOKSTRUCT
kbm kbm
kdc
KEYBDINPUT KEYBDINPUT
keyboardeventhandlers keyboardeventhandlers
keyboardmanager keyboardmanager
@@ -1008,6 +1053,7 @@ LBUTTON
LBUTTONDBLCLK LBUTTONDBLCLK
LBUTTONDOWN LBUTTONDOWN
LBUTTONUP LBUTTONUP
Lcid
LCIDTo LCIDTo
lcl lcl
Lclean Lclean
@@ -1050,6 +1096,8 @@ LOCALPACKAGE
localport localport
LOCALSYSTEM LOCALSYSTEM
LOCATIONCHANGE LOCATIONCHANGE
LOCKBYTES
LOCKTYPE
logconsole logconsole
logfile logfile
LOGFONT LOGFONT
@@ -1101,6 +1149,7 @@ LTRB
LTRREADING LTRREADING
luid luid
lusrmgr lusrmgr
LVal
LWA LWA
lwin lwin
LZero LZero
@@ -1133,6 +1182,7 @@ MBUTTON
MBUTTONDBLCLK MBUTTONDBLCLK
MBUTTONDOWN MBUTTONDOWN
MBUTTONUP MBUTTONUP
mdc
MDICHILD MDICHILD
MDL MDL
mdtext mdtext
@@ -1140,6 +1190,8 @@ mdtxt
mdwn mdwn
MEDIASUBTYPE MEDIASUBTYPE
mediatype mediatype
mef
Mega
Melman Melman
MENUITEMINFO MENUITEMINFO
MENUITEMINFOW MENUITEMINFOW
@@ -1208,6 +1260,7 @@ mozilla
mpmc mpmc
MRM MRM
mru mru
mrw
msbuild msbuild
msc msc
msclr msclr
@@ -1306,6 +1359,7 @@ NONCONVERT
NONELEVATED NONELEVATED
NONINFRINGEMENT NONINFRINGEMENT
nonstd nonstd
NOOPEN
NOOWNERZORDER NOOWNERZORDER
NOPARENTNOTIFY NOPARENTNOTIFY
NOREDIRECTIONBITMAP NOREDIRECTIONBITMAP
@@ -1334,6 +1388,7 @@ NOUPDATE
NOZORDER NOZORDER
NPH NPH
NResize NResize
nrw
NTAPI NTAPI
ntdll ntdll
ntfs ntfs
@@ -1366,6 +1421,8 @@ OLEDB
OLIVEGREEN OLIVEGREEN
onebranch onebranch
onenote onenote
ONLYIFCURRENT
ONLYONCE
onstd onstd
oobe oobe
OOBEPT OOBEPT
@@ -1374,6 +1431,7 @@ opensource
openxmlformats openxmlformats
OPTIMIZEFORINVOKE OPTIMIZEFORINVOKE
ORAW ORAW
ori
ORPHANEDDIALOGTITLE ORPHANEDDIALOGTITLE
ORSCANS ORSCANS
oss oss
@@ -1415,10 +1473,14 @@ PATINVERT
PATPAINT PATPAINT
PAUDIO PAUDIO
pbc pbc
Pbgra pbgra
PBlob
pcb pcb
pcch
pcelt
pch pch
PCIDLIST PCIDLIST
pcs
PCWSTR PCWSTR
pdb pdb
pdbonly pdbonly
@@ -1428,10 +1490,14 @@ pdtobj
pdw pdw
PDWORD PDWORD
pedrolamas pedrolamas
pef
PElems
Pels Pels
PERCEIVEDFLAG PERCEIVEDFLAG
Percision
perfmon perfmon
pesi pesi
petabyte
peteblois peteblois
PEXCEPTION PEXCEPTION
pfn pfn
@@ -1440,6 +1506,7 @@ pft
pgp pgp
pgsql pgsql
pguid pguid
pkey
PHANDLE PHANDLE
PHANDLER PHANDLER
phbm phbm
@@ -1482,10 +1549,13 @@ POWERTOYNAME
powertoyssetup powertoyssetup
powertoysusersetup powertoysusersetup
Powrprof Powrprof
ppenum
ppidl ppidl
ppmt ppmt
pprm pprm
pproc pproc
pprop
ppshv
ppsi ppsi
ppsid ppsid
ppsrm ppsrm
@@ -1505,6 +1575,7 @@ previouscamera
PREVIOUSINSTALLFOLDER PREVIOUSINSTALLFOLDER
PREVIOUSVERSIONSINSTALLED PREVIOUSVERSIONSINSTALLED
prevpane prevpane
PRGBA
prgms prgms
pri pri
PRINTCLIENT PRINTCLIENT
@@ -1521,15 +1592,20 @@ PROGRAMFILES
projectname projectname
PROPBAG PROPBAG
PROPERTYKEY PROPERTYKEY
PROPERTYNOTFOUND
propkey propkey
PROPVARIANT
propvarutil propvarutil
prvpane prvpane
psapi psapi
pscid
PSECURITY PSECURITY
psfgao psfgao
Psr Psr
psrm psrm
psrree psrree
pstatstg
pstm
pstr pstr
pstream pstream
pstrm pstrm
@@ -1541,7 +1617,9 @@ ptd
PTOKEN PTOKEN
PToy PToy
ptstr ptstr
pui
PULONG PULONG
pvar
pwa pwa
pwcs pwcs
pwsh pwsh
@@ -1562,13 +1640,16 @@ QUNS
qwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnm
qword qword
qwrtyuiopsghjklzxvnm qwrtyuiopsghjklzxvnm
raf
RAII RAII
RAlt RAlt
randyrants randyrants
Rasterize
RAWINPUT RAWINPUT
RAWINPUTDEVICE RAWINPUTDEVICE
RAWINPUTHEADER RAWINPUTHEADER
RAWPATH RAWPATH
rbhid
Rbp Rbp
RBUTTON RBUTTON
RBUTTONDBLCLK RBUTTONDBLCLK
@@ -1639,8 +1720,11 @@ resw
resx resx
retval retval
rfc rfc
RGBE
RGBQUAD RGBQUAD
rgbs rgbs
rgelt
rgf
rgn rgn
rgs rgs
rhs rhs
@@ -1688,9 +1772,13 @@ Rutkas
RValue RValue
rvm rvm
rwin rwin
rwl
rwz
ryanbodrug ryanbodrug
saahmedm saahmedm
sachaple
sacl sacl
SAFEARRAY
safeprojectname safeprojectname
SAMEKEYPREVIOUSLYMAPPED SAMEKEYPREVIOUSLYMAPPED
SAMESHORTCUTPREVIOUSLYMAPPED SAMESHORTCUTPREVIOUSLYMAPPED
@@ -1699,8 +1787,10 @@ SAVEFAILED
scancode scancode
scanled scanled
schedtasks schedtasks
SCID
Scip Scip
scipbe scipbe
Scode
scoobe scoobe
SCOPEID SCOPEID
screenshot screenshot
@@ -1739,14 +1829,17 @@ SFP
sharpkeys sharpkeys
SHCNE SHCNE
SHCNF SHCNF
SHCONTF
shcore shcore
shellapi shellapi
SHELLDETAILS
SHELLDLL SHELLDLL
shellex shellex
SHELLEXECUTEINFO SHELLEXECUTEINFO
SHELLEXECUTEINFOW SHELLEXECUTEINFOW
shellscalingapi shellscalingapi
SHFILEINFO SHFILEINFO
SHGDNF
SHGFI SHGFI
Shl Shl
shldisp shldisp
@@ -1777,6 +1870,7 @@ SHOWNOACTIVATE
SHOWNORMAL SHOWNORMAL
SHOWWINDOW SHOWWINDOW
shtypes shtypes
SIATTRIBFLAGS
SICHINT SICHINT
sid sid
siex siex
@@ -1829,6 +1923,8 @@ SRCINVERT
SRCPAINT SRCPAINT
sre sre
SResize SResize
srf
SRGB
srme srme
srre srre
srw srw
@@ -1857,15 +1953,20 @@ STDMETHODCALLTYPE
STDMETHODIMP STDMETHODIMP
stefan stefan
Stereolithography Stereolithography
STGC
STGM STGM
STGMEDIUM STGMEDIUM
STGTY
sticpl sticpl
stl stl
storelogo storelogo
STRINGIZE STRINGIZE
stringtable stringtable
stringval stringval
Strm
Strmiids Strmiids
Stroe
Strret
strsafe strsafe
strutil strutil
sttngs sttngs
@@ -1928,6 +2029,7 @@ taskschd
tchar tchar
tcl tcl
Tcollab Tcollab
tcs
tcscpy tcscpy
TCustom TCustom
tdbuild tdbuild
@@ -1937,6 +2039,7 @@ telem
telephon telephon
Templated Templated
templatenamespace templatenamespace
terabyte
testapp testapp
testcase testcase
testhost testhost
@@ -1960,6 +2063,7 @@ Titlecase
TKey TKey
TLayout TLayout
tlb tlb
tlbimp
TMPVAR TMPVAR
TNP TNP
toggleswitch toggleswitch
@@ -2030,6 +2134,7 @@ unregistering
unremapped unremapped
unsubscribe unsubscribe
unvirtualized unvirtualized
UOffset
Updatelayout Updatelayout
UPGRADINGPRODUCTCODE UPGRADINGPRODUCTCODE
Uptool Uptool
@@ -2037,6 +2142,7 @@ Usb
USEDEFAULT USEDEFAULT
USEFILEATTRIBUTES USEFILEATTRIBUTES
USERDATA USERDATA
USERDEFINED
USERDOMAIN USERDOMAIN
userprofile userprofile
USESHOWWINDOW USESHOWWINDOW
@@ -2044,6 +2150,7 @@ USESTDHANDLES
USRDLL USRDLL
Utc Utc
utf utf
UType
uuidof uuidof
uwp uwp
uxtheme uxtheme
@@ -2052,6 +2159,7 @@ vabdq
validmodulename validmodulename
Vanara Vanara
variantassignment variantassignment
VARTYPE
vcamp vcamp
vccorlib vccorlib
vcdl vcdl
@@ -2071,6 +2179,7 @@ VERBSONLY
VERBW VERBW
VERIFYCONTEXT VERIFYCONTEXT
verrsrc verrsrc
VERSIONED
VERSIONINFO VERSIONINFO
Versioning Versioning
VFT VFT
@@ -2151,7 +2260,7 @@ WINDOWNAME
WINDOWPLACEMENT WINDOWPLACEMENT
WINDOWPOSCHANGED WINDOWPOSCHANGED
WINDOWPOSCHANGING WINDOWPOSCHANGING
Windowsapp windowsapp
WINDOWSBUILDNUMBER WINDOWSBUILDNUMBER
Windowscodecs Windowscodecs
windowssearch windowssearch
@@ -2222,6 +2331,7 @@ wpr
wprp wprp
wql wql
wregex wregex
WReserved
WResize WResize
writefile writefile
Wrk Wrk
@@ -2273,6 +2383,7 @@ yinwang
yinyue yinyue
YOffset YOffset
ypescript ypescript
YQuantized
YResolution YResolution
YStr YStr
YUY YUY

View File

@@ -12,6 +12,7 @@
"Notifications.dll", "Notifications.dll",
"os-detection.dll", "os-detection.dll",
"PowerToys.exe", "PowerToys.exe",
"PowerToys.FilePreviewCommon.dll",
"PowerToys.Interop.dll", "PowerToys.Interop.dll",
"BugReportTool\\PowerToys.BugReportTool.exe", "BugReportTool\\PowerToys.BugReportTool.exe",
"WebcamReportTool\\PowerToys.WebcamReportTool.exe", "WebcamReportTool\\PowerToys.WebcamReportTool.exe",
@@ -88,6 +89,13 @@
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.exe", "modules\\FileLocksmith\\PowerToys.FileLocksmithUI.exe",
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.dll", "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.exe",
"modules\\ImageResizer\\PowerToys.ImageResizer.dll", "modules\\ImageResizer\\PowerToys.ImageResizer.dll",
"modules\\ImageResizer\\PowerToys.ImageResizerExt.dll", "modules\\ImageResizer\\PowerToys.ImageResizerExt.dll",

View File

@@ -465,6 +465,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GPOWrapper", "src\common\GP
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GPOWrapperProjection", "src\common\GPOWrapperProjection\GPOWrapperProjection.csproj", "{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GPOWrapperProjection", "src\common\GPOWrapperProjection\GPOWrapperProjection.csproj", "{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Peek", "Peek", "{17B4FA70-001E-4D33-BBBB-0D142DBC2E20}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Peek", "src\modules\peek\peek\peek.vcxproj", "{A1425B53-3D61-4679-8623-E64A0D3D0A48}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.UI", "src\modules\peek\Peek.UI\Peek.UI.csproj", "{9D7A6DE0-7D27-424D-ABAE-41B2161F9A03}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.Common", "src\modules\peek\Peek.Common\Peek.Common.csproj", "{17A99C7C-0BFF-45BB-A9FD-63A0DDC105BB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Peek.FilePreviewer", "src\modules\peek\Peek.FilePreviewer\Peek.FilePreviewer.csproj", "{AA9F0AF8-7924-4D59-BAA1-E36F1304E0DC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIC", "src\modules\peek\WIC\WIC.csproj", "{21B69DE5-59FD-4C5D-A142-EF1C1C430EAF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarkdownPreviewHandlerCpp", "src\modules\previewpane\MarkdownPreviewHandlerCpp\MarkdownPreviewHandlerCpp.vcxproj", "{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarkdownPreviewHandlerCpp", "src\modules\previewpane\MarkdownPreviewHandlerCpp\MarkdownPreviewHandlerCpp.vcxproj", "{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GcodePreviewHandlerCpp", "src\modules\previewpane\GcodePreviewHandlerCpp\GcodePreviewHandlerCpp.vcxproj", "{5A5DD09D-723A-44D3-8F2B-293584C3D731}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GcodePreviewHandlerCpp", "src\modules\previewpane\GcodePreviewHandlerCpp\GcodePreviewHandlerCpp.vcxproj", "{5A5DD09D-723A-44D3-8F2B-293584C3D731}"
@@ -501,6 +513,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegistryPreviewExt", "src\m
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RegistryPreview", "RegistryPreview", "{929C1324-22E8-4412-A9A8-80E85F3985A5}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RegistryPreview", "RegistryPreview", "{929C1324-22E8-4412-A9A8-80E85F3985A5}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilePreviewCommon", "src\common\FilePreviewCommon\FilePreviewCommon.csproj", "{9EBAA524-0EDA-470B-95D4-39383285CBB2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerToys.Run.Plugin.PowerToys", "src\modules\launcher\Plugins\Microsoft.PowerToys.Run.Plugin.PowerToys\Microsoft.PowerToys.Run.Plugin.PowerToys.csproj", "{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.PowerToys.Run.Plugin.PowerToys", "src\modules\launcher\Plugins\Microsoft.PowerToys.Run.Plugin.PowerToys\Microsoft.PowerToys.Run.Plugin.PowerToys.csproj", "{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}"
EndProject EndProject
Global Global
@@ -1907,6 +1921,72 @@ Global
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.Release|x64.Build.0 = Release|x64 {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.ActiveCfg = Release|x64
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.Release|x86.Build.0 = Release|x64 {00EE9BA6-4E8F-43CA-960D-D4882F0FBB97}.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.ActiveCfg = Debug|ARM64
{ED9A1AC6-AEB0-4569-A6E9-E1696182B545}.Debug|ARM64.Build.0 = 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.ActiveCfg = Debug|x64
@@ -2099,6 +2179,18 @@ Global
{697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x64.Build.0 = Release|x64 {697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x64.Build.0 = Release|x64
{697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x86.ActiveCfg = Release|x64 {697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x86.ActiveCfg = Release|x64
{697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x86.Build.0 = Release|x64 {697C6AF9-0A48-49A9-866C-67DA12384015}.Release|x86.Build.0 = Release|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|ARM64.Build.0 = Debug|ARM64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|x64.ActiveCfg = Debug|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|x64.Build.0 = Debug|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|x86.ActiveCfg = Debug|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Debug|x86.Build.0 = Debug|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|ARM64.ActiveCfg = Release|ARM64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|ARM64.Build.0 = Release|ARM64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|x64.ActiveCfg = Release|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|x64.Build.0 = Release|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|x86.ActiveCfg = Release|x64
{9EBAA524-0EDA-470B-95D4-39383285CBB2}.Release|x86.Build.0 = Release|x64
{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|ARM64.ActiveCfg = Debug|ARM64 {500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|ARM64.Build.0 = Debug|ARM64 {500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|ARM64.Build.0 = Debug|ARM64
{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|x64.ActiveCfg = Debug|x64 {500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D}.Debug|x64.ActiveCfg = Debug|x64
@@ -2270,6 +2362,12 @@ Global
{C604B37E-9D0E-4484-8778-E8B31B0E1B3A} = {AB82E5DD-C32D-4F28-9746-2C780846188E} {C604B37E-9D0E-4484-8778-E8B31B0E1B3A} = {AB82E5DD-C32D-4F28-9746-2C780846188E}
{E599C30B-9DC8-4E5A-BF27-93D4CCEDE788} = {1AFB6476-670D-4E80-A464-657E01DFF482} {E599C30B-9DC8-4E5A-BF27-93D4CCEDE788} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{00EE9BA6-4E8F-43CA-960D-D4882F0FBB97} = {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}
{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} {ED9A1AC6-AEB0-4569-A6E9-E1696182B545} = {2F305555-C296-497E-AC20-5FA1B237996A}
{5A5DD09D-723A-44D3-8F2B-293584C3D731} = {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} {B3E869C4-8210-4EBD-A621-FF4C4AFCBFA9} = {2F305555-C296-497E-AC20-5FA1B237996A}
@@ -2288,6 +2386,7 @@ Global
{FD86C06A-FB54-4D5E-9831-1CDADF60D45F} = {929C1324-22E8-4412-A9A8-80E85F3985A5} {FD86C06A-FB54-4D5E-9831-1CDADF60D45F} = {929C1324-22E8-4412-A9A8-80E85F3985A5}
{697C6AF9-0A48-49A9-866C-67DA12384015} = {929C1324-22E8-4412-A9A8-80E85F3985A5} {697C6AF9-0A48-49A9-866C-67DA12384015} = {929C1324-22E8-4412-A9A8-80E85F3985A5}
{929C1324-22E8-4412-A9A8-80E85F3985A5} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC} {929C1324-22E8-4412-A9A8-80E85F3985A5} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
{9EBAA524-0EDA-470B-95D4-39383285CBB2} = {1AFB6476-670D-4E80-A464-657E01DFF482}
{500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D} = {4AFC9975-2456-4C70-94A4-84073C1CED93} {500DED3E-CFB5-4ED5-ACC6-02B3D6DC336D} = {4AFC9975-2456-4C70-94A4-84073C1CED93}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution

View File

@@ -20,10 +20,10 @@ Microsoft PowerToys is a set of utilities for power users to tune and streamline
| [Always on Top](https://aka.ms/PowerToysOverview_AoT) | [PowerToys Awake](https://aka.ms/PowerToysOverview_Awake) | [Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) | | [Always on Top](https://aka.ms/PowerToysOverview_AoT) | [PowerToys Awake](https://aka.ms/PowerToysOverview_Awake) | [Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) |
| [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) | [File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) | | [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) | [File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) |
| [Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) | | [Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) |
| [Mouse utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [Paste as Plain Text](https://aka.ms/PowerToysOverview_PastePlain) | [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | | [Mouse utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [Peek](https://aka.ms/PowerToysOverview_Peek) | [Paste as Plain Text](https://aka.ms/PowerToysOverview_PastePlain) |
| [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | [Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | | [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) |
| [Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) | [Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | | [Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) |
| [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) | | [Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) |
## Installing and running Microsoft PowerToys ## Installing and running Microsoft PowerToys

View File

@@ -16,6 +16,7 @@
<?define HostsProjectName="Hosts"?> <?define HostsProjectName="Hosts"?>
<?define PastePlainProjectName="PastePlain"?> <?define PastePlainProjectName="PastePlain"?>
<?define RegistryPreviewProjectName="RegistryPreview"?> <?define RegistryPreviewProjectName="RegistryPreview"?>
<?define PeekProjectName="Peek"?>
<?define RepoDir="$(var.ProjectDir)..\..\" ?> <?define RepoDir="$(var.ProjectDir)..\..\" ?>
<?if $(var.Platform) = x64?> <?if $(var.Platform) = x64?>

View File

@@ -6,8 +6,8 @@
<?define PowerPreviewFiles=?> <?define PowerPreviewFiles=?>
<?define PowerPreviewFilesPath=$(var.BinDir)modules\FileExplorerPreview\?> <?define PowerPreviewFilesPath=$(var.BinDir)modules\FileExplorerPreview\?>
<?define MonacoCustomLanguagesFiles=?> <?define MonacoPreviewHandlerCustomLanguagesFiles=?>
<?define MonacoCustomLanguagesFilesPath=$(var.BinDir)modules\FileExplorerPreview\customLanguages\?> <?define MonacoPreviewHandlerCustomLanguagesFilesPath=$(var.BinDir)modules\FileExplorerPreview\customLanguages\?>
<Fragment> <Fragment>
<DirectoryRef Id="FileExplorerPreviewInstallFolder" FileSource="$(var.PowerPreviewFilesPath)"> <DirectoryRef Id="FileExplorerPreviewInstallFolder" FileSource="$(var.PowerPreviewFilesPath)">
@@ -15,9 +15,9 @@
<!--PowerPreviewFiles_Component_Def--> <!--PowerPreviewFiles_Component_Def-->
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.MonacoCustomLanguagesFilesPath)"> <DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.MonacoPreviewHandlerCustomLanguagesFilesPath)">
<!-- Generated by generateFileComponents.ps1 --> <!-- Generated by generateFileComponents.ps1 -->
<!--MonacoCustomLanguagesFiles_Component_Def--> <!--MonacoPreviewHandlerCustomLanguagesFiles_Component_Def-->
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="FileExplorerPreviewComponentGroup"> <ComponentGroup Id="FileExplorerPreviewComponentGroup">
@@ -26,7 +26,7 @@
<RegistryValue Type="string" Name="RemoveFileExplorerPreviewFolder" Value="" KeyPath="yes"/> <RegistryValue Type="string" Name="RemoveFileExplorerPreviewFolder" Value="" KeyPath="yes"/>
</RegistryKey> </RegistryKey>
<RemoveFolder Id="RemoveFolderFileExplorerPreviewFolder" Directory="FileExplorerPreviewInstallFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderFileExplorerPreviewFolder" Directory="FileExplorerPreviewInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderMonacoCustomLanguagesFolder" Directory="MonacoPreviewHandlerMonacoCustomLanguagesFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderMonacoPreviewHandlerCustomLanguagesFolder" Directory="MonacoPreviewHandlerMonacoCustomLanguagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderMonacoPreviewHandlerMonacoSRCFolder" Directory="MonacoPreviewHandlerMonacoSRCFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderMonacoPreviewHandlerMonacoSRCFolder" Directory="MonacoPreviewHandlerMonacoSRCFolder" On="uninstall"/>
</Component> </Component>
</ComponentGroup> </ComponentGroup>

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 PeekFiles=?>
<?define PeekFilesPath=$(var.BinDir)modules\$(var.PeekProjectName)\?>
<?define PeekAssetsFiles=?>
<?define PeekAssetsFilesPath=$(var.BinDir)modules\$(var.PeekProjectName)\Assets\?>
<Fragment>
<DirectoryRef Id="PeekInstallFolder" FileSource="$(var.PeekFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--PeekFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="PeekMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.PeekProjectName)\Microsoft.UI.Xaml\Assets">
<Component Id="PeekMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Win64="yes" Guid="754276D6-F258-4161-8DED-9A6CBB168305">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="PeekMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PeekMicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG" Source="$(var.BinDir)modules\$(var.PeekProjectName)\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" />
</Component>
</DirectoryRef>
<DirectoryRef Id="PeekAssetsFolder" FileSource="$(var.PeekAssetsFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--PeekAssetsFiles_Component_Def-->
</DirectoryRef>
<ComponentGroup Id="PeekComponentGroup">
<Component Id="RemovePeekFolder" Guid="EF9422D7-FF0A-4887-968A-E61B53ACD23A" Directory="PeekInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemovePeekFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderPeekFolder" Directory="PeekInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPeekAssetsFolder" Directory="PeekAssetsFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPeekMicrosoftUIXamlFolder" Directory="PeekMicrosoftUIXamlInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPeekMicrosoftUIXamlAssetsFolder" Directory="PeekMicrosoftUIXamlAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="PeekMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" />
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureNuGetPackageBuildImports" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureNuGetPackageBuildImports" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\wix.props" Condition="Exists('..\wix.props')" /> <Import Project="..\wix.props" Condition="Exists('..\wix.props')" />
<Import Project="..\..\src\Version.props" /> <Import Project="..\..\src\Version.props" />
@@ -39,6 +39,7 @@ call "..\..\..\publish.cmd" arm64
call move /Y ..\..\..\KeyboardManager.wxs.bk ..\..\..\KeyboardManager.wxs call move /Y ..\..\..\KeyboardManager.wxs.bk ..\..\..\KeyboardManager.wxs
call move /Y ..\..\..\MeasureTool.wxs.bk ..\..\..\MeasureTool.wxs call move /Y ..\..\..\MeasureTool.wxs.bk ..\..\..\MeasureTool.wxs
call move /Y ..\..\..\MouseUtils.wxs.bk ..\..\..\MouseUtils.wxs call move /Y ..\..\..\MouseUtils.wxs.bk ..\..\..\MouseUtils.wxs
call move /Y ..\..\..\Peek.wxs.bk ..\..\..\Peek.wxs
call move /Y ..\..\..\PowerAccent.wxs.bk ..\..\..\PowerAccent.wxs call move /Y ..\..\..\PowerAccent.wxs.bk ..\..\..\PowerAccent.wxs
call move /Y ..\..\..\PowerRename.wxs.bk ..\..\..\PowerRename.wxs call move /Y ..\..\..\PowerRename.wxs.bk ..\..\..\PowerRename.wxs
call move /Y ..\..\..\Product.wxs.bk ..\..\..\Product.wxs call move /Y ..\..\..\Product.wxs.bk ..\..\..\Product.wxs
@@ -112,6 +113,7 @@ call "..\..\..\publish.cmd" arm64
<Compile Include="MeasureTool.wxs" /> <Compile Include="MeasureTool.wxs" />
<Compile Include="MouseUtils.wxs" /> <Compile Include="MouseUtils.wxs" />
<Compile Include="PastePlain.wxs" /> <Compile Include="PastePlain.wxs" />
<Compile Include="Peek.wxs" />
<Compile Include="PowerAccent.wxs" /> <Compile Include="PowerAccent.wxs" />
<Compile Include="PowerRename.wxs" /> <Compile Include="PowerRename.wxs" />
<Compile Include="RegistryPreview.wxs" /> <Compile Include="RegistryPreview.wxs" />
@@ -177,7 +179,7 @@ call "..\..\..\publish.cmd" arm64
<Target Name="AfterBuild"> <Target Name="AfterBuild">
</Target> </Target>
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">
<HeatDirectory Directory="..\..\src\modules\previewpane\MonacoPreviewHandler\monacoSRC" <HeatDirectory Directory="..\..\src\modules\FileExplorerPreview\monacoSRC"
PreprocessorVariable="var.MonacoSRCHarvestPath" PreprocessorVariable="var.MonacoSRCHarvestPath"
OutputFile="MonacoSRC.wxs" OutputFile="MonacoSRC.wxs"
ComponentGroupName="MonacoSRCHeatGenerated" ComponentGroupName="MonacoSRCHeatGenerated"

View File

@@ -67,6 +67,7 @@
<ComponentGroupRef Id="MeasureToolComponentGroup" /> <ComponentGroupRef Id="MeasureToolComponentGroup" />
<ComponentGroupRef Id="MouseUtilsComponentGroup" /> <ComponentGroupRef Id="MouseUtilsComponentGroup" />
<ComponentGroupRef Id="PastePlainComponentGroup" /> <ComponentGroupRef Id="PastePlainComponentGroup" />
<ComponentGroupRef Id="PeekComponentGroup" />
<ComponentGroupRef Id="PowerAccentComponentGroup" /> <ComponentGroupRef Id="PowerAccentComponentGroup" />
<ComponentGroupRef Id="PowerRenameComponentGroup" /> <ComponentGroupRef Id="PowerRenameComponentGroup" />
<ComponentGroupRef Id="RegistryPreviewComponentGroup" /> <ComponentGroupRef Id="RegistryPreviewComponentGroup" />
@@ -527,8 +528,16 @@
<Directory Id="HostsMicrosoftUIXamlAssetsInstallFolder" Name="Assets" /> <Directory Id="HostsMicrosoftUIXamlAssetsInstallFolder" Name="Assets" />
</Directory> </Directory>
</Directory> </Directory>
<!-- Launcher --> <!-- Peek -->
<Directory Id="PeekInstallFolder" Name="$(var.PeekProjectName)">
<Directory Id="PeekAssetsFolder" Name="Assets" />
<Directory Id="PeekMicrosoftUIXamlInstallFolder" Name="Microsoft.UI.Xaml">
<Directory Id="PeekMicrosoftUIXamlAssetsInstallFolder" Name="Assets" />
</Directory>
</Directory>
<!-- Launcher -->
<Directory Id="LauncherInstallFolder" Name="launcher"> <Directory Id="LauncherInstallFolder" Name="launcher">
<Directory Id="LauncherImagesFolder" Name="Images" /> <Directory Id="LauncherImagesFolder" Name="Images" />

View File

@@ -16,7 +16,7 @@
<!--WinAppSDKFiles_Component_Def--> <!--WinAppSDKFiles_Component_Def-->
</DirectoryRef> </DirectoryRef>
<?foreach ParentDirectory in SettingsV2InstallFolder;PowerRenameInstallFolder;MeasureToolInstallFolder;HostsInstallFolder;FileLocksmithInstallFolder;RegistryPreviewInstallFolder?> <?foreach ParentDirectory in SettingsV2InstallFolder;PowerRenameInstallFolder;MeasureToolInstallFolder;HostsInstallFolder;FileLocksmithInstallFolder;RegistryPreviewInstallFolder;PeekInstallFolder?>
<DirectoryRef Id="$(var.ParentDirectory)"> <DirectoryRef Id="$(var.ParentDirectory)">
<?foreach Language in $(var.WinAppSDKLocLanguageList)?> <?foreach Language in $(var.WinAppSDKLocLanguageList)?>
<?if $(var.Language) = af-ZA?> <?if $(var.Language) = af-ZA?>
@@ -374,6 +374,16 @@
<File Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <File Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <File Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
<Component
Id="Peek_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)PeekInstallFolder"
Guid="$(var.CompGUIDPrefix)07">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Peek_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Peek_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.PeekProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="Peek_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.PeekProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component>
<?undef IdSafeLanguage?> <?undef IdSafeLanguage?>
<?undef CompGUIDPrefix?> <?undef CompGUIDPrefix?>
<?endforeach?> <?endforeach?>
@@ -504,6 +514,7 @@
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" On="uninstall"/> <RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)PeekInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)PeekInstallFolder" On="uninstall"/>
<?undef IdSafeLanguage?> <?undef IdSafeLanguage?>
<?endforeach?> <?endforeach?>
</Component> </Component>

View File

@@ -42,9 +42,9 @@ Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListNa
#FileExplorerAdd-ons #FileExplorerAdd-ons
#TODO: There are multiple .deps.json files, make sure it works as expected #TODO: There are multiple .deps.json files, make sure it works as expected
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\FileExplorerPreview\PowerToys.SvgThumbnailProvider.deps.json"" -fileListName PowerPreviewFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs" Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\FileExplorerPreview\PowerToys.SvgThumbnailProvider.deps.json"" -fileListName PowerPreviewFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName MonacoCustomLanguagesFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\FileExplorerPreview\customLanguages""" Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName MonacoPreviewHandlerCustomLanguagesFiles -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\FileExplorerPreview\customLanguages"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerPreviewFiles"" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -regroot $registryroot" Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerPreviewFiles"" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MonacoCustomLanguagesFiles"" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -regroot $registryroot" Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MonacoPreviewHandlerCustomLanguagesFiles"" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -regroot $registryroot"
#FileLocksmith #FileLocksmith
#TODO: There are multiple .deps.json files, make sure it works as expected #TODO: There are multiple .deps.json files, make sure it works as expected
@@ -76,6 +76,12 @@ Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListNa
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\MeasureTool\PowerToys.MeasureToolUI.deps.json"" -fileListName MeasureToolFiles -wxsFilePath $PSScriptRoot\MeasureTool.wxs -isWinAppSdkProj 1" Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\MeasureTool\PowerToys.MeasureToolUI.deps.json"" -fileListName MeasureToolFiles -wxsFilePath $PSScriptRoot\MeasureTool.wxs -isWinAppSdkProj 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MeasureToolFiles"" -wxsFilePath $PSScriptRoot\MeasureTool.wxs -regroot $registryroot" Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MeasureToolFiles"" -wxsFilePath $PSScriptRoot\MeasureTool.wxs -regroot $registryroot"
#Peek
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\Peek\PowerToys.Peek.UI.deps.json"" -fileListName PeekFiles -wxsFilePath $PSScriptRoot\Peek.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName PeekAssetsFiles -wxsFilePath $PSScriptRoot\Peek.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\Peek\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PeekFiles"" -wxsFilePath $PSScriptRoot\Peek.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PeekAssetsFiles"" -wxsFilePath $PSScriptRoot\Peek.wxs -regroot $registryroot"
#PowerAccent #PowerAccent
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\PowerAccent\PowerToys.PowerAccent.deps.json"" -fileListName PowerAccentFiles -wxsFilePath $PSScriptRoot\PowerAccent.wxs" Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\PowerAccent\PowerToys.PowerAccent.deps.json"" -fileListName PowerAccentFiles -wxsFilePath $PSScriptRoot\PowerAccent.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerAccentFiles"" -wxsFilePath $PSScriptRoot\PowerAccent.wxs -regroot $registryroot" Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerAccentFiles"" -wxsFilePath $PSScriptRoot\PowerAccent.wxs -regroot $registryroot"

View File

@@ -1017,6 +1017,7 @@ const std::wstring WinAppSDKConsumers[] =
L"modules\\FileLocksmith", L"modules\\FileLocksmith",
L"modules\\Hosts", L"modules\\Hosts",
L"modules\\RegistryPreview", L"modules\\RegistryPreview",
L"modules\\Peek",
}; };
UINT __stdcall CreateWinAppSDKHardlinksCA(MSIHANDLE hInstall) UINT __stdcall CreateWinAppSDKHardlinksCA(MSIHANDLE hInstall)
@@ -1068,6 +1069,7 @@ const std::wstring PTInteropConsumers[] =
L"modules\\PowerAccent", L"modules\\PowerAccent",
L"modules\\FileLocksmith", L"modules\\FileLocksmith",
L"modules\\Hosts", L"modules\\Hosts",
L"modules\\Peek",
L"modules\\FileExplorerPreview", L"modules\\FileExplorerPreview",
L"modules\\MouseUtils\\MouseJumpUI", L"modules\\MouseUtils\\MouseJumpUI",
L"modules\\RegistryPreview", L"modules\\RegistryPreview",
@@ -1115,7 +1117,7 @@ UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
UINT er = ERROR_SUCCESS; UINT er = ERROR_SUCCESS;
std::wstring installationFolder, dotnetRuntimeFilesSrcDir, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir, std::wstring installationFolder, dotnetRuntimeFilesSrcDir, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir, hostsDir, fileLocksmithDir, imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir, hostsDir, fileLocksmithDir,
mouseJumpDir, registryPreviewDir; mouseJumpDir, registryPreviewDir, peekDir;
hr = WcaInitialize(hInstall, "CreateDotnetRuntimeHardlinksCA"); hr = WcaInitialize(hInstall, "CreateDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize"); ExitOnFailure(hr, "Failed to initialize");
@@ -1138,6 +1140,7 @@ UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\"; fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
mouseJumpDir = installationFolder + L"modules\\MouseUtils\\MouseJumpUI\\"; mouseJumpDir = installationFolder + L"modules\\MouseUtils\\MouseJumpUI\\";
registryPreviewDir = installationFolder + L"modules\\RegistryPreview\\"; registryPreviewDir = installationFolder + L"modules\\RegistryPreview\\";
peekDir = installationFolder + L"modules\\Peek\\";
for (auto file : dotnetRuntimeFiles) for (auto file : dotnetRuntimeFiles)
{ {
@@ -1156,6 +1159,7 @@ UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileLocksmithDir + file).c_str(), ec); std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileLocksmithDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (mouseJumpDir + file).c_str(), ec); std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (mouseJumpDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (registryPreviewDir + file).c_str(), ec); std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (registryPreviewDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (peekDir + file).c_str(), ec);
if (ec.value() != S_OK) if (ec.value() != S_OK)
{ {
@@ -1181,6 +1185,7 @@ UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (hostsDir + 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(), (mouseJumpDir + file).c_str(), ec); std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (mouseJumpDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (registryPreviewDir + file).c_str(), ec); std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (registryPreviewDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (peekDir + file).c_str(), ec);
if (ec.value() != S_OK) if (ec.value() != S_OK)
{ {
@@ -1275,7 +1280,7 @@ UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
UINT er = ERROR_SUCCESS; UINT er = ERROR_SUCCESS;
std::wstring installationFolder, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir, std::wstring installationFolder, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir, imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir,
hostsDir, fileLocksmithDir, mouseJumpDir, registryPreviewDir; hostsDir, fileLocksmithDir, mouseJumpDir, registryPreviewDir, peekDir;
hr = WcaInitialize(hInstall, "DeleteDotnetRuntimeHardlinksCA"); hr = WcaInitialize(hInstall, "DeleteDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize"); ExitOnFailure(hr, "Failed to initialize");
@@ -1297,6 +1302,7 @@ UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\"; fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
mouseJumpDir = installationFolder + L"modules\\MouseUtils\\MouseJumpUI\\"; mouseJumpDir = installationFolder + L"modules\\MouseUtils\\MouseJumpUI\\";
registryPreviewDir = installationFolder + L"modules\\RegistryPreview\\"; registryPreviewDir = installationFolder + L"modules\\RegistryPreview\\";
peekDir = installationFolder + L"modules\\Peek\\";
try try
{ {
@@ -1316,6 +1322,7 @@ UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
DeleteFile((fileLocksmithDir + file).c_str()); DeleteFile((fileLocksmithDir + file).c_str());
DeleteFile((mouseJumpDir + file).c_str()); DeleteFile((mouseJumpDir + file).c_str());
DeleteFile((registryPreviewDir + file).c_str()); DeleteFile((registryPreviewDir + file).c_str());
DeleteFile((peekDir + file).c_str());
} }
for (auto file : dotnetRuntimeWPFFiles) for (auto file : dotnetRuntimeWPFFiles)
@@ -1331,6 +1338,7 @@ UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
DeleteFile((hostsDir + file).c_str()); DeleteFile((hostsDir + file).c_str());
DeleteFile((mouseJumpDir + file).c_str()); DeleteFile((mouseJumpDir + file).c_str());
DeleteFile((registryPreviewDir + file).c_str()); DeleteFile((registryPreviewDir + file).c_str());
DeleteFile((peekDir + file).c_str());
} }
} }
catch (std::exception e) catch (std::exception e)
@@ -1364,7 +1372,7 @@ UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
} }
processes.resize(bytes / sizeof(processes[0])); processes.resize(bytes / sizeof(processes[0]));
std::array<std::wstring_view, 23> processesToTerminate = { std::array<std::wstring_view, 24> processesToTerminate = {
L"PowerToys.PowerLauncher.exe", L"PowerToys.PowerLauncher.exe",
L"PowerToys.Settings.exe", L"PowerToys.Settings.exe",
L"PowerToys.Awake.exe", L"PowerToys.Awake.exe",
@@ -1387,6 +1395,7 @@ UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
L"PowerToys.GcodePreviewHandler.exe", L"PowerToys.GcodePreviewHandler.exe",
L"PowerToys.PdfPreviewHandler.exe", L"PowerToys.PdfPreviewHandler.exe",
L"PowerToys.SvgPreviewHandler.exe", L"PowerToys.SvgPreviewHandler.exe",
L"PowerToys.Peek.UI.exe",
L"PowerToys.exe", L"PowerToys.exe",
}; };

View File

@@ -61,6 +61,7 @@
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\KeyboardManager.wxs"" ""$(ProjectDir)..\PowerToysSetup\KeyboardManager.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\KeyboardManager.wxs"" ""$(ProjectDir)..\PowerToysSetup\KeyboardManager.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\MeasureTool.wxs"" ""$(ProjectDir)..\PowerToysSetup\MeasureTool.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\MeasureTool.wxs"" ""$(ProjectDir)..\PowerToysSetup\MeasureTool.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\MouseUtils.wxs"" ""$(ProjectDir)..\PowerToysSetup\MouseUtils.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\MouseUtils.wxs"" ""$(ProjectDir)..\PowerToysSetup\MouseUtils.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Peek.wxs"" ""$(ProjectDir)..\PowerToysSetup\Peek.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\PowerAccent.wxs"" ""$(ProjectDir)..\PowerToysSetup\PowerAccent.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\PowerAccent.wxs"" ""$(ProjectDir)..\PowerToysSetup\PowerAccent.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\PowerRename.wxs"" ""$(ProjectDir)..\PowerToysSetup\PowerRename.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\PowerRename.wxs"" ""$(ProjectDir)..\PowerToysSetup\PowerRename.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Product.wxs"" ""$(ProjectDir)..\PowerToysSetup\Product.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Product.wxs"" ""$(ProjectDir)..\PowerToysSetup\Product.wxs.bk""""

View File

@@ -0,0 +1,306 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\Version.props" />
<PropertyGroup>
<TargetFramework>net7.0-windows</TargetFramework>
<RuntimeIdentifiers>win-x64;win-arm64</RuntimeIdentifiers>
<Version>$(Version).0</Version>
<Authors>Microsoft Corporation</Authors>
<Product>PowerToys</Product>
<Description>PowerToys FilePreviewCommon</Description>
<AssemblyName>PowerToys.FilePreviewCommon</AssemblyName>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Markdig.Signed" />
</ItemGroup>
<ItemGroup>
<None Update="customLanguages\reg.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="index.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSpecialLanguages.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\base\browser\ui\codicons\codicon\codicon.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\base\worker\workerMain.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\abap\abap.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\apex\apex.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\azcli\azcli.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\bat\bat.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\cameligo\cameligo.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\clojure\clojure.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\coffee\coffee.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\cpp\cpp.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\csharp\csharp.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\csp\csp.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\css\css.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\dart\dart.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\dockerfile\dockerfile.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\ecl\ecl.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\fsharp\fsharp.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\go\go.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\graphql\graphql.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\handlebars\handlebars.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\hcl\hcl.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\html\html.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\ini\ini.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\javascript\javascript.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\java\java.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\julia\julia.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\kotlin\kotlin.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\less\less.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\lexon\lexon.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\lua\lua.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\m3\m3.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\markdown\markdown.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\mips\mips.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\msdax\msdax.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\mysql\mysql.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\objective-c\objective-c.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\pascaligo\pascaligo.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\pascal\pascal.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\perl\perl.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\pgsql\pgsql.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\php\php.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\postiats\postiats.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\powerquery\powerquery.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\powershell\powershell.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\pug\pug.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\python\python.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\razor\razor.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\redis\redis.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\redshift\redshift.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\restructuredtext\restructuredtext.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\ruby\ruby.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\rust\rust.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\r\r.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\sb\sb.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\scala\scala.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\scheme\scheme.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\scss\scss.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\shell\shell.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\solidity\solidity.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\sophia\sophia.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\sql\sql.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\st\st.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\swift\swift.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\systemverilog\systemverilog.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\tcl\tcl.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\twig\twig.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\typescript\typescript.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\vb\vb.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\xml\xml.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\basic-languages\yaml\yaml.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.css">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.de.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.es.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.fr.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.it.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.ja.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.ko.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.ru.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.zh-cn.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\editor\editor.main.nls.zh-tw.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\css\cssMode.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\css\cssWorker.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\html\htmlMode.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\html\htmlWorker.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\json\jsonMode.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\json\jsonWorker.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\typescript\tsMode.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\language\typescript\tsWorker.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monacoSRC\min\vs\loader.js">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="monaco_languages.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -2,7 +2,7 @@
// The Microsoft Corporation licenses this file to you under the MIT license. // The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information. // See the LICENSE file in the project root for more information.
namespace Microsoft.PowerToys.PreviewHandler.Monaco.Formatters namespace Microsoft.PowerToys.FilePreviewCommon.Monaco.Formatters
{ {
public interface IFormatter public interface IFormatter
{ {

View File

@@ -5,7 +5,7 @@
using System.Text.Encodings.Web; using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
namespace Microsoft.PowerToys.PreviewHandler.Monaco.Formatters namespace Microsoft.PowerToys.FilePreviewCommon.Monaco.Formatters
{ {
public class JsonFormatter : IFormatter public class JsonFormatter : IFormatter
{ {

View File

@@ -5,7 +5,7 @@
using System.Text; using System.Text;
using System.Xml; using System.Xml;
namespace Microsoft.PowerToys.PreviewHandler.Monaco.Formatters namespace Microsoft.PowerToys.FilePreviewCommon.Monaco.Formatters
{ {
public class XmlFormatter : IFormatter public class XmlFormatter : IFormatter
{ {

View File

@@ -10,7 +10,7 @@ using Markdig.Renderers.Html;
using Markdig.Syntax; using Markdig.Syntax;
using Markdig.Syntax.Inlines; using Markdig.Syntax.Inlines;
namespace Microsoft.PowerToys.PreviewHandler.Markdown namespace Microsoft.PowerToys.FilePreviewCommon
{ {
/// <summary> /// <summary>
/// Callback if extension blocks external images. /// Callback if extension blocks external images.

View File

@@ -0,0 +1,27 @@
// Copyright (c) Microsoft Corporation
// 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;
namespace Microsoft.PowerToys.FilePreviewCommon
{
public static class Helper
{
public static void CleanupTempDir(string folder)
{
try
{
var dir = new DirectoryInfo(folder);
foreach (var file in dir.EnumerateFiles("*.html"))
{
file.Delete();
}
}
catch (Exception)
{
}
}
}
}

View File

@@ -0,0 +1,52 @@
// Copyright (c) Microsoft Corporation
// 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.IO;
using Markdig;
namespace Microsoft.PowerToys.FilePreviewCommon
{
public static class MarkdownHelper
{
/// <summary>
/// Markdown HTML header for light theme.
/// </summary>
private static readonly string HtmlLightHeader = "<!doctype html><style>body{width:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}.container{padding:5%}body img{max-width:100%;height:auto}body h1,body h2,body h3,body h4,body h5,body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}body h1,body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}body h3{font-size:1.25em}body h4{font-size:1em}body h5{font-size:.875em}body h6{font-size:.85em;color:#6a737d}pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:#f6f8fa;border-radius:3px;padding:16px;font-size:85%}a{color:#0366d6}strong{font-weight:600}em{font-style:italic}code{padding:.2em .4em;margin:0;font-size:85%;background-color:#f6f8fa;border-radius:3px}hr{border-color:#EEE -moz-use-text-color #FFF;border-style:solid none;border-width:.5px 0;margin:18px 0}table{display:block;width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}tbody{display:table-row-group;vertical-align:middle;border-color:inherit;vertical-align:inherit;border-color:inherit}table tr{background-color:#fff;border-top:1px solid #c6cbd1}tr{display:table-row;vertical-align:inherit;border-color:inherit}table td,table th{padding:6px 13px;border:1px solid #dfe2e5}th{font-weight:600;display:table-cell;vertical-align:inherit;font-weight:bold;text-align:-internal-center}thead{display:table-header-group;vertical-align:middle;border-color:inherit}td{display:table-cell;vertical-align:inherit}code,pre,tt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;color:#24292e;overflow-x:auto}pre code{font-size:inherit;color:inherit;word-break:normal}blockquote{background-color:#fff;border-radius:3px;padding:15px;font-size:14px;display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:40px;margin-inline-end:40px;padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}</style><body><div class=\"container\">";
/// <summary>
/// Markdown HTML header for dark theme.
/// </summary>
private static readonly string HtmlDarkHeader = "<!doctype html><style>body{width:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";font-size:1rem;font-weight:400;line-height:1.5;color:#d4d4d4;text-align:left;background-color:#1e1e1e}.container{padding:5%}body img{max-width:100%;height:auto}body h1,body h2,body h3,body h4,body h5,body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}body h1,body h2{padding-bottom:.3em;border-bottom:1px solid #474747}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}body h3{font-size:1.25em}body h4{font-size:1em}body h5{font-size:.875em}body h6{font-size:.85em;color:#d4d4d4}pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:#161616;border-radius:3px;padding:16px;font-size:85%}a{color:#0366d6}strong{font-weight:600}em{font-style:italic}code{padding:.2em .4em;margin:0;font-size:85%;background-color:#161616;border-radius:3px}hr{border-color:#EEE -moz-use-text-color #FFF;border-style:solid none;border-width:.5px 0;margin:18px 0}table{display:block;width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}tbody{display:table-row-group;vertical-align:middle;border-color:inherit;vertical-align:inherit;border-color:inherit}table tr{background-color:#1e1e1e;border-top:1px solid #c6cbd1}tr{display:table-row;vertical-align:inherit;border-color:inherit}table td,table th{padding:6px 13px;border:1px solid #474747}th{font-weight:600;display:table-cell;vertical-align:inherit;font-weight:bold;text-align:-internal-center}thead{display:table-header-group;vertical-align:middle;border-color:inherit}td{display:table-cell;vertical-align:inherit}code,pre,tt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;color:#d4d4d4;overflow-x:auto}pre code{font-size:inherit;color:inherit;word-break:normal}blockquote{background-color:#282828;border-radius:3px;padding:15px;font-size:14px;display:block;margin-block-start:1em;margin-block-end:1em;margin-inline-start:40px;margin-inline-end:40px;padding:0 1em;color:#d4d4d4;border-left:.25em solid #d4d4d4}</style><body><div class=\"container\">";
/// <summary>
/// Markdown HTML footer.
/// </summary>
private static readonly string HtmlFooter = "</div></body></html>";
public static string MarkdownHtml(string fileContent, string theme, string filePath, ImagesBlockedCallBack imagesBlockedCallBack)
{
var htmlHeader = theme == "dark" ? HtmlDarkHeader : HtmlLightHeader;
// Extension to modify markdown AST.
HTMLParsingExtension extension = new HTMLParsingExtension(imagesBlockedCallBack);
extension.FilePath = Path.GetDirectoryName(filePath);
// if you have a string with double space, some people view it as a new line.
// while this is against spec, even GH supports this. Technically looks like GH just trims whitespace
// https://github.com/microsoft/PowerToys/issues/10354
var softlineBreak = new Markdig.Extensions.Hardlines.SoftlineBreakAsHardlineExtension();
MarkdownPipelineBuilder pipelineBuilder;
pipelineBuilder = new MarkdownPipelineBuilder().UseAdvancedExtensions().UseEmojiAndSmiley().UseYamlFrontMatter().UseMathematics();
pipelineBuilder.Extensions.Add(extension);
pipelineBuilder.Extensions.Add(softlineBreak);
MarkdownPipeline pipeline = pipelineBuilder.Build();
string parsedMarkdown = Markdown.ToHtml(fileContent, pipeline);
string markdownHTML = $"{htmlHeader}{parsedMarkdown}{HtmlFooter}";
return markdownHTML;
}
}
}

View File

@@ -0,0 +1,114 @@
// Copyright (c) Microsoft Corporation
// 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.Globalization;
using System.IO;
using System.Reflection;
using System.Text.Json;
using Microsoft.PowerToys.FilePreviewCommon.Monaco.Formatters;
namespace Microsoft.PowerToys.FilePreviewCommon
{
public static class MonacoHelper
{
/// <summary>
/// Name of the virtual host
/// </summary>
public const string VirtualHostName = "PowerToysLocalMonaco";
/// <summary>
/// Formatters applied before rendering the preview
/// </summary>
public static readonly IReadOnlyCollection<IFormatter> Formatters = new List<IFormatter>
{
new JsonFormatter(),
new XmlFormatter(),
}.AsReadOnly();
/// <summary>
/// Gets the path of the current assembly.
/// </summary>
/// <remarks>
/// Source: https://stackoverflow.com/a/283917/14774889
/// </remarks>
public static string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().Location;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
public static string MonacoDirectory
{
get
{
// TODO: common monaco folder
string codeBase = Assembly.GetExecutingAssembly().Location;
string path = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(codeBase), "..", "FileExplorerPreview"));
return path;
}
}
public static JsonDocument GetLanguages()
{
JsonDocument languageListDocument;
using (StreamReader jsonFileReader = new StreamReader(new FileStream(MonacoDirectory + "\\monaco_languages.json", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
languageListDocument = JsonDocument.Parse(jsonFileReader.ReadToEnd());
jsonFileReader.Close();
}
return languageListDocument;
}
/// <summary>
/// Converts a file extension to a language monaco id.
/// </summary>
/// <param name="fileExtension">The extension of the file (without the dot).</param>
/// <returns>The monaco language id</returns>
public static string GetLanguage(string fileExtension)
{
fileExtension = fileExtension.ToLower(CultureInfo.CurrentCulture);
try
{
JsonDocument languageListDocument = GetLanguages();
JsonElement languageList = languageListDocument.RootElement.GetProperty("list");
foreach (JsonElement e in languageList.EnumerateArray())
{
for (int j = 0; j < e.GetProperty("extensions").GetArrayLength(); j++)
{
if (e.GetProperty("extensions")[j].ToString() == fileExtension)
{
return e.GetProperty("id").ToString();
}
}
}
return "plaintext";
}
catch (Exception)
{
return "plaintext";
}
}
public static string ReadIndexHtml()
{
string html;
using (StreamReader htmlFileReader = new StreamReader(new FileStream(MonacoDirectory + "\\index.html", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
html = htmlFileReader.ReadToEnd();
htmlFileReader.Close();
}
return html;
}
}
}

View File

@@ -25,7 +25,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- Set charset --> <!-- Set charset -->
<meta charset="utf-8" /> <meta charset="utf-8" />
<!-- Title (normally not diaplayd)--> <!-- Title (normally not displayed)-->
<title>Previewer for developer Files</title> <title>Previewer for developer Files</title>
<style> <style>
/* Fits content to window size */ /* Fits content to window size */

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