Test 2023 12 20 (#1337)

* Update winutil.ps1

* [Fix]: MicroWin finds but fails to use system oscdimg (#1298)

* Update winutil.ps1 (#1295)

* [Fix]: MicroWin finds but fails to use system oscdimg

* Compiled change b740693

---------

Co-authored-by: Chris Titus <contact@christitus.com>

* Fix wrong hash verification for oscdimg (#1301)

* Update winutil.ps1 (#1295)

* Fixed wrong hash verification for oscdimg

---------

Co-authored-by: Chris Titus <contact@christitus.com>

* Fix Winget package for Chromium and add Ungoogled-Chromium (#1306)

* Fix Chocolatey package for Chromium, add Ungoogled-Chromium

The Chocolatey package for Chromium was previously the one for Ungoogled-Chromium instead, I fixed it and added Ungoogled-Chromium as a separate package instead.

* Add ungoogled-chromium to inputXML

* Making Install section fully data driven (#1326)

Co-authored-by: KonTy <KonTy@github.com>

* Update README for India blocking (#1336)

* Fixed a couple of MicroWin issues (#1313)

* Update winutil.ps1 (#1295)

* Update MicroWin-Helper.ps1

Fix AppX package issue

* Update winutil.ps1

Fixed AppX package removal issue

* Added error detection to AppX removal

Adds error detection to the AppX package removal function in case the process of getting applications fails

This change might fix issue #1324

* Force DISM commands to be in English

Fixes an issue where MicroWin processing would fail on hosts with languages other than English.

This is because, by default, DISM uses the system language. By passing the /English flag, we're forcing DISM to be in English

---------

Co-authored-by: Chris Titus <contact@christitus.com>

* fix app display to be alphabetical

---------

Co-authored-by: kian yamamoto <kianjyamamoto@gmail.com>
Co-authored-by: Júlio C. Oliveira <braxkan@gmail.com>
Co-authored-by: AlbydS <119180144+AlbydST@users.noreply.github.com>
Co-authored-by: KonTy <9524513+KonTy@users.noreply.github.com>
Co-authored-by: KonTy <KonTy@github.com>
Co-authored-by: Munkk <152475628+munkk01@users.noreply.github.com>
Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>
This commit is contained in:
Chris Titus 2024-01-02 15:45:06 -06:00 committed by GitHub
parent 3bb48564ef
commit 771c268130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 3678 additions and 2684 deletions

View File

@ -22,7 +22,7 @@ Courtesy of the issue raised at: [#144](/../../issues/144)
### Issues: ### Issues:
- If you are unable to resolve christitus.com/win and are getting errors launching the tool, it might be due to India blocking GitHub's content domain and preventing downloads. You'll be required to use a VPN to tunnel out of India. - If you are unable to resolve christitus.com/win and are getting errors launching the tool, it might be due to India blocking GitHub's content domain and preventing downloads. You may use a VPN or change your DNS provider to Google/Cloudflare/etc.
Source: <https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms> Source: <https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms>

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ function Get-Oscdimg {
Write-Host "[INFO] oscdimg.exe SHA-256 Hash: $sha256Hash" Write-Host "[INFO] oscdimg.exe SHA-256 Hash: $sha256Hash"
$expectedHash = "F62B91A06F94019A878DD9D1713FFBA2140B863C131EB78A329B4CCD6102960E" # Replace with the actual expected hash $expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash
if ($sha256Hash -eq $expectedHash) { if ($sha256Hash -eq $expectedHash) {
Write-Host "Hashes match. File is verified." Write-Host "Hashes match. File is verified."
} else { } else {

View File

@ -12,7 +12,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender
Remove-Features -keepDefender:$false Remove-Features -keepDefender:$false
#> #>
$appxlist = dism /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch $appxlist = dism /English /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch
$appxlist = $appxlist -split "Feature Name : " | Where-Object {$_} $appxlist = $appxlist -split "Feature Name : " | Where-Object {$_}
if ($dumpFeatures) if ($dumpFeatures)
{ {
@ -40,7 +40,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender
function Remove-Packages function Remove-Packages
{ {
$appxlist = dism /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch $appxlist = dism /English /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch
$appxlist = $appxlist -split "Package Identity : " | Where-Object {$_} $appxlist = $appxlist -split "Package Identity : " | Where-Object {$_}
$appxlist = $appxlist | Where-Object { $appxlist = $appxlist | Where-Object {
@ -85,7 +85,7 @@ function Remove-Packages
{ {
$status = "Removing $appx" $status = "Removing $appx"
Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$appxlist.Count*100) Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$appxlist.Count*100)
dism /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart dism /English /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart
} }
Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed
} }
@ -104,16 +104,22 @@ function Remove-ProvisionedPackages
$_.PackageName -NotLike "*Wifi*" -and $_.PackageName -NotLike "*Wifi*" -and
$_.PackageName -NotLike "*Foundation*" $_.PackageName -NotLike "*Foundation*"
} }
$counter = 0 if ($?)
foreach ($appx in $appxProvisionedPackages) {
{ $counter = 0
$status = "Removing Provisioned $appx" foreach ($appx in $appxProvisionedPackages)
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) {
dism /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$appx /NoRestart $status = "Removing Provisioned $($appx.PackageName)"
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
} dism /English /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$($appx.PackageName) /NoRestart
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed }
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
}
else
{
Write-Host "Could not get Provisioned App information. Skipping process..."
}
} }
function Copy-ToUSB([string] $fileToCopy) function Copy-ToUSB([string] $fileToCopy)

View File

@ -18,12 +18,10 @@ function Invoke-WPFGetIso {
Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | " Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | "
Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| " Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| "
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) $oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf)
Write-Host "oscdimg.exe on system: $oscdImgFound" Write-Host "oscdimg.exe on system: $oscdImgFound"
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
if (!$oscdImgFound) if (!$oscdImgFound)
{ {
$downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked $downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked
@ -32,7 +30,7 @@ function Invoke-WPFGetIso {
{ {
# only show the message to people who did check the box to download from github, if you check the box # only show the message to people who did check the box to download from github, if you check the box
# you consent to downloading it, no need to show extra dialogs # you consent to downloading it, no need to show extra dialogs
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco or github. This might take a long time.") [System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
# the step below needs choco to download oscdimg # the step below needs choco to download oscdimg
$chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco) $chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco)
Write-Host "choco on system: $chocoFound" Write-Host "choco on system: $chocoFound"
@ -47,6 +45,7 @@ function Invoke-WPFGetIso {
return return
} }
else { else {
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
Get-Oscdimg -oscdimgPath $oscdimgPath Get-Oscdimg -oscdimgPath $oscdimgPath
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf $oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
if (!$oscdImgFound) { if (!$oscdImgFound) {

View File

@ -44,7 +44,7 @@ function Invoke-WPFMicrowin {
if (Test-Path $driverPath) if (Test-Path $driverPath)
{ {
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
} }
else else
{ {
@ -136,7 +136,7 @@ function Invoke-WPFMicrowin {
Write-Host "Copy link to winutil.ps1 into the ISO" Write-Host "Copy link to winutil.ps1 into the ISO"
$desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop" $desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop"
New-Item -ItemType Directory -Force -Path "$desktopDir" New-Item -ItemType Directory -Force -Path "$desktopDir"
dism /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default" dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default"
$command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'" $command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'"
$shortcutPath = "$desktopDir\WinUtil.lnk" $shortcutPath = "$desktopDir\WinUtil.lnk"
$shell = New-Object -ComObject WScript.Shell $shell = New-Object -ComObject WScript.Shell
@ -238,7 +238,7 @@ function Invoke-WPFMicrowin {
reg unload HKLM\zSYSTEM reg unload HKLM\zSYSTEM
Write-Host "Cleaning up image..." Write-Host "Cleaning up image..."
dism /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
Write-Host "Cleanup complete." Write-Host "Cleanup complete."
Write-Host "Unmounting image..." Write-Host "Unmounting image..."
@ -270,7 +270,7 @@ function Invoke-WPFMicrowin {
if (Test-Path $driverPath) if (Test-Path $driverPath)
{ {
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) " Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
dism /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
} }
else else
{ {

View File

@ -53,13 +53,55 @@ $sync.runspace.Open()
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window' $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
if ((Get-WinUtilToggleStatus WPFToggleDarkMode) -eq $True){ $organizedData = @{}
$ctttheme = 'Matrix' # Iterate through JSON data and organize by panel and category
} foreach ($appName in $sync.configs.applications.PSObject.Properties.Name) {
Else{ $appInfo = $sync.configs.applications.$appName
$ctttheme = 'Classic'
# Create an object for the application
$appObject = [PSCustomObject]@{
Name = $appName
Category = $appInfo.Category
Content = $appInfo.Content
Choco = $appInfo.choco
Winget = $appInfo.winget
Panel = $appInfo.panel
}
if (-not $organizedData.ContainsKey($appInfo.panel)) {
$organizedData[$appInfo.panel] = @{}
}
if (-not $organizedData[$appInfo.panel].ContainsKey($appInfo.Category)) {
$organizedData[$appInfo.panel][$appInfo.Category] = @{}
}
# Store application data in a sub-array under the category
$organizedData[$appInfo.panel][$appInfo.Category][$appName] = $appObject
} }
# Iterate through organizedData by panel, category, and application
foreach ($panel in $organizedData.Keys) {
foreach ($category in $organizedData[$panel].Keys) {
$blockXml += "<Label Content=""$($category)"" FontSize=""16""/>`n"
$sortedApps = $organizedData[$panel][$category].Keys | Sort-Object
foreach ($appName in $sortedApps) {
$appInfo = $organizedData[$panel][$category][$appName]
$blockXml += "<CheckBox Name=""$appName"" Content=""$($appInfo.Content)""/>`n"
}
}
$inputXML = $inputXML -replace "{{InstallPanel$panel}}", $blockXml
$blockXml = ""
}
if ((Get-WinUtilToggleStatus WPFToggleDarkMode) -eq $True) {
$ctttheme = 'Matrix'
}
else {
$ctttheme = 'Classic'
}
$inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme $inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework') [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
@ -79,6 +121,8 @@ catch {
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed." Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
} }
#=========================================================================== #===========================================================================
# Store Form Objects In PowerShell # Store Form Objects In PowerShell
#=========================================================================== #===========================================================================

File diff suppressed because it is too large Load Diff

View File

@ -578,320 +578,66 @@
FontFamily="Arial" FontFamily="Arial"
Foreground="{MainForegroundColor}" FontSize="18" Name="WPFCloseButton" /> Foreground="{MainForegroundColor}" FontSize="18" Name="WPFCloseButton" />
</DockPanel> </DockPanel>
<ScrollViewer Grid.Row="1" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Background="Transparent" BorderBrush="Transparent" BorderThickness="0">
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0"> <TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="0" Padding="-1">
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1"> <TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
<Grid Background="Transparent"> <Grid Background="Transparent" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height=".10*"/> <RowDefinition Height="45px"/>
<RowDefinition Height=".90*"/> <RowDefinition Height="0.95*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Left" Grid.Column="0" Grid.ColumnSpan="3" Margin="5"> <StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3" Margin="5">
<Label Content="Winget:" FontSize="15" VerticalAlignment="Center"/> <Label Content="Winget:" FontSize="15" VerticalAlignment="Center"/>
<Button Name="WPFinstall" Content=" Install Selection " Margin="1" /> <Button Name="WPFinstall" Content=" Install Selection " Margin="1" />
<Button Name="WPFInstallUpgrade" Content=" Upgrade All " Margin="1"/> <Button Name="WPFInstallUpgrade" Content=" Upgrade All " Margin="1"/>
<Button Name="WPFuninstall" Content=" Uninstall Selection " Margin="1"/> <Button Name="WPFuninstall" Content=" Uninstall Selection " Margin="1"/>
<Button Name="WPFGetInstalled" Content=" Get Installed " Margin="1"/> <Button Name="WPFGetInstalled" Content=" Get Installed " Margin="1"/>
<Button Name="WPFclearWinget" Content=" Clear Selection " Margin="1"/> <Button Name="WPFclearWinget" Content=" Clear Selection " Margin="1"/>
</StackPanel>
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Left" Grid.Column="3" Grid.ColumnSpan="2" Margin="5">
<Label Content="Configuration File:" FontSize="15" VerticalAlignment="Center"/> <Label Content="Configuration File:" FontSize="15" VerticalAlignment="Center"/>
<Button Name="WPFimportWinget" Content=" Import " Margin="1"/> <Button Name="WPFimportWinget" Content=" Import " Margin="1"/>
<Button Name="WPFexportWinget" Content=" Export " Margin="1"/> <Button Name="WPFexportWinget" Content=" Export " Margin="1"/>
</StackPanel> </StackPanel>
<Border Grid.Row="1" Grid.Column="0" >
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Browsers" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbrave" Content="Brave" Margin="5,0"/>
<CheckBox Name="WPFInstallchrome" Content="Chrome" Margin="5,0"/>
<CheckBox Name="WPFInstallchromium" Content="Chromium" Margin="5,0"/>
<CheckBox Name="WPFInstalledge" Content="Edge" Margin="5,0"/>
<CheckBox Name="WPFInstallfalkon" Content="Falkon" Margin="5,0"/>
<CheckBox Name="WPFInstallfirefox" Content="Firefox" Margin="5,0"/>
<CheckBox Name="WPFInstallfloorp" Content="Floorp" Margin="5,0"/>
<CheckBox Name="WPFInstalllibrewolf" Content="LibreWolf" Margin="5,0"/>
<CheckBox Name="WPFInstalltor" Content="Tor Browser" Margin="5,0"/>
<CheckBox Name="WPFInstallvivaldi" Content="Vivaldi" Margin="5,0"/>
<CheckBox Name="WPFInstallwaterfox" Content="Waterfox" Margin="5,0"/>
<Label Content="Communications" FontSize="16" Margin="5,0"/> <ScrollViewer Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
<CheckBox Name="WPFInstallchatterino" Content="Chatterino" Margin="5,0"/> BorderBrush="Transparent" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<CheckBox Name="WPFInstalldiscord" Content="Discord" Margin="5,0"/> <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<CheckBox Name="WPFInstallferdium" Content="Ferdium" Margin="5,0"/> <Grid.ColumnDefinitions>
<CheckBox Name="WPFInstallguilded" Content="Guilded" Margin="5,0"/> <ColumnDefinition Width="*"/>
<CheckBox Name="WPFInstallhexchat" Content="Hexchat" Margin="5,0"/> <ColumnDefinition Width="*"/>
<CheckBox Name="WPFInstalljami" Content="Jami" Margin="5,0"/> <ColumnDefinition Width="*"/>
<CheckBox Name="WPFInstalllinphone" Content="Linphone" Margin="5,0" /> <ColumnDefinition Width="*"/>
<CheckBox Name="WPFInstallmatrix" Content="Matrix" Margin="5,0"/> <ColumnDefinition Width="*"/>
<CheckBox Name="WPFInstallsession" Content="Session" Margin="5,0"/> </Grid.ColumnDefinitions>
<CheckBox Name="WPFInstallqtox" Content="QTox" Margin="5,0"/> <Border Grid.Row="1" Grid.Column="0">
<CheckBox Name="WPFInstallsignal" Content="Signal" Margin="5,0"/> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<CheckBox Name="WPFInstallskype" Content="Skype" Margin="5,0"/> {{InstallPanel0}}
<CheckBox Name="WPFInstallslack" Content="Slack" Margin="5,0"/> </StackPanel>
<CheckBox Name="WPFInstallteams" Content="Teams" Margin="5,0"/> </Border>
<CheckBox Name="WPFInstalltelegram" Content="Telegram" Margin="5,0"/> <Border Grid.Row="1" Grid.Column="1">
<CheckBox Name="WPFInstallthunderbird" Content="Thunderbird" Margin="5,0"/> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" >
<CheckBox Name="WPFInstalltweeten" Content="FOSS Twitter Client" Margin="5,0"/> {{InstallPanel1}}
<CheckBox Name="WPFInstallviber" Content="Viber" Margin="5,0"/> </StackPanel>
<CheckBox Name="WPFInstallzoom" Content="Zoom" Margin="5,0"/> </Border>
<CheckBox Name="WPFInstallzulip" Content="Zulip" Margin="5,0"/> <Border Grid.Row="1" Grid.Column="2">
</StackPanel> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
</Border> {{InstallPanel2}}
<Border Grid.Row="1" Grid.Column="1"> </StackPanel>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" > </Border>
<Border Grid.Row="1" Grid.Column="3">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
{{InstallPanel3}}
</StackPanel>
</Border>
<Border Grid.Row="1" Grid.Column="4">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
{{InstallPanel4}}
</StackPanel>
</Border>
</Grid>
</ScrollViewer>
<Label Content="Development" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstalljava20" Content="Azul Zulu JDK 20" Margin="5,0"/>
<CheckBox Name="WPFInstalljava21" Content="Azul Zulu JDK 21" Margin="5,0"/>
<CheckBox Name="WPFInstallclink" Content="Clink" Margin="5,0"/>
<CheckBox Name="WPFInstalldockerdesktop" Content="Docker Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallgit" Content="Git" Margin="5,0"/>
<CheckBox Name="WPFInstallgitextensions" Content="Git Extensions" Margin="5,0"/>
<CheckBox Name="WPFInstallgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallgolang" Content="GoLang" Margin="5,0"/>
<CheckBox Name="WPFInstalljetbrains" Content="Jetbrains Toolbox" Margin="5,0"/>
<CheckBox Name="WPFInstallmspaintide" Content="MS Paint IDE" Margin="5,0"/>
<CheckBox Name="WPFInstallnano" Content="Nano" Margin="5,0"/>
<CheckBox Name="WPFInstallneovim" Content="Neovim" Margin="5,0"/>
<CheckBox Name="WPFInstallnodejs" Content="NodeJS" Margin="5,0"/>
<CheckBox Name="WPFInstallnodejslts" Content="NodeJS LTS" Margin="5,0"/>
<CheckBox Name="WPFInstallnvm" Content="Node Version Manager" Margin="5,0"/>
<CheckBox Name="WPFInstalljava8" Content="OpenJDK Java 8" Margin="5,0"/>
<CheckBox Name="WPFInstalljava16" Content="OpenJDK Java 16" Margin="5,0"/>
<CheckBox Name="WPFInstalljava18" Content="Oracle Java 18" Margin="5,0"/>
<CheckBox Name="WPFInstallposh" Content="Oh My Posh (Prompt)" Margin="5,0"/>
<CheckBox Name="WPFInstallpython3" Content="Python3" Margin="5,0"/>
<CheckBox Name="WPFInstallpostman" Content="Postman" Margin="5,0"/>
<CheckBox Name="WPFInstallrustlang" Content="Rust" Margin="5,0"/>
<CheckBox Name="WPFInstallstarship" Content="Starship (Shell Prompt)" Margin="5,0"/>
<CheckBox Name="WPFInstallsublimemerge" Content="Sublime Merge" Margin="5,0"/>
<CheckBox Name="WPFInstallsublimetext" Content="Sublime Text" Margin="5,0"/>
<CheckBox Name="WPFInstallunity" Content="Unity Game Engine" Margin="5,0"/>
<CheckBox Name="WPFInstallvisualstudio" Content="Visual Studio 2022" Margin="5,0"/>
<CheckBox Name="WPFInstallvagrant" Content="Vagrant" Margin="5,0"/>
<CheckBox Name="WPFInstallvscode" Content="VS Code" Margin="5,0"/>
<CheckBox Name="WPFInstallvscodium" Content="VS Codium" Margin="5,0"/>
<CheckBox Name="WPFInstallyarn" Content="Yarn" Margin="5,0"/>
<Label Content="Document" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallanki" Content="Anki" Margin="5,0"/>
<CheckBox Name="WPFInstalladobe" Content="Adobe Reader DC" Margin="5,0"/>
<CheckBox Name="WPFInstallopenoffice" Content="Apache OpenOffice" Margin="5,0"/>
<CheckBox Name="WPFInstallcalibre" Content="Calibre" Margin="5,0"/>
<CheckBox Name="WPFInstallfoxpdf" Content="Foxit PDF" Margin="5,0"/>
<CheckBox Name="WPFInstalljoplin" Content="Joplin (FOSS Notes)" Margin="5,0"/>
<CheckBox Name="WPFInstalllibreoffice" Content="LibreOffice" Margin="5,0"/>
<CheckBox Name="WPFInstallmasscode" Content="massCode (Snippet Manager)" Margin="5,0"/>
<CheckBox Name="WPFInstallnaps2" Content="NAPS2 (Document Scanner)" Margin="5,0"/>
<CheckBox Name="WPFInstallnotepadplus" Content="Notepad++" Margin="5,0"/>
<CheckBox Name="WPFInstallobsidian" Content="Obsidian" Margin="5,0"/>
<CheckBox Name="WPFInstallokular" Content="Okular" Margin="5,0"/>
<CheckBox Name="WPFInstallonlyoffice" Content="ONLYOffice Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallpdfsam" Content="PDFsam Basic" Margin="5,0"/>
<CheckBox Name="WPFInstallsumatra" Content="Sumatra PDF" Margin="5,0"/>
<CheckBox Name="WPFInstallwinmerge" Content="WinMerge" Margin="5,0"/>
<CheckBox Name="WPFInstallxournal" Content="Xournal++" Margin="5,0"/>
<CheckBox Name="WPFInstallzim" Content="Zim Desktop Wiki" Margin="5,0"/>
<CheckBox Name="WPFInstallznote" Content="Znote" Margin="5,0"/>
<CheckBox Name="WPFInstallzotero" Content="Zotero" Margin="5,0"/>
</StackPanel>
</Border>
<Border Grid.Row="1" Grid.Column="2">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Games" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbluestacks" Content="Bluestacks" Margin="5,0"/>
<CheckBox Name="WPFInstallcemu" Content="Cemu" Margin="5,0"/>
<CheckBox Name="WPFInstallclonehero" Content="Clone Hero" Margin="5,0"/>
<CheckBox Name="WPFInstalleaapp" Content="EA App" Margin="5,0"/>
<CheckBox Name="WPFInstallemulationstation" Content="Emulation Station" Margin="5,0"/>
<CheckBox Name="WPFInstallepicgames" Content="Epic Games Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallgeforcenow" Content="GeForce NOW" Margin="5,0"/>
<CheckBox Name="WPFInstallgog" Content="GOG Galaxy" Margin="5,0"/>
<CheckBox Name="WPFInstallheroiclauncher" Content="Heroic Games Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallitch" Content="Itch.io" Margin="5,0"/>
<CheckBox Name="WPFInstallmoonlight" Content="Moonlight/GameStream Client" Margin="5,0"/>
<CheckBox Name="WPFInstallplaynite" Content="Playnite" Margin="5,0"/>
<CheckBox Name="WPFInstallprismlauncher" Content="Prism Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallsidequest" Content="SideQuestVR" Margin="5,0"/>
<CheckBox Name="WPFInstallsteam" Content="Steam" Margin="5,0"/>
<CheckBox Name="WPFInstallsunshine" Content="Sunshine/GameStream Server" Margin="5,0"/>
<CheckBox Name="WPFInstallubisoft" Content="Ubisoft Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallxemu" Content="XEMU" Margin="5,0"/>
<Label Content="Microsoft Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstalldotnet3" Content=".NET Desktop Runtime 3.1" Margin="5,0"/>
<CheckBox Name="WPFInstalldotnet5" Content=".NET Desktop Runtime 5" Margin="5,0"/>
<CheckBox Name="WPFInstalldotnet6" Content=".NET Desktop Runtime 6" Margin="5,0"/>
<CheckBox Name="WPFInstalldotnet7" Content=".NET Desktop Runtime 7" Margin="5,0"/>
<CheckBox Name="WPFInstallnuget" Content="Nuget" Margin="5,0"/>
<CheckBox Name="WPFInstallonedrive" Content="OneDrive" Margin="5,0"/>
<CheckBox Name="WPFInstallpowershell" Content="PowerShell" Margin="5,0"/>
<CheckBox Name="WPFInstallpowertoys" Content="Powertoys" Margin="5,0"/>
<CheckBox Name="WPFInstallprocessmonitor" Content="SysInternals Process Monitor" Margin="5,0"/>
<CheckBox Name="WPFInstalltcpview" Content="SysInternals TCPView" Margin="5,0"/>
<CheckBox Name="WPFInstallvc2015_64" Content="Visual C++ 2015-2022 64-bit" Margin="5,0"/>
<CheckBox Name="WPFInstallvc2015_32" Content="Visual C++ 2015-2022 32-bit" Margin="5,0"/>
<CheckBox Name="WPFInstallterminal" Content="Windows Terminal" Margin="5,0"/>
<Label Content="WSL Apps" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallarch" Content="Arch (Win Store)" Margin="5,0"/>
<CheckBox Name="WPFInstalldebian" Content="Debian" Margin="5,0"/>
<CheckBox Name="WPFInstallfedora" Content="Fedora WSL Remix" Margin="5,0"/>
<CheckBox Name="WPFInstallopensuseleap" Content="OpenSUSE Leap 15.5 (Win Store)" Margin="5,0"/>
<CheckBox Name="WPFInstallopensusetw" Content="OpenSUSE Tumbleweed (Win Store)" Margin="5,0"/>
<CheckBox Name="WPFInstallubuntu1604" Content="Ubuntu 16.04 LTS" Margin="5,0"/>
<CheckBox Name="WPFInstallubuntu1804" Content="Ubuntu 18.04 LTS" Margin="5,0"/>
<CheckBox Name="WPFInstallubuntu2004" Content="Ubuntu 20.04 LTS" Margin="5,0"/>
<CheckBox Name="WPFInstallubuntu2204" Content="Ubuntu 22.04 LTS" Margin="5,0"/>
<CheckBox Name="WPFInstallwslmanager" Content="WSL Manager" Margin="5,0"/>
</StackPanel>
</Border>
<Border Grid.Row="1" Grid.Column="3">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Multimedia Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallaimp" Content="AIMP (Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallaudacity" Content="Audacity" Margin="5,0"/>
<CheckBox Name="WPFInstallblender" Content="Blender (3D Graphics)" Margin="5,0"/>
<CheckBox Name="WPFInstallcider" Content="Cider (FOSS Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallclementine" Content="Clementine" Margin="5,0"/>
<CheckBox Name="WPFInstallclipgrab" Content="Clipgrab" Margin="5,0"/>
<CheckBox Name="WPFInstallcopyq" Content="Copyq (Clipboard Manager)" Margin="5,0"/>
<CheckBox Name="WPFInstalldigikam" Content="DigiKam" Margin="5,0"/>
<CheckBox Name="WPFInstalleartrumpet" Content="Eartrumpet (Audio)" Margin="5,0"/>
<CheckBox Name="WPFInstallfreecad" Content="FreeCAD" Margin="5,0"/>
<CheckBox Name="WPFInstallfirealpaca" Content="Fire Alpaca" Margin="5,0"/>
<CheckBox Name="WPFInstallflameshot" Content="Flameshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallfoobar" Content="Foobar2000 (Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
<CheckBox Name="WPFInstallgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallhandbrake" Content="HandBrake" Margin="5,0"/>
<CheckBox Name="WPFInstallimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallimgburn" Content="ImgBurn" Margin="5,0"/>
<CheckBox Name="WPFInstallinkscape" Content="Inkscape" Margin="5,0"/>
<CheckBox Name="WPFInstallitunes" Content="iTunes" Margin="5,0"/>
<CheckBox Name="WPFInstalljellyfinmediaplayer" Content="Jellyfin Media Player" Margin="5,0"/>
<CheckBox Name="WPFInstalljellyfinserver" Content="Jellyfin Server" Margin="5,0"/>
<CheckBox Name="WPFInstallkdenlive" Content="Kdenlive (Video Editor)" Margin="5,0"/>
<CheckBox Name="WPFInstallkodi" Content="Kodi Media Center" Margin="5,0"/>
<CheckBox Name="WPFInstallklite" Content="K-Lite Codec Standard" Margin="5,0"/>
<CheckBox Name="WPFInstallkrita" Content="Krita (Image Editor)" Margin="5,0"/>
<CheckBox Name="WPFInstallmusicbee" Content="MusicBee (Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallmpc" Content="Media Player Classic (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallnglide" Content="nGlide (3dfx compatibility)" Margin="5,0"/>
<CheckBox Name="WPFInstallnomacs" Content="Nomacs (Image viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallobs" Content="OBS Studio" Margin="5,0"/>
<CheckBox Name="WPFInstallPaintdotnet" Content="Paint.net" Margin="5,0"/>
<CheckBox Name="WPFInstallopenscad" Content="OpenSCAD" Margin="5,0"/>
<CheckBox Name="WPFInstallsharex" Content="ShareX (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallstrawberry" Content="Strawberry (Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstalltidal" Content="Tidal" Margin="5,0"/>
<CheckBox Name="WPFInstallvlc" Content="VLC (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
<Label Content="Pro Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstalladvancedip" Content="Advanced IP Scanner" Margin="5,0"/>
<CheckBox Name="WPFInstallangryipscanner" Content="Angry IP Scanner" Margin="5,0"/>
<CheckBox Name="WPFInstallefibooteditor" Content="EFI Boot Editor" Margin="5,0"/>
<CheckBox Name="WPFInstallheidisql" Content="HeidiSQL" Margin="5,0" />
<CheckBox Name="WPFInstallmremoteng" Content="mRemoteNG" Margin="5,0"/>
<CheckBox Name="WPFInstallnmap" Content="Nmap" Margin="5,0"/>
<CheckBox Name="WPFInstallOpenVPN" Content="OpenVPN Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallportmaster" Content="Portmaster" Margin="5,0"/>
<CheckBox Name="WPFInstallputty" Content="Putty" Margin="5,0"/>
<CheckBox Name="WPFInstallrustdesk" Content="Rust Remote Desktop (FOSS)" Margin="5,0"/>
<CheckBox Name="WPFInstallsimplewall" Content="SimpleWall" Margin="5,0"/>
<CheckBox Name="WPFInstallventoy" Content="Ventoy" Margin="5,0"/>
<CheckBox Name="WPFInstallwinscp" Content="WinSCP" Margin="5,0"/>
<CheckBox Name="WPFInstallwireguard" Content="WireGuard" Margin="5,0"/>
<CheckBox Name="WPFInstallwireshark" Content="WireShark" Margin="5,0"/>
<CheckBox Name="WPFInstallxpipe" Content="X-Pipe" Margin="5,0"/>
</StackPanel>
</Border>
<Border Grid.Row="1" Grid.Column="4">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label Content="Utilities" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstall7zip" Content="7-Zip" Margin="5,0"/>
<CheckBox Name="WPFInstallalacritty" Content="Alacritty Terminal" Margin="5,0"/>
<CheckBox Name="WPFInstallanydesk" Content="AnyDesk" Margin="5,0"/>
<CheckBox Name="WPFInstallautohotkey" Content="AutoHotkey" Margin="5,0"/>
<CheckBox Name="WPFInstallbarrier" Content="Barrier" Margin="5,0"/>
<CheckBox Name="WPFInstallbat" Content="Bat (Cat)" Margin="5,0"/>
<CheckBox Name="WPFInstallbitwarden" Content="Bitwarden" Margin="5,0"/>
<CheckBox Name="WPFInstallbulkcrapuninstaller" Content="Bulk Crap Uninstaller" Margin="5,0"/>
<CheckBox Name="WPFInstallcarnac" Content="Carnac" Margin="5,0"/>
<CheckBox Name="WPFInstallcpuz" Content="CPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstallcrystaldiskinfo" Content="Crystal Disk Info" Margin="5,0"/>
<CheckBox Name="WPFInstallcrystaldiskmark" Content="Crystal Disk Mark" Margin="5,0"/>
<CheckBox Name="WPFInstallddu" Content="Display Driver Uninstaller" Margin="5,0"/>
<CheckBox Name="WPFInstalldeluge" Content="Deluge" Margin="5,0"/>
<CheckBox Name="WPFInstalldolphin" Content="Dolphin File manager" Margin="5,0"/>
<CheckBox Name="WPFInstalldosbox" Content="DOSBox" Margin="5,0"/>
<CheckBox Name="WPFInstallduplicati" Content="Duplicati 2" Margin="5,0"/>
<CheckBox Name="WPFInstalldevtoys" Content="Devtoys" Margin="5,0"/>
<CheckBox Name="WPFInstallerrorlookup" Content="Windows Error Code Lookup" Margin="5,0"/>
<CheckBox Name="WPFInstalletcher" Content="Etcher USB Creator" Margin="5,0"/>
<CheckBox Name="WPFInstallesearch" Content="Everything Search" Margin="5,0"/>
<CheckBox Name="WPFInstallfiles" Content="Files File Explorer" Margin="5,0"/>
<CheckBox Name="WPFInstallflux" Content="f.lux Redshift" Margin="5,0"/>
<CheckBox Name="WPFInstallglaryutilities" Content="Glary Utilities" Margin="5,0"/>
<CheckBox Name="WPFInstallgpuz" Content="GPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstallgsudo" Content="Gsudo" Margin="5,0"/>
<CheckBox Name="WPFInstallhwinfo" Content="HWInfo" Margin="5,0"/>
<CheckBox Name="WPFInstalljdownloader" Content="J Download Manager" Margin="5,0"/>
<CheckBox Name="WPFInstallkdeconnect" Content="KDE Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallkeepass" Content="KeePassXC" Margin="5,0"/>
<CheckBox Name="WPFInstallmalwarebytes" Content="MalwareBytes" Margin="5,0"/>
<CheckBox Name="WPFInstallmeld" Content="Meld" Margin="5,0"/>
<CheckBox Name="WPFInstallmonitorian" Content="Monitorian" Margin="5,0"/>
<CheckBox Name="WPFInstallmsiafterburner" Content="MSI Afterburner" Margin="5,0"/>
<CheckBox Name="WPFInstallnanazip" Content="NanaZip" Margin="5,0"/>
<CheckBox Name="WPFInstallneofetchwin" Content="Neofetch" Margin="5,0"/>
<CheckBox Name="WPFInstallnextclouddesktop" Content="Nextcloud Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallnushell" Content="Nushell" Margin="5,0"/>
<CheckBox Name="WPFInstallnvclean" Content="NVCleanstall" Margin="5,0"/>
<CheckBox Name="WPFInstallOVirtualBox" Content="Oracle VirtualBox" Margin="5,0"/>
<CheckBox Name="WPFInstallopenrgb" Content="OpenRGB" Margin="5,0" />
<CheckBox Name="WPFInstallopenshell" Content="Open Shell (Start Menu)" Margin="5,0"/>
<CheckBox Name="WPFInstallownclouddesktop" Content="ownCloud Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallpeazip" Content="Peazip" Margin="5,0"/>
<CheckBox Name="WPFInstallprocesslasso" Content="Process Lasso" Margin="5,0"/>
<CheckBox Name="WPFInstallprucaslicer" Content="Prusa Slicer" Margin="5,0"/>
<CheckBox Name="WPFInstallqbittorrent" Content="qBittorrent" Margin="5,0"/>
<CheckBox Name="WPFInstallrainmeter" Content="Rainmeter" Margin="5,0"/>
<CheckBox Name="WPFInstallrevo" Content="RevoUninstaller" Margin="5,0"/>
<CheckBox Name="WPFInstallrufus" Content="Rufus Imager" Margin="5,0"/>
<CheckBox Name="WPFInstallsandboxie" Content="Sandboxie Plus" Margin="5,0"/>
<CheckBox Name="WPFInstallshell" Content="Shell (Expanded Context Menu)" Margin="5,0"/>
<CheckBox Name="WPFInstallsdio" Content="Snappy Driver Installer Origin" Margin="5,0"/>
<CheckBox Name="WPFInstallspacedrive" Content="Spacedrive File Manager" Margin="5,0"/>
<CheckBox Name="WPFInstallsuperf4" Content="SuperF4" Margin="5,0"/>
<CheckBox Name="WPFInstalltailscale" Content="Tailscale" Margin="5,0"/>
<CheckBox Name="WPFInstallteamviewer" Content="TeamViewer" Margin="5,0"/>
<CheckBox Name="WPFInstallttaskbar" Content="Translucent Taskbar" Margin="5,0"/>
<CheckBox Name="WPFInstalltreesize" Content="TreeSize Free" Margin="5,0"/>
<CheckBox Name="WPFInstalltwinkletray" Content="Twinkle Tray" Margin="5,0"/>
<CheckBox Name="WPFInstallwmwareplayer" Content="VMWare Workstation Player" Margin="5,0"/>
<CheckBox Name="WPFInstallwindirstat" Content="WinDirStat" Margin="5,0"/>
<CheckBox Name="WPFInstallwingetui" Content="WingetUI" Margin="5,0"/>
<CheckBox Name="WPFInstallwiztree" Content="WizTree" Margin="5,0"/>
<CheckBox Name="WPFInstallwinrar" Content="WinRAR" Margin="5,0"/>
<CheckBox Name="WPFInstallwinpaletter" Content="WinPaletter" Margin="5,0"/>
<CheckBox Name="WPFInstallwisetoys" Content="WiseToys" Margin="5,0"/>
<CheckBox Name="WPFInstallxdm" Content="Xtreme Download Manager" Margin="5,0"/>
<CheckBox Name="WPFInstallzerotierone" Content="ZeroTier One" Margin="5,0"/>
<CheckBox Name="WPFInstallzoxide" Content="Zoxide" Margin="5,0"/>
</StackPanel>
</Border>
</Grid> </Grid>
</TabItem> </TabItem>
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2"> <TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
@ -1237,6 +983,5 @@
</Grid> </Grid>
</TabItem> </TabItem>
</TabControl> </TabControl>
</ScrollViewer>
</Grid> </Grid>
</Window> </Window>