Test 03 2023 (#726)

* Update inputXML.xaml

* Compile Winutil

* Update main.ps1 (#641)

Fix DarkMode

* Compile Winutil

* Compile Winutil

* Compile Winutil

* Update tweaks.json

* fix hovertime

* shortcut (#643)

add ability to create a shortcut to invoke winutil more easily

* Compile Winutil

* Tweaks Check (#646)

* Tweaks Check

Added check for no checked tweaks plus formatting

* more formating fixing

* Compile Winutil

* [ooshutup10] Fixed link to ooshutup10 settings file (#665)

* Compile Winutil

* Features Migrated to config and runspaces (#667)

* Compile Winutil

* Document Calendar Disable/Enable

Check Disable Notification and click undo tweaks to re-enable calendar

* Compile Winutil

* Update Edge_Removal.bat

* Update Edge_Removal.bat (#660)

* garbage commit - read system

Trying to read current system registry values state and do a checkbox for enabled or disabled values

* Compile Winutil

* Add Ubisoft Connect & WinRAR as install options. (#678)

* Compile Winutil

* adding the code from asheroto to install winget (#684)

* adding the code from asheroto to get winget

with Server versions of Windows, that come without winget , the script seems unable to install it and then refuses to install any programs. so by adding two lines of code (hopefully) you can include the installation of winget and then fulfill the requirement and let the program run and do all the cool things

* instaling winget from asheroto

so the script will check if winget is installed on server and LTSC versions of Windows.  and tries to install it, when for some reason it can't, then a condition on the code gets fulfilled and the function breaks, this code from the asheroto repo should, (hopefully) make it so winget can get installed and the condition is never met, therefore allowing it the script to continue

* Compile Winutil

* Add Neovim and Node Version Manager (#691)

* Compile Winutil

* Preload Winget and tweaks with already installed (#682)

* winget

* updated runspaces and winget to update gui outside of main thread

* registry check for tweaks

* add impex to winget

* add uninstall button

* tweaks done

* update tests

---------

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

* Compile Winutil

* feat: add postman into developement (#695)

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

* Update inputXML.xaml (#701)

Some of the items were missing WPF in the name

* Compile Winutil

* Split up AllowGameDVR to fix breaking Xbox Game Bar (#692)

* Split up AllowGameDVR to fix breaking Xbox Game Bar

* Undo changes to winutil

* Compile Winutil

* Removed Atom due to it having been sunsetted (#711)

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

* Add application GeForce NOW to Applications/Games (#724)

* Compile Winutil

* Fix syntax and typo

* Compile Winutil

* Fixing Original Service Types

* Compile Winutil

* Update inputXML.xaml (#725)

Fix typo as upgrade selection will upgrade all

* Compile Winutil

---------

Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com>
Co-authored-by: DeveloperDurp <developerdurp@durp.info>
Co-authored-by: jokerwrld999 <47574931+jokerwrld999@users.noreply.github.com>
Co-authored-by: Raf <69535896+Rafee-M@users.noreply.github.com>
Co-authored-by: Jack Boecker <boeckerjack@protonmail.com>
Co-authored-by: migno_chrono <75509204+mignochrono@users.noreply.github.com>
Co-authored-by: Umair Raza <52033975+umairraza96@users.noreply.github.com>
Co-authored-by: dreamsyntax <dreamsyntax@gmail.com>
Co-authored-by: Daniel <74148862+Danulal@users.noreply.github.com>
Co-authored-by: tomgrice <tomgrice@gmail.com>
This commit is contained in:
Chris Titus 2023-05-09 13:14:27 -05:00 committed by GitHub
parent a1c7501b98
commit 075f2e9a50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 3966 additions and 1253 deletions

View File

@ -1,10 +1,12 @@
REM https://github.com/AveYo/fox/blob/main/Edge_Removal.bat is source file
@(set "0=%~f0"^)#) & powershell -nop -c iex([io.file]::ReadAllText($env:0)) & exit /b
#:: double-click to run or just copy-paste into powershell - it's a standalone hybrid script
sp 'HKCU:\Volatile Environment' 'Edge_Removal' @'
$also_remove_webview = 1
$host.ui.RawUI.WindowTitle = 'Edge Removal '
$host.ui.RawUI.WindowTitle = 'Edge Removal - AveYo, 2022.10.03'
## targets
$remove_win32 = @("Microsoft Edge","Microsoft Edge Update"); $remove_appx = @("MicrosoftEdge")
if ($also_remove_webview -eq 1) {$remove_win32 += "Microsoft EdgeWebView"; $remove_appx += "Win32WebViewHost"}
@ -92,7 +94,7 @@ cmd /c "reg add ""$IFEO\msedge.exe\0"" /f /v FilterFullPath /d ""$MSEP\msedge.ex
cmd /c "reg add ""$IFEO\msedge.exe\0"" /f /v Debugger /d ""$CMD $DIR\OpenWebSearch.cmd"" >nul"
$OpenWebSearch = @$
@title OpenWebSearch Redux & echo off & set ?= open start menu web search, widgets links or help in your chosen browser
@title OpenWebSearch Redux & echo off & set ?= open start menu web search, widgets links or help in your chosen browser - by AveYo
for /f %%E in ('"prompt $E$S& for %%e in (1) do rem"') do echo;%%E[2t 2>nul & rem AveYo: minimize prompt
call :reg_var "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID ProgID
if /i "%ProgID%" equ "MSEdgeHTM" echo;Default browser is set to Edge! Change it or remove OpenWebSearch script. & pause & exit /b

View File

@ -11,10 +11,6 @@
"winget": "AnyDeskSoftwareGmbH.AnyDesk",
"choco": "anydesk"
},
"WPFInstallatom": {
"winget": "GitHub.Atom",
"choco": "atom"
},
"WPFInstallaudacity": {
"winget": "Audacity.Audacity",
"choco": "audacity"
@ -83,6 +79,10 @@
"winget": "PeterPawlowski.foobar2000",
"choco": "foobar2000"
},
"WPFInstallgeforcenow": {
"winget": "Nvidia.GeForceNow",
"choco": "nvidia-geforce-now"
},
"WPFInstallgimp": {
"winget": "GIMP.GIMP",
"choco": "gimp"
@ -507,8 +507,28 @@
"winget": "Microsoft.Edge",
"choco": "microsoft-edge"
},
"WPFInstallubisoft": {
"winget": "Ubisoft.Connect",
"choco": "ubisoft-connect"
},
"WPFInstallnuget": {
"winget": "Microsoft.NuGet",
"choco": "nuget.commandline"
},
"WPFInstallwinrar": {
"winget": "RARLab.WinRar",
"choco": "winrar"
},
"WPFInstallneovim": {
"winget": "Neovim.Neovim",
"choco": "neovim"
},
"WPFInstallnvm": {
"winget": "CoreyButler.NVMforWindows",
"choco": "nvm"
},
"WPFInstallpostman": {
"winget": "Postman.Postman",
"choco": "postman"
}
}

View File

@ -1,9 +1,15 @@
{
"Featuresdotnet": [
"WPFFeaturesdotnet": {
"feature": [
"NetFx4-AdvSrvs",
"NetFx3"
],
"Featureshyperv": [
"InvokeScript": [
]
},
"WPFFeatureshyperv": {
"feature": [
"HypervisorPlatform",
"Microsoft-Hyper-V-All",
"Microsoft-Hyper-V",
@ -13,19 +19,43 @@
"Microsoft-Hyper-V-Services",
"Microsoft-Hyper-V-Management-Clients"
],
"Featureslegacymedia": [
"InvokeScript": [
"Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /set hypervisorschedulertype classic' -Wait"
]
},
"WPFFeatureslegacymedia": {
"feature": [
"WindowsMediaPlayer",
"MediaPlayback",
"DirectPlay",
"LegacyComponents"
],
"Featurewsl": [
"InvokeScript": [
]
},
"WPFFeaturewsl": {
"feature": [
"VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux"
],
"Featurenfs": [
"InvokeScript": [
]
},
"WPFFeaturenfs": {
"feature": [
"ServicesForNFS-ClientOnly",
"ClientForNFS-Infrastructure",
"NFS-Administration"
],
"InvokeScript": [
"nfsadmin client stop
Set-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default' -Name 'AnonymousUID' -Type DWord -Value 0
Set-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default' -Name 'AnonymousGID' -Type DWord -Value 0
nfsadmin client start
nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i
"
]
}
}

File diff suppressed because it is too large Load Diff

View File

@ -22,10 +22,11 @@ Function Get-WinUtilCheckBoxes {
$Output = New-Object System.Collections.Generic.List[System.Object]
if($Group -eq "WPFInstall"){
$CheckBoxes = get-variable | Where-Object {$psitem.name -like "WPFInstall*" -and $psitem.value.GetType().name -eq "CheckBox"}
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$sync.configs.applications.$($CheckBox.name).winget -split ";" | ForEach-Object {
$sync.configs.applications.$($CheckBox.Name).winget -split ";" | ForEach-Object {
$Output.Add($psitem)
}
if ($uncheck -eq $true){
@ -35,8 +36,24 @@ Function Get-WinUtilCheckBoxes {
}
}
}
if($Group -eq "WPFTweaks"){
$CheckBoxes = get-variable | Where-Object {$psitem.name -like "WPF*Tweaks*" -and $psitem.value.GetType().name -eq "CheckBox"}
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Tweaks*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
}
if($Group -eq "WPFFeature"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Feature*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)

View File

@ -0,0 +1,33 @@
function Get-WinUtilRegistry {
<#
.DESCRIPTION
This function will make all modifications to the registry
.EXAMPLE
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
#>
param (
$Name,
$Path,
$Type,
$Value
)
Try{
$syscheckvalue = Get-ItemPropertyValue -Path $Path -Value $Value # Return Value
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
}
Catch{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}

View File

@ -0,0 +1,29 @@
function Get-WinUtilVariables {
<#
.DESCRIPTION
palceholder
#>
param (
[Parameter()]
[ValidateSet("CheckBox", "Button")]
[string]$Type
)
$keys = $sync.keys | Where-Object {$psitem -like "WPF*"}
if($type){
$output = $keys | ForEach-Object {
Try{
if ($sync["$psitem"].GetType() -like "*$type*"){
Write-Output $psitem
}
}
Catch{<#I am here so errors don't get outputted for a couple variables that don't have the .GetType() attribute#>}
}
return $output
}
return $keys
}

View File

@ -9,20 +9,29 @@ Function Install-WinUtilProgramWinget {
#>
param($ProgramsToInstall)
param(
$ProgramsToInstall,
$manage = "Installing"
)
$x = 0
$count = $($ProgramsToInstall -split ",").Count
Write-Progress -Activity "Installing Applications" -Status "Starting" -PercentComplete 0
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
Foreach ($Program in $($ProgramsToInstall -split ",")){
Write-Progress -Activity "Installing Applications" -Status "Installing $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait;
Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
if($manage -eq "Installing"){
Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait
}
if($manage -eq "Uninstalling"){
Start-Process -FilePath winget -ArgumentList "remove -e --purge --force --silent $Program" -NoNewWindow -Wait
}
$X++
}
Write-Progress -Activity "Installing Applications" -Status "Finished" -Completed
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
}

View File

@ -42,6 +42,14 @@ function Install-WinUtilWinget {
# Switching to winget-install from PSGallery from asheroto
# Source: https://github.com/asheroto/winget-installer
#adding the code from the asheroto repo
Set-ExecutionPolicy RemoteSigned -force
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
Install-Script -Name winget-install -force
winget-instal
Start-Process powershell.exe -Verb RunAs -ArgumentList "-command irm https://raw.githubusercontent.com/ChrisTitusTech/winutil/$BranchToUse/winget.ps1 | iex | Out-Host" -WindowStyle Normal -ErrorAction Stop
if(!(Test-WinUtilPackageManager -winget)){

View File

@ -0,0 +1,100 @@
Function Invoke-WinUtilCurrentSystem {
<#
.DESCRIPTION
Function is meant to read existing system registry and check according configuration.
Example: Is telemetry enabled? check the box.
.EXAMPLE
Get-WinUtilCheckBoxes "WPFInstall"
#>
param(
$CheckBox
)
if ($checkbox -eq "winget"){
$originalEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
$Sync.InstalledPrograms = winget list -s winget | Select-Object -skip 3 | ConvertFrom-String -PropertyNames "Name", "Id", "Version", "Available" -Delimiter '\s{2,}'
[Console]::OutputEncoding = $originalEncoding
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if($sync.configs.applications.$($psitem.Key).winget -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
}
}
}
if($CheckBox -eq "tweaks"){
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
$ScheduledTasks = Get-ScheduledTask
$sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object {
$Config = $psitem.Name
#WPFEssTweaksTele
$registryKeys = $sync.configs.tweaks.$Config.registry
$scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask
$serviceKeys = $sync.configs.tweaks.$Config.service
if($registryKeys -or $scheduledtaskKeys -or $serviceKeys){
$Values = @()
Foreach ($tweaks in $registryKeys){
Foreach($tweak in $tweaks){
if(test-path $tweak.Path){
$actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name)
$expectedValue = $tweak.Value
if ($expectedValue -notlike $actualValue){
$values += $False
}
}
}
}
Foreach ($tweaks in $scheduledtaskKeys){
Foreach($tweak in $tweaks){
$task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"}
if($task){
$actualValue = $task.State
$expectedValue = $tweak.State
if ($expectedValue -ne $actualValue){
$values += $False
}
}
}
}
Foreach ($tweaks in $serviceKeys){
Foreach($tweak in $tweaks){
$Service = Get-Service -Name $tweak.Name
if($Service){
$actualValue = $Service.StartType
$expectedValue = $tweak.StartupType
if ($expectedValue -ne $actualValue){
$values += $False
}
}
}
}
if($values -notcontains $false){
Write-Output $Config
}
}
}
}
}

View File

@ -0,0 +1,53 @@
function Invoke-WinUtilFeatureInstall {
<#
.DESCRIPTION
This function converts all the values from the tweaks.json and routes them to the appropriate function
#>
param(
$CheckBox
)
$CheckBox | ForEach-Object {
if($sync.configs.feature.$psitem.feature){
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
Try{
Write-Host "Installing $feature"
Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart
}
Catch{
if ($psitem.Exception.Message -like "*requires elevation*"){
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
}
else{
Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
}
}
if($sync.configs.feature.$psitem.InvokeScript){
Foreach( $script in $sync.configs.feature.$psitem.InvokeScript ){
Try{
$Scriptblock = [scriptblock]::Create($script)
Write-Host "Running Script for $psitem"
Invoke-Command $scriptblock -ErrorAction stop
}
Catch{
if ($psitem.Exception.Message -like "*requires elevation*"){
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
}
else{
Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
}
}
}
}

View File

@ -18,13 +18,17 @@ function Invoke-WPFButton {
"WPFTab?BT" {Invoke-WPFTab $Button}
"WPFinstall" {Invoke-WPFInstall}
"WPFuninstall" {Invoke-WPFUnInstall}
"WPFInstallUpgrade" {Invoke-WPFInstallUpgrade}
"WPFdesktop" {Invoke-WPFPresets "Desktop"}
"WPFlaptop" {Invoke-WPFPresets "laptop"}
"WPFminimal" {Invoke-WPFPresets "minimal"}
"WPFexport" {Invoke-WPFImpex -type "export"}
"WPFimport" {Invoke-WPFImpex -type "import"}
"WPFexport" {Invoke-WPFImpex -type "export" -CheckBox "WPFTweaks"}
"WPFimport" {Invoke-WPFImpex -type "import" -CheckBox "WPFTweaks"}
"WPFexportWinget" {Invoke-WPFImpex -type "export" -CheckBox "WPFInstall"}
"WPFimportWinget" {Invoke-WPFImpex -type "import" -CheckBox "WPFInstall"}
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
@ -43,7 +47,8 @@ function Invoke-WPFButton {
"WPFFixesUpdate" {Invoke-WPFFixesUpdate}
"WPFUpdatesdisable" {Invoke-WPFUpdatesdisable}
"WPFUpdatessecurity" {Invoke-WPFUpdatessecurity}
"WPFWinUtilShortcut" {Invoke-WPFShortcut -ShortcutToAdd "WinUtil"}
"WPFGetInstalled" {Invoke-WPFGetInstalled -CheckBox "winget"}
"WPFGetInstalledTweaks" {Invoke-WPFGetInstalled -CheckBox "tweaks"}
}
}

View File

@ -5,52 +5,33 @@ function Invoke-WPFFeatureInstall {
GUI Function to install Windows Features
#>
If ( $WPFFeaturesdotnet.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx4-AdvSrvs" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3" -All -NoRestart
}
If ( $WPFFeatureshyperv.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "HypervisorPlatform" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-All" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Tools-All" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-PowerShell" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Hypervisor" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Services" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-Clients" -All -NoRestart
cmd /c bcdedit /set hypervisorschedulertype classic
Write-Host "HyperV is now installed and configured. Please Reboot before using."
}
If ( $WPFFeatureslegacymedia.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "WindowsMediaPlayer" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "MediaPlayback" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "DirectPlay" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "LegacyComponents" -All -NoRestart
}
If ( $WPFFeaturewsl.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "VirtualMachinePlatform" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux" -All -NoRestart
Write-Host "WSL is now installed and configured. Please Reboot before using."
}
If ( $WPFFeaturenfs.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "ServicesForNFS-ClientOnly" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "ClientForNFS-Infrastructure" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "NFS-Administration" -All -NoRestart
nfsadmin client stop
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousUID" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousGID" -Type DWord -Value 0
nfsadmin client start
nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i
Write-Host "NFS is now setup for user based NFS mounts"
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$Features = Get-WinUtilCheckBoxes -Group "WPFFeature"
Invoke-WPFRunspace -ArgumentList $Features -ScriptBlock {
param($Features)
$sync.ProcessRunning = $true
Invoke-WinUtilFeatureInstall $Features
$sync.ProcessRunning = $false
Write-Host "==================================="
Write-Host "--- Features are Installed ---"
Write-Host "--- A Reboot may be required ---"
Write-Host "==================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "All features are now installed "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "================================="
Write-Host "--- Features are Installed ---"
Write-Host "================================="
}
}

View File

@ -0,0 +1,46 @@
function Invoke-WPFGetInstalled {
<#
.DESCRIPTION
placeholder
#>
param($checkbox)
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
if(!(Test-WinUtilPackageManager -winget) -and $checkbox -eq "winget"){
Write-Host "==========================================="
Write-Host "-- Winget is not installed ---"
Write-Host "==========================================="
return
}
Invoke-WPFRunspace -ArgumentList $checkbox -ScriptBlock {
param($checkbox)
$sync.ProcessRunning = $true
if($checkbox -eq "winget"){
Write-Host "Getting Installed Programs..."
}
if($checkbox -eq "tweaks"){
Write-Host "Getting Installed Tweaks..."
}
$Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox $checkbox
$sync.form.Dispatcher.invoke({
foreach($checkbox in $Checkboxes){
$sync.$checkbox.ischecked = $True
}
})
Write-Host "Done..."
$sync.ProcessRunning = $false
}
}

View File

@ -9,7 +9,10 @@ function Invoke-WPFImpex {
Invoke-WPFImpex -type "export"
#>
param($type)
param(
$type,
$checkbox
)
if ($type -eq "export"){
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
@ -27,11 +30,11 @@ function Invoke-WPFImpex {
}
if ($type -eq "export"){
$jsonFile = Get-WinUtilCheckBoxes WPFTweaks -unCheck $false
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
}
if ($type -eq "import"){
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json
Invoke-WPFPresets -preset $jsonFile -imported $true
Invoke-WPFPresets -preset $jsonFile -imported $true -CheckBox $checkbox
}
}

View File

@ -8,8 +8,10 @@ function Invoke-WPFPresets {
param(
$preset,
[bool]$imported = $false
[bool]$imported = $false,
$checkbox = "WPFTeaks"
)
if($imported -eq $true){
$CheckBoxesToCheck = $preset
}
@ -17,15 +19,23 @@ function Invoke-WPFPresets {
$CheckBoxesToCheck = $sync.configs.preset.$preset
}
#Uncheck all
get-variable | Where-Object {$_.name -like "*tweaks*"} | ForEach-Object {
if ($psitem.value.gettype().name -eq "CheckBox"){
$CheckBox = Get-Variable $psitem.Name
if ($CheckBoxesToCheck -contains $CheckBox.name){
$checkbox.value.ischecked = $true
if($checkbox -eq "WPFTeaks"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "*tweaks*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if ($CheckBoxesToCheck -contains $PSItem.name){
$sync.$($PSItem.name).ischecked = $true
}
else{$checkbox.value.ischecked = $false}
else{$sync.$($PSItem.name).ischecked = $false}
}
}
if($checkbox -eq "WPFInstall"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if($($sync.configs.applications.$($psitem.name).winget) -in $CheckBoxesToCheck){
$sync.$($PSItem.name).ischecked = $true
}
else{$sync.$($PSItem.name).ischecked = $false}
}
}
}

View File

@ -23,40 +23,13 @@ function Invoke-WPFRunspace {
$ArgumentList
)
#Configure max thread count for RunspacePool.
$maxthreads = [int]$env:NUMBER_OF_PROCESSORS
#Create a new session state for parsing variables ie hashtable into our runspace.
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
#Add the variable to the RunspacePool sessionstate
$InitialSessionState.Variables.Add($hashVars)
#Add functions
$functions = Get-ChildItem function:\ | Where-Object {$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
foreach ($function in $functions){
$functionDefinition = Get-Content function:\$($function.name)
$functionEntry = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $($function.name), $functionDefinition
# And add it to the iss object
$initialSessionState.Commands.Add($functionEntry)
}
#Create our runspace pool. We are entering three parameters here min thread count, max thread count and host machine of where these runspaces should be made.
$script:runspace = [runspacefactory]::CreateRunspacePool(1,$maxthreads,$InitialSessionState, $Host)
#Crate a PowerShell instance.
$script:powershell = [powershell]::Create()
#Open a RunspacePool instance.
$script:runspace.Open()
#Add Scriptblock and Arguments to runspace
$script:powershell.AddScript($ScriptBlock)
$script:powershell.AddArgument($ArgumentList)
$script:powershell.RunspacePool = $script:runspace
$script:powershell.RunspacePool = $sync.runspace
#Run our RunspacePool.
$script:handle = $script:powershell.BeginInvoke()
@ -66,8 +39,8 @@ function Invoke-WPFRunspace {
{
$script:powershell.EndInvoke($script:handle)
$script:powershell.Dispose()
$script:runspace.Dispose()
$script:runspace.Close()
$sync.runspace.Dispose()
$sync.runspace.Close()
[System.GC]::Collect()
}
}

View File

@ -0,0 +1,33 @@
function Invoke-WPFShortcut {
<#
.DESCRIPTION
Creates a shortcut
#>
param($ShortcutToAdd)
Switch ($ShortcutToAdd) {
"WinUtil" {
$SourceExe = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$IRM = 'irm https://christitus.com/win | iex'
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
$ArgumentsToSourceExe = "$powershell '$IRM'"
$DestinationName = "WinUtil.lnk"
}
}
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
$FileBrowser.Filter = "Shortcut Files (*.lnk)|*.lnk"
$FileBrowser.FileName = $DestinationName
$FileBrowser.ShowDialog() | Out-Null
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()
Write-Host "Shortcut for $ShortcutToAdd has been saved to $($FileBrowser.FileName)"
}

View File

@ -8,17 +8,17 @@ function Invoke-WPFTab {
#>
Param ($ClickedTab)
$Tabs = Get-Variable WPFTab?BT
$TabNav = Get-Variable WPFTabNav
$Tabs = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTab?BT"}
$TabNav = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTabNav"}
$x = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
0..($Tabs.Count -1 ) | ForEach-Object {
if ($x -eq $psitem){
$TabNav.value.Items[$psitem].IsSelected = $true
$sync.$TabNav.Items[$psitem].IsSelected = $true
}
else{
$TabNav.value.Items[$psitem].IsSelected = $false
$sync.$TabNav.Items[$psitem].IsSelected = $false
}
}
}

View File

@ -0,0 +1,58 @@
function Invoke-WPFUnInstall {
<#
.DESCRIPTION
PlaceHolder
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall"
if ($wingetinstall.Count -eq 0) {
$WarningMsg = "Please select the program(s) to install"
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$ButtonType = [System.Windows.MessageBoxButton]::YesNo
$MessageboxTitle = "Are you sure?"
$Messageboxbody = ("This will uninstall the following applications `n $WingetInstall")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
$confirm = [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
if($confirm -eq "No"){return}
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock {
param($WingetInstall)
try{
$sync.ProcessRunning = $true
# Install all winget programs in new window
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall -Manage "Uninstalling"
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Uninstalls are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "==========================================="
Write-Host "-- Uninstalls have finished ---"
Write-Host "==========================================="
}
Catch {
Write-Host "==========================================="
Write-Host "-- Winget failed to install ---"
Write-Host "==========================================="
}
$sync.ProcessRunning = $False
}
}

View File

@ -10,11 +10,17 @@ function Invoke-WPFtweaksbutton {
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
}
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
Set-WinUtilDNS -DNSProvider $WPFchangedns.text
Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text
if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default"){
$msg = "Please check the tweaks you wish to perform."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
param($Tweaks)

View File

@ -14,6 +14,12 @@ function Invoke-WPFundoall {
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
if ($tweaks.count -eq 0){
$msg = "Please check the tweaks you wish to undo."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
param($Tweaks)

View File

@ -1,16 +1,3 @@
#region Configurable Variables
<#
.NOTES
Use this section to configure testing variables. IE if the number of tabs change in the GUI update that variable here.
All variables need to be global to be passed between contexts
#>
$global:FormName = "Chris Titus Tech's Windows Utility"
#endregion Configurable Variables
#region Load Variables needed for testing
#Config Files
@ -92,24 +79,3 @@ Describe "Config Files" -ForEach @(
}
}
#===========================================================================
# Tests - Functions
#===========================================================================
Describe "Functions" -ForEach @(Get-ChildItem .\functions -Recurse -File){
BeforeEach -Scriptblock {
. $psitem.FullName
}
Context "$($psitem.BaseName)" {
It "Imports with no errors" {
Get-ChildItem function:\$($psitem.BaseName) | should -Not -BeNullOrEmpty
}
It "Contains Description" {
get-help $($psitem.BaseName) -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Description | should -Not -BeNullOrEmpty
}
}
}

View File

@ -0,0 +1,28 @@
#===========================================================================
# Tests - Functions
#===========================================================================
Describe "Functions"{
Get-ChildItem .\functions -Recurse -File | ForEach-Object {
context "$($psitem.BaseName)" {
BeforeEach -Scriptblock {
. $fullname
}
It "Imports with no errors" -TestCases @{
basename = $($psitem.BaseName)
fullname = $psitem.FullName
} {
Get-ChildItem function:\$basename | should -Not -BeNullOrEmpty
}
It "Contains Description" -TestCases @{
basename = $($psitem.BaseName)
fullname = $psitem.FullName
} {
get-help $basename -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Description | should -Not -BeNullOrEmpty
}
}
}
}

View File

@ -1,208 +1,27 @@
#region Configurable Variables
<#
.NOTES
Use this section to configure testing variables. IE if the number of tabs change in the GUI update that variable here.
All variables need to be global to be passed between contexts
#>
$global:FormName = "Chris Titus Tech's Windows Utility"
#endregion Configurable Variables
#region Load Variables needed for testing
#Config Files
$global:configs = @{}
./Compile.ps1
(
"applications",
"preset"
) | ForEach-Object {
$global:configs["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
}
#GUI
$global:inputXML = get-content MainWindow.xaml
$global:inputXML = $global:inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
[xml]$global:XAML = $global:inputXML
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
$global:reader = (New-Object System.Xml.XmlNodeReader $global:xaml)
$global:Form = [Windows.Markup.XamlReader]::Load( $global:reader )
$global:xaml.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "Global:WPF$($_.Name)" -Value $global:Form.FindName($_.Name) -Scope global }
#dotsource original script to pull in all variables and ensure no errors
$script = Get-Content .\winutil.ps1
$output = $script[0..($script.count - 14)] | Out-File .\pester.ps1
$script[0..($script.count - 21)] | Out-File .\pester.ps1
#endregion Load Variables needed for testing
#===========================================================================
# Tests - Application Installs
#===========================================================================
Describe "Application Installs" {
Context "Application installs" {
It "Imports with no errors" {
$global:configs.Applications | should -Not -BeNullOrEmpty
}
}
Context "Winget Install" {
$global:configs.applications | Get-Member -MemberType NoteProperty | ForEach-Object {
$TestCase = @{ name = $psitem.name }
It "$($psitem.name) should include Winget Install" -TestCases $TestCase{
param($name)
$null -eq $global:configs.applications.$name.winget | should -Befalse -because "$name Did not include a Winget Install"
}
}
}
Context "GUI Applications Checkbox" {
(get-variable | Where-Object {$psitem.name -like "*install*" -and $psitem.value.GetType().name -eq "CheckBox"}).name -replace 'Global:','' | ForEach-Object {
$TestCase = @{ name = $psitem }
It "$($psitem) should include application.json " -TestCases $TestCase{
param($name)
$null -eq $global:configs.applications.$name | should -Befalse -because "$name Does not have entry in applications.json"
}
}
}
BeforeAll {
. .\pester.ps1
}
#===========================================================================
# Tests - Tweak Presets
#===========================================================================
Describe "Tweak Presets" {
Context "Json Import" {
It "Imports with no errors" {
$global:configs.preset | should -Not -BeNullOrEmpty
}
}
}
#===========================================================================
# Tests - GUI
#===========================================================================
Describe "GUI" {
Context "XML" {
It "Imports with no errors" {
$global:XAML | should -Not -BeNullOrEmpty
}
It "Title should be $global:FormName" {
$global:XAML.window.Title | should -Be $global:FormName
$inputXML | should -Not -BeNullOrEmpty
}
}
Context "Form" {
It "Imports with no errors" {
$global:Form | should -Not -BeNullOrEmpty
}
It "Title should match XML" {
$global:Form.title | should -Be $global:XAML.window.Title
}
}
}
#===========================================================================
# Tests - Functions
#===========================================================================
Describe "Functions" {
BeforeEach -Scriptblock {
. ./pester.ps1
$x = 0
while($sync.ConfigLoaded -ne $True -or $x -eq 100){
start-sleep -Milliseconds 100
$x ++
}
}
It "Get-InstallerProcess should return the correct values" {
Get-InstallerProcess | should -Befalse
$process = Start-Process powershell.exe -ArgumentList "-c start-sleep 5" -PassThru
Get-InstallerProcess $process | should -Not -Befalse
}
It "Runspace background load should have data" {
$sync.configs.applications | should -Not -BeNullOrEmpty
$sync.configs.tweaks | should -Not -BeNullOrEmpty
$sync.configs.preset | should -Not -BeNullOrEmpty
$sync.configs.feature | should -Not -BeNullOrEmpty
$sync.ComputerInfo | should -Not -BeNullOrEmpty
}
}
#===========================================================================
# Tests - GUI Functions
#===========================================================================
Describe "GUI Functions" {
BeforeEach -Scriptblock {
. ./pester.ps1
$x = 0
while($sync.ConfigLoaded -ne $True -or $x -eq 100){
start-sleep -Milliseconds 100
$x ++
}
}
It "GUI should load with no errors" {
$WPFTab1BT | should -Not -BeNullOrEmpty
$WPFundoall | should -Not -BeNullOrEmpty
$WPFPanelDISM | should -Not -BeNullOrEmpty
$WPFPanelAutologin | should -Not -BeNullOrEmpty
$WPFUpdatesdefault | should -Not -BeNullOrEmpty
$WPFFixesUpdate | should -Not -BeNullOrEmpty
$WPFUpdatesdisable | should -Not -BeNullOrEmpty
$WPFUpdatessecurity | should -Not -BeNullOrEmpty
$WPFFeatureInstall | should -Not -BeNullOrEmpty
$WPFundoall | should -Not -BeNullOrEmpty
$WPFtweaksbutton | should -Not -BeNullOrEmpty
$WPFminimal | should -Not -BeNullOrEmpty
$WPFlaptop | should -Not -BeNullOrEmpty
$WPFdesktop | should -Not -BeNullOrEmpty
$WPFInstallUpgrade | should -Not -BeNullOrEmpty
$WPFinstall | should -Not -BeNullOrEmpty
}
Context "Get-CheckBoxes" {
It "Get-CheckBoxes Install should return data" {
$TestCheckBoxes = @(
"WPFInstallvc2015_32"
"WPFInstallvscode"
"WPFInstallgit"
)
$OutputResult = New-Object System.Collections.Generic.List[System.Object]
$TestCheckBoxes | ForEach-Object {
$global:configs.applications.$psitem.winget -split ";" | ForEach-Object {
$OutputResult.Add($psitem)
}
}
$OutputResult = Sort-Object -InputObject $OutputResult
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked = $true}
$Output = Get-CheckBoxes -Group WPFInstall | Sort-Object
$Output | should -Not -BeNullOrEmpty -Because "Output did not contain applications to install"
$Output | Should -Not -Be $OutputResult -Because "Output contains duplicate values"
$Output | Should -Be $($OutputResult | Select-Object -Unique | Sort-Object) -Because "Output doesn't match"
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked | should -be $false}
}
}
Context "Set-Presets" {
$global:configs.preset | Get-Member -MemberType NoteProperty | ForEach-Object {
$TestCase = @{ name = $psitem.name }
It "preset $($psitem.name) should modify the correct values" -TestCases $TestCase {
param($name)
Set-Presets $name
get-variable $global:configs.preset.$name | Select-Object -ExpandProperty value | Select-Object -ExpandProperty ischecked | Where-Object {$psitem -eq $false} | should -BeNullOrEmpty
}
$sync.Form | should -Not -BeNullOrEmpty
}
}
}

View File

@ -1,3 +1,29 @@
#Configure max thread count for RunspacePool.
$maxthreads = [int]$env:NUMBER_OF_PROCESSORS
#Create a new session state for parsing variables ie hashtable into our runspace.
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
#Add the variable to the RunspacePool sessionstate
$InitialSessionState.Variables.Add($hashVars)
#Add functions
$functions = Get-ChildItem function:\ | Where-Object {$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
foreach ($function in $functions){
$functionDefinition = Get-Content function:\$($function.name)
$functionEntry = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $($function.name), $functionDefinition
# And add it to the iss object
$initialSessionState.Commands.Add($functionEntry)
}
#Create our runspace pool. We are entering three parameters here min thread count, max thread count and host machine of where these runspaces should be made.
$sync.runspace = [runspacefactory]::CreateRunspacePool(1,$maxthreads,$InitialSessionState, $Host)
#Open a RunspacePool instance.
$sync.runspace.Open()
#region exception classes
class WingetFailedInstall : Exception {
@ -26,7 +52,7 @@ $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -repla
#Read XAML
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
try { $Form = [Windows.Markup.XamlReader]::Load( $reader ) }
try { $sync["Form"] = [Windows.Markup.XamlReader]::Load( $reader ) }
catch [System.Management.Automation.MethodInvocationException] {
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
Write-Host $error[0].Exception.Message -ForegroundColor Red
@ -43,17 +69,24 @@ catch {
# Store Form Objects In PowerShell
#===========================================================================
$xaml.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "WPF$($_.Name)" -Value $Form.FindName($_.Name) }
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)}
$buttons = get-variable | Where-Object {$psitem.name -like "WPF*" -and $psitem.value -ne $null -and $psitem.value.GetType().name -eq "Button"}
foreach ($button in $buttons){
$button.value.Add_Click({
$sync.keys | ForEach-Object {
if($sync.$psitem){
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
$sync["$psitem"].Add_Click({
[System.Object]$Sender = $args[0]
Invoke-WPFButton "WPF$($Sender.name)"
Invoke-WPFButton $Sender.name
})
}
}
}
$WPFToggleDarkMode.IsChecked = Get-WinUtilDarkMode
$sync["WPFToggleDarkMode"].Add_Click({
Invoke-WPFDarkMode -DarkMoveEnabled $(Get-WinUtilDarkMode)
})
$sync["WPFToggleDarkMode"].IsChecked = Get-WinUtilDarkMode
#===========================================================================
# Setup background config
@ -82,6 +115,12 @@ Catch [ChocoFailedInstall]{
Write-Host "-- Chocolatey failed to install ---"
Write-Host "==========================================="
}
$form.title = $form.title + " " + $sync.version
$Form.ShowDialog() | out-null
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
$sync["Form"].Add_Closing({
$sync.runspace.Dispose()
$sync.runspace.Close()
[System.GC]::Collect()
})
$sync["Form"].ShowDialog() | out-null
Stop-Transcript

File diff suppressed because it is too large Load Diff

View File

@ -21,14 +21,14 @@
CornerRadius="10"
Margin="5,0"
/>
<Border Name="ToggleSwitchButton"
<Border Name="WPFToggleSwitchButton"
Width="25"
Height="25"
Background="Black"
CornerRadius="12.5"
HorizontalAlignment="Left"
/>
<ContentPresenter Name="ToggleSwitchContent"
<ContentPresenter Name="WPFToggleSwitchContent"
Margin="10,0,0,0"
Content="{TemplateBinding Content}"
VerticalAlignment="Center"
@ -38,11 +38,11 @@
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="false">
<Trigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="ToggleSwitchLeft" />
<BeginStoryboard x:Name="ToggleSwitchRight">
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchLeft" />
<BeginStoryboard x:Name="WPFToggleSwitchRight">
<Storyboard>
<ThicknessAnimation Storyboard.TargetProperty="Margin"
Storyboard.TargetName="ToggleSwitchButton"
Storyboard.TargetName="WPFToggleSwitchButton"
Duration="0:0:0:0"
From="0,0,0,0"
To="28,0,0,0">
@ -50,18 +50,18 @@
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
<Setter TargetName="ToggleSwitchButton"
<Setter TargetName="WPFToggleSwitchButton"
Property="Background"
Value="#fff9f4f4"
/>
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Trigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="ToggleSwitchRight" />
<BeginStoryboard x:Name="ToggleSwitchLeft">
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchRight" />
<BeginStoryboard x:Name="WPFToggleSwitchLeft">
<Storyboard>
<ThicknessAnimation Storyboard.TargetProperty="Margin"
Storyboard.TargetName="ToggleSwitchButton"
Storyboard.TargetName="WPFToggleSwitchButton"
Duration="0:0:0:0"
From="28,0,0,0"
To="0,0,0,0">
@ -69,7 +69,7 @@
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
<Setter TargetName="ToggleSwitchButton"
<Setter TargetName="WPFToggleSwitchButton"
Property="Background"
Value="#ff060600"
/>
@ -80,9 +80,9 @@
</Setter>
</Style>
</Window.Resources>
<Border Name="dummy" Grid.Column="0" Grid.Row="0">
<Border Name="WPFdummy" Grid.Column="0" Grid.Row="0">
<Viewbox Stretch="Uniform" VerticalAlignment="Top">
<Grid Background="#777777" ShowGridLines="False" Name="MainGrid">
<Grid Background="#777777" ShowGridLines="False" Name="WPFMainGrid">
<Grid.RowDefinitions>
<RowDefinition Height=".1*"/>
<RowDefinition Height=".9*"/>
@ -91,14 +91,14 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<DockPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
<Image Height="50" Width="100" Name="Icon" SnapsToDevicePixels="True" Source="https://christitus.com/images/logo-full.png" Margin="0,10,0,10"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100" Background="#222222" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="Tab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100" Background="#333333" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="Tab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100" Background="#444444" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="Tab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100" Background="#555555" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="Tab4BT"/>
<Image Height="50" Width="100" Name="WPFIcon" SnapsToDevicePixels="True" Source="https://christitus.com/images/logo-full.png" Margin="0,10,0,10"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100" Background="#222222" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100" Background="#333333" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100" Background="#444444" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100" Background="#555555" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab4BT"/>
</DockPanel>
<TabControl Grid.Row="1" Padding="-1" Name="TabNav" Background="#222222">
<TabItem Header="Install" Visibility="Collapsed" Name="Tab1">
<TabControl Grid.Row="1" Padding="-1" Name="WPFTabNav" Background="#222222">
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
<Grid Background="#222222">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -108,36 +108,50 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height=".10*"/>
<RowDefinition Height=".90*"/>
</Grid.RowDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10">
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="3" Margin="10">
<Label Content="Winget:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFinstall" Content=" Install Selection " Margin="7"/>
<Button Name="WPFInstallUpgrade" Content=" Upgrade All " Margin="7"/>
<Button Name="WPFuninstall" Content=" Uninstall Selection " Margin="7"/>
<Button Name="WPFGetInstalled" Content=" Get Installed " Margin="7"/>
<Button Name="WPFclearWinget" Content=" Clear Selection " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="3" Grid.ColumnSpan="2" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFimportWinget" Content=" Import " Margin="7"/>
<Button Name="WPFexportWinget" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10">
<Label Content="Browsers" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installbrave" Content="Brave" Margin="5,0"/>
<CheckBox Name="Installchrome" Content="Chrome" Margin="5,0"/>
<CheckBox Name="Installchromium" Content="Chromium" Margin="5,0"/>
<CheckBox Name="Installedge" Content="Edge" Margin="5,0"/>
<CheckBox Name="Installfirefox" Content="Firefox" Margin="5,0"/>
<CheckBox Name="Installlibrewolf" Content="LibreWolf" Margin="5,0"/>
<CheckBox Name="Installtor" Content="Tor Browser" Margin="5,0"/>
<CheckBox Name="Installvivaldi" Content="Vivaldi" Margin="5,0"/>
<CheckBox Name="Installwaterfox" Content="Waterfox" 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="WPFInstallfirefox" Content="Firefox" 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"/>
<CheckBox Name="Installdiscord" Content="Discord" Margin="5,0"/>
<CheckBox Name="Installhexchat" Content="Hexchat" Margin="5,0"/>
<CheckBox Name="Installjami" Content="Jami" Margin="5,0"/>
<CheckBox Name="Installmatrix" Content="Matrix" Margin="5,0"/>
<CheckBox Name="Installsignal" Content="Signal" Margin="5,0"/>
<CheckBox Name="Installskype" Content="Skype" Margin="5,0"/>
<CheckBox Name="Installslack" Content="Slack" Margin="5,0"/>
<CheckBox Name="Installteams" Content="Teams" Margin="5,0"/>
<CheckBox Name="Installtelegram" Content="Telegram" Margin="5,0"/>
<CheckBox Name="Installviber" Content="Viber" Margin="5,0"/>
<CheckBox Name="Installzoom" Content="Zoom" Margin="5,0"/>
<CheckBox Name="WPFInstalldiscord" Content="Discord" Margin="5,0"/>
<CheckBox Name="WPFInstallhexchat" Content="Hexchat" Margin="5,0"/>
<CheckBox Name="WPFInstalljami" Content="Jami" Margin="5,0"/>
<CheckBox Name="WPFInstallmatrix" Content="Matrix" Margin="5,0"/>
<CheckBox Name="WPFInstallsignal" Content="Signal" Margin="5,0"/>
<CheckBox Name="WPFInstallskype" Content="Skype" Margin="5,0"/>
<CheckBox Name="WPFInstallslack" Content="Slack" Margin="5,0"/>
<CheckBox Name="WPFInstallteams" Content="Teams" Margin="5,0"/>
<CheckBox Name="WPFInstalltelegram" Content="Telegram" Margin="5,0"/>
<CheckBox Name="WPFInstallviber" Content="Viber" Margin="5,0"/>
<CheckBox Name="WPFInstallzoom" Content="Zoom" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10">
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10">
<Label Content="Development" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installatom" Content="Atom" Margin="5,0"/>
<CheckBox Name="Installgit" Content="Git" Margin="5,0"/>
<CheckBox Name="Installgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
<CheckBox Name="Installjava8" Content="OpenJDK Java 8" Margin="5,0"/>
@ -146,127 +160,129 @@
<CheckBox Name="Installjetbrains" Content="Jetbrains Toolbox" Margin="5,0"/>
<CheckBox Name="Installnodejs" Content="NodeJS" Margin="5,0"/>
<CheckBox Name="Installnodejslts" Content="NodeJS LTS" Margin="5,0"/>
<CheckBox Name="Installnvm" Content="Node Version Manager" Margin="5,0"/>
<CheckBox Name="Installpython3" Content="Python3" Margin="5,0"/>
<CheckBox Name="Installpostman" Content="Postman" Margin="5,0"/>
<CheckBox Name="Installrustlang" Content="Rust" Margin="5,0"/>
<CheckBox Name="Installgolang" Content="GoLang" Margin="5,0"/>
<CheckBox Name="Installsublime" Content="Sublime" Margin="5,0"/>
<CheckBox Name="Installunity" Content="Unity Game Engine" Margin="5,0"/>
<CheckBox Name="Installvisualstudio" Content="Visual Studio 2022" Margin="5,0"/>
<CheckBox Name="Installneovim" Content="Neovim" Margin="5,0"/>
<CheckBox Name="Installvscode" Content="VS Code" Margin="5,0"/>
<CheckBox Name="Installvscodium" Content="VS Codium" Margin="5,0"/>
<Label Content="Document" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installadobe" Content="Adobe Reader DC" Margin="5,0"/>
<CheckBox Name="Installfoxpdf" Content="Foxit PDF" Margin="5,0"/>
<CheckBox Name="Installjoplin" Content="Joplin (FOSS Notes)" Margin="5,0"/>
<CheckBox Name="Installlibreoffice" Content="LibreOffice" Margin="5,0"/>
<CheckBox Name="Installnotepadplus" Content="Notepad++" Margin="5,0"/>
<CheckBox Name="Installobsidian" Content="Obsidian" Margin="5,0"/>
<CheckBox Name="Installonlyoffice" Content="ONLYOffice Desktop" Margin="5,0"/>
<CheckBox Name="Installopenoffice" Content="Apache OpenOffice" Margin="5,0"/>
<CheckBox Name="Installsumatra" Content="Sumatra PDF" Margin="5,0"/>
<CheckBox Name="Installwinmerge" Content="WinMerge" Margin="5,0"/>
<CheckBox Name="WPFInstalladobe" Content="Adobe Reader DC" 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="WPFInstallnotepadplus" Content="Notepad++" Margin="5,0"/>
<CheckBox Name="WPFInstallobsidian" Content="Obsidian" Margin="5,0"/>
<CheckBox Name="WPFInstallonlyoffice" Content="ONLYOffice Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstallopenoffice" Content="Apache OpenOffice" Margin="5,0"/>
<CheckBox Name="WPFInstallsumatra" Content="Sumatra PDF" Margin="5,0"/>
<CheckBox Name="WPFInstallwinmerge" Content="WinMerge" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="2" Margin="10">
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="2" Margin="10">
<Label Content="Games" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installbluestacks" Content="Bluestacks" Margin="5,0"/>
<CheckBox Name="Installepicgames" Content="Epic Games Launcher" Margin="5,0"/>
<CheckBox Name="Installgog" Content="GOG Galaxy" Margin="5,0"/>
<CheckBox Name="Installorigin" Content="Origin" Margin="5,0"/>
<CheckBox Name="Installsteam" Content="Steam" Margin="5,0"/>
<CheckBox Name="WPFInstallbluestacks" Content="Bluestacks" Margin="5,0"/>
<CheckBox Name="WPFInstallepicgames" Content="Epic Games Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallgog" Content="GOG Galaxy" Margin="5,0"/>
<CheckBox Name="WPFInstallorigin" Content="Origin" Margin="5,0"/>
<CheckBox Name="WPFInstallsteam" Content="Steam" Margin="5,0"/>
<CheckBox Name="WPFInstallubisoft" Content="Ubisoft Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallgeforcenow" Content="GeForce NOW" Margin="5,0"/>
<Label Content="Pro Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installadvancedip" Content="Advanced IP Scanner" Margin="5,0"/>
<CheckBox Name="Installmremoteng" Content="mRemoteNG" Margin="5,0"/>
<CheckBox Name="Installputty" Content="Putty" Margin="5,0"/>
<CheckBox Name="Installrustdesk" Content="Rust Remote Desktop (FOSS)" Margin="5,0"/>
<CheckBox Name="Installsimplewall" Content="SimpleWall" Margin="5,0"/>
<CheckBox Name="Installscp" Content="WinSCP" Margin="5,0"/>
<CheckBox Name="Installwireshark" Content="WireShark" Margin="5,0"/>
<CheckBox Name="WPFInstalladvancedip" Content="Advanced IP Scanner" Margin="5,0"/>
<CheckBox Name="WPFInstallmremoteng" Content="mRemoteNG" 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="WPFInstallscp" Content="WinSCP" Margin="5,0"/>
<CheckBox Name="WPFInstallwireshark" Content="WireShark" Margin="5,0"/>
<Label Content="Microsoft Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installdotnet3" Content=".NET Desktop Runtime 3.1" Margin="5,0"/>
<CheckBox Name="Installdotnet5" Content=".NET Desktop Runtime 5" Margin="5,0"/>
<CheckBox Name="Installdotnet6" Content=".NET Desktop Runtime 6" Margin="5,0"/>
<CheckBox Name="Installnuget" Content="Nuget" Margin="5,0"/>
<CheckBox Name="Installonedrive" Content="OneDrive" Margin="5,0"/>
<CheckBox Name="Installpowershell" Content="PowerShell" Margin="5,0"/>
<CheckBox Name="Installpowertoys" Content="Powertoys" Margin="5,0"/>
<CheckBox Name="Installprocessmonitor" Content="SysInternals Process Monitor" Margin="5,0"/>
<CheckBox Name="Installvc2015_64" Content="Visual C++ 2015-2022 64-bit" Margin="5,0"/>
<CheckBox Name="Installvc2015_32" Content="Visual C++ 2015-2022 32-bit" Margin="5,0"/>
<CheckBox Name="Installterminal" Content="Windows Terminal" 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="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="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"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="3" Margin="10">
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="3" Margin="10">
<Label Content="Multimedia Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installaudacity" Content="Audacity" Margin="5,0"/>
<CheckBox Name="Installblender" Content="Blender (3D Graphics)" Margin="5,0"/>
<CheckBox Name="Installcider" Content="Cider (FOSS Music Player)" Margin="5,0"/>
<CheckBox Name="Installeartrumpet" Content="Eartrumpet (Audio)" Margin="5,0"/>
<CheckBox Name="Installflameshot" Content="Flameshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="Installfoobar" Content="Foobar2000 (Music Player)" Margin="5,0"/>
<CheckBox Name="Installgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
<CheckBox Name="Installgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="Installhandbrake" Content="HandBrake" Margin="5,0"/>
<CheckBox Name="Installimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
<CheckBox Name="Installinkscape" Content="Inkscape" Margin="5,0"/>
<CheckBox Name="Installitunes" Content="iTunes" Margin="5,0"/>
<CheckBox Name="Installkdenlive" Content="Kdenlive (Video Editor)" Margin="5,0"/>
<CheckBox Name="Installkodi" Content="Kodi Media Center" Margin="5,0"/>
<CheckBox Name="Installklite" Content="K-Lite Codec Standard" Margin="5,0"/>
<CheckBox Name="Installkrita" Content="Krita (Image Editor)" Margin="5,0"/>
<CheckBox Name="Installmpc" Content="Media Player Classic (Video Player)" Margin="5,0"/>
<CheckBox Name="Installobs" Content="OBS Studio" Margin="5,0"/>
<CheckBox Name="Installnglide" Content="nGlide (3dfx compatibility)" Margin="5,0"/>
<CheckBox Name="Installsharex" Content="ShareX (Screenshots)" Margin="5,0"/>
<CheckBox Name="Installstrawberry" Content="Strawberry (Music Player)" Margin="5,0"/>
<CheckBox Name="Installvlc" Content="VLC (Video Player)" Margin="5,0"/>
<CheckBox Name="Installvoicemeeter" Content="Voicemeeter (Audio)" 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="WPFInstalleartrumpet" Content="Eartrumpet (Audio)" 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="WPFInstallinkscape" Content="Inkscape" Margin="5,0"/>
<CheckBox Name="WPFInstallitunes" Content="iTunes" 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="WPFInstallmpc" Content="Media Player Classic (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallobs" Content="OBS Studio" Margin="5,0"/>
<CheckBox Name="WPFInstallnglide" Content="nGlide (3dfx compatibility)" Margin="5,0"/>
<CheckBox Name="WPFInstallsharex" Content="ShareX (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallstrawberry" Content="Strawberry (Music Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallvlc" Content="VLC (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="4" Margin="10">
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="4" Margin="10">
<Label Content="Utilities" FontSize="16" Margin="5,0"/>
<CheckBox Name="Installsevenzip" Content="7-Zip" Margin="5,0"/>
<CheckBox Name="Installalacritty" Content="Alacritty Terminal" Margin="5,0"/>
<CheckBox Name="Installanydesk" Content="AnyDesk" Margin="5,0"/>
<CheckBox Name="Installautohotkey" Content="AutoHotkey" Margin="5,0"/>
<CheckBox Name="Installbitwarden" Content="Bitwarden" Margin="5,0"/>
<CheckBox Name="Installcpuz" Content="CPU-Z" Margin="5,0"/>
<CheckBox Name="Installetcher" Content="Etcher USB Creator" Margin="5,0"/>
<CheckBox Name="Installesearch" Content="Everything Search" Margin="5,0"/>
<CheckBox Name="Installflux" Content="f.lux Redshift" Margin="5,0"/>
<CheckBox Name="Installgpuz" Content="GPU-Z" Margin="5,0"/>
<CheckBox Name="Installglaryutilities" Content="Glary Utilities" Margin="5,0"/>
<CheckBox Name="Installhwinfo" Content="HWInfo" Margin="5,0"/>
<CheckBox Name="Installidm" Content="Internet Download Manager" Margin="5,0"/>
<CheckBox Name="Installjdownloader" Content="J Download Manager" Margin="5,0"/>
<CheckBox Name="Installkeepass" Content="KeePassXC" Margin="5,0"/>
<CheckBox Name="Installmalwarebytes" Content="MalwareBytes" Margin="5,0"/>
<CheckBox Name="Installnvclean" Content="NVCleanstall" Margin="5,0"/>
<CheckBox Name="Installopenshell" Content="Open Shell (Start Menu)" Margin="5,0"/>
<CheckBox Name="Installprocesslasso" Content="Process Lasso" Margin="5,0"/>
<CheckBox Name="Installqbittorrent" Content="qBittorrent" Margin="5,0"/>
<CheckBox Name="Installrevo" Content="RevoUninstaller" Margin="5,0"/>
<CheckBox Name="Installrufus" Content="Rufus Imager" Margin="5,0"/>
<CheckBox Name="Installsandboxie" Content="Sandboxie Plus" Margin="5,0"/>
<CheckBox Name="Installshell" Content="Shell (Expanded Context Menu)" Margin="5,0"/>
<CheckBox Name="Installteamviewer" Content="TeamViewer" Margin="5,0"/>
<CheckBox Name="Installttaskbar" Content="Translucent Taskbar" Margin="5,0"/>
<CheckBox Name="Installtreesize" Content="TreeSize Free" Margin="5,0"/>
<CheckBox Name="Installtwinkletray" Content="Twinkle Tray" Margin="5,0"/>
<CheckBox Name="Installwindirstat" Content="WinDirStat" Margin="5,0"/>
<CheckBox Name="Installwiztree" Content="WizTree" Margin="5,0"/>
<Button Name="install" Background="AliceBlue" Content="Start Install" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="150" ToolTip="Install all checked programs"/>
<Button Name="InstallUpgrade" Background="AliceBlue" Content="Upgrade Installs" HorizontalAlignment = "Left" Margin="5,0,0,5" Padding="20,5" Width="150" ToolTip="Upgrade All Existing Programs on System"/>
<CheckBox Name="WPFInstallsevenzip" 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="WPFInstallbitwarden" Content="Bitwarden" Margin="5,0"/>
<CheckBox Name="WPFInstallcpuz" Content="CPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstalldeluge" Content="Deluge" Margin="5,0"/>
<CheckBox Name="WPFInstalletcher" Content="Etcher USB Creator" Margin="5,0"/>
<CheckBox Name="WPFInstallesearch" Content="Everything Search" Margin="5,0"/>
<CheckBox Name="WPFInstallflux" Content="f.lux Redshift" Margin="5,0"/>
<CheckBox Name="WPFInstallgpuz" Content="GPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstallglaryutilities" Content="Glary Utilities" Margin="5,0"/>
<CheckBox Name="WPFInstallhwinfo" Content="HWInfo" Margin="5,0"/>
<CheckBox Name="WPFInstallidm" Content="Internet Download Manager" Margin="5,0"/>
<CheckBox Name="WPFInstalljdownloader" Content="J Download Manager" Margin="5,0"/>
<CheckBox Name="WPFInstallkeepass" Content="KeePassXC" Margin="5,0"/>
<CheckBox Name="WPFInstallmalwarebytes" Content="MalwareBytes" Margin="5,0"/>
<CheckBox Name="WPFInstallnvclean" Content="NVCleanstall" Margin="5,0"/>
<CheckBox Name="WPFInstallopenshell" Content="Open Shell (Start Menu)" Margin="5,0"/>
<CheckBox Name="WPFInstallprocesslasso" Content="Process Lasso" Margin="5,0"/>
<CheckBox Name="WPFInstallqbittorrent" Content="qBittorrent" 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="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="WPFInstallwindirstat" Content="WinDirStat" Margin="5,0"/>
<CheckBox Name="WPFInstallwiztree" Content="WizTree" Margin="5,0"/>
<CheckBox Name="WPFInstallwinrar" Content="WinRAR" Margin="5,0"/>
</StackPanel>
</Grid>
</TabItem>
<TabItem Header="Tweaks" Visibility="Collapsed" Name="Tab2">
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
<Grid Background="#333333">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -279,15 +295,16 @@
</Grid.RowDefinitions>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
<Label Content="Recommended Selections:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="desktop" Content=" Desktop " Margin="7"/>
<Button Name="laptop" Content=" Laptop " Margin="7"/>
<Button Name="minimal" Content=" Minimal " Margin="7"/>
<Button Name="clear" Content=" Clear " Margin="7"/>
<Button Name="WPFdesktop" Content=" Desktop " Margin="7"/>
<Button Name="WPFlaptop" Content=" Laptop " Margin="7"/>
<Button Name="WPFminimal" Content=" Minimal " Margin="7"/>
<Button Name="WPFclear" Content=" Clear " Margin="7"/>
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="import" Content=" Import " Margin="7"/>
<Button Name="export" Content=" Export " Margin="7"/>
<Button Name="WPFimport" Content=" Import " Margin="7"/>
<Button Name="WPFexport" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
<TextBlock Padding="10">
@ -297,50 +314,52 @@
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
<Label FontSize="16" Content="Essential Tweaks"/>
<CheckBox Name="EssTweaksRP" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a Windows Restore point before modifying system. Can use Windows System Restore to rollback to before tweaks were applied"/>
<CheckBox Name="EssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
<CheckBox Name="EssTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spys heavily on you when using the Edge browser."/>
<CheckBox Name="EssTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scaned wifi networks and your current geo location."/>
<CheckBox Name="EssTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/>
<CheckBox Name="EssTweaksDeleteTempFiles" Content="Delete Temporary Files" Margin="5,0" ToolTip="Erases TEMP Folders"/>
<CheckBox Name="EssTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
<CheckBox Name="EssTweaksLoc" Content="Disable Location Tracking" Margin="5,0" ToolTip="Disables Location Tracking...DUH!"/>
<CheckBox Name="EssTweaksHome" Content="Disable Homegroup" Margin="5,0" ToolTip="Disables HomeGroup - Windows 11 doesn't have this, it was awful."/>
<CheckBox Name="EssTweaksStorage" Content="Disable Storage Sense" Margin="5,0" ToolTip="Storage Sense is supposed to delete temp files automatically, but often runs at wierd times and mostly doesn't do much. Although when it was introduced in Win 10 (1809 Version) it deleted people's documents... So there is that."/>
<CheckBox Name="EssTweaksHiber" Content="Disable Hibernation" Margin="5,0" ToolTip="Hibernation is really meant for laptops as it saves whats in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation."/>
<CheckBox Name="EssTweaksDVR" Content="Disable GameDVR" Margin="5,0" ToolTip="GameDVR is a Windows App that is a dependancy for some Store Games. I've never met someone that likes it, but it's there for the XBOX crowd."/>
<CheckBox Name="EssTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
<CheckBox Name="WPFEssTweaksRP" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a Windows Restore point before modifying system. Can use Windows System Restore to rollback to before tweaks were applied"/>
<CheckBox Name="WPFEssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
<CheckBox Name="WPFEssTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spys heavily on you when using the Edge browser."/>
<CheckBox Name="WPFEssTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scaned wifi networks and your current geo location."/>
<CheckBox Name="WPFEssTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/>
<CheckBox Name="WPFEssTweaksDeleteTempFiles" Content="Delete Temporary Files" Margin="5,0" ToolTip="Erases TEMP Folders"/>
<CheckBox Name="WPFEssTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
<CheckBox Name="WPFEssTweaksLoc" Content="Disable Location Tracking" Margin="5,0" ToolTip="Disables Location Tracking...DUH!"/>
<CheckBox Name="WPFEssTweaksHome" Content="Disable Homegroup" Margin="5,0" ToolTip="Disables HomeGroup - Windows 11 doesn't have this, it was awful."/>
<CheckBox Name="WPFEssTweaksStorage" Content="Disable Storage Sense" Margin="5,0" ToolTip="Storage Sense is supposed to delete temp files automatically, but often runs at wierd times and mostly doesn't do much. Although when it was introduced in Win 10 (1809 Version) it deleted people's documents... So there is that."/>
<CheckBox Name="WPFEssTweaksHiber" Content="Disable Hibernation" Margin="5,0" ToolTip="Hibernation is really meant for laptops as it saves whats in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation."/>
<CheckBox Name="WPFEssTweaksDVR" Content="Disable GameDVR" Margin="5,0" ToolTip="GameDVR is a Windows App that is a dependancy for some Store Games. I've never met someone that likes it, but it's there for the XBOX crowd."/>
<CheckBox Name="WPFEssTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
<Label Content="Dark Theme" />
<StackPanel Orientation="Horizontal">
<Label Content="Off" />
<CheckBox Name="ToggleDarkMode" Style="{StaticResource ToggleSwitchStyle}" Margin="2.5,0"/>
<CheckBox Name="WPFToggleDarkMode" Style="{StaticResource ToggleSwitchStyle}" Margin="2.5,0"/>
<Label Content="On" />
</StackPanel>
<Label Content="Performance Plans" />
<Button Name="AddUltPerf" Background="AliceBlue" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="RemoveUltPerf" Background="AliceBlue" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0,0,5" Padding="20,5" Width="300"/>
<Button Name="WPFAddUltPerf" Background="AliceBlue" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="WPFRemoveUltPerf" Background="AliceBlue" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0,0,5" Padding="20,5" Width="300"/>
<Label Content="Shortcuts" />
<Button Name="WPFWinUtilShortcut" Background="AliceBlue" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
<Label FontSize="16" Content="Misc. Tweaks"/>
<CheckBox Name="MiscTweaksPower" Content="Disable Power Throttling" Margin="5,0" ToolTip="This is mainly for Laptops, It disables Power Throttling and will use more battery."/>
<CheckBox Name="MiscTweaksLapPower" Content="Enable Power Throttling" Margin="5,0" ToolTip="ONLY FOR LAPTOPS! Do not use on a desktop."/>
<CheckBox Name="MiscTweaksNum" Content="Enable NumLock on Startup" Margin="5,0" ToolTip="This creates a time vortex and send you back to the past... or it simply turns numlock on at startup"/>
<CheckBox Name="MiscTweaksLapNum" Content="Disable Numlock on Startup" Margin="5,0" ToolTip="Disables Numlock... Very useful when you are on a laptop WITHOUT 9-key and this fixes that issue when the numlock is enabled!"/>
<CheckBox Name="MiscTweaksExt" Content="Show File Extensions" Margin="5,0"/>
<CheckBox Name="MiscTweaksDisplay" Content="Set Display for Performance" Margin="5,0" ToolTip="Sets the system preferences to performance. You can do this manually with sysdm.cpl as well."/>
<CheckBox Name="MiscTweaksUTC" Content="Set Time to UTC (Dual Boot)" Margin="5,0" ToolTip="Essential for computers that are dual booting. Fixes the time sync with Linux Systems."/>
<CheckBox Name="MiscTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/>
<CheckBox Name="MiscTweaksDisableNotifications" Content="Disable Notification" Margin="5,0" ToolTip="Disables all Notifications"/>
<CheckBox Name="MiscTweaksDisableTPMCheck" Content="Disable TPM on Update" Margin="5,0" ToolTip="Add the Windows 11 Bypass for those that want to upgrade their Windows 10."/>
<CheckBox Name="EssTweaksDeBloat" Content="Remove ALL MS Store Apps" Margin="5,0" ToolTip="USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!"/>
<CheckBox Name="EssTweaksRemoveCortana" Content="Remove Cortana" Margin="5,0" ToolTip="Removes Cortana, but often breaks search... if you are a heavy windows search users, this is NOT recommended."/>
<CheckBox Name="EssTweaksRemoveEdge" Content="Remove Microsoft Edge" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/>
<CheckBox Name="MiscTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/>
<CheckBox Name="MiscTweaksDisableMouseAcceleration" Content="Disable Mouse Acceleration" Margin="5,0" ToolTip="Disables Mouse Acceleration."/>
<CheckBox Name="MiscTweaksEnableMouseAcceleration" Content="Enable Mouse Acceleration" Margin="5,0" ToolTip="Enables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksPower" Content="Disable Power Throttling" Margin="5,0" ToolTip="This is mainly for Laptops, It disables Power Throttling and will use more battery."/>
<CheckBox Name="WPFMiscTweaksLapPower" Content="Enable Power Throttling" Margin="5,0" ToolTip="ONLY FOR LAPTOPS! Do not use on a desktop."/>
<CheckBox Name="WPFMiscTweaksNum" Content="Enable NumLock on Startup" Margin="5,0" ToolTip="This creates a time vortex and send you back to the past... or it simply turns numlock on at startup"/>
<CheckBox Name="WPFMiscTweaksLapNum" Content="Disable Numlock on Startup" Margin="5,0" ToolTip="Disables Numlock... Very useful when you are on a laptop WITHOUT 9-key and this fixes that issue when the numlock is enabled!"/>
<CheckBox Name="WPFMiscTweaksExt" Content="Show File Extensions" Margin="5,0"/>
<CheckBox Name="WPFMiscTweaksDisplay" Content="Set Display for Performance" Margin="5,0" ToolTip="Sets the system preferences to performance. You can do this manually with sysdm.cpl as well."/>
<CheckBox Name="WPFMiscTweaksUTC" Content="Set Time to UTC (Dual Boot)" Margin="5,0" ToolTip="Essential for computers that are dual booting. Fixes the time sync with Linux Systems."/>
<CheckBox Name="WPFMiscTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/>
<CheckBox Name="WPFMiscTweaksDisableNotifications" Content="Disable Notification Tray/Calendar" Margin="5,0" ToolTip="Disables all Notifications INCLUDING Calendar"/>
<CheckBox Name="WPFMiscTweaksDisableTPMCheck" Content="Disable TPM on Update" Margin="5,0" ToolTip="Add the Windows 11 Bypass for those that want to upgrade their Windows 10."/>
<CheckBox Name="WPFEssTweaksDeBloat" Content="Remove ALL MS Store Apps" Margin="5,0" ToolTip="USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!"/>
<CheckBox Name="WPFEssTweaksRemoveCortana" Content="Remove Cortana" Margin="5,0" ToolTip="Removes Cortana, but often breaks search... if you are a heavy windows search users, this is NOT recommended."/>
<CheckBox Name="WPFEssTweaksRemoveEdge" Content="Remove Microsoft Edge" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/>
<CheckBox Name="WPFMiscTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/>
<CheckBox Name="WPFMiscTweaksDisableMouseAcceleration" Content="Disable Mouse Acceleration" Margin="5,0" ToolTip="Disables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksEnableMouseAcceleration" Content="Enable Mouse Acceleration" Margin="5,0" ToolTip="Enables Mouse Acceleration."/>
<Label Content="DNS" />
<ComboBox Name="changedns" Height = "20" Width = "150" HorizontalAlignment = "Left" Margin="5,5">
<ComboBox Name="WPFchangedns" Height = "20" Width = "150" HorizontalAlignment = "Left" Margin="5,5">
<ComboBoxItem IsSelected="True" Content = "Default"/>
<ComboBoxItem Content = "DHCP"/>
<ComboBoxItem Content = "Google"/>
@ -351,12 +370,12 @@
<ComboBoxItem Content = "Open_DNS"/>
<ComboBoxItem Content = "Quad9"/>
</ComboBox>
<Button Name="tweaksbutton" Background="AliceBlue" Content="Run Tweaks " HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="150"/>
<Button Name="undoall" Background="AliceBlue" Content="Undo Tweaks" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="150"/>
<Button Name="WPFtweaksbutton" Background="AliceBlue" Content="Run Tweaks " HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="150"/>
<Button Name="WPFundoall" Background="AliceBlue" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="150"/>
</StackPanel>
</Grid>
</TabItem>
<TabItem Header="Config" Visibility="Collapsed" Name="Tab3">
<TabItem Header="Config" Visibility="Collapsed" Name="WPFTab3">
<Grid Background="#444444">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -364,29 +383,29 @@
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Label Content="Features" FontSize="16"/>
<CheckBox Name="Featuresdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
<CheckBox Name="Featureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
<CheckBox Name="Featureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
<CheckBox Name="Featurenfs" Content="NFS - Network File System" Margin="5,0"/>
<CheckBox Name="Featurewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
<Button Name="FeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<CheckBox Name="WPFFeaturesdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
<CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
<CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
<CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/>
<CheckBox Name="WPFFeaturewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
<Button Name="WPFFeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<Label Content="Fixes" FontSize="16"/>
<Button Name="PanelAutologin" FontSize="14" Background="AliceBlue" Content="Set Up Autologin" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="FixesUpdate" FontSize="14" Background="AliceBlue" Content="Reset Windows Update" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="PanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFPanelAutologin" FontSize="14" Background="AliceBlue" Content="Set Up Autologin" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFFixesUpdate" FontSize="14" Background="AliceBlue" Content="Reset Windows Update" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFPanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Label Content="Legacy Windows Panels" FontSize="16"/>
<Button Name="Panelcontrol" FontSize="14" Background="AliceBlue" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="Panelnetwork" FontSize="14" Background="AliceBlue" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="Panelpower" FontSize="14" Background="AliceBlue" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="Panelsound" FontSize="14" Background="AliceBlue" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="Panelsystem" FontSize="14" Background="AliceBlue" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="Paneluser" FontSize="14" Background="AliceBlue" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelcontrol" FontSize="14" Background="AliceBlue" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelnetwork" FontSize="14" Background="AliceBlue" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelpower" FontSize="14" Background="AliceBlue" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsound" FontSize="14" Background="AliceBlue" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsystem" FontSize="14" Background="AliceBlue" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPaneluser" FontSize="14" Background="AliceBlue" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
</StackPanel>
</Grid>
</TabItem>
<TabItem Header="Updates" Visibility="Collapsed" Name="Tab4">
<TabItem Header="Updates" Visibility="Collapsed" Name="WPFTab4">
<Grid Background="#555555">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -394,15 +413,15 @@
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Button Name="Updatesdefault" FontSize="16" Background="AliceBlue" Content="Default (Out of Box) Settings" Margin="20,0,20,10" Padding="10"/>
<Button Name="WPFUpdatesdefault" FontSize="16" Background="AliceBlue" Content="Default (Out of Box) Settings" Margin="20,0,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is the default settings that come with Windows. <LineBreak/><LineBreak/> No modifications are made and will remove any custom windows update settings.<LineBreak/><LineBreak/>Note: If you still encounter update errors, reset all updates in the config tab. That will restore ALL Microsoft Update Services from their servers and reinstall them to default settings.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Button Name="Updatessecurity" FontSize="16" Background="AliceBlue" Content="Security (Recommended) Settings" Margin="20,0,20,10" Padding="10"/>
<Button Name="WPFUpdatessecurity" FontSize="16" Background="AliceBlue" Content="Security (Recommended) Settings" Margin="20,0,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is my recommended setting I use on all computers.<LineBreak/><LineBreak/> It will delay feature updates by 2 years and will install security updates 4 days after release.<LineBreak/><LineBreak/>Feature Updates: Adds features and often bugs to systems when they are released. You want to delay these as long as possible.<LineBreak/><LineBreak/>Security Updates: Typically these are pressing security flaws that need to be patched quickly. You only want to delay these a couple of days just to see if they are safe and don't break other systems. You don't want to go without these for ANY extended periods of time.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
<Button Name="Updatesdisable" FontSize="16" Background="AliceBlue" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,0,20,10" Padding="10,10,10,10"/>
<Button Name="WPFUpdatesdisable" FontSize="16" Background="AliceBlue" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,0,20,10" Padding="10,10,10,10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This completely disables ALL Windows Updates and is NOT RECOMMENDED.<LineBreak/><LineBreak/> However, it can be suitable if you use your system for a select purpose and do not actively browse the internet. <LineBreak/><LineBreak/>Note: Your system will be easier to hack and infect without security updates.</TextBlock>
<TextBlock Text=" " Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300"/>