[installer] Support per-user installation (#24087)

* Add per user installer

* Separate upgrade codes for per machine and per user installation
Move per machine check to bootstrapper
Move all defines to common.wxs
Fix CI

* Update installer/PowerToysSetup/generateFileList.ps1

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

* Update installer/PowerToysSetup/generateAllFileComponents.ps1

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

* Update installer/PowerToysSetup/generateFileList.ps1

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

* expect.txt

* Revert "Update installer/PowerToysSetup/generateFileList.ps1"

This reverts commit 34545dab9c.

* Update release CI to build both installers

* Revert bundle name change

It messes up app ID for per-user installation which ends up breaking winget update
of the per-user PT

* spellcheck

* Fix bad merge

* Add RegistryPreview

* Include backup_restore_settings.json

* Revert testing endpoint change

---------

Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
This commit is contained in:
Stefan Markovic
2023-03-31 12:23:57 +02:00
committed by GitHub
parent 07579c910a
commit 870f8e3571
48 changed files with 3263 additions and 1128 deletions

View File

@@ -1,14 +1,27 @@
aaaa aaaa
AAAAEF
AAB
AABAD
AACB
AACD
AAD
AADF
abap
ABE
abgr abgr
abi abi
ABlocked ABlocked
ABOUTBOX ABOUTBOX
Abug Abug
ACA
accctrl accctrl
Acceleratorkeys Acceleratorkeys
ACCEPTFILES ACCEPTFILES
ACCESSDENIED ACCESSDENIED
accessibilityinsights accessibilityinsights
ACDB
ACFC
ACFF
Acl Acl
aclapi aclapi
AColumn AColumn
@@ -24,7 +37,18 @@ adml
admx admx
advapi advapi
advfirewall advfirewall
AEAA
AEAD
AECC
AED
AEE
AEEB
AFAE
AFAEFC
AFDA
AFE
AFeature AFeature
AFFE
AFFINETRANSFORM AFFINETRANSFORM
AFX AFX
AGGREGATABLE AGGREGATABLE
@@ -49,6 +73,7 @@ ansicolor
ANull ANull
AOC AOC
aocfnapldcnfbofgmbbllojgocaelgdd aocfnapldcnfbofgmbbllojgocaelgdd
AOT
APARTMENTTHREADED APARTMENTTHREADED
APeriod APeriod
APIENTRY APIENTRY
@@ -62,7 +87,6 @@ Applets
Applicationcan Applicationcan
applicationconfiguration applicationconfiguration
applicationframehost applicationframehost
Applist
applog applog
appmanifest appmanifest
APPNAME APPNAME
@@ -110,13 +134,36 @@ AValid
awakeness awakeness
awakeversion awakeversion
AYUV AYUV
azcli
azman azman
azor
backtracer backtracer
BAF
bak bak
BBE
bbwe bbwe
BCA
BCB
BCCE
BCCEA
bck bck
BDB
BDBAD
BDCC
BDDF
BDFB
BEAA
BEB
BEEAADF
BEEC
BEFA
betadele betadele
betsegaw betsegaw
BFC
BFDE
BFEB
BFF
BFFA
BGR BGR
bgra bgra
bhid bhid
@@ -169,28 +216,46 @@ BUTTONUP
BValue BValue
BYPOSITION BYPOSITION
bytearray bytearray
CABD
CALG CALG
callbackptr callbackptr
cameligo
Cangjie Cangjie
CANRENAME CANRENAME
CAPTUREBLT CAPTUREBLT
CAPTURECHANGED CAPTURECHANGED
CAtl CAtl
CBA
CBB
CBF
CCCCDE
cch cch
CCHDEVICENAME CCHDEVICENAME
CCHDEVICENAME
CCHFORMNAME
CCHFORMNAME CCHFORMNAME
CCom CCom
CContext CContext
CDAC
CDBF
CDCE
CDD
CDE
cdecl cdecl
CDeclaration CDeclaration
CDEF CDEF
cdpx cdpx
CEAF
CEBAC
CEBD
CECB
CENTERALIGN CENTERALIGN
ceq ceq
certlm certlm
certmgr certmgr
CFAADB
CFBBF
CFEE
CFFEE
CFFF
cguid cguid
changecursor changecursor
Changemove Changemove
@@ -199,7 +264,7 @@ CHILDACTIVATE
CHILDWINDOW CHILDWINDOW
chrdavis chrdavis
Chrzan Chrzan
cht CHT
CIELAB CIELAB
CIEXYZ CIEXYZ
cim cim
@@ -290,6 +355,7 @@ cppruntime
cppstd cppstd
cppwinrt cppwinrt
CProj CProj
createdump
CREATESCHEDULEDTASK CREATESCHEDULEDTASK
CREATESTRUCT CREATESTRUCT
CREATEWINDOWFAILED CREATEWINDOWFAILED
@@ -304,7 +370,6 @@ CSRW
CStyle CStyle
CSY CSY
CTest CTest
Ctl
CTRLALTDEL CTRLALTDEL
Ctrls Ctrls
Ctx Ctx
@@ -324,14 +389,15 @@ cxfksword
CXSCREEN CXSCREEN
CXSMICON CXSMICON
CXVIRTUALSCREEN CXVIRTUALSCREEN
cxxopts
cyberrex cyberrex
CYSCREEN CYSCREEN
CYSMICON CYSMICON
CYVIRTUALSCREEN CYVIRTUALSCREEN
cziplib cziplib
DAA
Dac Dac
dacl dacl
DAF
damienleroy damienleroy
DARKPURPLE DARKPURPLE
DARKTEAL DARKTEAL
@@ -342,12 +408,21 @@ dataversion
DATAW DATAW
davidegiacometti davidegiacometti
Dayof Dayof
DBAE
DBB
DBBDA
DBDE
Dbg Dbg
Dbghelp Dbghelp
DBLCLKS DBLCLKS
DBLEPSILON DBLEPSILON
DCAB
DCapture DCapture
DCBA DCBA
DCBC
DCCB
DCEFCB
DCF
DCOM DCOM
dcommon dcommon
dcomp dcomp
@@ -356,6 +431,8 @@ DCompiler
DComposition DComposition
DCR DCR
DCs DCs
DDCDD
DDCE
DDevice DDevice
ddf ddf
DDxgi DDxgi
@@ -364,6 +441,7 @@ debian
debugbreak debugbreak
DECLAR DECLAR
declspec declspec
DED
Dedup Dedup
DEFAULTBOOTSTRAPPERINSTALLFOLDER DEFAULTBOOTSTRAPPERINSTALLFOLDER
DEFAULTCOLOR DEFAULTCOLOR
@@ -391,16 +469,18 @@ DESKTOPABSOLUTEEDITING
DESKTOPABSOLUTEPARSING DESKTOPABSOLUTEPARSING
desktopshorcutinstalled desktopshorcutinstalled
desktopwindowxamlsource desktopwindowxamlsource
deu DEU
devblogs devblogs
devdocs devdocs
devenum devenum
devmgmt devmgmt
DEVMODEW DEVMODEW
DEVMODEW
DEVMON DEVMON
devpkey devpkey
DEVSOURCE DEVSOURCE
DFAB
DFB
DFBEA
DIIRFLAG DIIRFLAG
dimm dimm
directshow directshow
@@ -465,13 +545,41 @@ dxgi
dxgidebug dxgidebug
dxgiformat dxgiformat
dxguid dxguid
EAAFE
EABF
EAC
EADC
EAF
EBCF
EBD
EBE
ecl
ecount ecount
EData EData
EDB
EDCCC
EDFAE
Edid Edid
edis
EDITKEYBOARD EDITKEYBOARD
editkeyboardwindow editkeyboardwindow
EDITSHORTCUTS EDITSHORTCUTS
editshortcutswindow editshortcutswindow
edshift
EEA
EEB
EEBBE
EEBD
EED
EEDA
EEEE
EEF
EEFA
EFB
EFC
EFDD
EFE
EFFEFC
EFile EFile
egfile egfile
ekus ekus
@@ -483,7 +591,7 @@ ENABLEDPOPUP
endpointvolume endpointvolume
endregion endregion
ENTERSIZEMOVE ENTERSIZEMOVE
enu ENU
EOAC EOAC
epicgames epicgames
epu epu
@@ -495,8 +603,8 @@ ERRORLEVEL
ERRORTITLE ERRORTITLE
ESettings ESettings
esize esize
esn
esrp esrp
estructuredtext
etl etl
etw etw
EUQ EUQ
@@ -530,7 +638,11 @@ exstyle
EXTENDEDKEY EXTENDEDKEY
EXTENDEDVERBS EXTENDEDVERBS
eyetracker eyetracker
FABC
fabricbot fabricbot
FAEDDA
FAF
FAFD
fancymouse fancymouse
fancyzone fancyzone
fancyzones fancyzones
@@ -538,8 +650,35 @@ FANCYZONESDRAWLAYOUTTEST
FANCYZONESEDITOR FANCYZONESEDITOR
Farbraum Farbraum
FARPROC FARPROC
FBB
FBC
FBDE
FBF
FCAE
FCB
FCCFF
FCD
FCDB
FCDD
FCE
FDB
FDBF
FDC
FDCD
FDE
FDEF
FDF
fdw fdw
FECF
FEDF
FEEF
feimage feimage
FFB
FFBCF
FFBE
FFDDD
FFEB
FFEBEF
fff fff
fileapi fileapi
FILEEXPLORER FILEEXPLORER
@@ -602,7 +741,6 @@ GETSTATE
GETTEXT GETTEXT
GETTEXTLENGTH GETTEXTLENGTH
GHND GHND
Globbing
GMEM GMEM
GNumber GNumber
google google
@@ -610,6 +748,7 @@ gpedit
gpo gpo
GPT GPT
gpu gpu
graphql
GSM GSM
gtm gtm
gui gui
@@ -783,6 +922,7 @@ INSTALLFOLDERTOPREVIOUSINSTALLFOLDER
INSTALLLOCATION INSTALLLOCATION
INSTALLMESSAGE INSTALLMESSAGE
INSTALLPROPERTY INSTALLPROPERTY
installscopeperuser
INSTALLSTARTMENUSHORTCUT INSTALLSTARTMENUSHORTCUT
INSTALLSTATE INSTALLSTATE
Inste Inste
@@ -823,10 +963,11 @@ jgeosdfsdsgmkedfgdfgdfgbkmhcgcflmi
jjw jjw
jobject jobject
jpe jpe
jpn JPN
jpnime jpnime
Jsons Jsons
jsonval jsonval
julia
junja junja
jxr jxr
jyuwono jyuwono
@@ -848,14 +989,17 @@ keynum
keyremaps keyremaps
Keytool Keytool
keyup keyup
Kfiles
KILLFOCUS KILLFOCUS
killrunner killrunner
Knownfolders Knownfolders
kotlin
KSPROPERTY KSPROPERTY
Kybd Kybd
LAlt LAlt
Lambson Lambson
langword langword
lastcodeanalysissucceeded
Lastdevice Lastdevice
Laute Laute
laviusmotileng laviusmotileng
@@ -880,6 +1024,7 @@ LError
Lessthan Lessthan
LEVELID LEVELID
LExit LExit
lexon
lhs lhs
lhwnd lhwnd
LIBID LIBID
@@ -1000,7 +1145,6 @@ Metadatas
metafile metafile
mfapi mfapi
mfc mfc
mfcm
mfidl mfidl
mfobjects mfobjects
mfplat mfplat
@@ -1064,6 +1208,7 @@ msc
msclr msclr
mscorlib mscorlib
msdata msdata
msdax
msedge msedge
MSGFLT MSGFLT
MSIFASTINSTALL MSIFASTINSTALL
@@ -1087,6 +1232,7 @@ multizone
mvvm mvvm
myfile myfile
MYICON MYICON
mysql
NAMECHANGE NAMECHANGE
nameof nameof
NCACTIVATE NCACTIVATE
@@ -1132,6 +1278,7 @@ nielslaute
NIF NIF
NLD NLD
nlog nlog
nls
NLSTEXT NLSTEXT
NOACTIVATE NOACTIVATE
NOAGGREGATION NOAGGREGATION
@@ -1254,6 +1401,7 @@ PARENTRELATIVEPARSING
PArgb PArgb
parray parray
PARTIALCONFIRMATIONDIALOGTITLE PARTIALCONFIRMATIONDIALOGTITLE
pascaligo
pasteplain pasteplain
PATCOPY PATCOPY
pathcch pathcch
@@ -1276,7 +1424,6 @@ pdw
PDWORD PDWORD
pedrolamas pedrolamas
Pels Pels
Pels
PERCEIVEDFLAG PERCEIVEDFLAG
perfmon perfmon
pesi pesi
@@ -1286,6 +1433,7 @@ pfn
pfo pfo
pft pft
pgp pgp
pgsql
pguid pguid
PHANDLE PHANDLE
PHANDLER PHANDLER
@@ -1315,10 +1463,12 @@ Pnp
Popups Popups
POPUPWINDOW POPUPWINDOW
posix posix
postiats
poweraccent poweraccent
powerlauncher powerlauncher
POWEROCR POWEROCR
powerpreview powerpreview
powerquery
powerrename powerrename
POWERRENAMECONTEXTMENU POWERRENAMECONTEXTMENU
powerrenameinput powerrenameinput
@@ -1326,6 +1476,7 @@ POWERRENAMETEST
powertoy powertoy
POWERTOYNAME POWERTOYNAME
powertoyssetup powertoyssetup
powertoysusersetup
Powrprof Powrprof
ppidl ppidl
ppmt ppmt
@@ -1428,8 +1579,8 @@ RECTDESTINATION
RECTL RECTL
rectp rectp
rects rects
recyclebin
redirectedfrom redirectedfrom
redis
Redist Redist
redistributable redistributable
reencode reencode
@@ -1446,10 +1597,12 @@ REGFILTERPINS
REGISTERCLASSFAILED REGISTERCLASSFAILED
REGISTRYHEADER REGISTRYHEADER
registrypath registrypath
registryroot
registrypreview registrypreview
REGISTRYPREVIEWEXT REGISTRYPREVIEWEXT
regkey regkey
REGPINTYPES REGPINTYPES
regroot
regsvr regsvr
reinit reinit
REINSTALLMODE REINSTALLMODE
@@ -1459,6 +1612,7 @@ remappings
REMAPSUCCESSFUL REMAPSUCCESSFUL
REMAPUNSUCCESSFUL REMAPUNSUCCESSFUL
Remotable Remotable
Removedir
Removelnk Removelnk
renamable renamable
RENAMEONCOLLISION RENAMEONCOLLISION
@@ -1521,12 +1675,11 @@ rungameid
RUNLEVEL RUNLEVEL
runsettings runsettings
runtimeclass runtimeclass
runtimeconfig
runtimedepsjsonpath runtimedepsjsonpath
runtimeobject runtimeobject
runtimepack runtimepack
runtimes runtimes
rus RUS
Rutkas Rutkas
RValue RValue
rvm rvm
@@ -1593,7 +1746,6 @@ SHGFI
Shl Shl
shldisp shldisp
shlobj shlobj
Shlw
shlwapi shlwapi
shmem shmem
shobjidl shobjidl
@@ -1699,6 +1851,7 @@ stdcpplatest
STDMETHODCALLTYPE STDMETHODCALLTYPE
STDMETHODIMP STDMETHODIMP
stefan stefan
stefansjfw
Stereolithography Stereolithography
STGM STGM
STGMEDIUM STGMEDIUM
@@ -1749,6 +1902,7 @@ SYSMENU
SYSTEMAPPS SYSTEMAPPS
systemroot systemroot
SYSTEMTIME SYSTEMTIME
systemverilog
sysvol sysvol
Tadele Tadele
talynone talynone
@@ -1768,6 +1922,7 @@ taskkill
tasklist tasklist
taskschd taskschd
tchar tchar
tcl
Tcollab Tcollab
tcscpy tcscpy
TCustom TCustom
@@ -1835,6 +1990,7 @@ TYPESHORTCUT
UAC UAC
UAL UAL
uap uap
uby
udit udit
Udk Udk
Udp Udp
@@ -2092,6 +2248,7 @@ xcopy
XDocument XDocument
XDOWN XDOWN
XElement XElement
xfd
XFile XFile
XIncrement XIncrement
XLoc XLoc
@@ -2110,7 +2267,7 @@ yinle
yinwang yinwang
yinyue yinyue
YOffset YOffset
YResolution ypescript
YResolution YResolution
YStr YStr
YUY YUY

3
.gitignore vendored
View File

@@ -345,6 +345,3 @@ src/common/Telemetry/*.etl
/src/modules/previewpane/SvgThumbnailProvider/$(SolutionDir)$(Platform)/$(Configuration)/modules/FileExplorerPreview/SvgThumbnailProvider.xml /src/modules/previewpane/SvgThumbnailProvider/$(SolutionDir)$(Platform)/$(Configuration)/modules/FileExplorerPreview/SvgThumbnailProvider.xml
/src/modules/powerrename/ui/RCa24464 /src/modules/powerrename/ui/RCa24464
/src/modules/powerrename/ui/RCb24464 /src/modules/powerrename/ui/RCb24464
# Generated installer file for Monaco source files.
/installer/PowerToysSetup/MonacoSRC.wxs

View File

@@ -251,6 +251,7 @@
"modules\\FileExplorerPreview\\Microsoft.Web.WebView2.Wpf.dll", "modules\\FileExplorerPreview\\Microsoft.Web.WebView2.Wpf.dll",
"modules\\FileExplorerPreview\\WebView2Loader.dll", "modules\\FileExplorerPreview\\WebView2Loader.dll",
"modules\\Hosts\\Microsoft.Graphics.Canvas.Interop.dll", "modules\\Hosts\\Microsoft.Graphics.Canvas.Interop.dll",
"modules\\Hosts\\clrcompression.dll",
"modules\\launcher\\e_sqlite3.dll", "modules\\launcher\\e_sqlite3.dll",
"modules\\launcher\\LazyCache.dll", "modules\\launcher\\LazyCache.dll",
"modules\\launcher\\SQLitePCLRaw.batteries_v2.dll", "modules\\launcher\\SQLitePCLRaw.batteries_v2.dll",

View File

@@ -5,8 +5,8 @@
{ {
"MatchedPath": [ "MatchedPath": [
"PowerToysSetupCustomActions.dll", "PowerToysSetupCustomActions.dll",
"PowerToysSetup-*.exe", "PowerToys*Setup-*.exe",
"PowerToysSetup-*.msi" "PowerToys*Setup-*.msi"
], ],
"SigningInfo": { "SigningInfo": {
"Operations": [ "Operations": [

View File

@@ -153,7 +153,7 @@ steps:
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1' filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
- task: VSBuild@1 - task: VSBuild@1
displayName: 'Build PowerToys MSI' displayName: 'Build PowerToys per-machine MSI'
inputs: inputs:
solution: '**\installer\PowerToysSetup.sln' solution: '**\installer\PowerToysSetup.sln'
vsVersion: 17.0 vsVersion: 17.0
@@ -163,7 +163,7 @@ steps:
maximumCpuCount: true maximumCpuCount: true
- task: VSBuild@1 - task: VSBuild@1
displayName: 'Build PowerToys Bootstrapper' displayName: 'Build PowerToys per-machine Bootstrapper'
inputs: inputs:
solution: '**\installer\PowerToysSetup.sln' solution: '**\installer\PowerToysSetup.sln'
vsVersion: 17.0 vsVersion: 17.0
@@ -173,6 +173,43 @@ steps:
clean: false clean: false
maximumCpuCount: true maximumCpuCount: true
- task: PowerShell@2
displayName: Clean installer dir before building per-user installer
inputs:
targetType: inline
script: git clean -xfd -e *exe -- .\installer\
pwsh: true
- task: NuGetCommand@2
displayName: Restore NuGet packages for PowerToysSetup.sln
inputs:
command: restore
feedsToUse: config
configPath: NuGet.config
restoreSolution: installer\PowerToysSetup.sln
restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'
- task: VSBuild@1
displayName: 'Build PowerToys per-user MSI'
inputs:
solution: '**\installer\PowerToysSetup.sln'
vsVersion: 17.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: /t:PowerToysInstaller ${{ parameters.additionalBuildArguments }} /p:PerUser=true
maximumCpuCount: true
- task: VSBuild@1
displayName: 'Build PowerToys per-user Bootstrapper'
inputs:
solution: '**\installer\PowerToysSetup.sln'
vsVersion: 17.0
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
msbuildArgs: /t:PowerToysBootstrapper ${{ parameters.additionalBuildArguments }} /p:PerUser=true
clean: false
maximumCpuCount: true
# directly not doing WinAppDriver testing # directly not doing WinAppDriver testing
- task: VSTest@2 - task: VSTest@2
displayName: 'MS Tests' displayName: 'MS Tests'

View File

@@ -0,0 +1,141 @@
parameters:
- name: versionNumber
type: string
default: "0.0.1"
- name: perUserArg
type: string
default: "false"
- name: buildSubDir
type: string
default: "MachineSetup"
- name: installerPrefix
type: string
default: "PowerToysSetup"
steps:
- task: VSBuild@1
displayName: Build PowerToysSetupCustomActions DLL # This dll needs to be build and signed before building the MSI.
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysSetupCustomActions /p:RunBuildEvents=true /p:PerUser=${{parameters.perUserArg}}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: true
maximumCpuCount: true
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign PowerToysSetupCustomActions DLL
inputs:
ConnectedServiceName: "Terminal/Console/WinAppDriver Team Code Signing Connection"
FolderPath: 'installer/PowerToysSetupCustomActions/$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
## INSTALLER START
#### MSI BUILDING AND SIGNING
- task: VSBuild@1
displayName: Build MSI
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /target:PowerToysInstaller /bl:$(Build.SourcesDirectory)\msbuild.binlog /p:RunBuildEvents=false /p:PerUser=${{parameters.perUserArg}}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the CustomActions dll
maximumCpuCount: true
- task: CmdLine@2
displayName: "Extracting MSI to verify contents"
inputs:
script: |
"C:\Program Files (x86)\WiX Toolset v3.14\bin\dark.exe" -x $(build.sourcesdirectory)\extractedMsi installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}\${{parameters.installerPrefix}}-${{ parameters.versionNumber }}-$(BuildPlatform).msi
dir $(build.sourcesdirectory)\extractedMsi
# Did we sign all files
- task: PowerShell@1
displayName: Verifying entire build is signed and version set
inputs:
scriptName: .pipelines/versionAndSignCheck.ps1
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
- task: PowerShell@1
displayName: Verifying MSI Custom Actions DLL is signed
inputs:
scriptName: .pipelines/versionAndSignCheck.ps1
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\Binary'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign MSI
inputs:
ConnectedServiceName: "Terminal/Console/WinAppDriver Team Code Signing Connection"
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END MSI
#### BOOTSTRAP BUILDING AND SIGNING
- task: VSBuild@1
displayName: Build Bootstrapper
inputs:
solution: "**/installer/PowerToysSetup.sln"
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysBootstrapper /p:PerUser=${{parameters.perUserArg}}
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the MSI
maximumCpuCount: true
- task: CmdLine@2
displayName: "Insignia: Extract Engine from Bundle"
inputs:
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ib installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}\${{parameters.installerPrefix}}-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\engine.exe'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: "ESRP CodeSigning (Engine)"
inputs:
ConnectedServiceName: "Terminal/Console/WinAppDriver Team Code Signing Connection"
FolderPath: "installer"
Pattern: engine.exe
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
- task: CmdLine@2
displayName: "Insignia: Merge Engine into Bundle"
inputs:
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ab installer\engine.exe installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}\${{parameters.installerPrefix}}-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}\${{parameters.installerPrefix}}-${{ parameters.versionNumber }}-$(BuildPlatform).exe'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign Bootstrapper
inputs:
ConnectedServiceName: "Terminal/Console/WinAppDriver Team Code Signing Connection"
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)\${{parameters.buildSubDir}}'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END BOOTSTRAP
## END INSTALLER

View File

@@ -175,17 +175,6 @@ jobs:
clean: true clean: true
maximumCpuCount: true maximumCpuCount: true
- task: VSBuild@1
displayName: Build PowerToysSetupCustomActions
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /target:PowerToysSetupCustomActions /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: true
maximumCpuCount: true
- task: VSBuild@1 - task: VSBuild@1
displayName: Publish Settings for Packaging displayName: Publish Settings for Packaging
inputs: inputs:
@@ -313,29 +302,10 @@ jobs:
configuration: $(BuildConfiguration) configuration: $(BuildConfiguration)
maximumCpuCount: true maximumCpuCount: true
- task: VSBuild@1
displayName: Build PowerToysSetupCustomActions DLL # This dll needs to be build and signed before building the MSI.
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysSetupCustomActions /p:RunBuildEvents=true
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
maximumCpuCount: true
#### MAIN SIGNING AREA #### MAIN SIGNING AREA
# reference https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/ESRPSigning.json&version=GBarm64-netcore&_a=contents for winappdriver # reference https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/ESRPSigning.json&version=GBarm64-netcore&_a=contents for winappdriver
# https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/CIPolicy.xml&version=GBarm64-netcore&_a=contents # https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/CIPolicy.xml&version=GBarm64-netcore&_a=contents
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign PowerToysSetupCustomActions DLL
inputs:
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
FolderPath: 'installer/PowerToysSetupCustomActions/$(BuildPlatform)\$(BuildConfiguration)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign Core PT displayName: Sign Core PT
inputs: inputs:
@@ -356,114 +326,6 @@ jobs:
#### END SIGNING #### END SIGNING
## END MAIN ## END MAIN
## INSTALLER START
#### MSI BUILDING AND SIGNING
- task: VSBuild@1
displayName: Build MSI
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /target:PowerToysInstaller /bl:$(Build.SourcesDirectory)\msbuild.binlog /p:RunBuildEvents=false
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the CustomActions dll
maximumCpuCount: true
- task: CmdLine@2
displayName: 'Extracting MSI to verify contents'
inputs:
script: |
"C:\Program Files (x86)\WiX Toolset v3.14\bin\dark.exe" -x $(build.sourcesdirectory)\extractedMsi installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).msi
dir $(build.sourcesdirectory)\extractedMsi
# Did we sign all files
- task: PowerShell@1
displayName: Verifying entire build is signed and version set
inputs:
scriptName: .pipelines/versionAndSignCheck.ps1
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
- task: PowerShell@1
displayName: Verifying MSI Custom Actions DLL is signed
inputs:
scriptName: .pipelines/versionAndSignCheck.ps1
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\Binary'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign MSI
inputs:
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END MSI
#### BOOTSTRAP BUILDING AND SIGNING
- task: VSBuild@1
displayName: Build Bootstrapper
inputs:
solution: '**/installer/PowerToysSetup.sln'
vsVersion: 17.0
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysBootstrapper
platform: $(BuildPlatform)
configuration: $(BuildConfiguration)
clean: false # don't undo our hard work above by deleting the MSI
maximumCpuCount: true
- task: CmdLine@2
displayName: 'Insignia: Extract Engine from Bundle'
inputs:
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ib installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\engine.exe'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'ESRP CodeSigning (Engine)'
inputs:
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
FolderPath: 'installer'
Pattern: engine.exe
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters": {
"OpusName": "Microsoft",
"OpusInfo": "http://www.microsoft.com",
"FileDigest": "/fd \"SHA256\"",
"PageHash": "/NPH",
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName": "sign",
"ToolVersion": "1.0"
},
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolVerify",
"Parameters": {},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
- task: CmdLine@2
displayName: 'Insignia: Merge Engine into Bundle'
inputs:
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ab installer\engine.exe installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe'
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: Sign Bootstrapper
inputs:
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)'
signType: batchSigning
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
#### END BOOTSTRAP
## END INSTALLER
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: binlog' displayName: 'Publish Artifact: binlog'
condition: failed() condition: failed()
@@ -514,13 +376,6 @@ jobs:
SourceFolder: $(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/ SourceFolder: $(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/
RemoveSourceFolder: True RemoveSourceFolder: True
- task: CopyFiles@2
displayName: Copying setup file over
inputs:
contents: '**/PowerToysSetup-*.exe'
flattenFolders: True
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Calculating SHA256 hash' displayName: 'Calculating SHA256 hash'
inputs: inputs:
@@ -539,9 +394,45 @@ jobs:
$hash | out-file -filepath $combinedPath $hash | out-file -filepath $combinedPath
pwsh: true pwsh: true
- template: installer-steps.yml
parameters:
versionNumber: ${{ parameters.versionNumber }}
perUserArg: "false"
buildSubDir: "MachineSetup"
installerPrefix: "PowerToysSetup"
- task: PowerShell@2
displayName: Clean installer dir before building per-user installer
inputs:
targetType: inline
script: git clean -xfd -e *exe -- .\installer\
pwsh: true
- task: NuGetCommand@2
displayName: NuGet restore solutions dependencies
inputs:
command: restore
restoreSolution: 'installer/*.sln'
selectOrConfig: config
nugetConfigPath: .pipelines/release-nuget.config
- template: installer-steps.yml
parameters:
versionNumber: ${{ parameters.versionNumber }}
perUserArg: "true"
buildSubDir: "UserSetup"
installerPrefix: "PowerToysUserSetup"
- task: CopyFiles@2
displayName: Copying setup file over
inputs:
contents: "**/PowerToys*Setup-*.exe"
flattenFolders: True
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: PowerToySetup' displayName: "Publish Artifact: PowerToySetup"
inputs: inputs:
PathtoPublish: $(System.ArtifactsDirectory) PathtoPublish: $(System.ArtifactsDirectory)
ArtifactName: setup-$(BuildPlatform) ArtifactName: setup-$(BuildPlatform)

View File

@@ -79,4 +79,4 @@ if ($totalFailure -gt 0) {
exit 1 exit 1
} }
exit 0 exit 0

View File

@@ -4,21 +4,22 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<Fragment> <?define AlwaysOnTopFiles=?>
<!-- AlwaysOnTop --> <?define AlwaysOnTopFilesPath=$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)\?>
<DirectoryRef Id="AlwaysOnTopInstallFolder" FileSource="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)">
<Component Id="Module_AlwaysOnTopInterface" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)\PowerToys.AlwaysOnTopModuleInterface.dll" />
</Component>
<Component Id="Module_AlwaysOnTop" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)\PowerToys.AlwaysOnTop.exe" />
</Component>
<Fragment>
<DirectoryRef Id="AlwaysOnTopInstallFolder" FileSource="$(var.BinDir)modules\$(var.AlwaysOnTopProjectName)">
<!-- Generated by generateFileComponents.ps1 -->
<!--AlwaysOnTopFiles_Component_Def-->
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="AlwaysOnTopComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="AlwaysOnTopComponentGroup">
<ComponentRef Id="Module_AlwaysOnTop"/> <Component Id="RemoveAOTFolder" Guid="9966E305-C8B9-43D8-9F4A-30CD0E3746A5" Directory="AlwaysOnTopInstallFolder" >
<ComponentRef Id="Module_AlwaysOnTopInterface"/> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveAOTFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderAOTFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,29 +4,31 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define AwakeFiles=PowerToys.AwakeModuleInterface.dll;PowerToys.ManagedCommon.dll;System.Management.dll;System.CodeDom.dll;System.Text.Json.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.UI.Lib.dll;NLog.config;NLog.dll;PowerToys.Awake.deps.json;PowerToys.Awake.dll;PowerToys.Awake.exe;PowerToys.Awake.runtimeconfig.json;System.CommandLine.dll;System.IO.Abstractions.dll;System.Reactive.dll;System.Runtime.Caching.dll;Ijwhost.dll;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll?> <?define AwakeFiles=?>
<?define AwakeFilesPath=$(var.BinDir)modules\$(var.AwakeProjectName)\?>
<?define AwakeImagesFiles=?>
<?define AwakeImagesFilesPath=$(var.BinDir)modules\$(var.AwakeProjectName)\Images?>
<Fragment> <Fragment>
<!-- Awake -->
<DirectoryRef Id="AwakeInstallFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)"> <DirectoryRef Id="AwakeInstallFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_Awake" Guid="0D571D9A-743B-4CC5-9297-F0289FBE3398" Win64="yes"> <!--AwakeFiles_Component_Def-->
<?foreach File in $(var.AwakeFiles)?>
<File Id="AwakeFile_$(var.File)" Source="$(var.BinDir)modules\$(var.AwakeProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef> </DirectoryRef>
<!-- Awake images --> <!-- Awake images -->
<DirectoryRef Id="AwakeImagesFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)\Images"> <DirectoryRef Id="AwakeImagesFolder" FileSource="$(var.BinDir)modules\$(var.AwakeProjectName)\Images">
<Component Id="Module_Awake_Images" > <!-- Generated by generateFileComponents.ps1 -->
<File Id="Awake_Awake.ico" Source="$(var.BinDir)modules\$(var.AwakeProjectName)\Images\Awake.ico" /> <!--AwakeImagesFiles_Component_Def-->
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="AwakeComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="AwakeComponentGroup">
<ComponentRef Id="Module_Awake"/> <Component Id="RemoveAwakeFolder" Guid="95D7774C-69A3-48A3-B417-1BD9664BE974" Directory="AwakeInstallFolder" >
<ComponentRef Id="Module_Awake_Images"/> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveAwakeFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderAwakeFolder" Directory="AwakeInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderAwakeImagesFolder" Directory="AwakeImagesFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,33 +4,31 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ColorPickerFiles=PowerToys.ColorPicker.dll;System.IO.Abstractions.dll;System.CodeDom.dll;System.Text.Json.dll;PowerToys.ColorPickerUI.exe;PowerToys.ColorPickerUI.dll;PowerToys.ColorPickerUI.deps.json;PowerToys.ColorPickerUI.runtimeconfig.json;PowerToys.Settings.UI.Lib.dll;PowerToys.ManagedTelemetry.dll;PowerToys.ManagedCommon.dll;System.Management.dll;ControlzEx.dll;Microsoft.Xaml.Behaviors.dll;ModernWpf.Controls.dll;ModernWpf.dll;System.ComponentModel.Composition.dll;PowerToys.Common.UI.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;Ijwhost.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?> <?define ColorPickerFiles=?>
<?define ColorPickerFilesPath=$(var.BinDir)modules\$(var.ColorPickerProjectName)\?>
<?define ColorPickerResourcesFiles=?>
<?define ColorPickerResourcesFilesPath=$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources\?>
<Fragment> <Fragment>
<!-- Color Picker --> <DirectoryRef Id="ColorPickerInstallFolder" FileSource="$(var.ColorPickerFilesPath)">
<DirectoryRef Id="ColorPickerInstallFolder" FileSource="$(var.BinDir)modules\$(var.ColorPickerProjectName)"> <!-- Generated by generateFileComponents.ps1 -->
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!--ColorPickerFiles_Component_Def-->
<Component Id="Module_ColorPicker" Guid="963A986E-289D-45CC-BC6B-9A2C9EF3DB33" Win64="yes">
<?foreach File in $(var.ColorPickerFiles)?>
<File Id="ColorPickerFile_$(var.File)" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef> </DirectoryRef>
<!-- Color Picker Resources --> <!-- Color Picker Resources -->
<DirectoryRef Id="ColorPickerResourcesFolder" FileSource="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources"> <DirectoryRef Id="ColorPickerResourcesFolder" FileSource="$(var.ColorPickerResourcesFilesPath)">
<Component Id="Module_ColorPicker_Cursor"> <!-- Generated by generateFileComponents.ps1 -->
<File Id="ColorPickerFile_colorPicker.cur" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources\colorPicker.cur" /> <!--ColorPickerResourcesFiles_Component_Def-->
</Component>
<Component Id="Module_ColorPicker_Icon">
<File Id="ColorPickerFile_icon.ico" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\Resources\icon.ico" />
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="ColorPickerComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="ColorPickerComponentGroup">
<ComponentRef Id="Module_ColorPicker" /> <Component Id="RemoveColorPickerFolder" Guid="18C0C18C-F38A-4C88-B22C-9222F3A5B2EB" Directory="ColorPickerInstallFolder" >
<ComponentRef Id="Module_ColorPicker_Icon"/> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<ComponentRef Id="Module_ColorPicker_Cursor"/> <RegistryValue Type="string" Name="RemoveColorPickerFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderColorPickerFolder" Directory="ColorPickerInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderColorPickerResourcesFolder" Directory="ColorPickerResourcesFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -19,11 +19,38 @@
<?define RepoDir="$(var.ProjectDir)..\..\" ?> <?define RepoDir="$(var.ProjectDir)..\..\" ?>
<?if $(var.Platform) = x64?> <?if $(var.Platform) = x64?>
<?define PlatformLK="x64" ?> <?define PowerToysPlatform="x64"?>
<?define BinDir="$(var.RepoDir)x64\$(var.Configuration)\" ?> <?define PlatformProgramFiles="[ProgramFiles64Folder]"?>
<?define PlatformLK="x64" ?>
<?define BinDir="$(var.RepoDir)x64\$(var.Configuration)\" ?>
<?else?> <?else?>
<?define PlatformLK="arm64" ?> <!-- stable WIX 3 doesn't support ARM64, so we build installers as x86 -->
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?> <?define PowerToysPlatform="ARM64"?>
<!--TODO: define to ARM64 Program files once it's available-->
<?define PlatformProgramFiles="[ProgramFiles6432Folder]"?>
<?define PlatformLK="arm64" ?>
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?>
<?endif?> <?endif?>
<?if $(var.PerUser) = "true"?>
<?define PerMachineYesNo="no"?>
<?define MSIPath="UserSetup"?>
<?define MSIName="PowerToysUserSetup-$(var.Version)-$(var.PowerToysPlatform).msi"?>
<?define DefaultInstallDir="LocalAppDataFolder" ?>
<?define RegistryScope="HKCU" ?>
<?define InstallScope="perUser" ?>
<?define InstallPrivileges="limited" ?>
<?define UpgradeCodeGUID="D8B559DB-4C98-487A-A33F-50A8EEE42726" ?>
<?else?>
<?define PerMachineYesNo="yes"?>
<?define MSIPath="MachineSetup"?>
<?define MSIName="PowerToysSetup-$(var.Version)-$(var.PowerToysPlatform).msi"?>
<?define DefaultInstallDir="ProgramFiles64Folder" ?>
<?define RegistryScope="HKLM" ?>
<?define InstallScope="perMachine" ?>
<?define InstallPrivileges="elevated" ?>
<?define UpgradeCodeGUID="42B84BF7-5FBF-473B-9C8B-049DC16F7708" ?>
<?endif?>
<?define BinX32Dir="$(var.RepoDir)x86\$(var.Configuration)\" ?> <?define BinX32Dir="$(var.RepoDir)x86\$(var.Configuration)\" ?>
</Include> </Include>

View File

@@ -6,15 +6,20 @@
<?define PowerToysInteropFiles=concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_atomic_wait.dll;msvcp140_codecvt_ids.dll;PowerToys.Interop.dll;vcamp140.dll;vccorlib140.dll;vcomp140.dll;vcruntime140.dll;vcruntime140_1.dll?> <?define PowerToysInteropFiles=concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_atomic_wait.dll;msvcp140_codecvt_ids.dll;PowerToys.Interop.dll;vcamp140.dll;vccorlib140.dll;vcomp140.dll;vcruntime140.dll;vcruntime140_1.dll?>
<?define DotnetRuntimeFiles= ?> <?define DotnetRuntimeFiles=?>
<?define DotnetRuntimeWPFFiles= ?> <?define DotnetRuntimeWPFFiles=?>
<Fragment> <Fragment>
<DirectoryRef Id="INSTALLFOLDER" FileSource="$(var.BinDir)"> <DirectoryRef Id="INSTALLFOLDER" FileSource="$(var.BinDir)">
<Component Id="powertoys_per_machine_comp" Win64="yes">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys">
<RegistryValue Type="string" Name="InstallScope" Value="$(var.InstallScope)" />
</RegistryKey>
</Component>
<Component Id="powertoys_toast_clsid" Win64="yes"> <Component Id="powertoys_toast_clsid" Win64="yes">
<RemoveFolder Id='Remove_powertoys_toast_clsid' On='uninstall' /> <RemoveFolder Id='Remove_powertoys_toast_clsid' On='uninstall' />
<RegistryKey Root="HKCR" Key="Software\Classes\CLSID\{DD5CACDA-7C2E-4997-A62A-04A597B58F76}"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\CLSID\{DD5CACDA-7C2E-4997-A62A-04A597B58F76}">
<RegistryValue Type="string" Value="PowerToys Toast Notifications Background Activator" /> <RegistryValue Type="string" Value="PowerToys Toast Notifications Background Activator" />
<RegistryValue Type="string" Key="LocalServer32" Value="[INSTALLFOLDER]PowerToys.exe -ToastActivated" /> <RegistryValue Type="string" Key="LocalServer32" Value="[INSTALLFOLDER]PowerToys.exe -ToastActivated" />
<RegistryValue Type="string" Key="LocalServer32" Name="ThreadingModel" Value="Apartment" /> <RegistryValue Type="string" Key="LocalServer32" Name="ThreadingModel" Value="Apartment" />
@@ -22,7 +27,7 @@
</Component> </Component>
<Component Id="powertoys_exe" Win64="yes" Guid="30261594-41A6-4509-AD09-FBC4E692F441"> <Component Id="powertoys_exe" Win64="yes" Guid="30261594-41A6-4509-AD09-FBC4E692F441">
<File Id="PowerToys.exe" Checksum="yes" /> <File Id="PowerToys.exe" Checksum="yes" />
<RegistryKey Root="HKLM" Key="Software\Classes\powertoys"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys">
<RegistryValue Type="string" Name="URL Protocol" Value="" KeyPath="yes"/> <RegistryValue Type="string" Name="URL Protocol" Value="" KeyPath="yes"/>
<RegistryValue Type="string" Value="URL:PowerToys custom internal URI protocol"/> <RegistryValue Type="string" Value="URL:PowerToys custom internal URI protocol"/>
<RegistryKey Key="DefaultIcon"> <RegistryKey Key="DefaultIcon">
@@ -33,20 +38,35 @@
</RegistryKey> </RegistryKey>
</RegistryKey> </RegistryKey>
</Component> </Component>
<Component Id="BackgroundActivator_dll" Win64="yes"> <Component Id="BackgroundActivator_dll" Win64="yes" Guid="A75E2882-7A8D-4332-89DD-831FFD6E0DD7">
<File Id="PowerToys.BackgroundActivatorDLL.dll" KeyPath="yes" Checksum="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="BackgroundActivator_dll" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PowerToys.BackgroundActivatorDLL.dll" Checksum="yes" />
</Component> </Component>
<Component Id="PowerToys_ActionRunner_exe" Win64="yes"> <Component Id="PowerToys_ActionRunner_exe" Win64="yes" Guid="4AD4C092-1CE0-45F1-8A01-4D1C76A5D69E">
<File Id="PowerToys.ActionRunner.exe" KeyPath="yes" Checksum="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="PowerToys_ActionRunner_exe" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PowerToys.ActionRunner.exe" Checksum="yes" />
</Component> </Component>
<Component Id="PowerToys_Update_exe" Win64="yes"> <Component Id="PowerToys_Update_exe" Win64="yes" Guid="A0BEAE0A-577A-40AC-8005-93BFF2ECE66C">
<File Id="PowerToys.Update.exe" KeyPath="yes" Checksum="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="PowerToys_Update_exe" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PowerToys.Update.exe" Checksum="yes" />
</Component> </Component>
<Component Id="License_rtf" Win64="yes"> <Component Id="License_rtf" Win64="yes" Guid="632C60DF-0DDC-4F14-8F2B-A28136CD9E63">
<File Source="$(var.RepoDir)\installer\License.rtf" Id="License.rtf" KeyPath="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="License_rtf" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.RepoDir)\installer\License.rtf" Id="License.rtf" />
</Component> </Component>
<Component Id="Notice_md" Win64="yes"> <Component Id="Notice_md" Win64="yes" Guid="1671B5F5-1260-42CF-83A8-9B3430DFF8C5">
<File Source="$(var.RepoDir)\Notice.md" Id="Notice.md" KeyPath="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Notice_md" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.RepoDir)\Notice.md" Id="Notice.md" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
@@ -70,33 +90,26 @@
<DirectoryRef Id="DotnetDlls"> <DirectoryRef Id="DotnetDlls">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Dlls_DotnetFiles_Component" Guid="19488F16-3399-40AB-B7C4-CE3F27C1B294" Win64="yes"> <Component Id="Dlls_DotnetFiles_Component" Guid="19488F16-3399-40AB-B7C4-CE3F27C1B294" Win64="yes">
<?foreach File in $(var.DotnetRuntimeFiles)?> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Source="$(var.BinDir)Settings\$(var.File)" /> <RegistryValue Type="string" Name="Dlls_DotnetFiles_Component" Value="" KeyPath="yes"/>
<?endforeach?> </RegistryKey>
<?foreach File in $(var.DotnetRuntimeWPFFiles)?> <?foreach File in $(var.DotnetRuntimeFiles)?>
<File Source="$(var.BinDir)\modules\\ColorPicker\$(var.File)" /> <File Source="$(var.BinDir)Settings\$(var.File)" />
<?endforeach?> <?endforeach?>
<?foreach File in $(var.DotnetRuntimeWPFFiles)?>
<File Source="$(var.BinDir)\modules\\ColorPicker\$(var.File)" />
<?endforeach?>
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="PowerToysInteropDlls"> <DirectoryRef Id="PowerToysInteropDlls">
<?foreach File in $(var.PowerToysInteropFiles)?> <Component Id="Dlls_PowerToysInteropFiles_Component" Win64="yes" Guid="9ED70966-805B-4E7E-AFB0-879D4DE23818">
<Component Id="Dlls_PowerToysInteropFiles_$(var.File)" Win64="yes"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="Dlls_PowerToysInterop_File_$(var.File)" Source="$(var.BinDir)\$(var.File)" /> <RegistryValue Type="string" Name="Dlls_PowerToysInteropFiles_Component" Value="" KeyPath="yes"/>
</Component>
<?endforeach?>
</DirectoryRef>
<DirectoryRef Id="ModulesInstallFolder" FileSource="$(var.BinDir)modules\">
<Component Id="Module_PowerPreview_Registry" Win64="yes">
<!-- TODO: Remove this - Update Key to use IE11 for prevhost.exe -->
<RegistryKey Root="HKLM" Key="Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION">
<RegistryValue Type="integer" Name="prevhost.exe" Value="11000" />
</RegistryKey>
<!-- TODO: Remove this - Update Key to use IE11 for dllhost.exe -->
<RegistryKey Root="HKLM" Key="Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION">
<RegistryValue Type="integer" Name="dllhost.exe" Value="11000" />
</RegistryKey> </RegistryKey>
<?foreach File in $(var.PowerToysInteropFiles)?>
<File Id="Dlls_PowerToysInterop_File_$(var.File)" Source="$(var.BinDir)\$(var.File)" />
<?endforeach?>
</Component> </Component>
</DirectoryRef> </DirectoryRef>
@@ -121,22 +134,30 @@
</DirectoryRef> </DirectoryRef>
</Fragment> </Fragment>
<Fragment> <Fragment>
<ComponentGroup Id="CoreComponents" Directory="INSTALLFOLDER"> <ComponentGroup Id="CoreComponents">
<Component Id="RemoveCoreFolder" Guid="9330BD69-2D12-4D98-B0C7-66C99564D619" Directory="INSTALLFOLDER" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveCoreFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveDotnetDlls" Directory="DotnetDlls" On="uninstall"/>
<RemoveFolder Id="RemovePowerToysInteropDlls" Directory="PowerToysInteropDlls" On="uninstall"/>
<RemoveFolder Id="RemoveModulesInstallFolder" Directory="ModulesInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveDllsFolder" Directory="DllsFolder" On="uninstall"/>
<RemoveFolder Id="RemoveINSTALLFOLDER" Directory="INSTALLFOLDER" On="uninstall"/>
</Component>
<ComponentRef Id="powertoys_exe" /> <ComponentRef Id="powertoys_exe" />
<ComponentRef Id="PowerToysStartMenuShortcut"/> <ComponentRef Id="PowerToysStartMenuShortcut"/>
<ComponentRef Id="BackgroundActivator_dll" /> <ComponentRef Id="BackgroundActivator_dll" />
<ComponentRef Id="PowerToys_ActionRunner_exe" /> <ComponentRef Id="PowerToys_ActionRunner_exe" />
<ComponentRef Id="PowerToys_Update_exe" /> <ComponentRef Id="PowerToys_Update_exe" />
<ComponentRef Id="powertoys_per_machine_comp" />
<ComponentRef Id="powertoys_toast_clsid" /> <ComponentRef Id="powertoys_toast_clsid" />
<ComponentRef Id="License_rtf" /> <ComponentRef Id="License_rtf" />
<ComponentRef Id="Notice_md" /> <ComponentRef Id="Notice_md" />
<ComponentRef Id="DesktopShortcut" /> <ComponentRef Id="DesktopShortcut" />
<ComponentRef Id="Module_PowerPreview_Registry" />
<ComponentRef Id="Dlls_DotnetFiles_Component" /> <ComponentRef Id="Dlls_DotnetFiles_Component" />
<?foreach File in $(var.PowerToysInteropFiles)?> <ComponentRef Id="Dlls_PowerToysInteropFiles_Component" />
<ComponentRef Id="Dlls_PowerToysInteropFiles_$(var.File)" />
<?endforeach?>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -4,22 +4,22 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define FancyZonesFiles=PowerToys.FancyZonesModuleInterface.dll;PowerToys.FancyZonesEditor.dll;PowerToys.FancyZonesEditor.runtimeconfig.json;PowerToys.FancyZonesEditor.deps.json;PowerToys.FancyZonesEditor.exe;PowerToys.FancyZones.exe;ControlzEx.dll;Microsoft.Xaml.Behaviors.dll;ModernWpf.dll;ModernWpf.Controls.dll;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.Common.UI.dll;PowerToys.ManagedTelemetry.dll;System.IO.Abstractions.dll;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;Ijwhost.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll?> <?define FancyZonesFiles=?>
<?define FancyZonesFilesPath=$(var.BinDir)modules\$(var.FancyZonesProjectName)\?>
<Fragment> <Fragment>
<!-- FancyZone -->
<DirectoryRef Id="FancyZonesInstallFolder" FileSource="$(var.BinDir)modules\"> <DirectoryRef Id="FancyZonesInstallFolder" FileSource="$(var.BinDir)modules\">
<?foreach File in $(var.FancyZonesFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_FancyZones_$(var.File)" Win64="yes"> <!--FancyZonesFiles_Component_Def-->
<File Id="Module_FancyZones_File_$(var.File)" Source="$(var.BinDir)modules\$(var.FancyZonesProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="FancyZonesComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="FancyZonesComponentGroup">
<?foreach File in $(var.FancyZonesFiles)?> <Component Id="RemoveFancyZonesFolder" Guid="A04620E9-2C1F-4986-99FA-B1545C7AC4D0" Directory="FancyZonesInstallFolder" >
<ComponentRef Id="Module_FancyZones_$(var.File)" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<?endforeach?> <RegistryValue Type="string" Name="RemoveFancyZonesFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderFancyZonesFolder" Directory="FancyZonesInstallFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -4,32 +4,31 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?if $(var.Platform) = x64?> <?define PowerPreviewFiles=?>
<?define PowerPreviewFiles=System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll;mfc140.dll;mfc140chs.dll;mfc140cht.dll;mfc140deu.dll;mfc140enu.dll;mfc140esn.dll;mfc140fra.dll;mfc140ita.dll;mfc140jpn.dll;mfc140kor.dll;mfc140rus.dll;mfc140u.dll;mfcm140.dll;mfcm140u.dll;PowerToys.MarkdownPreviewHandlerCpp.dll;PowerToys.powerpreview.dll;PowerToys.PreviewHandlerCommon.dll;PowerToys.PreviewHandlerCommon.deps.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.SvgPreviewHandlerCpp.dll;PowerToys.SvgPreviewHandler.dll;PowerToys.SvgPreviewHandler.exe;PowerToys.SvgPreviewHandler.runtimeconfig.json;PowerToys.SvgPreviewHandler.deps.json;PowerToys.SvgThumbnailProvider.exe;PowerToys.SvgThumbnailProvider.dll;PowerToys.SvgThumbnailProviderCpp.dll;PowerToys.SvgThumbnailProvider.runtimeconfig.json;PowerToys.SvgThumbnailProvider.deps.json;PowerToys.MarkdownPreviewHandler.dll;PowerToys.MarkdownPreviewHandler.exe;PowerToys.MarkdownPreviewHandler.runtimeconfig.json;PowerToys.MarkdownPreviewHandler.deps.json;Markdig.Signed.dll;System.IO.Abstractions.dll;monaco_languages.json;monacoSpecialLanguages.js;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;PowerToys.MonacoPreviewHandlerCpp.dll;PowerToys.MonacoPreviewHandler.dll;PowerToys.MonacoPreviewHandler.exe;PowerToys.MonacoPreviewHandler.runtimeconfig.json;PowerToys.MonacoPreviewHandler.deps.json;ControlzEx.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Web.WebView2.WinForms.dll;Microsoft.Web.WebView2.Wpf.dll;WebView2Loader.dll;index.html;PowerToys.PdfPreviewHandlerCpp.dll;PowerToys.PdfPreviewHandler.dll;PowerToys.PdfPreviewHandler.exe;PowerToys.PdfPreviewHandler.runtimeconfig.json;PowerToys.PdfPreviewHandler.deps.json;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.PdfThumbnailProvider.exe;PowerToys.PdfThumbnailProvider.dll;PowerToys.PdfThumbnailProviderCpp.dll;PowerToys.PdfThumbnailProvider.runtimeconfig.json;PowerToys.PdfThumbnailProvider.deps.json;PowerToys.GcodePreviewHandler.dll;PowerToys.GcodePreviewHandlerCpp.dll;PowerToys.GcodePreviewHandler.exe;PowerToys.GcodePreviewHandler.runtimeconfig.json;PowerToys.GcodePreviewHandler.deps.json;PowerToys.GcodeThumbnailProvider.dll;PowerToys.GcodeThumbnailProvider.exe;PowerToys.GcodeThumbnailProviderCpp.dll;PowerToys.GcodeThumbnailProvider.runtimeconfig.json;PowerToys.GcodeThumbnailProvider.deps.json;PowerToys.StlThumbnailProvider.exe;PowerToys.StlThumbnailProvider.dll;PowerToys.StlThumbnailProviderCpp.dll;PowerToys.StlThumbnailProvider.runtimeconfig.json;PowerToys.StlThumbnailProvider.deps.json;HelixToolkit.dll;HelixToolkit.Core.Wpf.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.GPOWrapper.dll?> <?define PowerPreviewFilesPath=$(var.BinDir)modules\FileExplorerPreview\?>
<?else?> <?define MonacoCustomLanguagesFiles=?>
<?define PowerPreviewFiles=System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll;PowerToys.MarkdownPreviewHandlerCpp.dll;PowerToys.powerpreview.dll;PowerToys.PreviewHandlerCommon.dll;PowerToys.PreviewHandlerCommon.deps.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.SvgPreviewHandlerCpp.dll;PowerToys.SvgPreviewHandler.dll;PowerToys.SvgPreviewHandler.exe;PowerToys.SvgPreviewHandler.runtimeconfig.json;PowerToys.SvgPreviewHandler.deps.json;PowerToys.SvgThumbnailProvider.exe;PowerToys.SvgThumbnailProvider.dll;PowerToys.SvgThumbnailProviderCpp.dll;PowerToys.SvgThumbnailProvider.runtimeconfig.json;PowerToys.SvgThumbnailProvider.deps.json;PowerToys.MarkdownPreviewHandler.dll;PowerToys.MarkdownPreviewHandler.exe;PowerToys.MarkdownPreviewHandler.runtimeconfig.json;PowerToys.MarkdownPreviewHandler.deps.json;Markdig.Signed.dll;System.IO.Abstractions.dll;monaco_languages.json;monacoSpecialLanguages.js;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;PowerToys.MonacoPreviewHandlerCpp.dll;PowerToys.MonacoPreviewHandler.dll;PowerToys.MonacoPreviewHandler.exe;PowerToys.MonacoPreviewHandler.runtimeconfig.json;PowerToys.MonacoPreviewHandler.deps.json;ControlzEx.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Web.WebView2.WinForms.dll;Microsoft.Web.WebView2.Wpf.dll;WebView2Loader.dll;index.html;PowerToys.PdfPreviewHandlerCpp.dll;PowerToys.PdfPreviewHandler.dll;PowerToys.PdfPreviewHandler.exe;PowerToys.PdfPreviewHandler.runtimeconfig.json;PowerToys.PdfPreviewHandler.deps.json;Microsoft.Windows.SDK.NET.dll;WinRT.Runtime.dll;PowerToys.PdfThumbnailProvider.exe;PowerToys.PdfThumbnailProvider.dll;PowerToys.PdfThumbnailProviderCpp.dll;PowerToys.PdfThumbnailProvider.runtimeconfig.json;PowerToys.PdfThumbnailProvider.deps.json;PowerToys.GcodePreviewHandler.dll;PowerToys.GcodePreviewHandlerCpp.dll;PowerToys.GcodePreviewHandler.exe;PowerToys.GcodePreviewHandler.runtimeconfig.json;PowerToys.GcodePreviewHandler.deps.json;PowerToys.GcodeThumbnailProvider.dll;PowerToys.GcodeThumbnailProvider.exe;PowerToys.GcodeThumbnailProviderCpp.dll;PowerToys.GcodeThumbnailProvider.runtimeconfig.json;PowerToys.GcodeThumbnailProvider.deps.json;PowerToys.StlThumbnailProvider.exe;PowerToys.StlThumbnailProvider.dll;PowerToys.StlThumbnailProviderCpp.dll;PowerToys.StlThumbnailProvider.runtimeconfig.json;PowerToys.StlThumbnailProvider.deps.json;HelixToolkit.dll;HelixToolkit.Core.Wpf.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.GPOWrapper.dll?> <?define MonacoCustomLanguagesFilesPath=$(var.BinDir)modules\FileExplorerPreview\customLanguages\?>
<?endif?>
<Fragment> <Fragment>
<DirectoryRef Id="FileExplorerPreviewInstallFolder" FileSource="$(var.RepoDir)\modules\FileExplorerPreview\"> <DirectoryRef Id="FileExplorerPreviewInstallFolder" FileSource="$(var.PowerPreviewFilesPath)">
<?foreach File in $(var.PowerPreviewFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_PowerPreview_$(var.File)" Win64="yes"> <!--PowerPreviewFiles_Component_Def-->
<File Id="Module_PowerPreview_$(var.File)" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.BinDir)modules\FileExplorerPreview\customLanguages"> <DirectoryRef Id="MonacoPreviewHandlerMonacoCustomLanguagesFolder" FileSource="$(var.MonacoCustomLanguagesFilesPath)">
<Component Id="MonacoPreviewHandlerMonacoCustomLanguagesRegJS" Win64="yes"> <!-- Generated by generateFileComponents.ps1 -->
<File Id="MonacoPreviewHandler_MonacoCustomLanguagesRegJS" Source="$(var.BinDir)modules\FileExplorerPreview\customLanguages\reg.js" /> <!--MonacoCustomLanguagesFiles_Component_Def-->
</DirectoryRef>
<ComponentGroup Id="FileExplorerPreviewComponentGroup">
<Component Id="RemoveFileExplorerPreviewFolder" Guid="4AB83E58-17F1-41AF-B67F-F6C36EFED28D" Directory="FileExplorerPreviewInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveFileExplorerPreviewFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderFileExplorerPreviewFolder" Directory="FileExplorerPreviewInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderMonacoCustomLanguagesFolder" Directory="MonacoPreviewHandlerMonacoCustomLanguagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderMonacoPreviewHandlerMonacoSRCFolder" Directory="MonacoPreviewHandlerMonacoSRCFolder" On="uninstall"/>
</Component> </Component>
</DirectoryRef>
<ComponentGroup Id="FileExplorerPreviewComponentGroup" Directory="INSTALLFOLDER">
<?foreach File in $(var.PowerPreviewFiles)?>
<ComponentRef Id="Module_PowerPreview_$(var.File)" />
<?endforeach?>
<ComponentRef Id="MonacoPreviewHandlerMonacoCustomLanguagesRegJS" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -4,70 +4,46 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define FileLocksmithFiles=System.IO.Abstractions.dll;Microsoft.Win32.SystemEvents.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Mvvm.dll;CommunityToolkit.Labs.WinUI.SettingsControls.dll;Ijwhost.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.FileLocksmithExt.dll;PowerToys.FileLocksmithLib.Interop.dll;PowerToys.FileLocksmithUI.exe;PowerToys.FileLocksmithUI.dll;PowerToys.FileLocksmithUI.deps.json;PowerToys.FileLocksmithUI.runtimeconfig.json;System.CodeDom.dll;System.Drawing.Common.dll;System.Management.dll;WinRT.Runtime.dll;WinUIEx.dll;resources.pri;PowerToys.GPOWrapper.dll;WindowsBase.dll;System.Text.Json.dll?> <?define FileLocksmithFiles=?>
<?define FileLocksmithAssetsFiles=Icon.ico?> <?define FileLocksmithFilesPath=$(var.BinDir)modules\$(var.FileLocksmithProjectName)\?>
<?define FileLocksmithAssetsFiles=?>
<?define FileLocksmithAssetsFilesPath=$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\?>
<Fragment> <Fragment>
<!-- FileLocksmith --> <DirectoryRef Id="FileLocksmithInstallFolder" FileSource="$(var.FileLocksmithFilesPath)">
<DirectoryRef Id="FileLocksmithInstallFolder" FileSource="$(var.BinDir)modules\$(var.FileLocksmithProjectName)"> <!-- Generated by generateFileComponents.ps1 -->
<?foreach File in $(var.FileLocksmithFiles)?> <!--FileLocksmithFiles_Component_Def-->
<Component Id="FileLocksmith_$(var.File)" Win64="yes">
<File Id="FileLocksmithFile_$(var.File)" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<!-- !Warning! Make sure to change Component Guid if you update something here --> <!-- !Warning! Make sure to change Component Guid if you update something here -->
<Component Id="Module_FileLocksmith" Guid="108D3EC1-E6E0-4E81-88EF-25966133CB41" Win64="yes"> <Component Id="Module_FileLocksmith" Guid="108D3EC1-E6E0-4E81-88EF-25966133CB41" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\CLSID\{84D68575-E186-46AD-B0CB-BAEB45EE29C0}">
<RegistryValue Type="string" Value="File Locksmith Shell Extension" /> <RegistryValue Type="string" Value="File Locksmith Shell Extension" />
<RegistryValue Type="string" Name="ContextMenuOptIn" Value="" /> <RegistryValue Type="string" Name="ContextMenuOptIn" Value="" />
<RegistryValue Type="string" Key="InprocServer32" Value="[FileLocksmithInstallFolder]PowerToys.FileLocksmithExt.dll" /> <RegistryValue Type="string" Key="InprocServer32" Value="[FileLocksmithInstallFolder]PowerToys.FileLocksmithExt.dll" />
<RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" /> <RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" />
</RegistryKey> </RegistryKey>
<RegistryKey Root="HKLM" Key="Software\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\FileLocksmithExt"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\FileLocksmithExt">
<RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/> <RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/>
</RegistryKey> </RegistryKey>
<RegistryKey Root="HKLM" Key="Software\Classes\Drive\ShellEx\ContextMenuHandlers\FileLocksmithExt"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\Drive\ShellEx\ContextMenuHandlers\FileLocksmithExt">
<RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/> <RegistryValue Type="string" Value="{84D68575-E186-46AD-B0CB-BAEB45EE29C0}"/>
</RegistryKey> </RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="FileLocksmithAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets">
<?foreach File in $(var.FileLocksmithAssetsFiles)?>
<Component Id="FileLocksmith_Assets_$(var.File)" Win64="yes">
<File Id="FileLocksmithAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="FileLocksmith_Assets_Applist_Scale100" Win64="yes">
<File Id="FL_AppList_Scale100" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-100.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale125" Win64="yes">
<File Id="FL_AppList_Scale125" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-125.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale150" Win64="yes">
<File Id="FL_AppList_Scale150" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-150.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale200" Win64="yes">
<File Id="FL_AppList_Scale200" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-200.png" />
</Component>
<Component Id="FileLocksmith_Assets_Applist_Scale400" Win64="yes">
<File Id="FL_AppList_Scale400" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\Assets\AppList.scale-400.png" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="FileLocksmithComponentGroup" Directory="INSTALLFOLDER"> <DirectoryRef Id="FileLocksmithAssetsInstallFolder" FileSource="$(var.FileLocksmithAssetsFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--FileLocksmithAssetsFiles_Component_Def-->
</DirectoryRef>
<ComponentGroup Id="FileLocksmithComponentGroup">
<Component Id="RemoveFileLocksmithFolder" Guid="1DAC9A3F-D89C-4730-BF57-1778E011709B" Directory="FileLocksmithInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveFileLocksmithFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderFileLocksmithFolder" Directory="FileLocksmithInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderFileLocksmithAssetsFolder" Directory="FileLocksmithAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_FileLocksmith" /> <ComponentRef Id="Module_FileLocksmith" />
<?foreach File in $(var.FileLocksmithFiles)?>
<ComponentRef Id="FileLocksmith_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.FileLocksmithAssetsFiles)?>
<ComponentRef Id="FileLocksmith_Assets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale100" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale125" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale150" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale200" />
<ComponentRef Id="FileLocksmith_Assets_Applist_Scale400" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,67 +4,42 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define HostsFiles=Accessibility.dll;ColorCode.Core.dll;ColorCode.WinUI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Mvvm.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.Controls.Core.dll;CommunityToolkit.WinUI.UI.Controls.DataGrid.dll;CommunityToolkit.WinUI.UI.Controls.Input.dll;CommunityToolkit.WinUI.UI.Controls.Layout.dll;CommunityToolkit.WinUI.UI.Controls.Markdown.dll;CommunityToolkit.WinUI.UI.Controls.Media.dll;CommunityToolkit.WinUI.UI.Controls.Primitives.dll;CommunityToolkit.WinUI.UI.dll;ControlzEx.dll;Ijwhost.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.Configuration.Binder.dll;Microsoft.Extensions.Configuration.CommandLine.dll;Microsoft.Extensions.Configuration.dll;Microsoft.Extensions.Configuration.EnvironmentVariables.dll;Microsoft.Extensions.Configuration.FileExtensions.dll;Microsoft.Extensions.Configuration.Json.dll;Microsoft.Extensions.Configuration.UserSecrets.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.DependencyInjection.dll;Microsoft.Extensions.FileProviders.Abstractions.dll;Microsoft.Extensions.FileProviders.Physical.dll;Microsoft.Extensions.FileSystemGlobbing.dll;Microsoft.Extensions.Hosting.Abstractions.dll;Microsoft.Extensions.Hosting.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Logging.Configuration.dll;Microsoft.Extensions.Logging.Console.dll;Microsoft.Extensions.Logging.Debug.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Logging.EventLog.dll;Microsoft.Extensions.Logging.EventSource.dll;Microsoft.Extensions.Options.ConfigurationExtensions.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;Microsoft.Graphics.Canvas.Interop.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;Microsoft.Xaml.Behaviors.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;PowerToys.Common.UI.dll;PowerToys.Hosts.deps.json;PowerToys.Hosts.dll;PowerToys.Hosts.exe;PowerToys.Hosts.runtimeconfig.json;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.UI.Lib.dll;resources.pri;System.IO.Abstractions.dll;System.Management.dll;WinRT.Runtime.dll;WinUIEx.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll;System.Text.Json.dll?> <?define HostsFiles=?>
<?define HostsMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?> <?define HostsFilesPath=$(var.BinDir)modules\$(var.HostsProjectName)\?>
<?define HostsAssetsFiles=?>
<?define HostsAssetsFilesPath=$(var.BinDir)modules\$(var.HostsProjectName)\Assets\?>
<Fragment> <Fragment>
<!-- Hosts --> <DirectoryRef Id="HostsInstallFolder" FileSource="$(var.HostsFilesPath)">
<DirectoryRef Id="HostsInstallFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)"> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_HostsInterface" Win64="yes"> <!--HostsFiles_Component_Def-->
<File Source="$(var.BinDir)modules\$(var.HostsProjectName)\PowerToys.HostsModuleInterface.dll" />
</Component>
<?foreach File in $(var.HostsFiles)?>
<Component Id="H_$(var.File)" Win64="yes">
<File Id="H_$(var.File)" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="HostsMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets"> <DirectoryRef Id="HostsMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.HostsMicrosoftUIXamlAssetsInstallFiles)?> <Component Id="HostsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Win64="yes" Guid="6E1EE639-B06A-41C5-9B3E-23B570FF8F1B">
<Component Id="HostsMicrosoftUIXamlAssets_$(var.File)" Win64="yes"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="HostsMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" /> <RegistryValue Type="string" Name="HostsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Value="" KeyPath="yes"/>
</Component> </RegistryKey>
<?endforeach?> <File Id="HostsMicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" />
</DirectoryRef>
<DirectoryRef Id="HostsAssetsFolder" FileSource="$(var.BinDir)modules\$(var.HostsProjectName)\Assets">
<Component Id="HostsAssets_AppList_Scale100" Win64="yes">
<File Id="HA_AppList_Scale100" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-100.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale125" Win64="yes">
<File Id="HA_AppList_Scale125" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-125.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale150" Win64="yes">
<File Id="HA_AppList_Scale150" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-150.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale200" Win64="yes">
<File Id="HA_AppList_Scale200" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-200.png" />
</Component>
<Component Id="HostsAssets_AppList_Scale400" Win64="yes">
<File Id="HA_AppList_Scale400" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\AppList.scale-400.png" />
</Component>
<Component Id="HostsAssets_Hosts" Win64="yes">
<File Id="HA_Hosts" Source="$(var.BinDir)modules\$(var.HostsProjectName)\Assets\Hosts.ico" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="HostsComponentGroup" Directory="INSTALLFOLDER"> <DirectoryRef Id="HostsAssetsFolder" FileSource="$(var.HostsAssetsFilesPath)">
<ComponentRef Id="Module_HostsInterface"/> <!-- Generated by generateFileComponents.ps1 -->
<?foreach File in $(var.HostsFiles)?> <!--HostsAssetsFiles_Component_Def-->
<ComponentRef Id="H_$(var.File)" /> </DirectoryRef>
<?endforeach?>
<?foreach File in $(var.HostsMicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="HostsMicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="HostsAssets_AppList_Scale100" />
<ComponentRef Id="HostsAssets_AppList_Scale125" />
<ComponentRef Id="HostsAssets_AppList_Scale150" />
<ComponentRef Id="HostsAssets_AppList_Scale200" />
<ComponentRef Id="HostsAssets_AppList_Scale400" />
<ComponentRef Id="HostsAssets_Hosts" />
<ComponentGroup Id="HostsComponentGroup">
<Component Id="RemoveHostsFolder" Guid="7FF19EBB-041D-4498-9826-C9AECEBE86E1" Directory="HostsInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveHostsFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderHostsFolder" Directory="HostsInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderHostsAssetsFolder" Directory="HostsAssetsFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderHostsMicrosoftUIXamlFolder" Directory="HostsMicrosoftUIXamlInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderHostsMicrosoftUIXamlAssetsFolder" Directory="HostsMicrosoftUIXamlAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="HostsMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,98 +4,96 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ImageResizerFiles=ImageResizer.ico;PowerToys.ImageResizer.exe;PowerToys.ImageResizerExt.dll;PowerToys.ImageResizer.dll;PowerToys.ImageResizer.deps.json;PowerToys.ImageResizer.runtimeconfig.json;PowerToys.ManagedCommon.dll;System.Management.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Common.UI.dll;ControlzEx.dll;ModernWpf.Controls.dll;ModernWpf.dll;Microsoft.Xaml.Behaviors.dll;System.IO.Abstractions.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;Ijwhost.dll;ImageResizerContextMenuPackage.msix;PowerToys.ImageResizerContextMenu.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;System.CodeDom.dll;System.Text.Json.dll;WindowsBase.dll?> <?define ImageResizerFiles=?>
<?define ImageResizerSparsePackageAssets=LargeTile.png;SmallTile.png;SplashScreen.png;Square150x150Logo.png;Square44x44Logo.png;storelogo.png;Wide310x150Logo.png?> <?define ImageResizerFilesPath=$(var.BinDir)modules\$(var.ImageResizerProjectName)\?>
<?define ImageResizerAssetsFiles=?>
<?define ImageResizerAssetsFilesPath=$(var.BinDir)modules\$(var.ImageResizerProjectName)\Assets\?>
<Fragment> <Fragment>
<!-- Image Resizer --> <DirectoryRef Id="ImageResizerInstallFolder" FileSource="$(var.ImageResizerFilesPath)">
<DirectoryRef Id="ImageResizerInstallFolder" FileSource="$(var.BinDir)modules\$(var.ImageResizerProjectName)"> <!-- Generated by generateFileComponents.ps1 -->
<?foreach File in $(var.ImageResizerFiles)?> <!--ImageResizerFiles_Component_Def-->
<Component Id="Module_ImageResizer_$(var.File)" Win64="yes">
<File Id="Module_ImageResizer_File_$(var.File)" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="Module_ImageResizer_Registry" Win64="yes"> <Component Id="Module_ImageResizer_Registry" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32">
<RegistryValue Value="[ImageResizerInstallFolder]PowerToys.ImageResizerExt.dll" Type="string" /> <RegistryValue Value="[ImageResizerInstallFolder]PowerToys.ImageResizerExt.dll" Type="string" />
<RegistryValue Name="ThreadingModel" Value="Apartment" Type="string" /> <RegistryValue Name="ThreadingModel" Value="Apartment" Type="string" />
</RegistryKey> </RegistryKey>
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SOFTWARE\Classes\Directory\ShellEx\DragDropHandlers\ImageResizer" Key="SOFTWARE\Classes\Directory\ShellEx\DragDropHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<!-- Registry Keys for the context menu handler for each of the following image formats: bmp, dib, gif, jfif, jpe, jpeg, jpg, jxr, png, rle, tif, tiff, wdp --> <!-- Registry Keys for the context menu handler for each of the following image formats: bmp, dib, gif, jfif, jpe, jpeg, jpg, jxr, png, rle, tif, tiff, wdp -->
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.bmp\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SOFTWARE\Classes\SystemFileAssociations\.bmp\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.dib\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.dib\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.gif\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.gif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.jfif\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.jfif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.jpe\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.jpe\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.jpeg\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.jpeg\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.jpg\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.jpg\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.jxr\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.jxr\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.png\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.png\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.rle\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.rle\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.tif\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.tif\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.tiff\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.tiff\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
<RegistryValue Root="HKCR" <RegistryValue Root="$(var.RegistryScope)"
Key="SystemFileAssociations\.wdp\ShellEx\ContextMenuHandlers\ImageResizer" Key="SOFTWARE\Classes\SystemFileAssociations\.wdp\ShellEx\ContextMenuHandlers\ImageResizer"
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}" Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
Type="string" /> Type="string" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="ImageResizerAssetsFolder" FileSource="$(var.BinDir)modules\$(var.ImageResizerProjectName)"> <DirectoryRef Id="ImageResizerAssetsFolder" FileSource="$(var.ImageResizerAssetsFilesPath)">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="ImageResizer_ImageResizerSparsePackageAssets" Guid="CC1B81A0-7971-4FAA-A3E6-4CE4DD0EC7C1" Win64="yes"> <!--ImageResizerAssetsFiles_Component_Def-->
<?foreach File in $(var.ImageResizerSparsePackageAssets)?>
<File Id="ImageResizerSparsePackageAssets_$(var.File)" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\Assets\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="ImageResizerComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="ImageResizerComponentGroup">
<?foreach File in $(var.ImageResizerFiles)?> <Component Id="RemoveImageResizerFolder" Guid="8E5DE86A-8618-4590-9584-51BCD3A14280" Directory="ImageResizerInstallFolder" >
<ComponentRef Id="Module_ImageResizer_$(var.File)" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<?endforeach?> <RegistryValue Type="string" Name="RemoveImageResizerFolder" Value="" KeyPath="yes"/>
<ComponentRef Id="ImageResizer_ImageResizerSparsePackageAssets" /> </RegistryKey>
<RemoveFolder Id="RemoveFolderImageResizerFolder" Directory="ImageResizerInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderImageResizerAssetsFolder" Directory="ImageResizerAssetsFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_ImageResizer_Registry" /> <ComponentRef Id="Module_ImageResizer_Registry" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -7,26 +7,43 @@
<Fragment> <Fragment>
<!-- KBM --> <!-- KBM -->
<DirectoryRef Id="KeyboardManagerInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\"> <DirectoryRef Id="KeyboardManagerInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\">
<Component Id="Module_KeyboardManager" Win64="yes"> <Component Id="Module_KeyboardManager" Win64="yes" Guid="88F5D745-025A-4A0D-85CC-EFC8FF348C88">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_KeyboardManager" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\PowerToys.KeyboardManager.dll" /> <File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\PowerToys.KeyboardManager.dll" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<!-- KBM Editor --> <!-- KBM Editor -->
<DirectoryRef Id="KeyboardManagerEditorInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor"> <DirectoryRef Id="KeyboardManagerEditorInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor">
<Component Id="Module_KeyboardManager_Editor" Win64="yes"> <Component Id="Module_KeyboardManager_Editor" Win64="yes" Guid="E9C74E78-970F-4DF5-9CC0-FFD3CCF285B4">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_KeyboardManager_Editor" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor\PowerToys.KeyboardManagerEditor.exe" /> <File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEditor\PowerToys.KeyboardManagerEditor.exe" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<!-- KBM Engine --> <!-- KBM Engine -->
<DirectoryRef Id="KeyboardManagerEngineInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine"> <DirectoryRef Id="KeyboardManagerEngineInstallFolder" FileSource="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine">
<Component Id="Module_KeyboardManager_Engine" Win64="yes"> <Component Id="Module_KeyboardManager_Engine" Win64="yes" Guid="3F58FCE3-B44D-4676-94E9-C59F1FE42FFD">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_KeyboardManager_Engine" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine\PowerToys.KeyboardManagerEngine.exe" /> <File Source="$(var.BinDir)modules\$(var.KeyboardManagerProjectName)\KeyboardManagerEngine\PowerToys.KeyboardManagerEngine.exe" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="KeyboardManagerComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="KeyboardManagerComponentGroup">
<Component Id="RemoveKeyboardManagerFolder" Guid="C411CB11-4617-40A4-B6DA-1823B49FB9FF" Directory="KeyboardManagerInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveKeyboardManagerFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderKeyboardManagerFolder" Directory="KeyboardManagerInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderKeyboardManagerEditorFolder" Directory="KeyboardManagerEditorInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderKeyboardManagerEngineFolder" Directory="KeyboardManagerEngineInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_KeyboardManager" /> <ComponentRef Id="Module_KeyboardManager" />
<ComponentRef Id="Module_KeyboardManager_Editor" /> <ComponentRef Id="Module_KeyboardManager_Editor" />
<ComponentRef Id="Module_KeyboardManager_Engine" /> <ComponentRef Id="Module_KeyboardManager_Engine" />

View File

@@ -4,42 +4,35 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define MeasureToolFiles=System.IO.Abstractions.dll;Ijwhost.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.MeasureToolCore.dll;PowerToys.MeasureToolUI.deps.json;PowerToys.MeasureToolUI.dll;PowerToys.MeasureToolUI.exe;PowerToys.MeasureToolUI.runtimeconfig.json;resources.pri;System.CodeDom.dll;System.Management.dll;System.Text.Json.dll;WinRT.Runtime.dll;WinUIEx.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll?> <?define MeasureToolFiles=?>
<?define MeasureToolMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?> <?define MeasureToolFilesPath=$(var.BinDir)modules\$(var.MeasureToolProjectName)\?>
<Fragment> <Fragment>
<!-- Measure Tool -->
<DirectoryRef Id="MeasureToolInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)"> <DirectoryRef Id="MeasureToolInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)">
<Component Id="Module_MeasureToolInterface" Win64="yes"> <!-- Generated by generateFileComponents.ps1 -->
<File Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\PowerToys.MeasureToolModuleInterface.dll" /> <!--MeasureToolFiles_Component_Def-->
</Component>
<?foreach File in $(var.MeasureToolFiles)?>
<Component Id="MT_$(var.File)" Win64="yes">
<File Id="MT_$(var.File)" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="MeasureToolMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets"> <DirectoryRef Id="MeasureToolMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.MeasureToolMicrosoftUIXamlAssetsInstallFiles)?> <Component Id="MeasureToolMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Win64="yes" Guid="B6DFD9D3-D66C-472F-B0AB-E1F9BBB7CFE9">
<Component Id="MeasureToolMicrosoftUIXamlAssets_$(var.File)" Win64="yes"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="MeasureToolMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" /> <RegistryValue Type="string" Name="MeasureToolMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Value="" KeyPath="yes"/>
</Component> </RegistryKey>
<?endforeach?> <File Id="MeasureToolMicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" />
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="MeasureToolComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="MeasureToolComponentGroup">
<ComponentRef Id="Module_MeasureToolInterface"/> <Component Id="RemoveMeasureToolFolder" Guid="319A3AB5-A340-4662-98E0-3B5A41EA50F4" Directory="MeasureToolInstallFolder" >
<?foreach File in $(var.MeasureToolFiles)?> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<ComponentRef Id="MT_$(var.File)" /> <RegistryValue Type="string" Name="RemoveMeasureToolFolder" Value="" KeyPath="yes"/>
<?endforeach?> </RegistryKey>
<?foreach File in $(var.MeasureToolMicrosoftUIXamlAssetsInstallFiles)?> <RemoveFolder Id="RemoveFolderMeasureToolFolder" Directory="MeasureToolInstallFolder" On="uninstall"/>
<ComponentRef Id="MeasureToolMicrosoftUIXamlAssets_$(var.File)" /> <RemoveFolder Id="RemoveFolderMeasureToolMicrosoftUIXamlFolder" Directory="MeasureToolMicrosoftUIXamlInstallFolder" On="uninstall"/>
<?endforeach?> <RemoveFolder Id="RemoveFolderMeasureToolMicrosoftUIXamlAssetsFolder" Directory="MeasureToolMicrosoftUIXamlAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="MeasureToolMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

File diff suppressed because it is too large Load Diff

View File

@@ -4,40 +4,31 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define MouseJumpUIComponentFiles=Microsoft.Windows.SDK.NET.dll;System.IO.Abstractions.dll;PowerToys.MouseJumpUI.deps.json;PowerToys.MouseJumpUI.dll;PowerToys.MouseJumpUI.exe;PowerToys.MouseJumpUI.runtimeconfig.json;WinRT.Runtime.dll;PowerToys.ManagedCommon.dll;PowerToys.GPOWrapper.dll;PowerToys.ManagedTelemetry.dll;Ijwhost.dll;System.Management.dll?> <?define MouseUtilsFiles=?>
<?define MouseUtilsFilesPath=$(var.BinDir)modules\$(var.MouseUtilsProjectName)\?>
<?define MouseJumpUIFiles=?>
<?define MouseJumpUIFilesPath=$(var.BinDir)modules\$(var.MouseUtilsProjectName)\MouseJumpUI\?>
<Fragment> <Fragment>
<!-- MouseUtils --> <DirectoryRef Id="MouseUtilsInstallFolder" FileSource="$(var.MouseUtilsFilesPath)">
<DirectoryRef Id="MouseUtilsInstallFolder" FileSource="$(var.BinDir)modules\$(var.MouseUtilsProjectName)"> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_FindMyMouse" Win64="yes"> <!--MouseUtilsFiles_Component_Def-->
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.FindMyMouse.dll" KeyPath="yes" />
</Component>
<Component Id="Module_MouseHighlighter" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.MouseHighlighter.dll" KeyPath="yes" />
</Component>
<Component Id="Module_MousePointerCrosshairs" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.MousePointerCrosshairs.dll" KeyPath="yes" />
</Component>
<Component Id="Module_MouseJump" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\PowerToys.MouseJump.dll" KeyPath="yes" />
</Component>
</DirectoryRef> </DirectoryRef>
<!-- MouseJump UI --> <DirectoryRef Id="MouseJumpUIFolder" FileSource="$(var.MouseJumpUIFilesPath)">
<?foreach File in $(var.MouseJumpUIComponentFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="MouseJumpUIComp_$(var.File)" Win64="yes" Directory="MouseJumpUIFolder"> <!--MouseJumpUIFiles_Component_Def-->
<File Id="MouseJumpUIFile_$(var.File)" Source="$(var.BinDir)modules\$(var.MouseUtilsProjectName)\MouseJumpUI\$(var.File)" /> </DirectoryRef>
</Component>
<?endforeach?>
<ComponentGroup Id="MouseUtilsComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="MouseUtilsComponentGroup">
<ComponentRef Id="Module_FindMyMouse"/> <Component Id="RemoveMouseUtilsFolder" Guid="4F535EA2-0879-4243-A35C-C4DBFCA50B1A" Directory="MouseUtilsInstallFolder" >
<ComponentRef Id="Module_MouseHighlighter"/> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<ComponentRef Id="Module_MousePointerCrosshairs" /> <RegistryValue Type="string" Name="RemoveMouseUtilsFolder" Value="" KeyPath="yes"/>
<ComponentRef Id="Module_MouseJump" /> </RegistryKey>
<?foreach File in $(var.MouseJumpUIComponentFiles)?> <RemoveFolder Id="RemoveFolderMouseUtilsFolder" Directory="MouseUtilsInstallFolder" On="uninstall"/>
<ComponentRef Id="MouseJumpUIComp_$(var.File)" /> <RemoveFolder Id="RemoveFolderMouseJumpUIFolder" Directory="MouseJumpUIFolder" On="uninstall"/>
<?endforeach?> </Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -7,12 +7,21 @@
<Fragment> <Fragment>
<DirectoryRef Id="PastePlainInstallFolder" FileSource="$(var.BinDir)modules\$(var.PastePlainProjectName)"> <DirectoryRef Id="PastePlainInstallFolder" FileSource="$(var.BinDir)modules\$(var.PastePlainProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_PastePlain" Win64="yes"> <Component Id="Module_PastePlain" Win64="yes" Guid="80F648F2-29F6-4685-AED4-04DC1B6EE176">
<File Source="$(var.BinDir)modules\$(var.PastePlainProjectName)\PowerToys.PastePlainModuleInterface.dll" KeyPath="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_PastePlain" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.PastePlainProjectName)\PowerToys.PastePlainModuleInterface.dll" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="PastePlainComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="PastePlainComponentGroup">
<Component Id="RemovePastePlainFolder" Guid="118DC166-23CF-4EF7-B510-2ED79A2A78AD" Directory="PastePlainInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemovePastePlainFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderPastePlainInstallFolder" Directory="PastePlainInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_PastePlain" /> <ComponentRef Id="Module_PastePlain" />
</ComponentGroup> </ComponentGroup>

View File

@@ -4,22 +4,22 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define PowerAccentFiles=ControlzEx.dll;Ijwhost.dll;Microsoft.Xaml.Behaviors.dll;PowerAccent.Core.dll;PowerToys.PowerAccentModuleInterface.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.PowerAccent.deps.json;PowerToys.PowerAccent.dll;PowerToys.PowerAccent.exe;PowerToys.PowerAccent.runtimeconfig.json;PowerToys.Common.UI.dll;PowerToys.Settings.UI.Lib.dll;System.IO.Abstractions.dll;System.Management.dll;Vanara.Core.dll;Vanara.PInvoke.ComCtl32.dll;Vanara.PInvoke.Cryptography.dll;Vanara.PInvoke.Gdi32.dll;Vanara.PInvoke.Kernel32.dll;Vanara.PInvoke.Ole.dll;Vanara.PInvoke.Rpc.dll;Vanara.PInvoke.Security.dll;Vanara.PInvoke.Shared.dll;Vanara.PInvoke.Shell32.dll;Vanara.PInvoke.ShlwApi.dll;Vanara.PInvoke.User32.dll;PowerToys.PowerAccentKeyboardService.dll;Microsoft.Windows.SDK.NET.dll;System.CodeDom.dll;System.Text.Json.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;WindowsBase.dll;UnicodeInformation.dll;ModernWpf.dll;ModernWpf.Controls.dll?> <?define PowerAccentFiles=?>
<?define PowerAccentFilesPath=$(var.BinDir)modules\$(var.PowerAccentProjectName)\?>
<Fragment> <Fragment>
<!-- PowerAccent -->
<DirectoryRef Id="PowerAccentInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerAccentProjectName)"> <DirectoryRef Id="PowerAccentInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerAccentProjectName)">
<?foreach File in $(var.PowerAccentFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="PowerAccent_$(var.File)" Win64="yes"> <!--PowerAccentFiles_Component_Def-->
<File Id="PowerAccentFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerAccentProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="PowerAccentComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="PowerAccentComponentGroup">
<?foreach File in $(var.PowerAccentFiles)?> <Component Id="RemovePowerAccentFolder" Guid="D6796C0F-AD6E-4A78-B321-E968A08AC93B" Directory="PowerAccentInstallFolder" >
<ComponentRef Id="PowerAccent_$(var.File)" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<?endforeach?> <RegistryValue Type="string" Name="RemovePowerAccentFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderPowerAccentFolder" Directory="PowerAccentInstallFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,31 +4,27 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define PowerRenameFiles=PowerRenameUI.ico;PowerToys.PowerRename.exe;resources.pri;PowerToys.PowerRenameExt.dll;PowerRenameContextMenuPackage.msix;PowerToys.PowerRenameContextMenu.dll?> <?define PowerRenameFiles=?>
<?define PowerRenameSparsePackageAssets=LargeTile.png;SmallTile.png;SplashScreen.png;Square150x150Logo.png;Square44x44Logo.png;storelogo.png;Wide310x150Logo.png?> <?define PowerRenameFilesPath=$(var.BinDir)modules\$(var.PowerRenameProjectName)\?>
<?define PowerRenameMicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?> <?define PowerRenameAssetsFiles=?>
<?define PowerRenameAssetsFilesPath=$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\?>
<Fragment> <Fragment>
<DirectoryRef Id="PowerRenameInstallFolder" FileSource="$(var.PowerRenameFilesPath)">
<!-- PowerRename --> <!-- Generated by generateFileComponents.ps1 -->
<DirectoryRef Id="PowerRenameInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)"> <!--PowerRenameFiles_Component_Def-->
<?foreach File in $(var.PowerRenameFiles)?>
<Component Id="PowerRename_$(var.File)" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.File)" />
</Component>
<?endforeach?>
<!-- !Warning! Make sure to change Component Guid if you update something here --> <!-- !Warning! Make sure to change Component Guid if you update something here -->
<Component Id="Module_PowerRename" Guid="40D43079-240E-402D-8CE8-571BFFA71175" Win64="yes"> <Component Id="Module_PowerRename" Guid="40D43079-240E-402D-8CE8-571BFFA71175" Win64="yes">
<RegistryKey Root="HKLM" Key="Software\Classes\CLSID\{0440049F-D1DC-4E46-B27B-98393D79486B}"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\CLSID\{0440049F-D1DC-4E46-B27B-98393D79486B}">
<RegistryValue Type="string" Value="PowerRename Shell Extension" /> <RegistryValue Type="string" Value="PowerRename Shell Extension" />
<RegistryValue Type="string" Name="ContextMenuOptIn" Value="" /> <RegistryValue Type="string" Name="ContextMenuOptIn" Value="" />
<RegistryValue Type="string" Key="InprocServer32" Value="[PowerRenameInstallFolder]PowerToys.PowerRenameExt.dll" /> <RegistryValue Type="string" Key="InprocServer32" Value="[PowerRenameInstallFolder]PowerToys.PowerRenameExt.dll" />
<RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" /> <RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" />
</RegistryKey> </RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\PowerRenameExt"> <RegistryKey Root="$(var.RegistryScope)" Key="SOFTWARE\Classes\AllFileSystemObjects\ShellEx\ContextMenuHandlers\PowerRenameExt">
<RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/> <RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/>
</RegistryKey> </RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\Directory\background\ShellEx\ContextMenuHandlers\PowerRenameExt"> <RegistryKey Root="$(var.RegistryScope)" Key="SOFTWARE\Classes\Directory\background\ShellEx\ContextMenuHandlers\PowerRenameExt">
<RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/> <RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/>
</RegistryKey> </RegistryKey>
@@ -36,38 +32,31 @@
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="PowerRenameMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets"> <DirectoryRef Id="PowerRenameMicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.PowerRenameMicrosoftUIXamlAssetsInstallFiles)?> <Component Id="PowerRenameMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" Win64="yes" Guid="793472B1-4481-4A7A-AA76-9E1E54FAB9DB">
<Component Id="PowerRenameMicrosoftUIXamlAssets_$(var.File)" Win64="yes"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="PowerRenameMicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets\$(var.File)" /> <RegistryValue Type="string" Name="PowerRenameMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG" Value="" KeyPath="yes"/>
</Component> </RegistryKey>
<?endforeach?> <File Id="PowerRenameMicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG.png" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" />
</DirectoryRef>
<DirectoryRef Id="PowerRenameAssetsFolder" FileSource="$(var.BinDir)modules\$(var.PowerRenameProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_PowerRename_Assets" Guid="BA290033-7861-44B7-8A04-7E4C3CC7F0AE" Win64="yes">
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\file.png" />
<File Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\folder.png" />
</Component>
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="PowerRename_PowerRenameSparsePackageAssets" Guid="A32B528D-2771-4853-9775-1791D39DF30E" Win64="yes">
<?foreach File in $(var.PowerRenameSparsePackageAssets)?>
<File Id="PowerRenameSparsePackageAssets_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\Assets\$(var.File)" />
<?endforeach?>
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="PowerRenameComponentGroup" Directory="INSTALLFOLDER"> <DirectoryRef Id="PowerRenameAssetsFolder" FileSource="$(var.PowerRenameAssetsFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--PowerRenameAssetsFiles_Component_Def-->
</DirectoryRef>
<ComponentGroup Id="PowerRenameComponentGroup">
<Component Id="RemovePowerRenameFolder" Guid="2028549B-02E3-4D80-BC3F-59AEA37AC73D" Directory="PowerRenameInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemovePowerRenameFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderPowerRenameFolder" Directory="PowerRenameInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPowerRenameAssetsFolder" Directory="PowerRenameAssetsFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPowerRenameMicrosoftUIXamlInstallFolder" Directory="PowerRenameMicrosoftUIXamlInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderPowerRenameMicrosoftUIXamlAssetsInstallFolder" Directory="PowerRenameMicrosoftUIXamlAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_PowerRename" /> <ComponentRef Id="Module_PowerRename" />
<?foreach File in $(var.PowerRenameFiles)?> <ComponentRef Id="PowerRenameMicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" />
<ComponentRef Id="PowerRename_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.PowerRenameMicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="PowerRenameMicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
<ComponentRef Id="Module_PowerRename_Assets" />
<ComponentRef Id="PowerRename_PowerRenameSparsePackageAssets" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -1,25 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?define UpgradeCode="6341382d-c0a9-4238-9188-be9607e3fab2"?> <?define UpgradeCode="6341382d-c0a9-4238-9188-be9607e3fab2"?>
<?define RepoDir="$(var.ProjectDir)..\..\" ?>
<?if $(var.Platform) = x64?>
<?define BinDir="$(var.RepoDir)$(var.Platform)\$(var.Configuration)\" ?>
<?define PowerToysPlatform="x64"?>
<?define PlatformProgramFiles="[ProgramFiles64Folder]"?>
<?else?>
<!-- stable WIX 3 doesn't support ARM64, so we build installers as x86 -->
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?>
<?define PowerToysPlatform="ARM64"?>
<!--TODO: define to ARM64 Program files once it's available-->
<?define PlatformProgramFiles="[ProgramFiles6432Folder]"?>
<?endif?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<?include $(sys.CURRENTDIR)\Common.wxi?>
<Bundle Name="PowerToys (Preview) $(var.PowerToysPlatform)" <Bundle Name="PowerToys (Preview) $(var.PowerToysPlatform)"
Version="$(var.Version)" Version="$(var.Version)"
Manufacturer="Microsoft Corporation" Manufacturer="Microsoft Corporation"
@@ -36,17 +24,31 @@
<util:RegistrySearch Variable="HasWebView2PerMachine" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" /> <util:RegistrySearch Variable="HasWebView2PerMachine" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
<util:RegistrySearch Variable="HasWebView2PerUser" Root="HKCU" Key="Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" /> <util:RegistrySearch Variable="HasWebView2PerUser" Root="HKCU" Key="Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
<Variable Name="InstallFolder" Type="string" Value="$(var.PlatformProgramFiles)PowerToys" bal:Overridable="yes"/> <?if $(var.PerUser) = "true" ?>
<Variable Name="InstallFolder" Type="string" Value="[LocalAppDataFolder]PowerToys" bal:Overridable="yes"/>
<?else?>
<Variable Name="InstallFolder" Type="string" Value="$(var.PlatformProgramFiles)PowerToys" bal:Overridable="yes"/>
<?endif?>
<Variable Name="MsiLogFolder" Type="string" Value="[LocalAppDataFolder]\Microsoft\PowerToys\" /> <Variable Name="MsiLogFolder" Type="string" Value="[LocalAppDataFolder]\Microsoft\PowerToys\" />
<Log Disable="no" Prefix='powertoys-bootstrapper-msi-$(var.Version)' Extension=".log" /> <Log Disable="no" Prefix='powertoys-bootstrapper-msi-$(var.Version)' Extension=".log" />
<!-- Only install/upgrade if the version is greater or equal than the currently installed version of PowerToys, to handle the case in which PowerToys was installed from old MSI (before WiX bootstrapper was used) --> <!-- Only install/upgrade if the version is greater or equal than the currently installed version of PowerToys, to handle the case in which PowerToys was installed from old MSI (before WiX bootstrapper was used) -->
<!-- If the previous installation is a bundle installation, just let WiX run its logic. --> <!-- If the previous installation is a bundle installation, just let WiX run its logic. -->
<Variable Name="DetectedPowerToysVersion" Type="version" Value="0.0.0.0"/> <Variable Name="MinimumVersion" Type="version" Value="0.0.0.0"/>
<Variable Name="TargetPowerToysVersion" Type="version" Value="$(var.Version)"/> <Variable Name="TargetPowerToysVersion" Type="version" Value="$(var.Version)"/>
<Variable Name="DetectedPowerToysVersion" Type="version" Value="0.0.0.0"/>
<Variable Name="DetectedPowerToysUserVersion" Type="version" Value="0.0.0.0"/>
<util:ProductSearch Id="SearchInstalledPowerToysVersion" Variable="DetectedPowerToysVersion" UpgradeCode="42B84BF7-5FBF-473B-9C8B-049DC16F7708" Result="version" /> <util:ProductSearch Id="SearchInstalledPowerToysVersion" Variable="DetectedPowerToysVersion" UpgradeCode="42B84BF7-5FBF-473B-9C8B-049DC16F7708" Result="version" />
<bal:Condition Message="A later version of PowerToys is already installed." >TargetPowerToysVersion &gt;= DetectedPowerToysVersion OR WixBundleInstalled</bal:Condition>
<?if $(var.PerUser) = "true" ?>
<util:ProductSearch Id="SearchInstalledPowerToysUserVersion" Variable="DetectedPowerToysUserVersion" UpgradeCode="D8B559DB-4C98-487A-A33F-50A8EEE42726" Result="version" />
<bal:Condition Message="PowerToys is already installed on this system for all users. We recommend first uninstalling that version before installing this one." >MinimumVersion &gt;= DetectedPowerToysVersion</bal:Condition>
<bal:Condition Message="The same or later version of PowerToys is already installed." >TargetPowerToysVersion &gt;= DetectedPowerToysUserVersion OR WixBundleInstalled</bal:Condition>
<?else?>
<bal:Condition Message="A later version of PowerToys is already installed." >TargetPowerToysVersion &gt;= DetectedPowerToysVersion OR WixBundleInstalled</bal:Condition>
<?endif?>
<Variable Name="DetectedWindowsBuildNumber" Type="version" Value="0"/> <Variable Name="DetectedWindowsBuildNumber" Type="version" Value="0"/>
<util:RegistrySearch Id="SearchWindowsBuildNumber" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Value="CurrentBuildNumber" Result="value" Format="raw" Variable="DetectedWindowsBuildNumber" /> <util:RegistrySearch Id="SearchWindowsBuildNumber" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Value="CurrentBuildNumber" Result="value" Format="raw" Variable="DetectedWindowsBuildNumber" />
@@ -61,7 +63,7 @@
Id="TerminatePowerToys" Id="TerminatePowerToys"
SourceFile="terminate_powertoys.cmd" SourceFile="terminate_powertoys.cmd"
Permanent="yes" Permanent="yes"
PerMachine="yes" PerMachine="$(var.PerMachineYesNo)"
Vital="no"> Vital="no">
</ExePackage> </ExePackage>
<ExePackage <ExePackage
@@ -74,12 +76,12 @@
InstallCommand="/silent /install" InstallCommand="/silent /install"
RepairCommand="/repair /passive" RepairCommand="/repair /passive"
Permanent="yes" Permanent="yes"
PerMachine="yes" PerMachine="$(var.PerMachineYesNo)"
UninstallCommand="/silent /uninstall"> UninstallCommand="/silent /uninstall">
</ExePackage> </ExePackage>
<MsiPackage <MsiPackage
DisplayName="Installing PowerToys" DisplayName="Installing PowerToys"
SourceFile="$(var.PowerToysPlatform)\Release\PowerToysSetup-$(var.Version)-$(var.PowerToysPlatform).msi" SourceFile="$(var.PowerToysPlatform)\Release\$(var.MSIPath)\$(var.MSIName)"
Compressed="yes" Compressed="yes"
DisplayInternalUI="no"> DisplayInternalUI="no">
<MsiProperty Name="BOOTSTRAPPERINSTALLFOLDER" Value="[InstallFolder]" /> <MsiProperty Name="BOOTSTRAPPERINSTALLFOLDER" Value="[InstallFolder]" />

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" <Project ToolsVersion="4.0"
DefaultTargets="Build" DefaultTargets="Build"
InitialTargets="EnsureNuGetPackageBuildImports" InitialTargets="EnsureNuGetPackageBuildImports"
@@ -11,6 +11,12 @@
<Name>PowerToysBootstrapper</Name> <Name>PowerToysBootstrapper</Name>
<ProjectGuid>{31d72625-43c1-41b1-b784-bce4a8dc5543}</ProjectGuid> <ProjectGuid>{31d72625-43c1-41b1-b784-bce4a8dc5543}</ProjectGuid>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' == 'true' ">
<DefineConstants>$(DefineConstants);PerUser=true</DefineConstants>
</PropertyGroup>
<PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' != 'true' ">
<DefineConstants>$(DefineConstants);PerUser=false</DefineConstants>
</PropertyGroup>
<PropertyGroup> <PropertyGroup>
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform Condition="'$(Platform)'=='x64'">x64</Platform> <Platform Condition="'$(Platform)'=='x64'">x64</Platform>
@@ -20,8 +26,10 @@
<OutputName>PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputName>PowerToysSetup-$(Version)-$(Platform)</OutputName>
<OutputType>Bundle</OutputType> <OutputType>Bundle</OutputType>
<SuppressAclReset>True</SuppressAclReset> <SuppressAclReset>True</SuppressAclReset>
<OutputName>PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputName Condition=" '$(PerUser)' != 'true' ">PowerToysSetup-$(Version)-$(Platform)</OutputName>
<OutputPath>$(Platform)\$(Configuration)\</OutputPath> <OutputName Condition=" '$(PerUser)' == 'true' ">PowerToysUserSetup-$(Version)-$(Platform)</OutputName>
<OutputPath Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutputPath>
<OutputPath Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath> <IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
<NuGetPackageImportStamp /> <NuGetPackageImportStamp />
</PropertyGroup> </PropertyGroup>

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" />
@@ -11,8 +11,8 @@
simulate the build pipeline doing that for you. --> simulate the build pipeline doing that for you. -->
<PreBuildEvent>IF NOT DEFINED IsPipeline ( <PreBuildEvent>IF NOT DEFINED IsPipeline (
call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.19041.0 call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.19041.0
SET PTRoot=..\..\..\.. SET PTRoot=..\..\..\..\..
call "..\..\publish.cmd" x64 call "..\..\..\publish.cmd" x64
)</PreBuildEvent> )</PreBuildEvent>
</PropertyGroup> </PropertyGroup>
@@ -20,20 +20,50 @@ call "..\..\publish.cmd" x64
<DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\ARM64\$(Configuration)\modules\FileExplorerPreview\monacoSRC</DefineConstants> <DefineConstants>Version=$(Version);MonacoSRCHarvestPath=$(ProjectDir)..\..\ARM64\$(Configuration)\modules\FileExplorerPreview\monacoSRC</DefineConstants>
<PreBuildEvent>IF NOT DEFINED IsPipeline ( <PreBuildEvent>IF NOT DEFINED IsPipeline (
call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=arm64 -host_arch=amd64 -winsdk=10.0.19041.0 call "$([MSBuild]::GetVsInstallRoot())\Common7\Tools\VsDevCmd.bat" -arch=arm64 -host_arch=amd64 -winsdk=10.0.19041.0
SET PTRoot=..\..\..\.. SET PTRoot=..\..\..\..\..
call "..\..\publish.cmd" arm64 call "..\..\..\publish.cmd" arm64
)</PreBuildEvent> )</PreBuildEvent>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<RunPostBuildEvent>Always</RunPostBuildEvent> <RunPostBuildEvent>Always</RunPostBuildEvent>
<PostBuildEvent> <PostBuildEvent>
call move /Y ..\..\Core.wxs.bk ..\..\Core.wxs call move /Y ..\..\..\AlwaysOnTop.wxs.bk ..\..\..\AlwaysOnTop.wxs
call move /Y ..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h.bk ..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h call move /Y ..\..\..\Awake.wxs.bk ..\..\..\Awake.wxs
call move /Y ..\..\..\ColorPicker.wxs.bk ..\..\..\ColorPicker.wxs
call move /Y ..\..\..\Core.wxs.bk ..\..\..\Core.wxs
call move /Y ..\..\..\FancyZones.wxs.bk ..\..\..\FancyZones.wxs
call move /Y ..\..\..\FileExplorerPreview.wxs.bk ..\..\..\FileExplorerPreview.wxs
call move /Y ..\..\..\FileLocksmith.wxs.bk ..\..\..\FileLocksmith.wxs
call move /Y ..\..\..\Hosts.wxs.bk ..\..\..\Hosts.wxs
call move /Y ..\..\..\ImageResizer.wxs.bk ..\..\..\ImageResizer.wxs
call move /Y ..\..\..\KeyboardManager.wxs.bk ..\..\..\KeyboardManager.wxs
call move /Y ..\..\..\MeasureTool.wxs.bk ..\..\..\MeasureTool.wxs
call move /Y ..\..\..\MouseUtils.wxs.bk ..\..\..\MouseUtils.wxs
call move /Y ..\..\..\PowerAccent.wxs.bk ..\..\..\PowerAccent.wxs
call move /Y ..\..\..\PowerRename.wxs.bk ..\..\..\PowerRename.wxs
call move /Y ..\..\..\Product.wxs.bk ..\..\..\Product.wxs
call move /Y ..\..\..\RegistryPreview.wxs.bk ..\..\..\RegistryPreview.wxs
call move /Y ..\..\..\Resources.wxs.bk ..\..\..\Resources.wxs
call move /Y ..\..\..\Run.wxs.bk ..\..\..\Run.wxs
call move /Y ..\..\..\Settings.wxs.bk ..\..\..\Settings.wxs
call move /Y ..\..\..\ShortcutGuide.wxs.bk ..\..\..\ShortcutGuide.wxs
call move /Y ..\..\..\TextExtractor.wxs.bk ..\..\..\TextExtractor.wxs
call move /Y ..\..\..\Tools.wxs.bk ..\..\..\Tools.wxs
call move /Y ..\..\..\VideoConference.wxs.bk ..\..\..\VideoConference.wxs
call move /Y ..\..\..\WinAppSDK.wxs.bk ..\..\..\WinAppSDK.wxs
call move /Y ..\..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h.bk ..\..\..\..\PowerToysSetupCustomActions\DepsFilesLists.h
</PostBuildEvent> </PostBuildEvent>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<Name>PowerToysInstaller</Name> <Name>PowerToysInstaller</Name>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' == 'true' ">
<DefineConstants>$(DefineConstants);PerUser=true</DefineConstants>
</PropertyGroup>
<PropertyGroup Label="UserMacros" Condition=" '$(PerUser)' != 'true' ">
<DefineConstants>$(DefineConstants);PerUser=false</DefineConstants>
</PropertyGroup>
<PropertyGroup> <PropertyGroup>
<!-- We do not support debug installer builds --> <!-- We do not support debug installer builds -->
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
@@ -41,15 +71,22 @@ call "..\..\publish.cmd" arm64
<ProductVersion>3.10</ProductVersion> <ProductVersion>3.10</ProductVersion>
<ProjectGuid>022a9d30-7c4f-416d-a9df-5ff2661cc0ad</ProjectGuid> <ProjectGuid>022a9d30-7c4f-416d-a9df-5ff2661cc0ad</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<OutputName>PowerToysSetup-$(Version)-$(Platform)</OutputName> <OutputName Condition=" '$(PerUser)' != 'true' ">PowerToysSetup-$(Version)-$(Platform)</OutputName>
<OutputName Condition=" '$(PerUser)' == 'true' ">PowerToysUserSetup-$(Version)-$(Platform)</OutputName>
<OutputType>Package</OutputType> <OutputType>Package</OutputType>
<SuppressAclReset>True</SuppressAclReset> <SuppressAclReset>True</SuppressAclReset>
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
<!-- 1076 and ICE91 - warning: using this configuration for perMachine install could cause problems. -->
<!-- 1026 - warning: file ID is too long -->
<SuppressIces>ICE91</SuppressIces>
<SuppressSpecificWarnings>1026;1076</SuppressSpecificWarnings>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<OutputPath>$(Platform)\$(Configuration)\</OutputPath> <OutputPath Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath> <OutputPath Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutputPath>
<IntermediateOutputPath Condition=" '$(PerUser)' != 'true' ">obj\$(Platform)\$(Configuration)\MachineSetup</IntermediateOutputPath>
<IntermediateOutputPath Condition=" '$(PerUser)' == 'true' ">obj\$(Platform)\$(Configuration)\UserSetup</IntermediateOutputPath>
<SuppressIces>ICE40</SuppressIces> <SuppressIces>ICE40</SuppressIces>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
@@ -139,18 +176,19 @@ call "..\..\publish.cmd" arm64
</Target> </Target>
<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\previewpane\MonacoPreviewHandler\monacoSRC"
PreprocessorVariable="var.MonacoSRCHarvestPath" PreprocessorVariable="var.MonacoSRCHarvestPath"
OutputFile="MonacoSRC.wxs" OutputFile="MonacoSRC.wxs"
ComponentGroupName="MonacoSRCHeatGenerated" ComponentGroupName="MonacoSRCHeatGenerated"
DirectoryRefId="MonacoPreviewHandlerMonacoSRCFolder" DirectoryRefId="MonacoPreviewHandlerMonacoSRCFolder"
AutogenerateGuids="true" AutogenerateGuids="false"
GenerateGuidsNow="true"
ToolPath="$(WixToolPath)" ToolPath="$(WixToolPath)"
RunAsSeparateProcess="true" RunAsSeparateProcess="true"
SuppressFragments="true" SuppressFragments="false"
SuppressRegistry="true" SuppressRegistry="false"
SuppressRootDirectory="true" /> SuppressRootDirectory="true"/>
</Target> </Target> -->
</Project> </Project>

View File

@@ -23,16 +23,17 @@
Language="1033" Language="1033"
Version="$(var.Version)" Version="$(var.Version)"
Manufacturer="Microsoft Corporation" Manufacturer="Microsoft Corporation"
UpgradeCode="42B84BF7-5FBF-473B-9C8B-049DC16F7708"> UpgradeCode="$(var.UpgradeCodeGUID)">
<Package InstallerVersion="500" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" Platform="$(var.PlatformLK)" />
<Package InstallerVersion="500" Compressed="yes" InstallScope="$(var.InstallScope)" InstallPrivileges="$(var.InstallPrivileges)" Platform="$(var.PlatformLK)" />
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed." /> <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed." />
<Upgrade Id="42B84BF7-5FBF-473B-9C8B-049DC16F7708"> <Upgrade Id="$(var.UpgradeCodeGUID)">
<UpgradeVersion <UpgradeVersion
Minimum="0.0.0" Maximum="$(var.Version)" Minimum="0.0.0" Maximum="$(var.Version)"
Property="PREVIOUSVERSIONSINSTALLED" Property="PREVIOUSVERSIONSINSTALLED"
IncludeMinimum="yes" IncludeMaximum="no" /> IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade> </Upgrade>
@@ -51,7 +52,7 @@
<Property Id="ARPPRODUCTICON" Value="powertoys.exe" /> <Property Id="ARPPRODUCTICON" Value="powertoys.exe" />
<Feature Id="CoreFeature" Title="PowerToys" AllowAdvertise="no" Absent="disallow" TypicalDefault="install" <Feature Id="CoreFeature" Title="PowerToys" AllowAdvertise="no" Absent="disallow" TypicalDefault="install"
Description="Contains the Shortcut Guide and Fancy Zones features."> Description="Contains all PowerToys features.">
<ComponentGroupRef Id="CoreComponents" /> <ComponentGroupRef Id="CoreComponents" />
<ComponentGroupRef Id="AlwaysOnTopComponentGroup" /> <ComponentGroupRef Id="AlwaysOnTopComponentGroup" />
@@ -118,13 +119,13 @@
<Property Id="CREATESCHEDULEDTASK" Value="1"/> <Property Id="CREATESCHEDULEDTASK" Value="1"/>
<Property Id="WixShellExecTarget" Value="[#PowerToys_ActionRunner.exe]" /> <Property Id="WixShellExecTarget" Value="[#PowerToys_ActionRunner.exe]" />
<SetProperty Action="SetDEFAULTBOOTSTRAPPERINSTALLFOLDER" Id="DEFAULTBOOTSTRAPPERINSTALLFOLDER" Value="[ProgramFiles64Folder]PowerToys" Before="SetBOOTSTRAPPERINSTALLFOLDER" Sequence="execute"> <SetProperty Action="SetDEFAULTBOOTSTRAPPERINSTALLFOLDER" Id="DEFAULTBOOTSTRAPPERINSTALLFOLDER" Value="[$(var.DefaultInstallDir)]PowerToys" Before="SetBOOTSTRAPPERINSTALLFOLDER" Sequence="execute"></SetProperty>
</SetProperty>
<!-- In case we didn't receive a value from the bootstrapper. --> <!-- In case we didn't receive a value from the bootstrapper. -->
<SetProperty Action="SetBOOTSTRAPPERINSTALLFOLDER" Id="BOOTSTRAPPERINSTALLFOLDER" Value="[DEFAULTBOOTSTRAPPERINSTALLFOLDER]" Before="DetectPrevInstallPath" Sequence="execute"> <SetProperty Action="SetBOOTSTRAPPERINSTALLFOLDER" Id="BOOTSTRAPPERINSTALLFOLDER" Value="[DEFAULTBOOTSTRAPPERINSTALLFOLDER]" Before="DetectPrevInstallPath" Sequence="execute">
<![CDATA[BOOTSTRAPPERINSTALLFOLDER = ""]]> <![CDATA[BOOTSTRAPPERINSTALLFOLDER = ""]]>
</SetProperty> </SetProperty>
<!-- Have to compare value sent by bootstrapper to default to avoid using it, as a check to verify it's not default. This hack can be removed if it's possible to set the bootstrapper option to the previous install folder --> <!-- Have to compare value sent by bootstrapper to default to avoid using it, as a check to verify it's not default. This hack can be removed if it's possible to set the bootstrapper option to the previous install folder-->
<SetProperty Action="SetINSTALLFOLDERTOPREVIOUSINSTALLFOLDER" Id="INSTALLFOLDER" Value="[PREVIOUSINSTALLFOLDER]" After="DetectPrevInstallPath" Sequence="execute"> <SetProperty Action="SetINSTALLFOLDERTOPREVIOUSINSTALLFOLDER" Id="INSTALLFOLDER" Value="[PREVIOUSINSTALLFOLDER]" After="DetectPrevInstallPath" Sequence="execute">
<![CDATA[BOOTSTRAPPERINSTALLFOLDER = DEFAULTBOOTSTRAPPERINSTALLFOLDER AND PREVIOUSINSTALLFOLDER <> ""]]> <![CDATA[BOOTSTRAPPERINSTALLFOLDER = DEFAULTBOOTSTRAPPERINSTALLFOLDER AND PREVIOUSINSTALLFOLDER <> ""]]>
</SetProperty> </SetProperty>
@@ -132,6 +133,7 @@
<![CDATA[BOOTSTRAPPERINSTALLFOLDER <> DEFAULTBOOTSTRAPPERINSTALLFOLDER OR PREVIOUSINSTALLFOLDER = ""]]> <![CDATA[BOOTSTRAPPERINSTALLFOLDER <> DEFAULTBOOTSTRAPPERINSTALLFOLDER OR PREVIOUSINSTALLFOLDER = ""]]>
</SetProperty> </SetProperty>
<SetProperty Id="InstallScope" Value="$(var.InstallScope)" Before="DetectPrevInstallPath" Sequence="execute"></SetProperty>
<InstallExecuteSequence> <InstallExecuteSequence>
<Custom Action="DetectPrevInstallPath" After="AppSearch" /> <Custom Action="DetectPrevInstallPath" After="AppSearch" />
<Custom Action="SetRegisterPowerToysSchTaskParam" Before="RegisterPowerToysSchTask" /> <Custom Action="SetRegisterPowerToysSchTaskParam" Before="RegisterPowerToysSchTask" />
@@ -424,7 +426,7 @@
<!-- Installation directory structure --> <!-- Installation directory structure -->
<Fragment> <Fragment>
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder"> <Directory Id="$(var.DefaultInstallDir)">
<Directory Id="INSTALLFOLDER" Name="PowerToys"> <Directory Id="INSTALLFOLDER" Name="PowerToys">
<Directory Id="DllsFolder" Name="dll"> <Directory Id="DllsFolder" Name="dll">
<Directory Id="DotnetDlls" Name="dotnet" /> <Directory Id="DotnetDlls" Name="dotnet" />
@@ -513,79 +515,62 @@
<!-- Launcher --> <!-- Launcher -->
<Directory Id="LauncherInstallFolder" Name="launcher"> <Directory Id="LauncherInstallFolder" Name="launcher">
<Directory Id="LauncherImagesFolder" Name="Images" /> <Directory Id="LauncherImagesFolder" Name="Images" />
<Directory Id="LauncherPropertiesFolder" Name="Properties" />
<!-- Plugins --> <!-- Plugins -->
<Directory Id="LauncherPluginsFolder" Name="Plugins"> <Directory Id="LauncherPluginsFolder" Name="Plugins">
<Directory Id="WebSearchPluginFolder" Name="WebSearch"> <Directory Id="WebSearchPluginFolder" Name="WebSearch">
<Directory Id="WebSearchImagesFolder" Name="Images" /> <Directory Id="WebSearchImagesFolder" Name="Images" />
<Directory Id="WebSearchLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="CalculatorPluginFolder" Name="Calculator"> <Directory Id="CalculatorPluginFolder" Name="Calculator">
<Directory Id="CalculatorImagesFolder" Name="Images" /> <Directory Id="CalculatorImagesFolder" Name="Images" />
<Directory Id="CalculatorLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="FolderPluginFolder" Name="Folder"> <Directory Id="FolderPluginFolder" Name="Folder">
<Directory Id="FolderPluginImagesFolder" Name="Images" /> <Directory Id="FolderPluginImagesFolder" Name="Images" />
<Directory Id="FolderPluginLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="ProgramPluginFolder" Name="Program"> <Directory Id="ProgramPluginFolder" Name="Program">
<Directory Id="ProgramImagesFolder" Name="Images" /> <Directory Id="ProgramImagesFolder" Name="Images" />
<Directory Id="ProgramLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="ShellPluginFolder" Name="Shell"> <Directory Id="ShellPluginFolder" Name="Shell">
<Directory Id="ShellImagesFolder" Name="Images" /> <Directory Id="ShellImagesFolder" Name="Images" />
<Directory Id="ShellLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="IndexerPluginFolder" Name="Indexer"> <Directory Id="IndexerPluginFolder" Name="Indexer">
<Directory Id="IndexerImagesFolder" Name="Images" /> <Directory Id="IndexerImagesFolder" Name="Images" />
<Directory Id="IndexerLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="UriPluginFolder" Name="Uri"> <Directory Id="UriPluginFolder" Name="Uri">
<Directory Id="UriImagesFolder" Name="Images" /> <Directory Id="UriImagesFolder" Name="Images" />
<Directory Id="UriLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="HistoryPluginFolder" Name="History"> <Directory Id="HistoryPluginFolder" Name="History">
<Directory Id="HistoryImagesFolder" Name="Images" /> <Directory Id="HistoryImagesFolder" Name="Images" />
<Directory Id="HistoryLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="UnitConverterPluginFolder" Name="UnitConverter"> <Directory Id="UnitConverterPluginFolder" Name="UnitConverter">
<Directory Id="UnitConverterImagesFolder" Name="Images" /> <Directory Id="UnitConverterImagesFolder" Name="Images" />
<Directory Id="UnitConverterLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="VSCodeWorkspacesPluginFolder" Name="VSCodeWorkspace"> <Directory Id="VSCodeWorkspacesPluginFolder" Name="VSCodeWorkspace">
<Directory Id="VSCodeWorkspaceImagesFolder" Name="Images" /> <Directory Id="VSCodeWorkspaceImagesFolder" Name="Images" />
<Directory Id="VSCodeWorkspaceLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="WindowWalkerPluginFolder" Name="WindowWalker"> <Directory Id="WindowWalkerPluginFolder" Name="WindowWalker">
<Directory Id="WindowWalkerImagesFolder" Name="Images" /> <Directory Id="WindowWalkerImagesFolder" Name="Images" />
<Directory Id="WindowWalkerLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="OneNotePluginFolder" Name="OneNote"> <Directory Id="OneNotePluginFolder" Name="OneNote">
<Directory Id="OneNoteImagesFolder" Name="Images" /> <Directory Id="OneNoteImagesFolder" Name="Images" />
<Directory Id="OneNoteLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="RegistryPluginFolder" Name="Registry"> <Directory Id="RegistryPluginFolder" Name="Registry">
<Directory Id="RegistryImagesFolder" Name="Images" /> <Directory Id="RegistryImagesFolder" Name="Images" />
<Directory Id="RegistryLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="ServicePluginFolder" Name="Service"> <Directory Id="ServicePluginFolder" Name="Service">
<Directory Id="ServiceImagesFolder" Name="Images" /> <Directory Id="ServiceImagesFolder" Name="Images" />
</Directory> </Directory>
<Directory Id="WindowsTerminalPluginFolder" Name="WindowsTerminal"> <Directory Id="WindowsTerminalPluginFolder" Name="WindowsTerminal">
<Directory Id="WindowsTerminalImagesFolder" Name="Images" /> <Directory Id="WindowsTerminalImagesFolder" Name="Images" />
<Directory Id="WindowsTerminalLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="SystemPluginFolder" Name="System"> <Directory Id="SystemPluginFolder" Name="System">
<Directory Id="SystemImagesFolder" Name="Images" /> <Directory Id="SystemImagesFolder" Name="Images" />
</Directory> </Directory>
<Directory Id="TimeDatePluginFolder" Name="TimeDate"> <Directory Id="TimeDatePluginFolder" Name="TimeDate">
<Directory Id="TimeDateImagesFolder" Name="Images" /> <Directory Id="TimeDateImagesFolder" Name="Images" />
<Directory Id="TimeDateLanguagesFolder" Name="Languages" />
</Directory> </Directory>
<Directory Id="WindowsSettingsPluginFolder" Name="WindowsSettings"> <Directory Id="WindowsSettingsPluginFolder" Name="WindowsSettings">
<Directory Id="WindowsSettingsImagesFolder" Name="Images" /> <Directory Id="WindowsSettingsImagesFolder" Name="Images" />
<Directory Id="WindowsSettingsLanguagesFolder" Name="Languages" />
</Directory> </Directory>
</Directory> </Directory>
</Directory> </Directory>

View File

@@ -4,49 +4,32 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define RegistryPreviewFiles=ColorCode.Core.dll;ColorCode.WinUI.dll;CommunityToolkit.Common.dll;CommunityToolkit.WinUI.UI.Controls.Core.dll;CommunityToolkit.WinUI.UI.Controls.DataGrid.dll;CommunityToolkit.WinUI.UI.Controls.Input.dll;CommunityToolkit.WinUI.UI.Controls.Layout.dll;CommunityToolkit.WinUI.UI.Controls.Markdown.dll;CommunityToolkit.WinUI.UI.Controls.Media.dll;CommunityToolkit.WinUI.UI.Controls.Primitives.dll;CommunityToolkit.WinUI.UI.dll;CommunityToolkit.WinUI.dll;ControlzEx.dll;Ijwhost.dll;Microsoft.Graphics.Canvas.Interop.dll;Microsoft.Graphics.Canvas.dll;Microsoft.Graphics.Display.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.WinUI.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.AppNotifications.Builder.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.Security.AccessControl.Projection.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.Windows.Widgets.Projection.dll;Microsoft.Windows.Widgets.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.Common.UI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.RegistryPreview.deps.json;PowerToys.RegistryPreview.dll;PowerToys.RegistryPreview.exe;PowerToys.RegistryPreview.runtimeconfig.json;PowerToys.RegistryPreviewExt.dll;PowerToys.Settings.UI.Lib.dll;System.CodeDom.dll;System.IO.Abstractions.dll;System.Management.dll;WinRT.Runtime.dll;WinUIEx.dll;app.ico;resources.pri?> <?define RegistryPreviewFiles=?>
<?if $(var.Platform) = x64?> <?define RegistryPreviewFilesPath=$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\?>
<?define RegistryPreviewFiles=$(var.RegistryPreviewFiles);clrcompression.dll?>
<?endif?>
<?define RegistryPreviewAssets=data32.png;error32.png;folder32.png;string32.png?> <?define RegistryPreviewAssetsFiles=?>
<?define RegistryPreviewAssetsFilesPath=$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\Assets?>
<Fragment> <Fragment>
<!-- Registry Preview --> <!-- Registry Preview -->
<DirectoryRef Id="RegistryPreviewInstallFolder" FileSource="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)"> <DirectoryRef Id="RegistryPreviewInstallFolder" FileSource="$(var.RegistryPreviewFilesPath)">
<?foreach File in $(var.RegistryPreviewFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="RegistryPreviewComp_$(var.File)" Win64="yes"> <!--RegistryPreviewFiles_Component_Def-->
<File Id="RegistryPreviewFile_$(var.File)" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="RegistryPreviewAssetsInstallFolder" FileSource="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\Assets"> <DirectoryRef Id="RegistryPreviewAssetsInstallFolder" FileSource="$(var.RegistryPreviewAssetsFilesPath)">
<?foreach File in $(var.RegistryPreviewAssets)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="RegistryPreviewAssetsComp_$(var.File)" Win64="yes"> <!--RegistryPreviewAssetsFiles_Component_Def-->
<File Id="RegistryPreviewAssetsFile_$(var.File)" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\Assets\$(var.File)" />
</Component>
<?endforeach?>
<!-- Files with dash '-' in name listed manually as Component/File ID can'ţcontain dash -->
<Component Id="RegistryPreviewAssetsComp_deleted_folder32.png" Win64="yes">
<File Id="RegistryPreviewAssetsFile_deleted_folder32.png" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\Assets\deleted-folder32.png" />
</Component>
<Component Id="RegistryPreviewAssetsComp_deleted_value32.png" Win64="yes">
<File Id="RegistryPreviewAssetsFile_deleted_value32.png" Source="$(var.BinDir)modules\$(var.RegistryPreviewProjectName)\Assets\deleted-value32.png" />
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="RegistryPreviewComponentGroup">
<ComponentGroup Id="RegistryPreviewComponentGroup" Directory="INSTALLFOLDER"> <Component Id="RemoveRegistryPreviewFolder" Guid="D3DBC395-FAC5-44B1-BE44-3FE2B6E0F391" Directory="RegistryPreviewInstallFolder" >
<?foreach File in $(var.RegistryPreviewFiles)?> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<ComponentRef Id="RegistryPreviewComp_$(var.File)" /> <RegistryValue Type="string" Name="RemoveRegistryPreviewFolder" Value="" KeyPath="yes"/>
<?endforeach?> </RegistryKey>
<?foreach File in $(var.RegistryPreviewAssets)?> <RemoveFolder Id="RemoveFolderRegistryPreviewFolder" Directory="RegistryPreviewInstallFolder" On="uninstall"/>
<ComponentRef Id="RegistryPreviewAssetsComp_$(var.File)" /> <RemoveFolder Id="RemoveFolderRegistryPreviewAssetsFolder" Directory="RegistryPreviewAssetsInstallFolder" On="uninstall"/>
<?endforeach?> </Component>
<ComponentRef Id="RegistryPreviewAssetsComp_deleted_folder32.png" />
<ComponentRef Id="RegistryPreviewAssetsComp_deleted_value32.png" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -145,48 +145,72 @@
Id="Launcher_$(var.IdSafeLanguage)_Component" Id="Launcher_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)LauncherInstallFolder" Directory="Resource$(var.IdSafeLanguage)LauncherInstallFolder"
Guid="$(var.CompGUIDPrefix)00"> Guid="$(var.CompGUIDPrefix)00">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\$(var.Language)\PowerToys.PowerLauncher.resources.dll" /> <File Id="Launcher_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\$(var.Language)\PowerToys.PowerLauncher.resources.dll" />
</Component> </Component>
<Component <Component
Id="FancyZonesEditor_$(var.IdSafeLanguage)_Component" Id="FancyZonesEditor_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FancyZonesInstallFolder" Directory="Resource$(var.IdSafeLanguage)FancyZonesInstallFolder"
Guid="$(var.CompGUIDPrefix)01"> Guid="$(var.CompGUIDPrefix)01">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="FancyZonesEditor_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="FancyZonesEditor_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.FancyZonesProjectName)\$(var.Language)\PowerToys.FancyZonesEditor.resources.dll" /> <File Id="FancyZonesEditor_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.FancyZonesProjectName)\$(var.Language)\PowerToys.FancyZonesEditor.resources.dll" />
</Component> </Component>
<Component <Component
Id="ImageResizer_$(var.IdSafeLanguage)_Component" Id="ImageResizer_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)ImageResizerInstallFolder" Directory="Resource$(var.IdSafeLanguage)ImageResizerInstallFolder"
Guid="$(var.CompGUIDPrefix)02"> Guid="$(var.CompGUIDPrefix)02">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="ImageResizer_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="ImageResizer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\$(var.Language)\PowerToys.ImageResizer.resources.dll" /> <File Id="ImageResizer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ImageResizerProjectName)\$(var.Language)\PowerToys.ImageResizer.resources.dll" />
</Component> </Component>
<Component <Component
Id="ColorPicker_$(var.IdSafeLanguage)_Component" Id="ColorPicker_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)ColorPickerInstallFolder" Directory="Resource$(var.IdSafeLanguage)ColorPickerInstallFolder"
Guid="$(var.CompGUIDPrefix)03"> Guid="$(var.CompGUIDPrefix)03">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="ColorPicker_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="ColorPicker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\$(var.Language)\PowerToys.ColorPickerUI.resources.dll" /> <File Id="ColorPicker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\$(var.ColorPickerProjectName)\$(var.Language)\PowerToys.ColorPickerUI.resources.dll" />
</Component> </Component>
<Component <Component
Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component" Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)04"> Guid="$(var.CompGUIDPrefix)04">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="MarkdownPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MarkdownPreviewHandler.resources.dll" /> <File Id="MarkdownPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MarkdownPreviewHandler.resources.dll" />
</Component> </Component>
<Component <Component
Id="SVGPreviewHandler_$(var.IdSafeLanguage)_Component" Id="SVGPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)05"> Guid="$(var.CompGUIDPrefix)05">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="SVGPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="SVGPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.SvgPreviewHandler.resources.dll" /> <File Id="SVGPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.SvgPreviewHandler.resources.dll" />
</Component> </Component>
<Component <Component
Id="PDFPreviewHandler_$(var.IdSafeLanguage)_Component" Id="PDFPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)06"> Guid="$(var.CompGUIDPrefix)06">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="PDFPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PDFPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.PdfPreviewHandler.resources.dll" /> <File Id="PDFPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.PdfPreviewHandler.resources.dll" />
</Component> </Component>
<Component <Component
Id="GcodePreviewHandler_$(var.IdSafeLanguage)_Component" Id="GcodePreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)07"> Guid="$(var.CompGUIDPrefix)07">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="GcodePreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="GcodePreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.GcodePreviewHandler.resources.dll" /> <File Id="GcodePreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.GcodePreviewHandler.resources.dll" />
</Component> </Component>
<!-- PowerToys Run aka Launcher plugin resources --> <!-- PowerToys Run aka Launcher plugin resources -->
@@ -194,119 +218,257 @@
Id="Launcher_Calculator_$(var.IdSafeLanguage)_Component" Id="Launcher_Calculator_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder" Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder"
Guid="$(var.CompGUIDPrefix)08"> Guid="$(var.CompGUIDPrefix)08">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Calculator_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Calculator_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Calculator.resources.dll" /> <File Id="Launcher_Calculator_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Calculator.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Folder_$(var.IdSafeLanguage)_Component" Id="Launcher_Folder_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder" Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder"
Guid="$(var.CompGUIDPrefix)09"> Guid="$(var.CompGUIDPrefix)09">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Folder_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Folder_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Folder\$(var.Language)\Microsoft.Plugin.Folder.resources.dll" /> <File Id="Launcher_Folder_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Folder\$(var.Language)\Microsoft.Plugin.Folder.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Program_$(var.IdSafeLanguage)_Component" Id="Launcher_Program_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0A" Guid="$(var.CompGUIDPrefix)0A"
Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder"> Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Program_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Program_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Program\$(var.Language)\Microsoft.Plugin.Program.resources.dll" /> <File Id="Launcher_Program_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Program\$(var.Language)\Microsoft.Plugin.Program.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Shell_$(var.IdSafeLanguage)_Component" Id="Launcher_Shell_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0B" Guid="$(var.CompGUIDPrefix)0B"
Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder"> Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Shell_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Shell_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Shell\$(var.Language)\Microsoft.Plugin.Shell.resources.dll" /> <File Id="Launcher_Shell_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Shell\$(var.Language)\Microsoft.Plugin.Shell.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Indexer_$(var.IdSafeLanguage)_Component" Id="Launcher_Indexer_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0C" Guid="$(var.CompGUIDPrefix)0C"
Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder"> Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Indexer_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Indexer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\$(var.Language)\Microsoft.Plugin.Indexer.resources.dll" /> <File Id="Launcher_Indexer_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\$(var.Language)\Microsoft.Plugin.Indexer.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Uri_$(var.IdSafeLanguage)_Component" Id="Launcher_Uri_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0D" Guid="$(var.CompGUIDPrefix)0D"
Directory="Resource$(var.IdSafeLanguage)UriPluginFolder"> Directory="Resource$(var.IdSafeLanguage)UriPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Uri_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Uri_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Uri\$(var.Language)\Microsoft.Plugin.Uri.resources.dll" /> <File Id="Launcher_Uri_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Uri\$(var.Language)\Microsoft.Plugin.Uri.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component" Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0E" Guid="$(var.CompGUIDPrefix)0E"
Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder"> Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\$(var.Language)\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.resources.dll" /> <File Id="Launcher_VSCodeWorkspaces_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\$(var.Language)\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.resources.dll" />
</Component> </Component>
<Component Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component" <Component Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)0F" Guid="$(var.CompGUIDPrefix)0F"
Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder"> Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_WindowWalker_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\$(var.Language)\Microsoft.Plugin.WindowWalker.resources.dll" /> <File Id="Launcher_WindowWalker_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\$(var.Language)\Microsoft.Plugin.WindowWalker.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Registry_$(var.IdSafeLanguage)_Component" Id="Launcher_Registry_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)10" Guid="$(var.CompGUIDPrefix)10"
Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder"> Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Registry_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Registry_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Registry\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Registry.resources.dll" /> <File Id="Launcher_Registry_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Registry\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Registry.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_Service_$(var.IdSafeLanguage)_Component" Id="Launcher_Service_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)11" Guid="$(var.CompGUIDPrefix)11"
Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder"> Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_Service_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_Service_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Service\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Service.resources.dll" /> <File Id="Launcher_Service_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\Service\$(var.Language)\Microsoft.PowerToys.Run.Plugin.Service.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_System_$(var.IdSafeLanguage)_Component" Id="Launcher_System_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)12" Guid="$(var.CompGUIDPrefix)12"
Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder"> Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_System_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_System_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\System\$(var.Language)\Microsoft.PowerToys.Run.Plugin.System.resources.dll" /> <File Id="Launcher_System_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\System\$(var.Language)\Microsoft.PowerToys.Run.Plugin.System.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component" Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)13" Guid="$(var.CompGUIDPrefix)13"
Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder"> Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_WindowsSettings_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsSettings.resources.dll" /> <File Id="Launcher_WindowsSettings_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsSettings.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component" Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)15" Guid="$(var.CompGUIDPrefix)15"
Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder"> Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.resources.dll" /> <File Id="Launcher_WindowsTerminal_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\$(var.Language)\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_WebSearch_$(var.IdSafeLanguage)_Component" Id="Launcher_WebSearch_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)16" Guid="$(var.CompGUIDPrefix)16"
Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder"> Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_WebSearch_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_WebSearch_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\$(var.Language)\Community.PowerToys.Run.Plugin.WebSearch.resources.dll" /> <File Id="Launcher_WebSearch_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\$(var.Language)\Community.PowerToys.Run.Plugin.WebSearch.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component" Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)17" Guid="$(var.CompGUIDPrefix)17"
Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder"> Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_UnitConverter_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\$(var.Language)\Community.PowerToys.Run.Plugin.UnitConverter.resources.dll" /> <File Id="Launcher_UnitConverter_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\$(var.Language)\Community.PowerToys.Run.Plugin.UnitConverter.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_TimeDate_$(var.IdSafeLanguage)_Component" Id="Launcher_TimeDate_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)18" Guid="$(var.CompGUIDPrefix)18"
Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder"> Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_TimeDate_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_TimeDate_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\$(var.Language)\Microsoft.PowerToys.Run.Plugin.TimeDate.resources.dll" /> <File Id="Launcher_TimeDate_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\$(var.Language)\Microsoft.PowerToys.Run.Plugin.TimeDate.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_OneNote_$(var.IdSafeLanguage)_Component" Id="Launcher_OneNote_$(var.IdSafeLanguage)_Component"
Guid="$(var.CompGUIDPrefix)19" Guid="$(var.CompGUIDPrefix)19"
Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder"> Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Resource$(var.IdSafeLanguage)OneNotePluginFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_OneNote_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\$(var.Language)\Microsoft.PowerToys.Run.Plugin.OneNote.resources.dll" /> <File Id="Launcher_OneNote_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\$(var.Language)\Microsoft.PowerToys.Run.Plugin.OneNote.resources.dll" />
</Component> </Component>
<Component <Component
Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component" Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)1A"> Guid="$(var.CompGUIDPrefix)1A">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="MonacoPreviewHandler_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MonacoPreviewHandler.resources.dll" /> <File Id="MonacoPreviewHandler_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\FileExplorerPreview\$(var.Language)\PowerToys.MonacoPreviewHandler.resources.dll" />
</Component> </Component>
<Component <Component
Id="Launcher_History_$(var.IdSafeLanguage)_Component" Id="Launcher_History_$(var.IdSafeLanguage)_Component"
Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder" Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder"
Guid="$(var.CompGUIDPrefix)1B"> Guid="$(var.CompGUIDPrefix)1B">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Launcher_History_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Launcher_History_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\History\$(var.Language)\Microsoft.PowerToys.Run.Plugin.History.resources.dll" /> <File Id="Launcher_History_$(var.IdSafeLanguage)_File" Source="$(var.BinDir)modules\launcher\Plugins\History\$(var.Language)\Microsoft.PowerToys.Run.Plugin.History.resources.dll" />
</Component> </Component>
<?undef IdSafeLanguage?> <?undef IdSafeLanguage?>
<?undef CompGUIDPrefix?> <?undef CompGUIDPrefix?>
<?endforeach?> <?endforeach?>
<?endif?> <?endif?>
<?ifdef env.IsPipeline?>
<Component Id="RemoveResourcesFolder" Guid="9BC0A5A1-CBC5-47C8-8544-3F8A8C0D45F5" Directory="WinAppSDKDlls" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveResourcesFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<?foreach Language in $(var.LocLanguageList)?>
<!--NB: Ids can't contain hyphens-->
<?if $(var.Language) = cs-CZ?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = de-DE?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = es-ES?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = fr-FR?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = hu-HU?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = it-IT?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ko-KR?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = nl-NL?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = pl-PL?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define IdSafeLanguage = pt_PT?>
<!--
<?elseif $(var.Language) = qps-ploc?>
<?define IdSafeLanguage = qps_ploc?>
<?elseif $(var.Language) = qps-ploca?>
<?define IdSafeLanguage = qps_ploca?>
<?elseif $(var.Language) = qps-plocm?>
<?define IdSafeLanguage = qps_plocm?>
-->
<?elseif $(var.Language) = ru-RU?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sv-SE?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = tr-TR?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = zh-CN?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?endif?>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)LauncherInstallFolder" Directory="Resource$(var.IdSafeLanguage)LauncherInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)FancyZonesInstallFolder" Directory="Resource$(var.IdSafeLanguage)FancyZonesInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ImageResizerInstallFolder" Directory="Resource$(var.IdSafeLanguage)ImageResizerInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ColorPickerInstallFolder" Directory="Resource$(var.IdSafeLanguage)ColorPickerInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" Directory="Resource$(var.IdSafeLanguage)FileExplorerPreviewInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)CalculatorPluginFolder" Directory="Resource$(var.IdSafeLanguage)CalculatorPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)FolderPluginFolder" Directory="Resource$(var.IdSafeLanguage)FolderPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ProgramPluginFolder" Directory="Resource$(var.IdSafeLanguage)ProgramPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ShellPluginFolder" Directory="Resource$(var.IdSafeLanguage)ShellPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)IndexerPluginFolder" Directory="Resource$(var.IdSafeLanguage)IndexerPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)UriPluginFolder" Directory="Resource$(var.IdSafeLanguage)UriPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder" Directory="Resource$(var.IdSafeLanguage)VSCodeWorkspacesPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowWalkerPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowWalkerPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)RegistryPluginFolder" Directory="Resource$(var.IdSafeLanguage)RegistryPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)ServicePluginFolder" Directory="Resource$(var.IdSafeLanguage)ServicePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)SystemPluginFolder" Directory="Resource$(var.IdSafeLanguage)SystemPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowsSettingsPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowsSettingsPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WindowsTerminalPluginFolder" Directory="Resource$(var.IdSafeLanguage)WindowsTerminalPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)WebSearchPluginFolder" Directory="Resource$(var.IdSafeLanguage)WebSearchPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)UnitConverterPluginFolder" Directory="Resource$(var.IdSafeLanguage)UnitConverterPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)TimeDatePluginFolder" Directory="Resource$(var.IdSafeLanguage)TimeDatePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)OneNotePluginFolder" Directory="Resource$(var.IdSafeLanguage)OneNotePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderResourcesResource$(var.IdSafeLanguage)HistoryPluginFolder" Directory="Resource$(var.IdSafeLanguage)HistoryPluginFolder" On="uninstall"/>
<?undef IdSafeLanguage?>
<?endforeach?>
</Component>
<?endif?>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -4,294 +4,359 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define launcherImagesComponentFiles=app.dark.png;app.light.png;app_error.dark.png;app_error.light.png;RunAsset.ico?> <?define launcherFiles=?>
<?define calcComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Calculator.deps.json;Microsoft.PowerToys.Run.Plugin.Calculator.dll;PowerToys.ManagedTelemetry.dll?> <?define launcherFilesPath=$(var.BinDir)modules\launcher\?>
<?define FolderComponentFiles=plugin.json;Microsoft.Plugin.Folder.deps.json;Microsoft.Plugin.Folder.dll;PowerToys.ManagedTelemetry.dll;Ijwhost.dll?>
<?define FolderImagesComponentFiles=copy.dark.png;copy.light.png;delete.dark.png;delete.light.png;file.dark.png;file.light.png;folder.dark.png;folder.light.png;user.dark.png;user.light.png;Warning.dark.png;Warning.light.png?> <?define launcherImagesComponentFiles=?>
<?define ProgramComponentFiles=plugin.json;Microsoft.Plugin.Program.deps.json;Microsoft.Plugin.Program.dll;PowerToys.ManagedTelemetry.dll?> <?define launcherImagesComponentFilesPath=$(var.BinDir)modules\launcher\Images\?>
<?define ProgramImagesComponentFiles=app.dark.png;app.light.png;disable.light.png;disable.dark.png;folder.light.png;folder.dark.png;shell.light.png;shell.dark.png;user.light.png;user.dark.png?>
<?define ShellComponentFiles=plugin.json;Microsoft.Plugin.Shell.deps.json;Microsoft.Plugin.Shell.dll;PowerToys.ManagedTelemetry.dll?> <?define calcComponentFiles=?>
<?define HistoryPluginComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.History.deps.json;Microsoft.PowerToys.Run.Plugin.History.dll?> <?define calcComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Calculator\?>
<?define ShellImagesComponentFiles=shell.light.png;shell.dark.png;user.light.png;user.dark.png?> <?define calcImagesComponentFiles=?>
<?define IndexerComponentFiles=Microsoft.Plugin.Indexer.deps.json;Microsoft.Plugin.Indexer.dll;plugin.json;PowerToys.ManagedTelemetry.dll;Ijwhost.dll?> <?define calcImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Calculator\Images\?>
<?define IndexerImagesComponentFiles=indexer.dark.png;indexer.light.png;Warning.light.png;Warning.dark.png?>
<?define UnitConvCompFiles=plugin.json;Community.PowerToys.Run.Plugin.UnitConverter.deps.json;Community.PowerToys.Run.Plugin.UnitConverter.dll?> <?define FolderComponentFiles=?>
<?define WebSrchCompFiles=plugin.json;Community.PowerToys.Run.Plugin.WebSearch.deps.json;Community.PowerToys.Run.Plugin.WebSearch.dll?> <?define FolderComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Folder\?>
<?define UriComponentFiles=plugin.json;Microsoft.Plugin.Uri.deps.json;Microsoft.Plugin.Uri.dll;PowerToys.ManagedTelemetry.dll?> <?define FolderImagesComponentFiles=?>
<?define VSCWrkCompFiles=plugin.json;Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll?> <?define FolderImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Folder\Images?>
<?define WindowWlkrCompFiles=plugin.json;Microsoft.Plugin.WindowWalker.deps.json;Microsoft.Plugin.WindowWalker.dll;PowerToys.ManagedTelemetry.dll?>
<?define WindowWlkrImagesCompFiles=windowwalker.dark.png;windowwalker.light.png;info.dark.png;info.light.png?> <?define ProgramComponentFiles=?>
<?define OneNoteComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.OneNote.deps.json;Microsoft.PowerToys.Run.Plugin.OneNote.dll;PowerToys.ManagedTelemetry.dll?> <?define ProgramComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Program\?>
<?define RegistryComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Registry.deps.json;Microsoft.PowerToys.Run.Plugin.Registry.dll;PowerToys.ManagedTelemetry.dll?> <?define ProgramImagesComponentFiles=?>
<?define ServiceComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.Service.deps.json;Microsoft.PowerToys.Run.Plugin.Service.dll?> <?define ProgramImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Program\Images\?>
<?define SystemComponentFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.System.deps.json;Microsoft.PowerToys.Run.Plugin.System.dll?>
<?define SystemImagesComponentFiles=lock.dark.png;lock.light.png;logoff.dark.png;logoff.light.png;recyclebin.dark.png;recyclebin.light.png;restart.dark.png;restart.light.png;shutdown.dark.png;shutdown.light.png;sleep.dark.png;sleep.light.png;firmwareSettings.dark.png;firmwareSettings.light.png;networkAdapter.dark.png;networkAdapter.light.png?> <?define ShellComponentFiles=?>
<?define TimeDateComponentFiles=Microsoft.PowerToys.Run.Plugin.TimeDate.deps.json;Microsoft.PowerToys.Run.Plugin.TimeDate.dll;plugin.json;PowerToys.ManagedTelemetry.dll?> <?define ShellComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Shell\?>
<?define TimeDateImagesComponentFiles=calendar.dark.png;calendar.light.png;time.dark.png;time.light.png;timeDate.dark.png;timeDate.light.png;Warning.dark.png;Warning.light.png?> <?define ShellImagesComponentFiles=?>
<?define WinSetCmpFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.WindowsSettings.deps.json;Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll;PowerToys.ManagedTelemetry.dll?> <?define ShellImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Shell\Images\?>
<?define WinTermCmpFiles=plugin.json;Microsoft.PowerToys.Run.Plugin.WindowsTerminal.deps.json;Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll;PowerToys.ManagedTelemetry.dll?>
<?define IndexerComponentFiles=?>
<?define IndexerComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Indexer\?>
<?define IndexerImagesComponentFiles=?>
<?define IndexerImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Indexer\Images\?>
<?define UnitConvCompFiles=?>
<?define UnitConvCompFilesPath=$(var.BinDir)modules\launcher\Plugins\UnitConverter\?>
<?define UnitConvImagesCompFiles=?>
<?define UnitConvImagesCompFilesPath=$(var.BinDir)modules\launcher\Plugins\UnitConverter\Images\?>
<?define WebSrchCompFiles=?>
<?define WebSrchCompFilesPath=$(var.BinDir)modules\launcher\Plugins\WebSearch\?>
<?define WebSrchImagesCompFiles=?>
<?define WebSrchImagesCompFilesPath=$(var.BinDir)modules\launcher\Plugins\WebSearch\Images\?>
<?define HistoryPluginComponentFiles=?>
<?define HistoryPluginComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\History\?>
<?define HistoryPluginImagesComponentFiles=?>
<?define HistoryPluginImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\History\Images\?>
<?define UriComponentFiles=?>
<?define UriComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Uri\?>
<?define UriImagesComponentFiles=?>
<?define UriImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Uri\Images\?>
<?define VSCWrkCompFiles=?>
<?define VSCWrkCompFilesPath=$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\?>
<?define VSCWrkImagesCompFiles=?>
<?define VSCWrkImagesCompFilesPath=$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\?>
<?define WindowWlkrCompFiles=?>
<?define WindowWlkrCompFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowWalker\?>
<?define WindowWlkrImagesCompFiles=?>
<?define WindowWlkrImagesCompFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowWalker\Images\?>
<?define OneNoteComponentFiles=?>
<?define OneNoteComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\OneNote\?>
<?define OneNoteImagesComponentFiles=?>
<?define OneNoteImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\OneNote\Images\?>
<?define RegistryComponentFiles=?>
<?define RegistryComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Registry\?>
<?define RegistryImagesComponentFiles=?>
<?define RegistryImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Registry\Images\?>
<?define ServiceComponentFiles=?>
<?define ServiceComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Service\?>
<?define ServiceImagesComponentFiles=?>
<?define ServiceImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\Service\Images\?>
<?define SystemComponentFiles=?>
<?define SystemComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\System\?>
<?define SystemImagesComponentFiles=?>
<?define SystemImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\System\Images\?>
<?define TimeDateComponentFiles=?>
<?define TimeDateComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\TimeDate\?>
<?define TimeDateImagesComponentFiles=?>
<?define TimeDateImagesComponentFilesPath=$(var.BinDir)modules\launcher\Plugins\TimeDate\Images\?>
<?define WinSetCmpFiles=?>
<?define WinSetCmpFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowsSettings\?>
<?define WinSetImagesCmpFiles=?>
<?define WinSetImagesCmpFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowsSettings\Images\?>
<?define WinTermCmpFiles=?>
<?define WinTermCmpFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\?>
<?define WinTermImagesCmpFiles=?>
<?define WinTermImagesCmpFilesPath=$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\Images\?>
<Fragment> <Fragment>
<Component Id="launcherShortcutComponent" Directory="LauncherInstallFolder" >
<!-- Toast Notification AUMID -->
<RegistryKey Root="$(var.RegistryScope)" Key="SOFTWARE\Classes\AppUserModelId\PowerToysRun">
<RegistryValue Type="string" Name="DisplayName" Value="PowerToys Run" />
<RegistryValue Type="string" Name="IconUri" Value="[LauncherImagesFolder]RunAsset.ico" />
</RegistryKey>
</Component>
<DirectoryRef Id="LauncherInstallFolder" FileSource="$(var.launcherFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--launcherFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="LauncherImagesFolder" FileSource="$(var.launcherImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--launcherImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Calculator Plugin -->
<DirectoryRef Id="CalculatorPluginFolder" FileSource="$(var.calcComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--calcComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="CalculatorImagesFolder" FileSource="$(var.calcImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--calcImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Folder Plugin -->
<DirectoryRef Id="FolderPluginFolder" FileSource="$(var.FolderComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--FolderComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="FolderPluginImagesFolder" FileSource="$(var.FolderImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--FolderImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Program Plugin -->
<DirectoryRef Id="ProgramPluginFolder" FileSource="$(var.ProgramComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ProgramComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="ProgramImagesFolder" FileSource="$(var.ProgramImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ProgramImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Shell Plugin -->
<DirectoryRef Id="ShellPluginFolder" FileSource="$(var.ShellComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ShellComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="ShellImagesFolder" FileSource="$(var.ShellImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ShellImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Indexer Plugin -->
<DirectoryRef Id="IndexerPluginFolder" FileSource="$(var.IndexerComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--IndexerComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="IndexerImagesFolder" FileSource="$(var.IndexerImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--IndexerImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- UnitConverter Plugin -->
<DirectoryRef Id="UnitConverterPluginFolder" FileSource="$(var.UnitConvCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--UnitConvCompFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="UnitConverterImagesFolder" FileSource="$(var.UnitConvImagesCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--UnitConvImagesCompFiles_Component_Def-->
</DirectoryRef>
<!-- WebSearch Plugin -->
<DirectoryRef Id="WebSearchPluginFolder" FileSource="$(var.WebSrchCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WebSrchCompFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="WebSearchImagesFolder" FileSource="$(var.WebSrchImagesCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WebSrchImagesCompFiles_Component_Def-->
</DirectoryRef>
<!-- History Plugin -->
<DirectoryRef Id="HistoryPluginFolder" FileSource="$(var.HistoryPluginComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--HistoryPluginComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="HistoryImagesFolder" FileSource="$(var.HistoryPluginImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--HistoryPluginImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Uri Plugin -->
<DirectoryRef Id="UriPluginFolder" FileSource="$(var.UriComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--UriComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="UriImagesFolder" FileSource="$(var.UriImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--UriImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- VSCodeWorkspaces Plugin -->
<DirectoryRef Id="VSCodeWorkspacesPluginFolder" FileSource="$(var.VSCWrkCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--VSCWrkCompFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="VSCodeWorkspaceImagesFolder" FileSource="$(var.VSCWrkImagesCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--VSCWrkImagesCompFiles_Component_Def-->
</DirectoryRef>
<!-- WindowWalker Plugin -->
<DirectoryRef Id="WindowWalkerPluginFolder" FileSource="$(var.WindowWlkrCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WindowWlkrCompFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="WindowWalkerImagesFolder" FileSource="$(var.WindowWlkrImagesCompFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WindowWlkrImagesCompFiles_Component_Def-->
</DirectoryRef>
<!-- OneNote Plugin -->
<DirectoryRef Id="OneNotePluginFolder" FileSource="$(var.OneNoteComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--OneNoteComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="OneNoteImagesFolder" FileSource="$(var.OneNoteImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--OneNoteImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Registry Plugin -->
<DirectoryRef Id="RegistryPluginFolder" FileSource="$(var.RegistryComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--RegistryComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="RegistryImagesFolder" FileSource="$(var.RegistryImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--RegistryImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- Service Plugin -->
<DirectoryRef Id="ServicePluginFolder" FileSource="$(var.ServiceComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ServiceComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="ServiceImagesFolder" FileSource="$(var.ServiceImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--ServiceImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- System Plugin -->
<DirectoryRef Id="SystemPluginFolder" FileSource="$(var.SystemComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--SystemComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="SystemImagesFolder" FileSource="$(var.SystemImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--SystemImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- TimeDate Plugin -->
<DirectoryRef Id="TimeDatePluginFolder" FileSource="$(var.TimeDateComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--TimeDateComponentFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="TimeDateImagesFolder" FileSource="$(var.TimeDateImagesComponentFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--TimeDateImagesComponentFiles_Component_Def-->
</DirectoryRef>
<!-- WindowsSettings Plugin -->
<DirectoryRef Id="WindowsSettingsPluginFolder" FileSource="$(var.WinSetCmpFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WinSetCmpFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="WindowsSettingsImagesFolder" FileSource="$(var.WinSetImagesCmpFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WinSetImagesCmpFiles_Component_Def-->
</DirectoryRef>
<!-- WindowsTerminal Plugin -->
<DirectoryRef Id="WindowsTerminalPluginFolder" FileSource="$(var.WinTermCmpFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WinTermCmpFiles_Component_Def-->
</DirectoryRef>
<DirectoryRef Id="WindowsTerminalImagesFolder" FileSource="$(var.WinTermImagesCmpFilesPath)">
<!-- Generated by generateFileComponents.ps1 -->
<!--WinTermImagesCmpFiles_Component_Def-->
</DirectoryRef>
<ComponentGroup Id="RunComponentGroup"> <ComponentGroup Id="RunComponentGroup">
<Component Id="launcherShortcutComponent" Directory="LauncherInstallFolder" > <Component Id="RemoveLauncherFolder" Guid="3FFDC0B6-82BC-4C57-AEB1-C710DB108C23" Directory="LauncherInstallFolder" >
<!-- Toast Notification AUMID --> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryKey Root="HKLM" Key="SOFTWARE\Classes\AppUserModelId\PowerToysRun"> <RegistryValue Type="string" Name="RemoveLauncherFolder" Value="" KeyPath="yes"/>
<RegistryValue Type="string" Name="DisplayName" Value="PowerToys Run" />
<RegistryValue Type="string" Name="IconUri" Value="[LauncherImagesFolder]RunAsset.ico" />
</RegistryKey> </RegistryKey>
<RemoveFolder Id="RemoveFolderLauncherFolder" Directory="LauncherInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderLauncherImagesFolder" Directory="LauncherImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderLauncherPluginsFolder" Directory="LauncherPluginsFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderCalculatorPluginFolder" Directory="CalculatorPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderCalculatorImagesFolder" Directory="CalculatorImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderFolderPluginFolder" Directory="FolderPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderFolderPluginImagesFolder" Directory="FolderPluginImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderProgramPluginFolder" Directory="ProgramPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderProgramImagesFolder" Directory="ProgramImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderShellPluginFolder" Directory="ShellPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderShellImagesFolder" Directory="ShellImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderIndexerPluginFolder" Directory="IndexerPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderIndexerImagesFolder" Directory="IndexerImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderUnitConverterPluginFolder" Directory="UnitConverterPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderUnitConverterImagesFolder" Directory="UnitConverterImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWebSearchPluginFolder" Directory="WebSearchPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWebSearchImagesFolder" Directory="WebSearchImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderHistoryPluginFolder" Directory="HistoryPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderHistoryImagesFolder" Directory="HistoryImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderUriPluginFolder" Directory="UriPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderUriImagesFolder" Directory="UriImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderVSCodeWorkspacesPluginFolder" Directory="VSCodeWorkspacesPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderVSCodeWorkspaceImagesFolder" Directory="VSCodeWorkspaceImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowWalkerPluginFolder" Directory="WindowWalkerPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowWalkerImagesFolder" Directory="WindowWalkerImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderOneNotePluginFolder" Directory="OneNotePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderOneNoteImagesFolder" Directory="OneNoteImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderRegistryPluginFolder" Directory="RegistryPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderRegistryImagesFolder" Directory="RegistryImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderServicePluginFolder" Directory="ServicePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderServiceImagesFolder" Directory="ServiceImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSystemPluginFolder" Directory="SystemPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSystemImagesFolder" Directory="SystemImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderTimeDatePluginFolder" Directory="TimeDatePluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderTimeDateImagesFolder" Directory="TimeDateImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowsSettingsPluginFolder" Directory="WindowsSettingsPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowsSettingsImagesFolder" Directory="WindowsSettingsImagesFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowsTerminalPluginFolder" Directory="WindowsTerminalPluginFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWindowsTerminalImagesFolder" Directory="WindowsTerminalImagesFolder" On="uninstall"/>
</Component> </Component>
<ComponentRef Id="launcherShortcutComponent" />
<!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="launcherInstallComponent" Guid="7362E89D-0FC8-4536-940F-F0FDF5735C39" Directory="LauncherInstallFolder" >
<File Source="$(var.BinDir)modules\Launcher\PowerToys.Launcher.dll" />
<?foreach File in e_sqlite3.dll;hyjiacan.py4n.dll;Mages.Core.dll;NLog.dll;NLog.Extensions.Logging.dll;PowerToys.PowerLauncher.deps.json;PowerToys.PowerLauncher.dll;PowerToys.PowerLauncher.exe;Microsoft.Xaml.Behaviors.dll;PowerToys.PowerLauncher.runtimeconfig.json;System.Data.OleDb.dll;UnitsNet.dll;Wox.Infrastructure.dll;Wox.Plugin.dll;PowerToys.ManagedTelemetry.dll;PowerToys.PowerLauncher.Telemetry.dll;Microsoft.Data.Sqlite.dll;SQLitePCLRaw.batteries_v2.dll;SQLitePCLRaw.core.dll;SQLitePCLRaw.provider.e_sqlite3.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.DependencyInjection.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;ControlzEx.dll;PowerToys.ManagedCommon.dll;System.Management.dll;System.IO.Abstractions.dll;PowerToys.Common.UI.dll;System.ServiceProcess.ServiceController.dll;Microsoft.Toolkit.Uwp.Notifications.dll;ModernWpf.Controls.dll;ModernWpf.dll;WinRT.Runtime.dll;Microsoft.Windows.SDK.NET.dll;System.Reactive.dll;System.Text.Json.dll;Ijwhost.dll;ScipBe.Common.Office.OneNote.dll;Interop.Microsoft.Office.Interop.OneNote.dll;LazyCache.dll;Microsoft.Extensions.Caching.Abstractions.dll;Microsoft.Extensions.Caching.Memory.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?>
<File Id="File_$(var.File)" Source="$(var.BinDir)modules\launcher\$(var.File)" />
<?endforeach?>
<File Source="$(var.BinDir)Settings\PowerToys.Settings.UI.Lib.dll" />
</Component>
<?foreach File in $(var.launcherImagesComponentFiles)?>
<Component Id="launcherImagesComponent_$(var.File)" Win64="yes" Directory="LauncherImagesFolder">
<File Id="launcherImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Calculator Plugin -->
<?foreach File in $(var.calcComponentFiles)?>
<Component Id="calcComponent_$(var.File)" Win64="yes" Directory="CalculatorPluginFolder">
<File Id="calcComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="calculatorImagesComponentLight" Directory="CalculatorImagesFolder" >
<File Id="calculatorPluginImg_calculator_light" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\Images\calculator.light.png" />
</Component>
<Component Id="calculatorImagesComponentDark" Directory="CalculatorImagesFolder" >
<File Id="calculatorPluginImg_calculator_dark" Source="$(var.BinDir)modules\launcher\Plugins\Calculator\Images\calculator.dark.png" />
</Component>
<!-- Folder Plugin -->
<?foreach File in $(var.FolderComponentFiles)?>
<Component Id="FolderComponent_$(var.File)" Win64="yes" Directory="FolderPluginFolder">
<File Id="FolderComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Folder\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.FolderImagesComponentFiles)?>
<Component Id="FolderImagesComponent_$(var.File)" Win64="yes" Directory="FolderPluginImagesFolder">
<File Id="FolderImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Folder\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Program Plugin -->
<?foreach File in $(var.ProgramComponentFiles)?>
<Component Id="ProgramComponent_$(var.File)" Win64="yes" Directory="ProgramPluginFolder">
<File Id="ProgramComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Program\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.ProgramImagesComponentFiles)?>
<Component Id="ProgramImagesComponent_$(var.File)" Win64="yes" Directory="ProgramImagesFolder">
<File Id="ProgramImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Program\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Shell Plugin -->
<?foreach File in $(var.ShellComponentFiles)?>
<Component Id="ShellComponent_$(var.File)" Win64="yes" Directory="ShellPluginFolder">
<File Id="ShellComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Shell\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.ShellImagesComponentFiles)?>
<Component Id="ShellImagesComponent_$(var.File)" Win64="yes" Directory="ShellImagesFolder">
<File Id="ShellImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Shell\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- Indexer Plugin -->
<?foreach File in $(var.IndexerComponentFiles)?>
<Component Id="IndexerComponent_$(var.File)" Win64="yes" Directory="IndexerPluginFolder">
<File Id="IndexerComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.IndexerImagesComponentFiles)?>
<Component Id="IndexerImagesComponent_$(var.File)" Win64="yes" Directory="IndexerImagesFolder">
<File Id="IndexerImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Indexer\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- UnitConverter Plugin -->
<?foreach File in $(var.UnitConvCompFiles)?>
<Component Id="UnitConvComp_$(var.File)" Win64="yes" Directory="UnitConverterPluginFolder">
<File Id="UnitConvCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="UnitConverterImagesComponentLight" Directory="UnitConverterImagesFolder" >
<File Id="UnitConverterLight" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\Images\unitconverter.light.png" />
</Component>
<Component Id="UnitConverterImagesComponentDark" Directory="UnitConverterImagesFolder" >
<File Id="UnitConverterDark" Source="$(var.BinDir)modules\launcher\Plugins\UnitConverter\Images\unitconverter.dark.png" />
</Component>
<!-- WebSearch Plugin -->
<?foreach File in $(var.WebSrchCompFiles)?>
<Component Id="WebSrchComp_$(var.File)" Win64="yes" Directory="WebSearchPluginFolder">
<File Id="WebSrchCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WebSearchImagesComponentLight" Directory="WebSearchImagesFolder" >
<File Id="WebSearchLight" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\Images\WebSearch.light.png" />
</Component>
<Component Id="WebSearchImagesComponentDark" Directory="WebSearchImagesFolder" >
<File Id="WebSearchDark" Source="$(var.BinDir)modules\launcher\Plugins\WebSearch\Images\WebSearch.dark.png" />
</Component>
<!-- History Plugin -->
<?foreach File in $(var.HistoryPluginComponentFiles)?>
<Component Id="HistoryComponent_$(var.File)" Win64="yes" Directory="HistoryPluginFolder">
<File Id="HistoryComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\History\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="HistoryImagesComponentLight" Directory="HistoryImagesFolder" >
<File Id="HistoryLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\History\Images\history.light.png" />
</Component>
<Component Id="HistoryImagesComponentDark" Directory="HistoryImagesFolder" >
<File Id="HistoryDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\History\Images\history.dark.png" />
</Component>
<!-- Uri Plugin -->
<?foreach File in $(var.UriComponentFiles)?>
<Component Id="UriComponent_$(var.File)" Win64="yes" Directory="UriPluginFolder">
<File Id="UriComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Uri\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="UriImagesComponentLight" Directory="UriImagesFolder" >
<File Id="UriLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Uri\Images\Uri.light.png" />
</Component>
<Component Id="UriImagesComponentDark" Directory="UriImagesFolder" >
<File Id="UriDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Uri\Images\Uri.dark.png" />
</Component>
<!-- VSCodeWorkspaces Plugin -->
<?foreach File in $(var.VSCWrkCompFiles)?>
<Component Id="VSCWrkComp_$(var.File)" Win64="yes" Directory="VSCodeWorkspacesPluginFolder">
<File Id="VSCWrkCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="VSCodeWorkspacesDepsComponent" Directory="VSCodeWorkspacesPluginFolder">
<File Id="VSCodeWorkspaceFolder_deps" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.deps.json" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentLight" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceCodeLight" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\code-light.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentDark" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceCodeDark" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\code-dark.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentFolder" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceFolder" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\folder.png" />
</Component>
<Component Id="VSCodeWorkspacesImagesComponentMonitor" Directory="VSCodeWorkspaceImagesFolder" >
<File Id="VSCodeWorkspaceRemote" Source="$(var.BinDir)modules\launcher\Plugins\VSCodeWorkspaces\Images\monitor.png" />
</Component>
<!-- WindowWalker Plugin -->
<?foreach File in $(var.WindowWlkrCompFiles)?>
<Component Id="WindowWlkrComp_$(var.File)" Win64="yes" Directory="WindowWalkerPluginFolder">
<File Id="WindowWlkrCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.WindowWlkrImagesCompFiles)?>
<Component Id="WindowWalkerImagesComp_$(var.File)" Win64="yes" Directory="WindowWalkerImagesFolder">
<File Id="WindowWalkerImagesComp_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowWalker\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- OneNote Plugin -->
<?foreach File in $(var.OneNoteComponentFiles)?>
<Component Id="OneNoteComp_$(var.File)" Win64="yes" Directory="OneNotePluginFolder">
<File Id="OneNoteCompFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="OneNoteImagesComponentLight" Directory="OneNoteImagesFolder" >
<File Id="OneNoteLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\Images\oneNote.light.png" />
</Component>
<Component Id="OneNoteImagesComponentDark" Directory="OneNoteImagesFolder" >
<File Id="OneNoteDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\OneNote\Images\oneNote.dark.png" />
</Component>
<!-- Registry Plugin -->
<?foreach File in $(var.RegistryComponentFiles)?>
<Component Id="RegistryComponent_$(var.File)" Win64="yes" Directory="RegistryPluginFolder">
<File Id="RegistryComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Registry\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="RegistryImagesComponentLight" Directory="RegistryImagesFolder" >
<File Id="RegistryLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Registry\Images\reg.light.png" />
</Component>
<Component Id="RegistryImagesComponentDark" Directory="RegistryImagesFolder" >
<File Id="RegistryDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Registry\Images\reg.dark.png" />
</Component>
<!-- Service Plugin -->
<?foreach File in $(var.ServiceComponentFiles)?>
<Component Id="ServiceComponent_$(var.File)" Win64="yes" Directory="ServicePluginFolder">
<File Id="ServiceComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\Service\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="ServiceImagesComponentLight" Directory="ServiceImagesFolder" >
<File Id="ServiceLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\Service\Images\service.light.png" />
</Component>
<Component Id="ServiceImagesComponentDark" Directory="ServiceImagesFolder" >
<File Id="ServiceDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\Service\Images\service.dark.png" />
</Component>
<!-- System Plugin -->
<?foreach File in $(var.SystemComponentFiles)?>
<Component Id="SystemComponent_$(var.File)" Win64="yes" Directory="SystemPluginFolder">
<File Id="SystemComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\System\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.SystemImagesComponentFiles)?>
<Component Id="SystemImagesComponent_$(var.File)" Win64="yes" Directory="SystemImagesFolder">
<File Id="SystemImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\System\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- TimeDate Plugin -->
<?foreach File in $(var.TimeDateComponentFiles)?>
<Component Id="TimeDateComponent_$(var.File)" Win64="yes" Directory="TimeDatePluginFolder">
<File Id="TimeDateComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\$(var.File)" />
</Component>
<?endforeach?>
<?foreach File in $(var.TimeDateImagesComponentFiles)?>
<Component Id="TimeDateImagesComponent_$(var.File)" Win64="yes" Directory="TimeDateImagesFolder">
<File Id="TimeDateImagesComponentFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\TimeDate\Images\$(var.File)" />
</Component>
<?endforeach?>
<!-- WindowsSettings Plugin -->
<?foreach File in $(var.WinSetCmpFiles)?>
<Component Id="WinSetCmp_$(var.File)" Win64="yes" Directory="WindowsSettingsPluginFolder">
<File Id="WinSetCmpFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WindowsSettingsImagesComponentLight" Directory="WindowsSettingsImagesFolder" >
<File Id="WindowsSettingsLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\Images\WindowsSettings.light.png" />
</Component>
<Component Id="WindowsSettingsImagesComponentDark" Directory="WindowsSettingsImagesFolder" >
<File Id="WindowsSettingsDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsSettings\Images\WindowsSettings.dark.png" />
</Component>
<!-- WindowsTerminal Plugin -->
<?foreach File in $(var.WinTermCmpFiles)?>
<Component Id="WinTermCmp_$(var.File)" Win64="yes" Directory="WindowsTerminalPluginFolder">
<File Id="WinTermCmpFile_$(var.File)" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\$(var.File)" />
</Component>
<?endforeach?>
<Component Id="WindowsTerminalImagesComponentLight" Directory="WindowsTerminalImagesFolder" >
<File Id="WindowsTerminalLightIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\Images\WindowsTerminal.light.png" />
</Component>
<Component Id="WindowsTerminalImagesComponentDark" Directory="WindowsTerminalImagesFolder" >
<File Id="WindowsTerminalDarkIcon" Source="$(var.BinDir)modules\launcher\Plugins\WindowsTerminal\Images\WindowsTerminal.dark.png" />
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -4,116 +4,71 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define SettingsV2Files=WinUIEx.dll;backup_restore_settings.json;Ijwhost.dll;ColorCode.Core.dll;ColorCode.WinUI.dll;CommunityToolkit.Common.dll;CommunityToolkit.Labs.WinUI.SettingsControls.dll;CommunityToolkit.WinUI.dll;CommunityToolkit.WinUI.UI.Controls.Core.dll;CommunityToolkit.WinUI.UI.Controls.DataGrid.dll;CommunityToolkit.WinUI.UI.Controls.Input.dll;CommunityToolkit.WinUI.UI.Controls.Layout.dll;CommunityToolkit.WinUI.UI.Controls.Markdown.dll;CommunityToolkit.WinUI.UI.Controls.Media.dll;CommunityToolkit.WinUI.UI.Controls.Primitives.dll;CommunityToolkit.WinUI.UI.dll;icon.ico;Microsoft.Graphics.Canvas.Interop.dll;Microsoft.InteractiveExperiences.Projection.dll;Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.Projection.dll;Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll;Microsoft.Windows.AppLifecycle.Projection.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Windows.System.Power.Projection.dll;Microsoft.WindowsAppRuntime.Bootstrap.Net.dll;Microsoft.WinUI.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;PowerToys.Settings.deps.json;PowerToys.Settings.dll;PowerToys.Settings.exe;PowerToys.Settings.runtimeconfig.json;PowerToys.Settings.UI.Lib.dll;resources.pri;System.CodeDom.dll;System.IO.Abstractions.dll;WinRT.Runtime.dll;Microsoft.Graphics.Canvas.dll;System.Management.dll;PowerToys.GPOWrapper.dll;System.Text.Json.dll;WindowsBase.dll;PowerToys.AllExperiments.dll?> <?define SettingsV2Files=?>
<?define SettingsV2AssetsModulesFiles=ColorPicker.png;FancyZones.png;FileLocksmith.png;AlwaysOnTop.png;HostsFileEditor.png;Awake.png;ImageResizer.png;KBM.png;MouseUtils.png;PastePlain.png;PowerAccent.png;PowerOCR.png;PowerLauncher.png;PowerPreview.png;PowerRename.png;PT.png;RegistryPreview.png;ScreenRuler.png;ShortcutGuide.png;VideoConference.png?> <?define SettingsV2FilesPath=$(var.BinDir)Settings\?>
<?define SettingsV2OOBEAssetsModulesFiles=ColorPicker.gif;AlwaysOnTop.png;HostsFileEditor.png;Awake.png;FancyZones.gif;FileExplorer.png;FileLocksmith.gif;ImageResizer.gif;KBM.gif;MouseUtils.gif;PastePlain.gif;PowerAccent.gif;PowerOCR.gif;PowerRename.gif;RegistryPreview.png;Run.gif;ScreenRuler.gif;OOBEShortcutGuide.png;VideoConferenceMute.png;OOBEPTHero.png;OOBEPTHeroShort.png?>
<?define SettingsV2OOBEAssetsFluentIconsFiles=ColorPicker.png;FancyZones.png;FileLocksmith.png;AlwaysOnTop.png;Awake.png;FileExplorerPreview.png;FindMyMouse.png;Hosts.png;ImageResizer.png;KeyboardManager.png;MouseHighlighter.png;MouseJump.png;MouseCrosshairs.png;MouseUtils.png;PastePlain.png;PowerAccent.png;PowerOcr.png;PowerRename.png;PowerToys.png;PowerToysRun.png;RegistryPreview.png;ScreenRuler.png;Settings.png;ShortcutGuide.png;VideoConferenceMute.png?>
<?define SettingsV2MicrosoftUIXamlAssetsInstallFiles=NoiseAsset_256x256_PNG.png?>
<!-- These files are needed for release builds to contain the experimentation DLLs --> <?define SettingsV2AssetsFiles=?>
<?define PowerToysExperimentsFiles=Microsoft.VariantAssignment.Client.dll;Microsoft.VariantAssignment.Contract.dll;System.Net.Http.Formatting.dll;Microsoft.Extensions.Configuration.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.Configuration.Binder.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.Http.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;Newtonsoft.Json.dll;Newtonsoft.Json.Bson.dll?> <?define SettingsV2AssetsFilesPath=$(var.BinDir)Settings\Assets\?>
<?define SettingsV2AssetsModulesFiles=?>
<?define SettingsV2AssetsModulesFilesPath=$(var.BinDir)Settings\Assets\Modules\?>
<?define SettingsV2OOBEAssetsModulesFiles=?>
<?define SettingsV2OOBEAssetsModulesFilesPath=$(var.BinDir)Settings\Assets\Modules\OOBE\?>
<?define SettingsV2OOBEAssetsFluentIconsFiles=?>
<?define SettingsV2OOBEAssetsFluentIconsFilesPath=$(var.BinDir)Settings\Assets\FluentIcons\?>
<Fragment> <Fragment>
<!-- SettingsV2 components --> <DirectoryRef Id="SettingsV2InstallFolder" FileSource="$(var.SettingsV2FilesPath)">
<DirectoryRef Id="SettingsV2InstallFolder" FileSource="$(var.BinDir)Settings\"> <!-- Generated by generateFileComponents.ps1 -->
<?foreach File in $(var.SettingsV2Files)?> <!--SettingsV2Files_Component_Def-->
<Component Id="SV2C_$(var.File)" Win64="yes">
<File Id="SV2_$(var.File)" Source="$(var.BinDir)Settings\$(var.File)" />
</Component>
<?endforeach?>
<?ifdef env.IsExperimentationLive?>
<?foreach File in $(var.PowerToysExperimentsFiles)?>
<Component Id="SV2CE_$(var.File)" Win64="yes">
<File Id="SV2E_$(var.File)" Source="$(var.BinDir)Settings\$(var.File)" />
</Component>
<?endforeach?>
<?endif?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="SettingsV2AssetsInstallFolder" FileSource="$(var.BinDir)Settings\Assets">
<Component Id="SettingsV2Assets_LogoScale200" Win64="yes"> <DirectoryRef Id="SettingsV2AssetsInstallFolder" FileSource="$(var.SettingsV2AssetsFilesPath)">
<File Id="SV2A_LogoScale200" Source="$(var.BinDir)Settings\Assets\Logo.scale-200.png" /> <!-- Generated by generateFileComponents.ps1 -->
</Component> <!--SettingsV2AssetsFiles_Component_Def-->
<Component Id="SettingsV2Assets_SplashScreen" Win64="yes">
<File Id="SV2A_SplashScreen" Source="$(var.BinDir)Settings\Assets\SplashScreen.png" />
</Component>
<Component Id="SettingsV2Assets_StoreLogo_Scale100" Win64="yes">
<File Id="SV2A_StoreLogoScale100" Source="$(var.BinDir)Settings\Assets\StoreLogo.scale-100.png" />
</Component>
<Component Id="SettingsV2Assets_StoreLogo" Win64="yes">
<File Id="SV2A_StoreLogo" Source="$(var.BinDir)Settings\Assets\StoreLogo.png" />
</Component>
<Component Id="SettingsV2Assets_Square150x150sc200" Win64="yes">
<File Id="SV2A_Square150x150sc200" Source="$(var.BinDir)Settings\Assets\Square150x150Logo.scale-200.png" />
</Component>
<Component Id="SettingsV2Assets_Square44x44ts24" Win64="yes">
<File Id="SV2A_Square44x44ts24" Source="$(var.BinDir)Settings\Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
</Component>
<Component Id="SettingsV2Assets_Wide310x150sc200" Win64="yes">
<File Id="SV2A_Wide310x150sc200" Source="$(var.BinDir)Settings\Assets\Wide310x150Logo.scale-200.png" />
</Component>
<Component Id="SettingsV2Assets_Square44x44Logo200" Win64="yes">
<File Id="SV2A_Square44x44Logo200" Source="$(var.BinDir)Settings\Assets\Square44x44Logo.scale-200.png" />
</Component>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="SettingsV2AssetsModulesInstallFolder" FileSource="$(var.BinDir)Settings\Assets\Modules">
<?foreach File in $(var.SettingsV2AssetsModulesFiles)?> <DirectoryRef Id="SettingsV2AssetsModulesInstallFolder" FileSource="$(var.SettingsV2AssetsModulesFilesPath)">
<Component Id="SettingsV2AssetsModules_$(var.File)" Win64="yes"> <!-- Generated by generateFileComponents.ps1 -->
<File Id="S2AMF_$(var.File)" Source="$(var.BinDir)Settings\Assets\Modules\$(var.File)" /> <!--SettingsV2AssetsModulesFiles_Component_Def-->
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="SettingsV2OOBEAssetsModulesInstallFolder" FileSource="$(var.BinDir)Settings\Assets\Modules\OOBE">
<?foreach File in $(var.SettingsV2OOBEAssetsModulesFiles)?> <DirectoryRef Id="SettingsV2OOBEAssetsModulesInstallFolder" FileSource="$(var.SettingsV2OOBEAssetsModulesFilesPath)">
<Component Id="SettingsV2OOBEAssetsModules_$(var.File)" Win64="yes"> <!-- Generated by generateFileComponents.ps1 -->
<File Id="SettingsV2OOBEAssetsModules_$(var.File)" Source="$(var.BinDir)Settings\Assets\Modules\OOBE\$(var.File)" /> <!--SettingsV2OOBEAssetsModulesFiles_Component_Def-->
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="SettingsV2OOBEAssetsFluentIconsInstallFolder" FileSource="$(var.BinDir)Settings\Assets\FluentIcons">
<?foreach File in $(var.SettingsV2OOBEAssetsFluentIconsFiles)?> <DirectoryRef Id="SettingsV2OOBEAssetsFluentIconsInstallFolder" FileSource="$(var.SettingsV2OOBEAssetsFluentIconsFilesPath)">
<Component Id="SettingsV2OOBEAssetsFluentIcons_$(var.File)" Win64="yes"> <!-- Generated by generateFileComponents.ps1 -->
<File Id="SettingsV2OOBEAssetsFluentIconsFile_$(var.File)" Source="$(var.BinDir)Settings\Assets\FluentIcons\FluentIcons$(var.File)" /> <!--SettingsV2OOBEAssetsFluentIconsFiles_Component_Def-->
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="SettingsV2MicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets"> <DirectoryRef Id="SettingsV2MicrosoftUIXamlAssetsInstallFolder" FileSource="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets">
<?foreach File in $(var.SettingsV2MicrosoftUIXamlAssetsInstallFiles)?> <Component Id="SettingsV2MicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" Win64="yes" Guid="8F33803D-E220-4D7E-9FFA-761FD4679517">
<Component Id="SettingsV2MicrosoftUIXamlAssets_$(var.File)" Win64="yes"> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="SettingsV2MicrosoftUIXamlAssetsFile_$(var.File)" Source="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets\$(var.File)" /> <RegistryValue Type="string" Name="SettingsV2MicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" Value="" KeyPath="yes"/>
</Component> </RegistryKey>
<?endforeach?> <File Id="SettingsV2MicrosoftUIXamlAssetsFile_NoiseAsset_256x256_PNG.png" Source="$(var.BinDir)Settings\Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png" />
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="SettingsComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="SettingsComponentGroup">
<?foreach File in $(var.SettingsV2Files)?>
<ComponentRef Id="SV2C_$(var.File)" />
<?endforeach?>
<?ifdef env.IsExperimentationLive?>
<?foreach File in $(var.PowerToysExperimentsFiles)?>
<ComponentRef Id="SV2CE_$(var.File)" />
<?endforeach?>
<?endif?>
<ComponentRef Id="SettingsV2Assets_LogoScale200" />
<ComponentRef Id="SettingsV2Assets_SplashScreen" />
<ComponentRef Id="SettingsV2Assets_StoreLogo_Scale100" />
<ComponentRef Id="SettingsV2Assets_StoreLogo" />
<ComponentRef Id="SettingsV2Assets_Square150x150sc200" />
<ComponentRef Id="SettingsV2Assets_Square44x44ts24" />
<ComponentRef Id="SettingsV2Assets_Wide310x150sc200" />
<ComponentRef Id="SettingsV2Assets_Square44x44Logo200" />
<?foreach File in $(var.SettingsV2AssetsModulesFiles)?>
<ComponentRef Id="SettingsV2AssetsModules_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2OOBEAssetsFluentIconsFiles)?>
<ComponentRef Id="SettingsV2OOBEAssetsFluentIcons_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2OOBEAssetsModulesFiles)?>
<ComponentRef Id="SettingsV2OOBEAssetsModules_$(var.File)" />
<?endforeach?>
<?foreach File in $(var.SettingsV2MicrosoftUIXamlAssetsInstallFiles)?>
<ComponentRef Id="SettingsV2MicrosoftUIXamlAssets_$(var.File)" />
<?endforeach?>
<Component Id="RemoveSettingsFolder" Guid="2D3AEF68-4E5A-4FF9-A5C0-9E53391AC754" Directory="SettingsV2InstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveSettingsFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderSettingsV2InstallFolder" Directory="SettingsV2InstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2AssetsInstallFolder" Directory="SettingsV2AssetsInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2OOBEAssetsFluentIconsInstallFolder" Directory="SettingsV2OOBEAssetsFluentIconsInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2AssetsModulesInstallFolder" Directory="SettingsV2AssetsModulesInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2OOBEAssetsModulesInstallFolder" Directory="SettingsV2OOBEAssetsModulesInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2MicrosoftUIXamlInstallFolder" Directory="SettingsV2MicrosoftUIXamlInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderSettingsV2MicrosoftUIXamlAssetsInstallFolder" Directory="SettingsV2MicrosoftUIXamlAssetsInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="SettingsV2MicrosoftUIXamlAssets_NoiseAsset_256x256_PNG.png" />
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>

View File

@@ -4,37 +4,48 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define ShortcutGuideSvgFiles=?>
<?define ShortcutGuideSvgFilesPath=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuide\svgs\?>
<?define ShortcutGuideExecutable=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuide?> <?define ShortcutGuideExecutable=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuide?>
<?define ShortcutGuideModuleInterface=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuideModuleInterface?> <?define ShortcutGuideModuleInterface=$(var.BinDir)\modules\ShortcutGuide\ShortcutGuideModuleInterface?>
<?define ShortcutGuideSvgsFiles=0.svg;1.svg;2.svg;3.svg;4.svg;5.svg;6.svg;7.svg;8.svg;9.svg;no_active_window.svg;overlay.svg;overlay_portrait.svg?>
<Fragment> <Fragment>
<!-- Shortcut guide files --> <!-- Shortcut guide files -->
<DirectoryRef Id="ShortcutGuideSvgsInstallFolder" FileSource="$(var.ShortcutGuideExecutable)\svgs\"> <DirectoryRef Id="ShortcutGuideSvgsInstallFolder" FileSource="$(var.ShortcutGuideSvgFilesPath)">
<?foreach File in $(var.ShortcutGuideSvgsFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="ShortcutGuideSvgs_$(var.File)" Win64="yes"> <!--ShortcutGuideSvgFiles_Component_Def-->
<File Source="$(var.ShortcutGuideExecutable)\svgs\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<!-- Shortcut guide --> <!-- Shortcut guide -->
<DirectoryRef Id="ShortcutGuideModuleInterfaceInstallFolder" FileSource="$(var.ShortcutGuideModuleInterface)"> <DirectoryRef Id="ShortcutGuideModuleInterfaceInstallFolder" FileSource="$(var.ShortcutGuideModuleInterface)">
<Component Id="Module_ShortcutGuideModuleInterface" Win64="yes"> <Component Id="Module_ShortcutGuideModuleInterface" Win64="yes" Guid="FE659C42-9738-4B2E-836A-D08903E2B7EE">
<File Source="$(var.ShortcutGuideModuleInterface)\PowerToys.ShortcutGuideModuleInterface.dll" KeyPath="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_ShortcutGuideModuleInterface" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.ShortcutGuideModuleInterface)\PowerToys.ShortcutGuideModuleInterface.dll" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="ShortcutGuideExecutableInstallFolder" FileSource="$(var.ShortcutGuideExecutable)"> <DirectoryRef Id="ShortcutGuideExecutableInstallFolder" FileSource="$(var.ShortcutGuideExecutable)">
<Component Id="Module_ShortcutGuideExecutable" Win64="yes"> <Component Id="Module_ShortcutGuideExecutable" Win64="yes" Guid="0A4AFD4F-9498-4F50-B2F5-CA3C786EBBE8">
<File Source="$(var.ShortcutGuideExecutable)\PowerToys.ShortcutGuide.exe" KeyPath="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_ShortcutGuideExecutable" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.ShortcutGuideExecutable)\PowerToys.ShortcutGuide.exe" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="ShortcutGuideComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="ShortcutGuideComponentGroup" >
<?foreach File in $(var.ShortcutGuideSvgsFiles)?> <Component Id="RemoveShortcutGuideFolder" Guid="AD1ABC55-B593-4A60-A86A-BA8C0ED493A5" Directory="ShortcutGuideInstallFolder" >
<ComponentRef Id="ShortcutGuideSvgs_$(var.File)" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<?endforeach?> <RegistryValue Type="string" Name="RemoveShortcutGuideFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderShortcutGuideInstallFolder" Directory="ShortcutGuideInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderShortcutGuideExecutableInstallFolder" Directory="ShortcutGuideExecutableInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderShortcutGuideSvgsInstallFolder" Directory="ShortcutGuideSvgsInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderShortcutGuideModuleInterfaceInstallFolder" Directory="ShortcutGuideModuleInterfaceInstallFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_ShortcutGuideModuleInterface" /> <ComponentRef Id="Module_ShortcutGuideModuleInterface" />
<ComponentRef Id="Module_ShortcutGuideExecutable" /> <ComponentRef Id="Module_ShortcutGuideExecutable" />
</ComponentGroup> </ComponentGroup>

View File

@@ -4,22 +4,22 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define TextExtractorFiles=PowerToys.PowerOCR.dll;ControlzEx.dll;Ijwhost.dll;Microsoft.Windows.SDK.NET.dll;Microsoft.Xaml.Behaviors.dll;PowerToys.Common.UI.dll;PowerToys.ManagedCommon.dll;PowerToys.ManagedTelemetry.dll;System.Text.Json.dll;PowerToys.PowerOCR.deps.json;PowerToys.PowerOCR.exe;PowerToys.PowerOCR.runtimeconfig.json;PowerToys.PowerOCRModuleInterface.dll;PowerToys.Settings.UI.Lib.dll;System.ComponentModel.Composition.dll;System.IO.Abstractions.dll;System.Management.dll;WinRT.Runtime.dll;PowerToys.GPOWrapper.dll;PowerToys.GPOWrapperProjection.dll;WindowsBase.dll?> <?define TextExtractorFiles=?>
<?define TextExtractorFilesPath=$(var.BinDir)modules\$(var.PowerOCRProjectName)\?>
<Fragment> <Fragment>
<!-- QuickAccent Resources -->
<DirectoryRef Id="PowerOCRInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerOCRProjectName)"> <DirectoryRef Id="PowerOCRInstallFolder" FileSource="$(var.BinDir)modules\$(var.PowerOCRProjectName)">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Module_PowerOCR" Guid="5640A7E8-E165-4368-8F08-F8E1E9242BDD" Win64="yes"> <!--TextExtractorFiles_Component_Def-->
<?foreach File in $(var.TextExtractorFiles)?>
<File Id="PowerOCRFile_$(var.File)" Source="$(var.BinDir)modules\$(var.PowerOCRProjectName)\$(var.File)" />
<?endforeach?>
</Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="TextExtractorComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="TextExtractorComponentGroup">
<ComponentRef Id="Module_PowerOCR" /> <Component Id="RemoveTextExtractorFolder" Guid="0F988887-25BE-43D1-A983-78A79EC2CE41" Directory="PowerOCRInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveTextExtractorFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderPowerOCRInstallFolder" Directory="PowerOCRInstallFolder" On="uninstall"/>
</Component>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -6,18 +6,33 @@
<Fragment> <Fragment>
<DirectoryRef Id="ToolsFolder"> <DirectoryRef Id="ToolsFolder">
<Component Id="BugReportTool_exe" Win64="yes"> <Component Id="BugReportTool_exe" Win64="yes" Guid="370D0C28-F423-4A12-9A64-6BAB57C7E5C3">
<File Source="$(var.BinDir)BugReportTool\PowerToys.BugReportTool.exe" Id="BugReportTool.exe" KeyPath="yes" Checksum="yes" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="BugReportTool_exe" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)BugReportTool\PowerToys.BugReportTool.exe" Id="BugReportTool.exe" Checksum="yes" />
</Component> </Component>
<Component Id="WebcamReportTool_exe" Win64="yes"> <Component Id="WebcamReportTool_exe" Win64="yes" Guid="41D5209F-7A9A-4DF2-A22A-9F0A9CF5AA63">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="WebcamReportTool_exe" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)WebcamReportTool\PowerToys.WebcamReportTool.exe" Id="WebcamReportTool.exe" Checksum="yes" /> <File Source="$(var.BinDir)WebcamReportTool\PowerToys.WebcamReportTool.exe" Id="WebcamReportTool.exe" Checksum="yes" />
</Component> </Component>
<Component Id="StylesReportTool_exe" Win64="yes"> <Component Id="StylesReportTool_exe" Win64="yes" Guid="9D348A78-38A0-4FDC-8D16-BDB0178E5F1E">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="StylesReportTool_exe" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)StylesReportTool\PowerToys.StylesReportTool.exe" Id="StylesReportTool.exe" Checksum="yes" /> <File Source="$(var.BinDir)StylesReportTool\PowerToys.StylesReportTool.exe" Id="StylesReportTool.exe" Checksum="yes" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="ToolComponentGroup" Directory="ToolsFolder"> <ComponentGroup Id="ToolComponentGroup">
<Component Id="RemoveToolsFolder" Guid="0402A3E8-1B4F-4762-9CCF-2267BCF8B6EE" Directory="ToolsFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveToolsFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderToolsFolder" Directory="ToolsFolder" On="uninstall"/>
</Component>
<ComponentRef Id="BugReportTool_exe" /> <ComponentRef Id="BugReportTool_exe" />
<ComponentRef Id="WebcamReportTool_exe" /> <ComponentRef Id="WebcamReportTool_exe" />
<ComponentRef Id="StylesReportTool_exe" /> <ComponentRef Id="StylesReportTool_exe" />

View File

@@ -7,22 +7,28 @@
<Fragment> <Fragment>
<DirectoryRef Id="VideoConferenceInstallFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\"> <DirectoryRef Id="VideoConferenceInstallFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_VideoConference" Guid="21DA4677-4AE8-4F01-BFC9-448E338DF864" Win64="yes"> <Component Id="Module_VideoConference" Guid="CCE30DCC-AC6B-4A2D-9BD8-2E9598E5B785" Win64="yes">
<Condition>WINDOWSBUILDNUMBER >= 19041</Condition> <Condition>WINDOWSBUILDNUMBER >= 19041</Condition>
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_VideoConference" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceModule.dll" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceModule.dll" />
<File Source="$(var.BinX32Dir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x86.dll" /> <File Source="$(var.BinX32Dir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x86.dll" />
<?if $(var.Platform) = x64?> <?if $(var.Platform) = x64?>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x64.dll" KeyPath="yes" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_x64.dll" />
<?else?> <?else?>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_ARM64.dll" KeyPath="yes" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\PowerToys.VideoConferenceProxyFilter_ARM64.dll" />
<?endif?> <?endif?>
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<DirectoryRef Id="VideoConferenceIconsFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons"> <DirectoryRef Id="VideoConferenceIconsFolder" FileSource="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons">
<!-- !Warning! Make sure to change Component Guid if you update the file list --> <!-- !Warning! Make sure to change Component Guid if you update the file list -->
<Component Id="Module_VideoConferenceIcons" Guid="9910F3D9-1BDF-43DB-BA0C-C558B121DF18" Win64="yes"> <Component Id="Module_VideoConferenceIcons" Guid="E78339BF-58D8-48F2-A1C3-E1C3DC72DCAE" Win64="yes">
<Condition>WINDOWSBUILDNUMBER >= 19041</Condition> <Condition>WINDOWSBUILDNUMBER >= 19041</Condition>
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="Module_VideoConferenceIcons" Value="" KeyPath="yes"/>
</RegistryKey>
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Dark.png" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Dark.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Light.png" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-NotInUse Light.png" />
<File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-Off Dark.png" /> <File Source="$(var.BinDir)modules\$(var.VideoConferenceProjectName)\Icons\Off-Off Dark.png" />
@@ -38,7 +44,14 @@
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<ComponentGroup Id="VideoConferenceComponentGroup" Directory="INSTALLFOLDER"> <ComponentGroup Id="VideoConferenceComponentGroup">
<Component Id="RemoveVideoConferenceFolder" Guid="C6F2BE3D-FDE3-4CDB-BB51-A43E1B7B1606" Directory="VideoConferenceInstallFolder" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveVideoConferenceFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderVideoConferenceInstallFolder" Directory="VideoConferenceInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderVideoConferenceIconsFolder" Directory="VideoConferenceIconsFolder" On="uninstall"/>
</Component>
<ComponentRef Id="Module_VideoConference" /> <ComponentRef Id="Module_VideoConference" />
<ComponentRef Id="Module_VideoConferenceIcons" /> <ComponentRef Id="Module_VideoConferenceIcons" />

View File

@@ -5,17 +5,15 @@
<?include $(sys.CURRENTDIR)\Common.wxi?> <?include $(sys.CURRENTDIR)\Common.wxi?>
<?define WinAppSDKFiles=CoreMessagingXP.dll;DWriteCore.dll;DwmSceneI.dll;MRM.dll;Microsoft.DirectManipulation.dll;Microsoft.InputStateManager.dll;Microsoft.Internal.FrameworkUdk.dll;Microsoft.UI.Composition.OSSupport.dll;Microsoft.UI.Input.dll;Microsoft.UI.Windowing.Core.dll;Microsoft.UI.Xaml.Controls.dll;Microsoft.UI.Xaml.Controls.pri;Microsoft.UI.Xaml.Internal.dll;Microsoft.UI.Xaml.Phone.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Windows.AppNotifications.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.dll;Microsoft.WindowsAppRuntime.Bootstrap.dll;Microsoft.Windows.PushNotifications.Projection.dll;Microsoft.Windows.System.Projection.dll;Microsoft.WindowsAppRuntime.Insights.Resource.dll;Microsoft.WindowsAppRuntime.Release.Net.dll;Microsoft.WindowsAppRuntime.dll;Microsoft.ui.xaml.dll;Microsoft.ui.xaml.resources.19h1.dll;Microsoft.ui.xaml.resources.common.dll;PushNotificationsLongRunningTask.ProxyStub.dll;WinUIEdit.dll;WindowsAppRuntime.png;WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll;dcompi.dll;dwmcorei.dll;marshal.dll;wuceffectsi.dll?> <?define WinAppSDKFiles=CoreMessagingXP.dll;DWriteCore.dll;DwmSceneI.dll;MRM.dll;Microsoft.DirectManipulation.dll;Microsoft.InputStateManager.dll;Microsoft.Internal.FrameworkUdk.dll;Microsoft.UI.Composition.OSSupport.dll;Microsoft.UI.Input.dll;Microsoft.UI.Windowing.Core.dll;Microsoft.UI.Xaml.Controls.dll;Microsoft.UI.Xaml.Controls.pri;Microsoft.UI.Xaml.Internal.dll;Microsoft.UI.Xaml.Phone.dll;Microsoft.Web.WebView2.Core.dll;Microsoft.Windows.AppNotifications.Projection.dll;Microsoft.Windows.ApplicationModel.Resources.dll;Microsoft.WindowsAppRuntime.Bootstrap.dll;Microsoft.Windows.PushNotifications.Projection.dll;Microsoft.Windows.System.Projection.dll;Microsoft.WindowsAppRuntime.Insights.Resource.dll;Microsoft.WindowsAppRuntime.Release.Net.dll;Microsoft.WindowsAppRuntime.dll;Microsoft.ui.xaml.dll;Microsoft.ui.xaml.resources.19h1.dll;Microsoft.ui.xaml.resources.common.dll;PushNotificationsLongRunningTask.ProxyStub.dll;WinUIEdit.dll;WindowsAppRuntime.png;WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll;dcompi.dll;dwmcorei.dll;marshal.dll;wuceffectsi.dll?>
<?define WinAppSDKFilesPath=$(var.BinDir)Settings\?>
<!-- Localization languages shipped with WinAppSDK. We should ship these as well. --> <!-- Localization languages shipped with WinAppSDK. We should ship these as well. -->
<?define WinAppSDKLocLanguageList = af-ZA;ar-SA;az-Latn-AZ;bg-BG;bs-Latn-BA;ca-ES;cs-CZ;cy-GB;da-DK;de-DE;el-GR;en-GB;en-us;es-ES;es-MX;et-EE;eu-ES;fa-IR;fi-FI;fr-CA;fr-FR;gl-ES;he-IL;hi-IN;hr-HR;hu-HU;id-ID;is-IS;it-IT;ja-JP;ka-GE;kk-KZ;ko-KR;lt-LT;lv-LV;ms-MY;nb-NO;nl-NL;nn-NO;pl-PL;pt-BR;pt-PT;ro-RO;ru-RU;sk-SK;sl-SI;sq-AL;sr-Cyrl-RS;sr-Latn-RS;sv-SE;th-TH;tr-TR;uk-UA;vi-VN;zh-CN;zh-TW?> <?define WinAppSDKLocLanguageList = af-ZA;ar-SA;az-Latn-AZ;bg-BG;bs-Latn-BA;ca-ES;cs-CZ;cy-GB;da-DK;de-DE;el-GR;en-GB;en-us;es-ES;es-MX;et-EE;eu-ES;fa-IR;fi-FI;fr-CA;fr-FR;gl-ES;he-IL;hi-IN;hr-HR;hu-HU;id-ID;is-IS;it-IT;ja-JP;ka-GE;kk-KZ;ko-KR;lt-LT;lv-LV;ms-MY;nb-NO;nl-NL;nn-NO;pl-PL;pt-BR;pt-PT;ro-RO;ru-RU;sk-SK;sl-SI;sq-AL;sr-Cyrl-RS;sr-Latn-RS;sv-SE;th-TH;tr-TR;uk-UA;vi-VN;zh-CN;zh-TW?>
<Fragment> <Fragment>
<DirectoryRef Id="WinAppSDKDlls"> <DirectoryRef Id="WinAppSDKDlls">
<?foreach File in $(var.WinAppSDKFiles)?> <!-- Generated by generateFileComponents.ps1 -->
<Component Id="Dlls_WinAppSdkFiles_$(var.File)" Win64="yes"> <!--WinAppSDKFiles_Component_Def-->
<File Id="Dlls_WinAppSdk_File_$(var.File)" Source="$(var.BinDir)Settings\$(var.File)" />
</Component>
<?endforeach?>
</DirectoryRef> </DirectoryRef>
<?foreach ParentDirectory in SettingsV2InstallFolder;PowerRenameInstallFolder;MeasureToolInstallFolder;HostsInstallFolder;FileLocksmithInstallFolder;RegistryPreviewInstallFolder?> <?foreach ParentDirectory in SettingsV2InstallFolder;PowerRenameInstallFolder;MeasureToolInstallFolder;HostsInstallFolder;FileLocksmithInstallFolder;RegistryPreviewInstallFolder?>
@@ -320,6 +318,9 @@
Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)SettingsV2InstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)SettingsV2InstallFolder"
Guid="$(var.CompGUIDPrefix)01"> Guid="$(var.CompGUIDPrefix)01">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_Component.png" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <File Id="SettingsV2_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)Settings\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
@@ -327,6 +328,9 @@
Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)PowerRenameInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)PowerRenameInstallFolder"
Guid="$(var.CompGUIDPrefix)02"> Guid="$(var.CompGUIDPrefix)02">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <File Id="PowerRename_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.PowerRenameProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
@@ -334,6 +338,9 @@
Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)MeasureToolInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)MeasureToolInstallFolder"
Guid="$(var.CompGUIDPrefix)03"> Guid="$(var.CompGUIDPrefix)03">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <File Id="MeasureTool_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.MeasureToolProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
@@ -341,30 +348,166 @@
Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)HostsInstallFolder"
Guid="$(var.CompGUIDPrefix)04"> Guid="$(var.CompGUIDPrefix)04">
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <RegistryValue Type="string" Name="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="Hosts_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.HostsProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
<Component <Component
Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)FileLocksmithInstallFolder"
Guid="$(var.CompGUIDPrefix)05"> Guid="$(var.CompGUIDPrefix)05">
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" /> <RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" /> <RegistryValue Type="string" Name="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.ui.xaml.dll.mui" />
<File Id="FileLocksmith_WinAppSDKLoc_$(var.IdSafeLanguage)_XamlPhoneMui_File" Source="$(var.BinDir)modules\$(var.FileLocksmithProjectName)\$(var.Language)\Microsoft.UI.Xaml.Phone.dll.mui" />
</Component> </Component>
<Component <Component
Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Id="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_Component"
Directory="WinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder"
Guid="$(var.CompGUIDPrefix)06"> Guid="$(var.CompGUIDPrefix)06">
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RegistryPreview_WinAppSDKLoc_$(var.IdSafeLanguage)_Component" Value="" KeyPath="yes"/>
</RegistryKey>
<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>
<?undef IdSafeLanguage?> <?undef IdSafeLanguage?>
<?undef CompGUIDPrefix?> <?undef CompGUIDPrefix?>
<?endforeach?> <?endforeach?>
<Component Id="RemoveWinAppSDKFolder" Guid="1BBAA49F-3B2E-455C-A615-EEB079CB9A8B" Directory="WinAppSDKDlls" >
<RegistryKey Root="$(var.RegistryScope)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="RemoveWinAppSDKFolder" Value="" KeyPath="yes"/>
</RegistryKey>
<RemoveFolder Id="RemoveFolderWinAppSDKDlls" Directory="WinAppSDKDlls" On="uninstall"/>
<?foreach Language in $(var.WinAppSDKLocLanguageList)?>
<?if $(var.Language) = af-ZA?>
<?define IdSafeLanguage = af_ZA?>
<?elseif $(var.Language) = ar-SA?>
<?define IdSafeLanguage = ar_SA?>
<?elseif $(var.Language) = az-Latn-AZ?>
<?define IdSafeLanguage = az_Latn_AZ?>
<?elseif $(var.Language) = bg-BG?>
<?define IdSafeLanguage = bg_BG?>
<?elseif $(var.Language) = bs-Latn-BA?>
<?define IdSafeLanguage = bs_Latn_BA?>
<?elseif $(var.Language) = ca-ES?>
<?define IdSafeLanguage = ca_ES?>
<?elseif $(var.Language) = cs-CZ?>
<?define IdSafeLanguage = cs_CZ?>
<?elseif $(var.Language) = cy-GB?>
<?define IdSafeLanguage = cy_GB?>
<?elseif $(var.Language) = da-DK?>
<?define IdSafeLanguage = da_DK?>
<?elseif $(var.Language) = de-DE?>
<?define IdSafeLanguage = de_DE?>
<?elseif $(var.Language) = el-GR?>
<?define IdSafeLanguage = el_GR?>
<?elseif $(var.Language) = en-GB?>
<?define IdSafeLanguage = en_GB?>
<?elseif $(var.Language) = en-us?>
<?define IdSafeLanguage = en_us?>
<?elseif $(var.Language) = es-ES?>
<?define IdSafeLanguage = es_ES?>
<?elseif $(var.Language) = es-MX?>
<?define IdSafeLanguage = es_MX?>
<?elseif $(var.Language) = et-EE?>
<?define IdSafeLanguage = et_EE?>
<?elseif $(var.Language) = eu-ES?>
<?define IdSafeLanguage = eu_ES?>
<?elseif $(var.Language) = fa-IR?>
<?define IdSafeLanguage = fa_IR?>
<?elseif $(var.Language) = fi-FI?>
<?define IdSafeLanguage = fi_FI?>
<?elseif $(var.Language) = fr-CA?>
<?define IdSafeLanguage = fr_CA?>
<?elseif $(var.Language) = fr-FR?>
<?define IdSafeLanguage = fr_FR?>
<?elseif $(var.Language) = gl-ES?>
<?define IdSafeLanguage = gl_ES?>
<?elseif $(var.Language) = he-IL?>
<?define IdSafeLanguage = he_IL?>
<?elseif $(var.Language) = hi-IN?>
<?define IdSafeLanguage = hi_IN?>
<?elseif $(var.Language) = hr-HR?>
<?define IdSafeLanguage = hr_HR?>
<?elseif $(var.Language) = hu-HU?>
<?define IdSafeLanguage = hu_HU?>
<?elseif $(var.Language) = id-ID?>
<?define IdSafeLanguage = id_ID?>
<?elseif $(var.Language) = is-IS?>
<?define IdSafeLanguage = is_IS?>
<?elseif $(var.Language) = it-IT?>
<?define IdSafeLanguage = it_IT?>
<?elseif $(var.Language) = ja-JP?>
<?define IdSafeLanguage = ja_JP?>
<?elseif $(var.Language) = ka-GE?>
<?define IdSafeLanguage = ka_GE?>
<?elseif $(var.Language) = kk-KZ?>
<?define IdSafeLanguage = kk_KZ?>
<?elseif $(var.Language) = ko-KR?>
<?define IdSafeLanguage = ko_KR?>
<?elseif $(var.Language) = lt-LT?>
<?define IdSafeLanguage = lt_LT?>
<?elseif $(var.Language) = lv-LV?>
<?define IdSafeLanguage = lv_LV?>
<?elseif $(var.Language) = ms-MY?>
<?define IdSafeLanguage = ms_MY?>
<?elseif $(var.Language) = nb-NO?>
<?define IdSafeLanguage = nb_NO?>
<?elseif $(var.Language) = nl-NL?>
<?define IdSafeLanguage = nl_NL?>
<?elseif $(var.Language) = nn-NO?>
<?define IdSafeLanguage = nn_NO?>
<?elseif $(var.Language) = pl-PL?>
<?define IdSafeLanguage = pl_PL?>
<?elseif $(var.Language) = pt-BR?>
<?define IdSafeLanguage = pt_BR?>
<?elseif $(var.Language) = pt-PT?>
<?define IdSafeLanguage = pt_PT?>
<?elseif $(var.Language) = ro-RO?>
<?define IdSafeLanguage = ro_RO?>
<?elseif $(var.Language) = ru-RU?>
<?define IdSafeLanguage = ru_RU?>
<?elseif $(var.Language) = sk-SK?>
<?define IdSafeLanguage = sk_SK?>
<?elseif $(var.Language) = sl-SI?>
<?define IdSafeLanguage = sl_SI?>
<?elseif $(var.Language) = sq-AL?>
<?define IdSafeLanguage = sq_AL?>
<?elseif $(var.Language) = sr-Cyrl-RS?>
<?define IdSafeLanguage = sr_Cyrl_RS?>
<?elseif $(var.Language) = sr-Latn-RS?>
<?define IdSafeLanguage = sr_Latn_RS?>
<?elseif $(var.Language) = sv-SE?>
<?define IdSafeLanguage = sv_SE?>
<?elseif $(var.Language) = th-TH?>
<?define IdSafeLanguage = th_TH?>
<?elseif $(var.Language) = tr-TR?>
<?define IdSafeLanguage = tr_TR?>
<?elseif $(var.Language) = uk-UA?>
<?define IdSafeLanguage = uk_UA?>
<?elseif $(var.Language) = vi-VN?>
<?define IdSafeLanguage = vi_VN?>
<?elseif $(var.Language) = zh-CN?>
<?define IdSafeLanguage = zh_CN?>
<?elseif $(var.Language) = zh-TW?>
<?define IdSafeLanguage = zh_TW?>
<?else?>
<?define IdSafeLanguage = $(var.Language)?>
<?endif?>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)SettingsV2InstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)SettingsV2InstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)PowerRenameInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)PowerRenameInstallFolder" On="uninstall"/>
<RemoveFolder Id="RemoveFolderWinAppSDKLoc$(var.IdSafeLanguage)MeasureToolInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)MeasureToolInstallFolder" 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)RegistryPreviewInstallFolder" Directory="WinAppSDKLoc$(var.IdSafeLanguage)RegistryPreviewInstallFolder" On="uninstall"/>
<?undef IdSafeLanguage?>
<?endforeach?>
</Component>
<?foreach File in $(var.WinAppSDKFiles)?>
<ComponentRef Id="Dlls_WinAppSdkFiles_$(var.File)" />
<?endforeach?>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>

View File

@@ -0,0 +1,214 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[string]$platform,
[Parameter(Mandatory = $False, Position = 2)]
[string]$installscopeperuser = "false"
)
if ($platform -ceq "arm64") {
$platform = "ARM64"
}
if ($installscopeperuser -eq "true") {
$registryroot = "HKCU"
} else {
$registryroot = "HKLM"
}
#AlwaysOnTop
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName AlwaysOnTopFiles -wxsFilePath $PSScriptRoot\AlwaysOnTop.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\AlwaysOnTop"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""AlwaysOnTopFiles"" -wxsFilePath $PSScriptRoot\AlwaysOnTop.wxs -regroot $registryroot"
#AwakeFiles
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\Awake\PowerToys.Awake.deps.json"" -fileListName AwakeFiles -wxsFilePath $PSScriptRoot\Awake.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName AwakeImagesFiles -wxsFilePath $PSScriptRoot\Awake.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\Awake\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""AwakeFiles"" -wxsFilePath $PSScriptRoot\Awake.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""AwakeImagesFiles"" -wxsFilePath $PSScriptRoot\Awake.wxs -regroot $registryroot"
#ColorPicker
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\ColorPicker\PowerToys.ColorPickerUI.deps.json"" -fileListName ColorPickerFiles -wxsFilePath $PSScriptRoot\ColorPicker.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ColorPickerResourcesFiles -wxsFilePath $PSScriptRoot\ColorPicker.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\ColorPicker\Resources"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ColorPickerFiles"" -wxsFilePath $PSScriptRoot\ColorPicker.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ColorPickerResourcesFiles"" -wxsFilePath $PSScriptRoot\ColorPicker.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\ColorPicker\PowerToys.ColorPickerUI.deps.json"" -fileListName ColorPickerFiles -wxsFilePath $PSScriptRoot\ColorPicker.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ColorPickerFiles"" -wxsFilePath $PSScriptRoot\ColorPicker.wxs -regroot $registryroot"
#FancyZones
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\FancyZones\PowerToys.FancyZonesEditor.deps.json"" -fileListName FancyZonesFiles -wxsFilePath $PSScriptRoot\FancyZones.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""FancyZonesFiles"" -wxsFilePath $PSScriptRoot\FancyZones.wxs -regroot $registryroot"
#FileExplorerAdd-ons
#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 """" -fileListName MonacoCustomLanguagesFiles -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 ""MonacoCustomLanguagesFiles"" -wxsFilePath $PSScriptRoot\FileExplorerPreview.wxs -regroot $registryroot"
#FileLocksmith
#TODO: There are multiple .deps.json files, make sure it works as expected
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\FileLocksmith\PowerToys.FileLocksmithUI.deps.json"" -fileListName FileLocksmithFiles -wxsFilePath $PSScriptRoot\FileLocksmith.wxs -isWinAppSdkProj 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName FileLocksmithAssetsFiles -wxsFilePath $PSScriptRoot\FileLocksmith.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\FileLocksmith\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""FileLocksmithFiles"" -wxsFilePath $PSScriptRoot\FileLocksmith.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""FileLocksmithAssetsFiles"" -wxsFilePath $PSScriptRoot\FileLocksmith.wxs -regroot $registryroot"
#Hosts
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\Hosts\PowerToys.Hosts.deps.json"" -fileListName HostsFiles -wxsFilePath $PSScriptRoot\Hosts.wxs -isWinAppSdkProj 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName HostsAssetsFiles -wxsFilePath $PSScriptRoot\Hosts.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\Hosts\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""HostsFiles"" -wxsFilePath $PSScriptRoot\Hosts.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""HostsAssetsFiles"" -wxsFilePath $PSScriptRoot\Hosts.wxs -regroot $registryroot"
#ImageResizer
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\ImageResizer\PowerToys.ImageResizer.deps.json"" -fileListName ImageResizerFiles -wxsFilePath $PSScriptRoot\ImageResizer.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ImageResizerAssetsFiles -wxsFilePath $PSScriptRoot\ImageResizer.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\ImageResizer\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ImageResizerFiles"" -wxsFilePath $PSScriptRoot\ImageResizer.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ImageResizerAssetsFiles"" -wxsFilePath $PSScriptRoot\ImageResizer.wxs -regroot $registryroot"
#MouseUtils
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName MouseUtilsFiles -wxsFilePath $PSScriptRoot\MouseUtils.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\MouseUtils\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MouseUtilsFiles"" -wxsFilePath $PSScriptRoot\MouseUtils.wxs -regroot $registryroot"
#MouseJumpUI
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\MouseUtils\MouseJumpUI\PowerToys.MouseJumpUI.deps.json"" -fileListName MouseJumpUIFiles -wxsFilePath $PSScriptRoot\MouseUtils.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""MouseJumpUIFiles"" -wxsFilePath $PSScriptRoot\MouseUtils.wxs -regroot $registryroot"
#MeasureTool
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"
#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\generateFileComponents.ps1 -fileListName ""PowerAccentFiles"" -wxsFilePath $PSScriptRoot\PowerAccent.wxs -regroot $registryroot"
#PowerRename
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName PowerRenameFiles -wxsFilePath $PSScriptRoot\PowerRename.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\PowerRename\"" -isWinAppSdkProj 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName PowerRenameAssetsFiles -wxsFilePath $PSScriptRoot\PowerRename.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\PowerRename\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerRenameFiles"" -wxsFilePath $PSScriptRoot\PowerRename.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""PowerRenameAssetsFiles"" -wxsFilePath $PSScriptRoot\PowerRename.wxs -regroot $registryroot"
#RegistryPreview
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\RegistryPreview\PowerToys.RegistryPreview.deps.json"" -fileListName RegistryPreviewFiles -wxsFilePath $PSScriptRoot\RegistryPreview.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName RegistryPreviewAssetsFiles -wxsFilePath $PSScriptRoot\RegistryPreview.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\RegistryPreview\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""RegistryPreviewFiles"" -wxsFilePath $PSScriptRoot\RegistryPreview.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""RegistryPreviewAssetsFiles"" -wxsFilePath $PSScriptRoot\RegistryPreview.wxs -regroot $registryroot"
#Run
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\PowerToys.PowerLauncher.deps.json"" -fileListName launcherFiles -wxsFilePath $PSScriptRoot\Run.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName launcherImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""launcherFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""launcherImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
## Plugins
###Calculator
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Calculator\Microsoft.PowerToys.Run.Plugin.Calculator.deps.json"" -fileListName calcComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName calcImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Calculator\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""calcComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""calcImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Folder
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Folder\Microsoft.Plugin.Folder.deps.json"" -fileListName FolderComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName FolderImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Folder\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""FolderComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""FolderImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Program
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Program\Microsoft.Plugin.Program.deps.json"" -fileListName ProgramComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ProgramImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Program\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ProgramComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ProgramImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Shell
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Shell\Microsoft.Plugin.Shell.deps.json"" -fileListName ShellComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ShellImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Shell\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ShellComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ShellImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Indexer
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Indexer\Microsoft.Plugin.Indexer.deps.json"" -fileListName IndexerComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName IndexerImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Indexer\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""IndexerComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""IndexerImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###UnitConverter
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\UnitConverter\Community.PowerToys.Run.Plugin.UnitConverter.deps.json"" -fileListName UnitConvCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName UnitConvImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\UnitConverter\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""UnitConvCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""UnitConvImagesCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###WebSearch
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WebSearch\Community.PowerToys.Run.Plugin.WebSearch.deps.json"" -fileListName WebSrchCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName WebSrchImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WebSearch\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WebSrchCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WebSrchImagesCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###History
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\History\Microsoft.PowerToys.Run.Plugin.History.deps.json"" -fileListName HistoryPluginComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName HistoryPluginImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\History\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""HistoryPluginComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""HistoryPluginImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Uri
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Uri\Microsoft.Plugin.Uri.deps.json"" -fileListName UriComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName UriImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Uri\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""UriComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""UriImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###VSCodeWorkspaces
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\VSCodeWorkspaces\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.deps.json"" -fileListName VSCWrkCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName VSCWrkImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\VSCodeWorkspaces\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""VSCWrkCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""VSCWrkImagesCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###WindowWalker
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowWalker\Microsoft.Plugin.WindowWalker.deps.json"" -fileListName WindowWlkrCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName WindowWlkrImagesCompFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowWalker\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WindowWlkrCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WindowWlkrImagesCompFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###OneNote
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\OneNote\Microsoft.PowerToys.Run.Plugin.OneNote.deps.json"" -fileListName OneNoteComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName OneNoteImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\OneNote\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""OneNoteComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""OneNoteImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Registry
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Registry\Microsoft.PowerToys.Run.Plugin.Registry.deps.json"" -fileListName RegistryComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName RegistryImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Registry\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""RegistryComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""RegistryImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###Service
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Service\Microsoft.PowerToys.Run.Plugin.Service.deps.json"" -fileListName ServiceComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ServiceImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\Service\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ServiceComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ServiceImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###System
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\System\Microsoft.PowerToys.Run.Plugin.System.deps.json"" -fileListName SystemComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName SystemImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\System\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SystemComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SystemImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###TimeDate
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\TimeDate\Microsoft.PowerToys.Run.Plugin.TimeDate.deps.json"" -fileListName TimeDateComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName TimeDateImagesComponentFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\TimeDate\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""TimeDateComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""TimeDateImagesComponentFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###WindowsSettings
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowsSettings\Microsoft.PowerToys.Run.Plugin.WindowsSettings.deps.json"" -fileListName WinSetCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName WinSetImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowsSettings\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WinSetCmpFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WinSetImagesCmpFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
###WindowsTerminal
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowsTerminal\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.deps.json"" -fileListName WinTermCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -isLauncherPlugin 1"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName WinTermImagesCmpFiles -wxsFilePath $PSScriptRoot\Run.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\launcher\Plugins\WindowsTerminal\Images"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WinTermCmpFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WinTermImagesCmpFiles"" -wxsFilePath $PSScriptRoot\Run.wxs -regroot $registryroot"
## Plugins
#ShortcutGuide
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName ShortcutGuideSvgFiles -wxsFilePath $PSScriptRoot\ShortcutGuide.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\modules\ShortcutGuide\ShortcutGuide\svgs\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""ShortcutGuideSvgFiles"" -wxsFilePath $PSScriptRoot\ShortcutGuide.wxs -regroot $registryroot"
#TextExtractor
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\modules\PowerOCR\PowerToys.PowerOCR.deps.json"" -fileListName TextExtractorFiles -wxsFilePath $PSScriptRoot\TextExtractor.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""TextExtractorFiles"" -wxsFilePath $PSScriptRoot\TextExtractor.wxs -regroot $registryroot"
#Settings
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson ""$PSScriptRoot..\..\..\$platform\Release\Settings\PowerToys.Settings.deps.json"" -fileListName SettingsV2Files -wxsFilePath $PSScriptRoot\Settings.wxs"
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName SettingsV2AssetsFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\Settings\Assets\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName SettingsV2AssetsModulesFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\Settings\Assets\Modules\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName SettingsV2OOBEAssetsModulesFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\Settings\Assets\Modules\OOBE\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileList.ps1 -fileDepsJson """" -fileListName SettingsV2OOBEAssetsFluentIconsFiles -wxsFilePath $PSScriptRoot\Settings.wxs -depsPath ""$PSScriptRoot..\..\..\$platform\Release\Settings\Assets\FluentIcons\"""
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SettingsV2Files"" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SettingsV2AssetsFiles"" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SettingsV2AssetsModulesFiles"" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SettingsV2OOBEAssetsModulesFiles"" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot"
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""SettingsV2OOBEAssetsFluentIconsFiles"" -wxsFilePath $PSScriptRoot\Settings.wxs -regroot $registryroot"
#WinAppSdk
Invoke-Expression -Command "$PSScriptRoot\generateFileComponents.ps1 -fileListName ""WinAppSDKFiles"" -wxsFilePath $PSScriptRoot\WinAppSDK.wxs -regroot $registryroot"

View File

@@ -0,0 +1,56 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[string]$fileListName,
[Parameter(Mandatory = $True, Position = 2)]
[string]$wxsFilePath,
[Parameter(Mandatory = $True, Position = 3)]
[string]$regroot
)
$wxsFile = Get-Content $wxsFilePath;
$wxsFile | ForEach-Object {
if ($_ -match "(<?define $fileListName=)(.*)\?>") {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'fileList',
Justification = 'variable is used in another scope')]
$fileList = $matches[2] -split ';'
return
}
}
$componentId = "$($fileListName)_Component"
$componentDefs = "`r`n"
$componentDefs +=
@"
<Component Id="$($componentId)" Win64="yes" Guid="$((New-Guid).ToString().ToUpper())">
<RegistryKey Root="$($regroot)" Key="Software\Classes\powertoys\components">
<RegistryValue Type="string" Name="$($componentId)" Value="" KeyPath="yes"/>
</RegistryKey>`r`n
"@
foreach ($file in $fileList) {
$fileTmp = $file -replace "-", "_"
$componentDefs +=
@"
<File Id="$($fileListName)_File_$($fileTmp)" Source="`$(var.$($fileListName)Path)\$($file)" />`r`n
"@
}
$componentDefs +=
@"
</Component>`r`n
"@
$wxsFile = $wxsFile -replace "\s+(<!--$($fileListName)_Component_Def-->)", $componentDefs
$componentRef =
@"
<ComponentRef Id="$($componentId)" />
"@
$wxsFile = $wxsFile -replace "\s+(</ComponentGroup>)", "$componentRef`r`n </ComponentGroup>"
Set-Content -Path $wxsFilePath -Value $wxsFile

View File

@@ -0,0 +1,84 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True, Position = 1)]
[AllowEmptyString()]
[string]$fileDepsJson,
[Parameter(Mandatory = $True, Position = 2)]
[string]$fileListName,
[Parameter(Mandatory = $True, Position = 3)]
[string]$wxsFilePath,
# If there is no deps.json file, just pass path to files
[Parameter(Mandatory = $False, Position = 4)]
[string]$depsPath,
# launcher plugins are being loaded into launcher process,
# so there are some additional dependencies to skip
[Parameter(Mandatory = $False, Position = 5)]
[bool]$isLauncherPlugin,
# Skip winAppSDK dlls as those are hard-linked
[Parameter(Mandatory = $False, Position = 6)]
[bool]$isWinAppSdkProj
)
$fileWxs = Get-Content $wxsFilePath;
#Skip PowerToysInterop files
$coreWxs = Get-Content $PSScriptRoot/"Core.wxs"
$coreWxs | ForEach-Object {
if ($_ -match "(<?define PowerToysInteropFiles=)(.*)\?>") {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'fileList',
Justification = 'variable is used in another scope')]
$interopFilesList = $matches[2] -split ';'
return
}
}
#Skip WinAppSdk files
if ($isWinAppSdkProj -eq $True) {
$winAppSDKWxs = Get-Content $PSScriptRoot/"WinAppSDK.wxs"
$winAppSDKWxs | ForEach-Object {
if ($_ -match "(<?define WinAppSDKFiles=)(.*)\?>") {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'fileList',
Justification = 'variable is used in another scope')]
$winAppSDKfilesList = $matches[2] -split ';'
return
}
}
}
$fileExclusionList = @("*Test*", "*.pdb", "*.lastcodeanalysissucceeded", "createdump.exe") + $interopFilesList + $winAppSDKfilesList
$fileInclusionList = @("*.dll", "*.exe", "*.json", "*.msix", "*png", "*gif", "*ico", "*cur", "*svg", "index.html", "reg.js", "monacoSpecialLanguages.js", "resources.pri")
$dllsToIgnore = @("System.CodeDom.dll", "WindowsBase.dll")
if ($fileDepsJson -eq [string]::Empty) {
$fileDepsRoot = $depsPath
} else {
$fileDepsRoot = (Get-ChildItem $fileDepsJson).Directory.FullName
$depsJson = Get-Content $fileDepsJson | ConvertFrom-Json
$runtimeList = ([array]$depsJson.targets.PSObject.Properties)[-1].Value.PSObject.Properties | Where-Object {
$_.Name -match "runtimepack.*Runtime"
};
$runtimeList | ForEach-Object {
$_.Value.PSObject.Properties.Value | ForEach-Object {
$fileExclusionList += $_.PSObject.Properties.Name
}
}
}
$fileExclusionList = $fileExclusionList | Where-Object {$_ -notin $dllsToIgnore}
if ($isLauncherPlugin -eq $True) {
$fileInclusionList += @("*.deps.json")
$fileExclusionList += @("Ijwhost.dll", "PowerToys.Common.UI.dll", "PowerToys.GPOWrapper.dll", "PowerToys.GPOWrapperProjection.dll", "PowerToys.PowerLauncher.Telemetry.dll", "PowerToys.ManagedCommon.dll", "PowerToys.Settings.UI.Lib.dll", "Wox.Infrastructure.dll", "Wox.Plugin.dll")
}
$fileList = Get-ChildItem $fileDepsRoot -Include $fileInclusionList -Exclude $fileExclusionList -File -Name
$fileWxs = $fileWxs -replace "(<\?define $($fileListName)=)", "<?define $fileListName=$($fileList -join ';')"
Set-Content -Path $wxsFilePath -Value $fileWxs

View File

@@ -734,9 +734,13 @@ UINT __stdcall DetectPrevInstallPathCA(MSIHANDLE hInstall)
UINT er = ERROR_SUCCESS; UINT er = ERROR_SUCCESS;
hr = WcaInitialize(hInstall, "DetectPrevInstallPathCA"); hr = WcaInitialize(hInstall, "DetectPrevInstallPathCA");
MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", L""); MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", L"");
LPWSTR currentScope = nullptr;
hr = WcaGetProperty(L"InstallScope", &currentScope);
try try
{ {
if (auto install_path = GetMsiPackageInstalledPath()) if (auto install_path = GetMsiPackageInstalledPath(std::wstring{ currentScope } == L"perUser"))
{ {
MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", install_path->data()); MsiSetPropertyW(hInstall, L"PREVIOUSINSTALLFOLDER", install_path->data());
} }

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.props')" /> <Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.props')" />
<Import Project="..\wix.props" Condition="Exists('..\wix.props')" /> <Import Project="..\wix.props" Condition="Exists('..\wix.props')" />
@@ -33,8 +33,10 @@
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup> <PropertyGroup>
<OutDir>$(Platform)\$(Configuration)\</OutDir> <OutDir Condition=" '$(PerUser)' != 'true' ">$(Platform)\$(Configuration)\MachineSetup</OutDir>
<IntDir>$(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\obj\</IntDir> <OutDir Condition=" '$(PerUser)' == 'true' ">$(Platform)\$(Configuration)\UserSetup</OutDir>
<IntDir Condition=" '$(PerUser)' != 'true' ">$(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\MachineSetup\obj\</IntDir>
<IntDir Condition=" '$(PerUser)' == 'true' ">$(SolutionDir)$(ProjectName)\$(Platform)\$(Configuration)\UserSetup\obj\</IntDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'"> <PropertyGroup Condition="'$(Configuration)'=='Debug'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@@ -47,8 +49,33 @@
<PreBuildEvent> <PreBuildEvent>
<Command> <Command>
call cmd /C "copy ""$(ProjectDir)DepsFilesLists.h"" ""$(ProjectDir)DepsFilesLists.h.bk""" call cmd /C "copy ""$(ProjectDir)DepsFilesLists.h"" ""$(ProjectDir)DepsFilesLists.h.bk"""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\AlwaysOnTop.wxs"" ""$(ProjectDir)..\PowerToysSetup\AlwaysOnTop.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Awake.wxs"" ""$(ProjectDir)..\PowerToysSetup\Awake.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\ColorPicker.wxs"" ""$(ProjectDir)..\PowerToysSetup\ColorPicker.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Core.wxs"" ""$(ProjectDir)..\PowerToysSetup\Core.wxs.bk"""" call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Core.wxs"" ""$(ProjectDir)..\PowerToysSetup\Core.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\FancyZones.wxs"" ""$(ProjectDir)..\PowerToysSetup\FancyZones.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\FileExplorerPreview.wxs"" ""$(ProjectDir)..\PowerToysSetup\FileExplorerPreview.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\FileLocksmith.wxs"" ""$(ProjectDir)..\PowerToysSetup\FileLocksmith.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Hosts.wxs"" ""$(ProjectDir)..\PowerToysSetup\Hosts.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\ImageResizer.wxs"" ""$(ProjectDir)..\PowerToysSetup\ImageResizer.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\MouseUtils.wxs"" ""$(ProjectDir)..\PowerToysSetup\MouseUtils.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\Product.wxs"" ""$(ProjectDir)..\PowerToysSetup\Product.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\RegistryPreview.wxs"" ""$(ProjectDir)..\PowerToysSetup\RegistryPreview.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Resources.wxs"" ""$(ProjectDir)..\PowerToysSetup\Resources.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Run.wxs"" ""$(ProjectDir)..\PowerToysSetup\Run.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Settings.wxs"" ""$(ProjectDir)..\PowerToysSetup\Settings.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\ShortcutGuide.wxs"" ""$(ProjectDir)..\PowerToysSetup\ShortcutGuide.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\TextExtractor.wxs"" ""$(ProjectDir)..\PowerToysSetup\TextExtractor.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\Tools.wxs"" ""$(ProjectDir)..\PowerToysSetup\Tools.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\VideoConference.wxs"" ""$(ProjectDir)..\PowerToysSetup\VideoConference.wxs.bk""""
call cmd /C "copy ""$(ProjectDir)..\PowerToysSetup\WinAppSDK.wxs"" ""$(ProjectDir)..\PowerToysSetup\WinAppSDK.wxs.bk""""
call powershell.exe -NonInteractive -executionpolicy Unrestricted -File parseRuntimes.ps1 -runtimedepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\Settings\PowerToys.Settings.deps.json" -wpfdepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\modules\ColorPicker\PowerToys.ColorPickerUI.deps.json" -depsfileslistspath "$(ProjectDir)DepsFilesLists.h" -productwxspath "$(ProjectDir)..\PowerToysSetup\Core.wxs" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File parseRuntimes.ps1 -runtimedepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\Settings\PowerToys.Settings.deps.json" -wpfdepsjsonpath "$(ProjectDir)..\..\$(Platform)\$(Configuration)\modules\ColorPicker\PowerToys.ColorPickerUI.deps.json" -depsfileslistspath "$(ProjectDir)DepsFilesLists.h" -productwxspath "$(ProjectDir)..\PowerToysSetup\Core.wxs"
if not "$(PerUser)" == "true" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File ..\PowerToysSetup\generateAllFileComponents.ps1 -platform $(Platform)
if "$(PerUser)" == "true" call powershell.exe -NonInteractive -executionpolicy Unrestricted -File ..\PowerToysSetup\generateAllFileComponents.ps1 -platform $(Platform) -installscopeperuser $(PerUser)
</Command> </Command>
<Message>Backing up original files and populating .NET and WPF Runtime dependencies </Message> <Message>Backing up original files and populating .NET and WPF Runtime dependencies </Message>
</PreBuildEvent> </PreBuildEvent>

View File

@@ -8,6 +8,9 @@
#include <common/SettingsAPI/settings_helpers.h> #include <common/SettingsAPI/settings_helpers.h>
#include <common/utils/json.h> #include <common/utils/json.h>
#include <common/utils/registry.h>
using namespace registry::install_scope;
namespace // Strings in this namespace should not be localized namespace // Strings in this namespace should not be localized
{ {
@@ -42,9 +45,16 @@ namespace updating
std::pair<Uri, std::wstring> extract_installer_asset_download_info(const json::JsonObject& release_object) std::pair<Uri, std::wstring> extract_installer_asset_download_info(const json::JsonObject& release_object)
{ {
const std::wstring_view required_architecture = get_architecture_string(get_current_architecture()); const std::wstring_view required_architecture = get_architecture_string(get_current_architecture());
constexpr const std::wstring_view required_filename_pattern = updating::INSTALLER_FILENAME_PATTERN; std::wstring_view required_filename_pattern = updating::INSTALLER_FILENAME_PATTERN;
// Desc-sorted by its priority // Desc-sorted by its priority
const std::array<std::wstring_view, 2> asset_extensions = { L".exe", L".msi" }; const std::array<std::wstring_view, 2> asset_extensions = { L".exe", L".msi" };
const InstallScope current_install_scope = get_current_install_scope();
if (current_install_scope == InstallScope::PerUser)
{
required_filename_pattern = updating::INSTALLER_FILENAME_PATTERN_USER;
}
for (const auto asset_extension : asset_extensions) for (const auto asset_extension : asset_extensions)
{ {
for (auto asset_elem : release_object.GetNamedArray(L"assets")) for (auto asset_elem : release_object.GetNamedArray(L"assets"))

View File

@@ -31,4 +31,5 @@ namespace updating
// non-localized // non-localized
constexpr inline std::wstring_view INSTALLER_FILENAME_PATTERN = L"powertoyssetup"; constexpr inline std::wstring_view INSTALLER_FILENAME_PATTERN = L"powertoyssetup";
constexpr inline std::wstring_view INSTALLER_FILENAME_PATTERN_USER = L"powertoysusersetup";
} }

View File

@@ -15,6 +15,7 @@
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Project="..\..\..\deps\spdlog.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="Shared"> <ImportGroup Label="Shared">

View File

@@ -12,14 +12,16 @@
namespace // Strings in this namespace should not be localized namespace // Strings in this namespace should not be localized
{ {
const inline wchar_t POWER_TOYS_UPGRADE_CODE[] = L"{42B84BF7-5FBF-473B-9C8B-049DC16F7708}"; const inline wchar_t POWER_TOYS_UPGRADE_CODE[] = L"{42B84BF7-5FBF-473B-9C8B-049DC16F7708}";
const inline wchar_t POWER_TOYS_UPGRADE_CODE_USER[] = L"{D8B559DB-4C98-487A-A33F-50A8EEE42726}";
const inline wchar_t POWERTOYS_EXE_COMPONENT[] = L"{A2C66D91-3485-4D00-B04D-91844E6B345B}"; const inline wchar_t POWERTOYS_EXE_COMPONENT[] = L"{A2C66D91-3485-4D00-B04D-91844E6B345B}";
} }
std::optional<std::wstring> GetMsiPackageInstalledPath() std::optional<std::wstring> GetMsiPackageInstalledPath(bool perUser)
{ {
constexpr size_t guid_length = 39; constexpr size_t guid_length = 39;
wchar_t product_ID[guid_length]; wchar_t product_ID[guid_length];
if (const bool found = ERROR_SUCCESS == MsiEnumRelatedProductsW(POWER_TOYS_UPGRADE_CODE, 0, 0, product_ID); !found) std::wstring upgradeCode = (perUser ? POWER_TOYS_UPGRADE_CODE_USER : POWER_TOYS_UPGRADE_CODE);
if (const bool found = ERROR_SUCCESS == MsiEnumRelatedProductsW(upgradeCode.c_str(), 0, 0, product_ID); !found)
{ {
return std::nullopt; return std::nullopt;
} }

View File

@@ -16,6 +16,83 @@
namespace registry namespace registry
{ {
namespace install_scope
{
const wchar_t INSTALL_SCOPE_REG_KEY[] = L"Software\\Classes\\powertoys\\";
enum class InstallScope
{
PerMachine = 0,
PerUser,
};
inline const InstallScope get_current_install_scope()
{
// Open HKLM key
HKEY perMachineKey{};
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
INSTALL_SCOPE_REG_KEY,
0,
KEY_READ,
&perMachineKey) != ERROR_SUCCESS)
{
// Open HKCU key
HKEY perUserKey{};
if (RegOpenKeyExW(HKEY_CURRENT_USER,
INSTALL_SCOPE_REG_KEY,
0,
KEY_READ,
&perUserKey) != ERROR_SUCCESS)
{
// both keys are missing
return InstallScope::PerMachine;
}
else
{
DWORD dataSize{};
if (RegGetValueW(
perUserKey,
nullptr,
L"InstallScope",
RRF_RT_REG_SZ,
nullptr,
nullptr,
&dataSize) != ERROR_SUCCESS)
{
// HKCU key is missing
RegCloseKey(perUserKey);
return InstallScope::PerMachine;
}
std::wstring data;
data.resize(dataSize / sizeof(wchar_t));
if (RegGetValueW(
perUserKey,
nullptr,
L"InstallScope",
RRF_RT_REG_SZ,
nullptr,
&data[0],
&dataSize) != ERROR_SUCCESS)
{
// HKCU key is missing
RegCloseKey(perUserKey);
return InstallScope::PerMachine;
}
RegCloseKey(perUserKey);
if (data.contains(L"perUser"))
{
return InstallScope::PerUser;
}
}
}
return InstallScope::PerMachine;
}
}
template<class> template<class>
inline constexpr bool always_false_v = false; inline constexpr bool always_false_v = false;