mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-12-22 05:51:30 -06:00
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:
parent
a1c7501b98
commit
075f2e9a50
@ -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
|
@(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
|
#:: double-click to run or just copy-paste into powershell - it's a standalone hybrid script
|
||||||
sp 'HKCU:\Volatile Environment' 'Edge_Removal' @'
|
sp 'HKCU:\Volatile Environment' 'Edge_Removal' @'
|
||||||
|
|
||||||
$also_remove_webview = 1
|
$also_remove_webview = 1
|
||||||
|
|
||||||
$host.ui.RawUI.WindowTitle = 'Edge Removal '
|
$host.ui.RawUI.WindowTitle = 'Edge Removal - AveYo, 2022.10.03'
|
||||||
## targets
|
## targets
|
||||||
$remove_win32 = @("Microsoft Edge","Microsoft Edge Update"); $remove_appx = @("MicrosoftEdge")
|
$remove_win32 = @("Microsoft Edge","Microsoft Edge Update"); $remove_appx = @("MicrosoftEdge")
|
||||||
if ($also_remove_webview -eq 1) {$remove_win32 += "Microsoft EdgeWebView"; $remove_appx += "Win32WebViewHost"}
|
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"
|
cmd /c "reg add ""$IFEO\msedge.exe\0"" /f /v Debugger /d ""$CMD $DIR\OpenWebSearch.cmd"" >nul"
|
||||||
|
|
||||||
$OpenWebSearch = @$
|
$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
|
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
|
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
|
if /i "%ProgID%" equ "MSEdgeHTM" echo;Default browser is set to Edge! Change it or remove OpenWebSearch script. & pause & exit /b
|
||||||
|
@ -11,10 +11,6 @@
|
|||||||
"winget": "AnyDeskSoftwareGmbH.AnyDesk",
|
"winget": "AnyDeskSoftwareGmbH.AnyDesk",
|
||||||
"choco": "anydesk"
|
"choco": "anydesk"
|
||||||
},
|
},
|
||||||
"WPFInstallatom": {
|
|
||||||
"winget": "GitHub.Atom",
|
|
||||||
"choco": "atom"
|
|
||||||
},
|
|
||||||
"WPFInstallaudacity": {
|
"WPFInstallaudacity": {
|
||||||
"winget": "Audacity.Audacity",
|
"winget": "Audacity.Audacity",
|
||||||
"choco": "audacity"
|
"choco": "audacity"
|
||||||
@ -83,6 +79,10 @@
|
|||||||
"winget": "PeterPawlowski.foobar2000",
|
"winget": "PeterPawlowski.foobar2000",
|
||||||
"choco": "foobar2000"
|
"choco": "foobar2000"
|
||||||
},
|
},
|
||||||
|
"WPFInstallgeforcenow": {
|
||||||
|
"winget": "Nvidia.GeForceNow",
|
||||||
|
"choco": "nvidia-geforce-now"
|
||||||
|
},
|
||||||
"WPFInstallgimp": {
|
"WPFInstallgimp": {
|
||||||
"winget": "GIMP.GIMP",
|
"winget": "GIMP.GIMP",
|
||||||
"choco": "gimp"
|
"choco": "gimp"
|
||||||
@ -507,8 +507,28 @@
|
|||||||
"winget": "Microsoft.Edge",
|
"winget": "Microsoft.Edge",
|
||||||
"choco": "microsoft-edge"
|
"choco": "microsoft-edge"
|
||||||
},
|
},
|
||||||
|
"WPFInstallubisoft": {
|
||||||
|
"winget": "Ubisoft.Connect",
|
||||||
|
"choco": "ubisoft-connect"
|
||||||
|
},
|
||||||
"WPFInstallnuget": {
|
"WPFInstallnuget": {
|
||||||
"winget": "Microsoft.NuGet",
|
"winget": "Microsoft.NuGet",
|
||||||
"choco": "nuget.commandline"
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Featuresdotnet": [
|
"WPFFeaturesdotnet": {
|
||||||
|
"feature": [
|
||||||
"NetFx4-AdvSrvs",
|
"NetFx4-AdvSrvs",
|
||||||
"NetFx3"
|
"NetFx3"
|
||||||
],
|
],
|
||||||
"Featureshyperv": [
|
"InvokeScript": [
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"WPFFeatureshyperv": {
|
||||||
|
"feature": [
|
||||||
"HypervisorPlatform",
|
"HypervisorPlatform",
|
||||||
"Microsoft-Hyper-V-All",
|
"Microsoft-Hyper-V-All",
|
||||||
"Microsoft-Hyper-V",
|
"Microsoft-Hyper-V",
|
||||||
@ -13,19 +19,43 @@
|
|||||||
"Microsoft-Hyper-V-Services",
|
"Microsoft-Hyper-V-Services",
|
||||||
"Microsoft-Hyper-V-Management-Clients"
|
"Microsoft-Hyper-V-Management-Clients"
|
||||||
],
|
],
|
||||||
"Featureslegacymedia": [
|
"InvokeScript": [
|
||||||
|
"Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /set hypervisorschedulertype classic' -Wait"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"WPFFeatureslegacymedia": {
|
||||||
|
"feature": [
|
||||||
"WindowsMediaPlayer",
|
"WindowsMediaPlayer",
|
||||||
"MediaPlayback",
|
"MediaPlayback",
|
||||||
"DirectPlay",
|
"DirectPlay",
|
||||||
"LegacyComponents"
|
"LegacyComponents"
|
||||||
],
|
],
|
||||||
"Featurewsl": [
|
"InvokeScript": [
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"WPFFeaturewsl": {
|
||||||
|
"feature": [
|
||||||
"VirtualMachinePlatform",
|
"VirtualMachinePlatform",
|
||||||
"Microsoft-Windows-Subsystem-Linux"
|
"Microsoft-Windows-Subsystem-Linux"
|
||||||
],
|
],
|
||||||
"Featurenfs": [
|
"InvokeScript": [
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"WPFFeaturenfs": {
|
||||||
|
"feature": [
|
||||||
"ServicesForNFS-ClientOnly",
|
"ServicesForNFS-ClientOnly",
|
||||||
"ClientForNFS-Infrastructure",
|
"ClientForNFS-Infrastructure",
|
||||||
"NFS-Administration"
|
"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
|
||||||
|
"
|
||||||
]
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
1269
config/tweaks.json
1269
config/tweaks.json
File diff suppressed because it is too large
Load Diff
@ -22,10 +22,11 @@ Function Get-WinUtilCheckBoxes {
|
|||||||
$Output = New-Object System.Collections.Generic.List[System.Object]
|
$Output = New-Object System.Collections.Generic.List[System.Object]
|
||||||
|
|
||||||
if($Group -eq "WPFInstall"){
|
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){
|
Foreach ($CheckBox in $CheckBoxes){
|
||||||
if($CheckBox.value.ischecked -eq $true){
|
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)
|
$Output.Add($psitem)
|
||||||
}
|
}
|
||||||
if ($uncheck -eq $true){
|
if ($uncheck -eq $true){
|
||||||
@ -35,8 +36,24 @@ Function Get-WinUtilCheckBoxes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($Group -eq "WPFTweaks"){
|
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){
|
Foreach ($CheckBox in $CheckBoxes){
|
||||||
if($CheckBox.value.ischecked -eq $true){
|
if($CheckBox.value.ischecked -eq $true){
|
||||||
$Output.Add($Checkbox.Name)
|
$Output.Add($Checkbox.Name)
|
||||||
|
33
functions/private/Get-WinUtilRegistry.ps1
Normal file
33
functions/private/Get-WinUtilRegistry.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
29
functions/private/Get-WinUtilVariables.ps1
Normal file
29
functions/private/Get-WinUtilVariables.ps1
Normal 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
|
||||||
|
}
|
@ -9,20 +9,29 @@ Function Install-WinUtilProgramWinget {
|
|||||||
|
|
||||||
#>
|
#>
|
||||||
|
|
||||||
param($ProgramsToInstall)
|
param(
|
||||||
|
$ProgramsToInstall,
|
||||||
|
$manage = "Installing"
|
||||||
|
)
|
||||||
|
|
||||||
$x = 0
|
$x = 0
|
||||||
$count = $($ProgramsToInstall -split ",").Count
|
$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 ",")){
|
Foreach ($Program in $($ProgramsToInstall -split ",")){
|
||||||
|
|
||||||
Write-Progress -Activity "Installing Applications" -Status "Installing $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
|
Write-Progress -Activity "$manage Applications" -Status "$manage $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;
|
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++
|
$X++
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Progress -Activity "Installing Applications" -Status "Finished" -Completed
|
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,14 @@ function Install-WinUtilWinget {
|
|||||||
# Switching to winget-install from PSGallery from asheroto
|
# Switching to winget-install from PSGallery from asheroto
|
||||||
# Source: https://github.com/asheroto/winget-installer
|
# 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
|
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)){
|
if(!(Test-WinUtilPackageManager -winget)){
|
||||||
|
100
functions/private/Invoke-WinUtilCurrentSystem.ps1
Normal file
100
functions/private/Invoke-WinUtilCurrentSystem.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
53
functions/private/Invoke-WinUtilFeatureInstall.ps1
Normal file
53
functions/private/Invoke-WinUtilFeatureInstall.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,13 +18,17 @@ function Invoke-WPFButton {
|
|||||||
|
|
||||||
"WPFTab?BT" {Invoke-WPFTab $Button}
|
"WPFTab?BT" {Invoke-WPFTab $Button}
|
||||||
"WPFinstall" {Invoke-WPFInstall}
|
"WPFinstall" {Invoke-WPFInstall}
|
||||||
|
"WPFuninstall" {Invoke-WPFUnInstall}
|
||||||
"WPFInstallUpgrade" {Invoke-WPFInstallUpgrade}
|
"WPFInstallUpgrade" {Invoke-WPFInstallUpgrade}
|
||||||
"WPFdesktop" {Invoke-WPFPresets "Desktop"}
|
"WPFdesktop" {Invoke-WPFPresets "Desktop"}
|
||||||
"WPFlaptop" {Invoke-WPFPresets "laptop"}
|
"WPFlaptop" {Invoke-WPFPresets "laptop"}
|
||||||
"WPFminimal" {Invoke-WPFPresets "minimal"}
|
"WPFminimal" {Invoke-WPFPresets "minimal"}
|
||||||
"WPFexport" {Invoke-WPFImpex -type "export"}
|
"WPFexport" {Invoke-WPFImpex -type "export" -CheckBox "WPFTweaks"}
|
||||||
"WPFimport" {Invoke-WPFImpex -type "import"}
|
"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}
|
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
|
||||||
|
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
|
||||||
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
|
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
|
||||||
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
|
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
|
||||||
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
|
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
|
||||||
@ -43,7 +47,8 @@ function Invoke-WPFButton {
|
|||||||
"WPFFixesUpdate" {Invoke-WPFFixesUpdate}
|
"WPFFixesUpdate" {Invoke-WPFFixesUpdate}
|
||||||
"WPFUpdatesdisable" {Invoke-WPFUpdatesdisable}
|
"WPFUpdatesdisable" {Invoke-WPFUpdatesdisable}
|
||||||
"WPFUpdatessecurity" {Invoke-WPFUpdatessecurity}
|
"WPFUpdatessecurity" {Invoke-WPFUpdatessecurity}
|
||||||
|
"WPFWinUtilShortcut" {Invoke-WPFShortcut -ShortcutToAdd "WinUtil"}
|
||||||
|
"WPFGetInstalled" {Invoke-WPFGetInstalled -CheckBox "winget"}
|
||||||
|
"WPFGetInstalledTweaks" {Invoke-WPFGetInstalled -CheckBox "tweaks"}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,52 +5,33 @@ function Invoke-WPFFeatureInstall {
|
|||||||
GUI Function to install Windows Features
|
GUI Function to install Windows Features
|
||||||
|
|
||||||
#>
|
#>
|
||||||
If ( $WPFFeaturesdotnet.IsChecked -eq $true ) {
|
|
||||||
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx4-AdvSrvs" -All -NoRestart
|
if($sync.ProcessRunning){
|
||||||
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3" -All -NoRestart
|
$msg = "Install process is currently running."
|
||||||
}
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||||
If ( $WPFFeatureshyperv.IsChecked -eq $true ) {
|
return
|
||||||
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"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$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
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||||
$MessageboxTitle = "All features are now installed "
|
$MessageboxTitle = "All features are now installed "
|
||||||
$Messageboxbody = ("Done")
|
$Messageboxbody = ("Done")
|
||||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||||
|
|
||||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||||
|
}
|
||||||
Write-Host "================================="
|
|
||||||
Write-Host "--- Features are Installed ---"
|
|
||||||
Write-Host "================================="
|
|
||||||
}
|
}
|
46
functions/public/Invoke-WPFGetInstalled.ps1
Normal file
46
functions/public/Invoke-WPFGetInstalled.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -9,7 +9,10 @@ function Invoke-WPFImpex {
|
|||||||
Invoke-WPFImpex -type "export"
|
Invoke-WPFImpex -type "export"
|
||||||
|
|
||||||
#>
|
#>
|
||||||
param($type)
|
param(
|
||||||
|
$type,
|
||||||
|
$checkbox
|
||||||
|
)
|
||||||
|
|
||||||
if ($type -eq "export"){
|
if ($type -eq "export"){
|
||||||
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
|
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
|
||||||
@ -27,11 +30,11 @@ function Invoke-WPFImpex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($type -eq "export"){
|
if ($type -eq "export"){
|
||||||
$jsonFile = Get-WinUtilCheckBoxes WPFTweaks -unCheck $false
|
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false
|
||||||
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
|
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
|
||||||
}
|
}
|
||||||
if ($type -eq "import"){
|
if ($type -eq "import"){
|
||||||
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json
|
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json
|
||||||
Invoke-WPFPresets -preset $jsonFile -imported $true
|
Invoke-WPFPresets -preset $jsonFile -imported $true -CheckBox $checkbox
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,10 @@ function Invoke-WPFPresets {
|
|||||||
|
|
||||||
param(
|
param(
|
||||||
$preset,
|
$preset,
|
||||||
[bool]$imported = $false
|
[bool]$imported = $false,
|
||||||
|
$checkbox = "WPFTeaks"
|
||||||
)
|
)
|
||||||
|
|
||||||
if($imported -eq $true){
|
if($imported -eq $true){
|
||||||
$CheckBoxesToCheck = $preset
|
$CheckBoxesToCheck = $preset
|
||||||
}
|
}
|
||||||
@ -17,15 +19,23 @@ function Invoke-WPFPresets {
|
|||||||
$CheckBoxesToCheck = $sync.configs.preset.$preset
|
$CheckBoxesToCheck = $sync.configs.preset.$preset
|
||||||
}
|
}
|
||||||
|
|
||||||
#Uncheck all
|
if($checkbox -eq "WPFTeaks"){
|
||||||
get-variable | Where-Object {$_.name -like "*tweaks*"} | ForEach-Object {
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "*tweaks*"}
|
||||||
if ($psitem.value.gettype().name -eq "CheckBox"){
|
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
|
||||||
$CheckBox = Get-Variable $psitem.Name
|
if ($CheckBoxesToCheck -contains $PSItem.name){
|
||||||
if ($CheckBoxesToCheck -contains $CheckBox.name){
|
$sync.$($PSItem.name).ischecked = $true
|
||||||
$checkbox.value.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}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -23,40 +23,13 @@ function Invoke-WPFRunspace {
|
|||||||
$ArgumentList
|
$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.
|
#Crate a PowerShell instance.
|
||||||
$script:powershell = [powershell]::Create()
|
$script:powershell = [powershell]::Create()
|
||||||
|
|
||||||
#Open a RunspacePool instance.
|
|
||||||
$script:runspace.Open()
|
|
||||||
|
|
||||||
#Add Scriptblock and Arguments to runspace
|
#Add Scriptblock and Arguments to runspace
|
||||||
$script:powershell.AddScript($ScriptBlock)
|
$script:powershell.AddScript($ScriptBlock)
|
||||||
$script:powershell.AddArgument($ArgumentList)
|
$script:powershell.AddArgument($ArgumentList)
|
||||||
$script:powershell.RunspacePool = $script:runspace
|
$script:powershell.RunspacePool = $sync.runspace
|
||||||
|
|
||||||
#Run our RunspacePool.
|
#Run our RunspacePool.
|
||||||
$script:handle = $script:powershell.BeginInvoke()
|
$script:handle = $script:powershell.BeginInvoke()
|
||||||
@ -66,8 +39,8 @@ function Invoke-WPFRunspace {
|
|||||||
{
|
{
|
||||||
$script:powershell.EndInvoke($script:handle)
|
$script:powershell.EndInvoke($script:handle)
|
||||||
$script:powershell.Dispose()
|
$script:powershell.Dispose()
|
||||||
$script:runspace.Dispose()
|
$sync.runspace.Dispose()
|
||||||
$script:runspace.Close()
|
$sync.runspace.Close()
|
||||||
[System.GC]::Collect()
|
[System.GC]::Collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
33
functions/public/Invoke-WPFShortcut.ps1
Normal file
33
functions/public/Invoke-WPFShortcut.ps1
Normal 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)"
|
||||||
|
}
|
@ -8,17 +8,17 @@ function Invoke-WPFTab {
|
|||||||
#>
|
#>
|
||||||
|
|
||||||
Param ($ClickedTab)
|
Param ($ClickedTab)
|
||||||
$Tabs = Get-Variable WPFTab?BT
|
$Tabs = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTab?BT"}
|
||||||
$TabNav = Get-Variable WPFTabNav
|
$TabNav = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTabNav"}
|
||||||
$x = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
|
$x = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
|
||||||
|
|
||||||
0..($Tabs.Count -1 ) | ForEach-Object {
|
0..($Tabs.Count -1 ) | ForEach-Object {
|
||||||
|
|
||||||
if ($x -eq $psitem){
|
if ($x -eq $psitem){
|
||||||
$TabNav.value.Items[$psitem].IsSelected = $true
|
$sync.$TabNav.Items[$psitem].IsSelected = $true
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$TabNav.value.Items[$psitem].IsSelected = $false
|
$sync.$TabNav.Items[$psitem].IsSelected = $false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
58
functions/public/Invoke-WPFUnInstall.ps1
Normal file
58
functions/public/Invoke-WPFUnInstall.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -10,11 +10,17 @@ function Invoke-WPFtweaksbutton {
|
|||||||
$msg = "Install process is currently running."
|
$msg = "Install process is currently running."
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
|
$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 {
|
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
||||||
param($Tweaks)
|
param($Tweaks)
|
||||||
|
@ -14,6 +14,12 @@ function Invoke-WPFundoall {
|
|||||||
|
|
||||||
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
|
$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 {
|
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
||||||
param($Tweaks)
|
param($Tweaks)
|
||||||
|
|
||||||
|
@ -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
|
#region Load Variables needed for testing
|
||||||
|
|
||||||
#Config Files
|
#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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
28
pester/functions.Tests.ps1
Normal file
28
pester/functions.Tests.ps1
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
#region Load Variables needed for testing
|
||||||
|
|
||||||
#Config Files
|
./Compile.ps1
|
||||||
$global:configs = @{}
|
|
||||||
|
|
||||||
(
|
|
||||||
"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
|
$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
|
#endregion Load Variables needed for testing
|
||||||
|
|
||||||
#===========================================================================
|
BeforeAll {
|
||||||
# Tests - Application Installs
|
. .\pester.ps1
|
||||||
#===========================================================================
|
|
||||||
|
|
||||||
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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================================
|
|
||||||
# Tests - Tweak Presets
|
|
||||||
#===========================================================================
|
|
||||||
|
|
||||||
Describe "Tweak Presets" {
|
|
||||||
Context "Json Import" {
|
|
||||||
It "Imports with no errors" {
|
|
||||||
$global:configs.preset | should -Not -BeNullOrEmpty
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#===========================================================================
|
|
||||||
# Tests - GUI
|
|
||||||
#===========================================================================
|
|
||||||
|
|
||||||
Describe "GUI" {
|
Describe "GUI" {
|
||||||
Context "XML" {
|
Context "XML" {
|
||||||
It "Imports with no errors" {
|
It "Imports with no errors" {
|
||||||
$global:XAML | should -Not -BeNullOrEmpty
|
$inputXML | should -Not -BeNullOrEmpty
|
||||||
}
|
|
||||||
It "Title should be $global:FormName" {
|
|
||||||
$global:XAML.window.Title | should -Be $global:FormName
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Context "Form" {
|
Context "Form" {
|
||||||
It "Imports with no errors" {
|
It "Imports with no errors" {
|
||||||
$global:Form | should -Not -BeNullOrEmpty
|
$sync.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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
#region exception classes
|
||||||
|
|
||||||
class WingetFailedInstall : Exception {
|
class WingetFailedInstall : Exception {
|
||||||
@ -26,7 +52,7 @@ $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -repla
|
|||||||
#Read XAML
|
#Read XAML
|
||||||
|
|
||||||
$reader = (New-Object System.Xml.XmlNodeReader $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] {
|
catch [System.Management.Automation.MethodInvocationException] {
|
||||||
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
|
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
|
Write-Host $error[0].Exception.Message -ForegroundColor Red
|
||||||
@ -43,17 +69,24 @@ catch {
|
|||||||
# Store Form Objects In PowerShell
|
# 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"}
|
$sync.keys | ForEach-Object {
|
||||||
foreach ($button in $buttons){
|
if($sync.$psitem){
|
||||||
$button.value.Add_Click({
|
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
|
||||||
|
$sync["$psitem"].Add_Click({
|
||||||
[System.Object]$Sender = $args[0]
|
[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
|
# Setup background config
|
||||||
@ -82,6 +115,12 @@ Catch [ChocoFailedInstall]{
|
|||||||
Write-Host "-- Chocolatey failed to install ---"
|
Write-Host "-- Chocolatey failed to install ---"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
}
|
}
|
||||||
$form.title = $form.title + " " + $sync.version
|
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
|
||||||
$Form.ShowDialog() | out-null
|
$sync["Form"].Add_Closing({
|
||||||
|
$sync.runspace.Dispose()
|
||||||
|
$sync.runspace.Close()
|
||||||
|
[System.GC]::Collect()
|
||||||
|
})
|
||||||
|
|
||||||
|
$sync["Form"].ShowDialog() | out-null
|
||||||
Stop-Transcript
|
Stop-Transcript
|
||||||
|
2385
winutil.ps1
2385
winutil.ps1
File diff suppressed because it is too large
Load Diff
@ -21,14 +21,14 @@
|
|||||||
CornerRadius="10"
|
CornerRadius="10"
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
/>
|
/>
|
||||||
<Border Name="ToggleSwitchButton"
|
<Border Name="WPFToggleSwitchButton"
|
||||||
Width="25"
|
Width="25"
|
||||||
Height="25"
|
Height="25"
|
||||||
Background="Black"
|
Background="Black"
|
||||||
CornerRadius="12.5"
|
CornerRadius="12.5"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
/>
|
/>
|
||||||
<ContentPresenter Name="ToggleSwitchContent"
|
<ContentPresenter Name="WPFToggleSwitchContent"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
Content="{TemplateBinding Content}"
|
Content="{TemplateBinding Content}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
@ -38,11 +38,11 @@
|
|||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
<Trigger Property="IsChecked" Value="false">
|
<Trigger Property="IsChecked" Value="false">
|
||||||
<Trigger.ExitActions>
|
<Trigger.ExitActions>
|
||||||
<RemoveStoryboard BeginStoryboardName="ToggleSwitchLeft" />
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchLeft" />
|
||||||
<BeginStoryboard x:Name="ToggleSwitchRight">
|
<BeginStoryboard x:Name="WPFToggleSwitchRight">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
||||||
Storyboard.TargetName="ToggleSwitchButton"
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
||||||
Duration="0:0:0:0"
|
Duration="0:0:0:0"
|
||||||
From="0,0,0,0"
|
From="0,0,0,0"
|
||||||
To="28,0,0,0">
|
To="28,0,0,0">
|
||||||
@ -50,18 +50,18 @@
|
|||||||
</Storyboard>
|
</Storyboard>
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</Trigger.ExitActions>
|
</Trigger.ExitActions>
|
||||||
<Setter TargetName="ToggleSwitchButton"
|
<Setter TargetName="WPFToggleSwitchButton"
|
||||||
Property="Background"
|
Property="Background"
|
||||||
Value="#fff9f4f4"
|
Value="#fff9f4f4"
|
||||||
/>
|
/>
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsChecked" Value="true">
|
<Trigger Property="IsChecked" Value="true">
|
||||||
<Trigger.ExitActions>
|
<Trigger.ExitActions>
|
||||||
<RemoveStoryboard BeginStoryboardName="ToggleSwitchRight" />
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchRight" />
|
||||||
<BeginStoryboard x:Name="ToggleSwitchLeft">
|
<BeginStoryboard x:Name="WPFToggleSwitchLeft">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
||||||
Storyboard.TargetName="ToggleSwitchButton"
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
||||||
Duration="0:0:0:0"
|
Duration="0:0:0:0"
|
||||||
From="28,0,0,0"
|
From="28,0,0,0"
|
||||||
To="0,0,0,0">
|
To="0,0,0,0">
|
||||||
@ -69,7 +69,7 @@
|
|||||||
</Storyboard>
|
</Storyboard>
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</Trigger.ExitActions>
|
</Trigger.ExitActions>
|
||||||
<Setter TargetName="ToggleSwitchButton"
|
<Setter TargetName="WPFToggleSwitchButton"
|
||||||
Property="Background"
|
Property="Background"
|
||||||
Value="#ff060600"
|
Value="#ff060600"
|
||||||
/>
|
/>
|
||||||
@ -80,9 +80,9 @@
|
|||||||
</Setter>
|
</Setter>
|
||||||
</Style>
|
</Style>
|
||||||
</Window.Resources>
|
</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">
|
<Viewbox Stretch="Uniform" VerticalAlignment="Top">
|
||||||
<Grid Background="#777777" ShowGridLines="False" Name="MainGrid">
|
<Grid Background="#777777" ShowGridLines="False" Name="WPFMainGrid">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height=".1*"/>
|
<RowDefinition Height=".1*"/>
|
||||||
<RowDefinition Height=".9*"/>
|
<RowDefinition Height=".9*"/>
|
||||||
@ -91,14 +91,14 @@
|
|||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<DockPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
|
<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"/>
|
<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="Tab1BT"/>
|
<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="Tab2BT"/>
|
<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="Tab3BT"/>
|
<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="Tab4BT"/>
|
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100" Background="#555555" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab4BT"/>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
<TabControl Grid.Row="1" Padding="-1" Name="TabNav" Background="#222222">
|
<TabControl Grid.Row="1" Padding="-1" Name="WPFTabNav" Background="#222222">
|
||||||
<TabItem Header="Install" Visibility="Collapsed" Name="Tab1">
|
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
|
||||||
<Grid Background="#222222">
|
<Grid Background="#222222">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@ -108,36 +108,50 @@
|
|||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height=".10*"/>
|
||||||
|
<RowDefinition Height=".90*"/>
|
||||||
</Grid.RowDefinitions>
|
</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"/>
|
<Label Content="Browsers" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installbrave" Content="Brave" Margin="5,0"/>
|
<CheckBox Name="WPFInstallbrave" Content="Brave" Margin="5,0"/>
|
||||||
<CheckBox Name="Installchrome" Content="Chrome" Margin="5,0"/>
|
<CheckBox Name="WPFInstallchrome" Content="Chrome" Margin="5,0"/>
|
||||||
<CheckBox Name="Installchromium" Content="Chromium" Margin="5,0"/>
|
<CheckBox Name="WPFInstallchromium" Content="Chromium" Margin="5,0"/>
|
||||||
<CheckBox Name="Installedge" Content="Edge" Margin="5,0"/>
|
<CheckBox Name="WPFInstalledge" Content="Edge" Margin="5,0"/>
|
||||||
<CheckBox Name="Installfirefox" Content="Firefox" Margin="5,0"/>
|
<CheckBox Name="WPFInstallfirefox" Content="Firefox" Margin="5,0"/>
|
||||||
<CheckBox Name="Installlibrewolf" Content="LibreWolf" Margin="5,0"/>
|
<CheckBox Name="WPFInstalllibrewolf" Content="LibreWolf" Margin="5,0"/>
|
||||||
<CheckBox Name="Installtor" Content="Tor Browser" Margin="5,0"/>
|
<CheckBox Name="WPFInstalltor" Content="Tor Browser" Margin="5,0"/>
|
||||||
<CheckBox Name="Installvivaldi" Content="Vivaldi" Margin="5,0"/>
|
<CheckBox Name="WPFInstallvivaldi" Content="Vivaldi" Margin="5,0"/>
|
||||||
<CheckBox Name="Installwaterfox" Content="Waterfox" Margin="5,0"/>
|
<CheckBox Name="WPFInstallwaterfox" Content="Waterfox" Margin="5,0"/>
|
||||||
|
|
||||||
<Label Content="Communications" FontSize="16" Margin="5,0"/>
|
<Label Content="Communications" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installdiscord" Content="Discord" Margin="5,0"/>
|
<CheckBox Name="WPFInstalldiscord" Content="Discord" Margin="5,0"/>
|
||||||
<CheckBox Name="Installhexchat" Content="Hexchat" Margin="5,0"/>
|
<CheckBox Name="WPFInstallhexchat" Content="Hexchat" Margin="5,0"/>
|
||||||
<CheckBox Name="Installjami" Content="Jami" Margin="5,0"/>
|
<CheckBox Name="WPFInstalljami" Content="Jami" Margin="5,0"/>
|
||||||
<CheckBox Name="Installmatrix" Content="Matrix" Margin="5,0"/>
|
<CheckBox Name="WPFInstallmatrix" Content="Matrix" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsignal" Content="Signal" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsignal" Content="Signal" Margin="5,0"/>
|
||||||
<CheckBox Name="Installskype" Content="Skype" Margin="5,0"/>
|
<CheckBox Name="WPFInstallskype" Content="Skype" Margin="5,0"/>
|
||||||
<CheckBox Name="Installslack" Content="Slack" Margin="5,0"/>
|
<CheckBox Name="WPFInstallslack" Content="Slack" Margin="5,0"/>
|
||||||
<CheckBox Name="Installteams" Content="Teams" Margin="5,0"/>
|
<CheckBox Name="WPFInstallteams" Content="Teams" Margin="5,0"/>
|
||||||
<CheckBox Name="Installtelegram" Content="Telegram" Margin="5,0"/>
|
<CheckBox Name="WPFInstalltelegram" Content="Telegram" Margin="5,0"/>
|
||||||
<CheckBox Name="Installviber" Content="Viber" Margin="5,0"/>
|
<CheckBox Name="WPFInstallviber" Content="Viber" Margin="5,0"/>
|
||||||
<CheckBox Name="Installzoom" Content="Zoom" Margin="5,0"/>
|
<CheckBox Name="WPFInstallzoom" Content="Zoom" Margin="5,0"/>
|
||||||
</StackPanel>
|
</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"/>
|
<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="Installgit" Content="Git" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
|
<CheckBox Name="Installgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
|
||||||
<CheckBox Name="Installjava8" Content="OpenJDK Java 8" 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="Installjetbrains" Content="Jetbrains Toolbox" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnodejs" Content="NodeJS" Margin="5,0"/>
|
<CheckBox Name="Installnodejs" Content="NodeJS" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnodejslts" Content="NodeJS LTS" 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="Installpython3" Content="Python3" Margin="5,0"/>
|
||||||
|
<CheckBox Name="Installpostman" Content="Postman" Margin="5,0"/>
|
||||||
<CheckBox Name="Installrustlang" Content="Rust" Margin="5,0"/>
|
<CheckBox Name="Installrustlang" Content="Rust" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgolang" Content="GoLang" Margin="5,0"/>
|
<CheckBox Name="Installgolang" Content="GoLang" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsublime" Content="Sublime" Margin="5,0"/>
|
<CheckBox Name="Installsublime" Content="Sublime" Margin="5,0"/>
|
||||||
<CheckBox Name="Installunity" Content="Unity Game Engine" 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="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="Installvscode" Content="VS Code" Margin="5,0"/>
|
||||||
<CheckBox Name="Installvscodium" Content="VS Codium" Margin="5,0"/>
|
<CheckBox Name="Installvscodium" Content="VS Codium" Margin="5,0"/>
|
||||||
|
|
||||||
<Label Content="Document" FontSize="16" Margin="5,0"/>
|
<Label Content="Document" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installadobe" Content="Adobe Reader DC" Margin="5,0"/>
|
<CheckBox Name="WPFInstalladobe" Content="Adobe Reader DC" Margin="5,0"/>
|
||||||
<CheckBox Name="Installfoxpdf" Content="Foxit PDF" Margin="5,0"/>
|
<CheckBox Name="WPFInstallfoxpdf" Content="Foxit PDF" Margin="5,0"/>
|
||||||
<CheckBox Name="Installjoplin" Content="Joplin (FOSS Notes)" Margin="5,0"/>
|
<CheckBox Name="WPFInstalljoplin" Content="Joplin (FOSS Notes)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installlibreoffice" Content="LibreOffice" Margin="5,0"/>
|
<CheckBox Name="WPFInstalllibreoffice" Content="LibreOffice" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnotepadplus" Content="Notepad++" Margin="5,0"/>
|
<CheckBox Name="WPFInstallnotepadplus" Content="Notepad++" Margin="5,0"/>
|
||||||
<CheckBox Name="Installobsidian" Content="Obsidian" Margin="5,0"/>
|
<CheckBox Name="WPFInstallobsidian" Content="Obsidian" Margin="5,0"/>
|
||||||
<CheckBox Name="Installonlyoffice" Content="ONLYOffice Desktop" Margin="5,0"/>
|
<CheckBox Name="WPFInstallonlyoffice" Content="ONLYOffice Desktop" Margin="5,0"/>
|
||||||
<CheckBox Name="Installopenoffice" Content="Apache OpenOffice" Margin="5,0"/>
|
<CheckBox Name="WPFInstallopenoffice" Content="Apache OpenOffice" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsumatra" Content="Sumatra PDF" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsumatra" Content="Sumatra PDF" Margin="5,0"/>
|
||||||
<CheckBox Name="Installwinmerge" Content="WinMerge" Margin="5,0"/>
|
<CheckBox Name="WPFInstallwinmerge" Content="WinMerge" Margin="5,0"/>
|
||||||
|
|
||||||
</StackPanel>
|
</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"/>
|
<Label Content="Games" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installbluestacks" Content="Bluestacks" Margin="5,0"/>
|
<CheckBox Name="WPFInstallbluestacks" Content="Bluestacks" Margin="5,0"/>
|
||||||
<CheckBox Name="Installepicgames" Content="Epic Games Launcher" Margin="5,0"/>
|
<CheckBox Name="WPFInstallepicgames" Content="Epic Games Launcher" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgog" Content="GOG Galaxy" Margin="5,0"/>
|
<CheckBox Name="WPFInstallgog" Content="GOG Galaxy" Margin="5,0"/>
|
||||||
<CheckBox Name="Installorigin" Content="Origin" Margin="5,0"/>
|
<CheckBox Name="WPFInstallorigin" Content="Origin" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsteam" Content="Steam" 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"/>
|
<Label Content="Pro Tools" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installadvancedip" Content="Advanced IP Scanner" Margin="5,0"/>
|
<CheckBox Name="WPFInstalladvancedip" Content="Advanced IP Scanner" Margin="5,0"/>
|
||||||
<CheckBox Name="Installmremoteng" Content="mRemoteNG" Margin="5,0"/>
|
<CheckBox Name="WPFInstallmremoteng" Content="mRemoteNG" Margin="5,0"/>
|
||||||
<CheckBox Name="Installputty" Content="Putty" Margin="5,0"/>
|
<CheckBox Name="WPFInstallputty" Content="Putty" Margin="5,0"/>
|
||||||
<CheckBox Name="Installrustdesk" Content="Rust Remote Desktop (FOSS)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallrustdesk" Content="Rust Remote Desktop (FOSS)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsimplewall" Content="SimpleWall" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsimplewall" Content="SimpleWall" Margin="5,0"/>
|
||||||
<CheckBox Name="Installscp" Content="WinSCP" Margin="5,0"/>
|
<CheckBox Name="WPFInstallscp" Content="WinSCP" Margin="5,0"/>
|
||||||
<CheckBox Name="Installwireshark" Content="WireShark" Margin="5,0"/>
|
<CheckBox Name="WPFInstallwireshark" Content="WireShark" Margin="5,0"/>
|
||||||
|
|
||||||
<Label Content="Microsoft Tools" FontSize="16" 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="WPFInstalldotnet3" Content=".NET Desktop Runtime 3.1" Margin="5,0"/>
|
||||||
<CheckBox Name="Installdotnet5" Content=".NET Desktop Runtime 5" Margin="5,0"/>
|
<CheckBox Name="WPFInstalldotnet5" Content=".NET Desktop Runtime 5" Margin="5,0"/>
|
||||||
<CheckBox Name="Installdotnet6" Content=".NET Desktop Runtime 6" Margin="5,0"/>
|
<CheckBox Name="WPFInstalldotnet6" Content=".NET Desktop Runtime 6" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnuget" Content="Nuget" Margin="5,0"/>
|
<CheckBox Name="WPFInstallnuget" Content="Nuget" Margin="5,0"/>
|
||||||
<CheckBox Name="Installonedrive" Content="OneDrive" Margin="5,0"/>
|
<CheckBox Name="WPFInstallonedrive" Content="OneDrive" Margin="5,0"/>
|
||||||
<CheckBox Name="Installpowershell" Content="PowerShell" Margin="5,0"/>
|
<CheckBox Name="WPFInstallpowershell" Content="PowerShell" Margin="5,0"/>
|
||||||
<CheckBox Name="Installpowertoys" Content="Powertoys" Margin="5,0"/>
|
<CheckBox Name="WPFInstallpowertoys" Content="Powertoys" Margin="5,0"/>
|
||||||
<CheckBox Name="Installprocessmonitor" Content="SysInternals Process Monitor" Margin="5,0"/>
|
<CheckBox Name="WPFInstallprocessmonitor" Content="SysInternals Process Monitor" Margin="5,0"/>
|
||||||
<CheckBox Name="Installvc2015_64" Content="Visual C++ 2015-2022 64-bit" Margin="5,0"/>
|
<CheckBox Name="WPFInstallvc2015_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="WPFInstallvc2015_32" Content="Visual C++ 2015-2022 32-bit" Margin="5,0"/>
|
||||||
<CheckBox Name="Installterminal" Content="Windows Terminal" Margin="5,0"/>
|
<CheckBox Name="WPFInstallterminal" Content="Windows Terminal" Margin="5,0"/>
|
||||||
|
|
||||||
|
|
||||||
</StackPanel>
|
</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"/>
|
<Label Content="Multimedia Tools" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installaudacity" Content="Audacity" Margin="5,0"/>
|
<CheckBox Name="WPFInstallaudacity" Content="Audacity" Margin="5,0"/>
|
||||||
<CheckBox Name="Installblender" Content="Blender (3D Graphics)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallblender" Content="Blender (3D Graphics)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installcider" Content="Cider (FOSS Music Player)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallcider" Content="Cider (FOSS Music Player)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installeartrumpet" Content="Eartrumpet (Audio)" Margin="5,0"/>
|
<CheckBox Name="WPFInstalleartrumpet" Content="Eartrumpet (Audio)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installflameshot" Content="Flameshot (Screenshots)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallflameshot" Content="Flameshot (Screenshots)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installfoobar" Content="Foobar2000 (Music Player)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallfoobar" Content="Foobar2000 (Music Player)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installhandbrake" Content="HandBrake" Margin="5,0"/>
|
<CheckBox Name="WPFInstallhandbrake" Content="HandBrake" Margin="5,0"/>
|
||||||
<CheckBox Name="Installimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installinkscape" Content="Inkscape" Margin="5,0"/>
|
<CheckBox Name="WPFInstallinkscape" Content="Inkscape" Margin="5,0"/>
|
||||||
<CheckBox Name="Installitunes" Content="iTunes" Margin="5,0"/>
|
<CheckBox Name="WPFInstallitunes" Content="iTunes" Margin="5,0"/>
|
||||||
<CheckBox Name="Installkdenlive" Content="Kdenlive (Video Editor)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallkdenlive" Content="Kdenlive (Video Editor)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installkodi" Content="Kodi Media Center" Margin="5,0"/>
|
<CheckBox Name="WPFInstallkodi" Content="Kodi Media Center" Margin="5,0"/>
|
||||||
<CheckBox Name="Installklite" Content="K-Lite Codec Standard" Margin="5,0"/>
|
<CheckBox Name="WPFInstallklite" Content="K-Lite Codec Standard" Margin="5,0"/>
|
||||||
<CheckBox Name="Installkrita" Content="Krita (Image Editor)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallkrita" Content="Krita (Image Editor)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installmpc" Content="Media Player Classic (Video Player)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallmpc" Content="Media Player Classic (Video Player)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installobs" Content="OBS Studio" Margin="5,0"/>
|
<CheckBox Name="WPFInstallobs" Content="OBS Studio" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnglide" Content="nGlide (3dfx compatibility)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallnglide" Content="nGlide (3dfx compatibility)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsharex" Content="ShareX (Screenshots)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsharex" Content="ShareX (Screenshots)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installstrawberry" Content="Strawberry (Music Player)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallstrawberry" Content="Strawberry (Music Player)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installvlc" Content="VLC (Video Player)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallvlc" Content="VLC (Video Player)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
|
||||||
</StackPanel>
|
</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"/>
|
<Label Content="Utilities" FontSize="16" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsevenzip" Content="7-Zip" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsevenzip" Content="7-Zip" Margin="5,0"/>
|
||||||
<CheckBox Name="Installalacritty" Content="Alacritty Terminal" Margin="5,0"/>
|
<CheckBox Name="WPFInstallalacritty" Content="Alacritty Terminal" Margin="5,0"/>
|
||||||
<CheckBox Name="Installanydesk" Content="AnyDesk" Margin="5,0"/>
|
<CheckBox Name="WPFInstallanydesk" Content="AnyDesk" Margin="5,0"/>
|
||||||
<CheckBox Name="Installautohotkey" Content="AutoHotkey" Margin="5,0"/>
|
<CheckBox Name="WPFInstallautohotkey" Content="AutoHotkey" Margin="5,0"/>
|
||||||
<CheckBox Name="Installbitwarden" Content="Bitwarden" Margin="5,0"/>
|
<CheckBox Name="WPFInstallbitwarden" Content="Bitwarden" Margin="5,0"/>
|
||||||
<CheckBox Name="Installcpuz" Content="CPU-Z" Margin="5,0"/>
|
<CheckBox Name="WPFInstallcpuz" Content="CPU-Z" Margin="5,0"/>
|
||||||
<CheckBox Name="Installetcher" Content="Etcher USB Creator" Margin="5,0"/>
|
<CheckBox Name="WPFInstalldeluge" Content="Deluge" Margin="5,0"/>
|
||||||
<CheckBox Name="Installesearch" Content="Everything Search" Margin="5,0"/>
|
<CheckBox Name="WPFInstalletcher" Content="Etcher USB Creator" Margin="5,0"/>
|
||||||
<CheckBox Name="Installflux" Content="f.lux Redshift" Margin="5,0"/>
|
<CheckBox Name="WPFInstallesearch" Content="Everything Search" Margin="5,0"/>
|
||||||
<CheckBox Name="Installgpuz" Content="GPU-Z" Margin="5,0"/>
|
<CheckBox Name="WPFInstallflux" Content="f.lux Redshift" Margin="5,0"/>
|
||||||
<CheckBox Name="Installglaryutilities" Content="Glary Utilities" Margin="5,0"/>
|
<CheckBox Name="WPFInstallgpuz" Content="GPU-Z" Margin="5,0"/>
|
||||||
<CheckBox Name="Installhwinfo" Content="HWInfo" Margin="5,0"/>
|
<CheckBox Name="WPFInstallglaryutilities" Content="Glary Utilities" Margin="5,0"/>
|
||||||
<CheckBox Name="Installidm" Content="Internet Download Manager" Margin="5,0"/>
|
<CheckBox Name="WPFInstallhwinfo" Content="HWInfo" Margin="5,0"/>
|
||||||
<CheckBox Name="Installjdownloader" Content="J Download Manager" Margin="5,0"/>
|
<CheckBox Name="WPFInstallidm" Content="Internet Download Manager" Margin="5,0"/>
|
||||||
<CheckBox Name="Installkeepass" Content="KeePassXC" Margin="5,0"/>
|
<CheckBox Name="WPFInstalljdownloader" Content="J Download Manager" Margin="5,0"/>
|
||||||
<CheckBox Name="Installmalwarebytes" Content="MalwareBytes" Margin="5,0"/>
|
<CheckBox Name="WPFInstallkeepass" Content="KeePassXC" Margin="5,0"/>
|
||||||
<CheckBox Name="Installnvclean" Content="NVCleanstall" Margin="5,0"/>
|
<CheckBox Name="WPFInstallmalwarebytes" Content="MalwareBytes" Margin="5,0"/>
|
||||||
<CheckBox Name="Installopenshell" Content="Open Shell (Start Menu)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallnvclean" Content="NVCleanstall" Margin="5,0"/>
|
||||||
<CheckBox Name="Installprocesslasso" Content="Process Lasso" Margin="5,0"/>
|
<CheckBox Name="WPFInstallopenshell" Content="Open Shell (Start Menu)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installqbittorrent" Content="qBittorrent" Margin="5,0"/>
|
<CheckBox Name="WPFInstallprocesslasso" Content="Process Lasso" Margin="5,0"/>
|
||||||
<CheckBox Name="Installrevo" Content="RevoUninstaller" Margin="5,0"/>
|
<CheckBox Name="WPFInstallqbittorrent" Content="qBittorrent" Margin="5,0"/>
|
||||||
<CheckBox Name="Installrufus" Content="Rufus Imager" Margin="5,0"/>
|
<CheckBox Name="WPFInstallrevo" Content="RevoUninstaller" Margin="5,0"/>
|
||||||
<CheckBox Name="Installsandboxie" Content="Sandboxie Plus" Margin="5,0"/>
|
<CheckBox Name="WPFInstallrufus" Content="Rufus Imager" Margin="5,0"/>
|
||||||
<CheckBox Name="Installshell" Content="Shell (Expanded Context Menu)" Margin="5,0"/>
|
<CheckBox Name="WPFInstallsandboxie" Content="Sandboxie Plus" Margin="5,0"/>
|
||||||
<CheckBox Name="Installteamviewer" Content="TeamViewer" Margin="5,0"/>
|
<CheckBox Name="WPFInstallshell" Content="Shell (Expanded Context Menu)" Margin="5,0"/>
|
||||||
<CheckBox Name="Installttaskbar" Content="Translucent Taskbar" Margin="5,0"/>
|
<CheckBox Name="WPFInstallteamviewer" Content="TeamViewer" Margin="5,0"/>
|
||||||
<CheckBox Name="Installtreesize" Content="TreeSize Free" Margin="5,0"/>
|
<CheckBox Name="WPFInstallttaskbar" Content="Translucent Taskbar" Margin="5,0"/>
|
||||||
<CheckBox Name="Installtwinkletray" Content="Twinkle Tray" Margin="5,0"/>
|
<CheckBox Name="WPFInstalltreesize" Content="TreeSize Free" Margin="5,0"/>
|
||||||
<CheckBox Name="Installwindirstat" Content="WinDirStat" Margin="5,0"/>
|
<CheckBox Name="WPFInstalltwinkletray" Content="Twinkle Tray" Margin="5,0"/>
|
||||||
<CheckBox Name="Installwiztree" Content="WizTree" Margin="5,0"/>
|
<CheckBox Name="WPFInstallwindirstat" Content="WinDirStat" 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"/>
|
<CheckBox Name="WPFInstallwiztree" Content="WizTree" Margin="5,0"/>
|
||||||
<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="WPFInstallwinrar" Content="WinRAR" Margin="5,0"/>
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Tweaks" Visibility="Collapsed" Name="Tab2">
|
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
|
||||||
<Grid Background="#333333">
|
<Grid Background="#333333">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@ -279,15 +295,16 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
|
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
|
||||||
<Label Content="Recommended Selections:" FontSize="17" VerticalAlignment="Center"/>
|
<Label Content="Recommended Selections:" FontSize="17" VerticalAlignment="Center"/>
|
||||||
<Button Name="desktop" Content=" Desktop " Margin="7"/>
|
<Button Name="WPFdesktop" Content=" Desktop " Margin="7"/>
|
||||||
<Button Name="laptop" Content=" Laptop " Margin="7"/>
|
<Button Name="WPFlaptop" Content=" Laptop " Margin="7"/>
|
||||||
<Button Name="minimal" Content=" Minimal " Margin="7"/>
|
<Button Name="WPFminimal" Content=" Minimal " Margin="7"/>
|
||||||
<Button Name="clear" Content=" Clear " Margin="7"/>
|
<Button Name="WPFclear" Content=" Clear " Margin="7"/>
|
||||||
|
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="7"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
|
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
|
||||||
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
|
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
|
||||||
<Button Name="import" Content=" Import " Margin="7"/>
|
<Button Name="WPFimport" Content=" Import " Margin="7"/>
|
||||||
<Button Name="export" Content=" Export " Margin="7"/>
|
<Button Name="WPFexport" Content=" Export " Margin="7"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
|
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
|
||||||
<TextBlock Padding="10">
|
<TextBlock Padding="10">
|
||||||
@ -297,50 +314,52 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
|
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
|
||||||
<Label FontSize="16" Content="Essential Tweaks"/>
|
<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="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="EssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
|
<CheckBox Name="WPFEssTweaksOO" 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="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="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="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="EssTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/>
|
<CheckBox Name="WPFEssTweaksAH" 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="WPFEssTweaksDeleteTempFiles" 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="WPFEssTweaksDiskCleanup" 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="WPFEssTweaksLoc" 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="WPFEssTweaksHome" 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="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="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="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="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="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="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="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" />
|
<Label Content="Dark Theme" />
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<Label Content="Off" />
|
<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" />
|
<Label Content="On" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Label Content="Performance Plans" />
|
<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="WPFAddUltPerf" 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="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>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
|
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
|
||||||
<Label FontSize="16" Content="Misc. Tweaks"/>
|
<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="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="MiscTweaksLapPower" Content="Enable Power Throttling" Margin="5,0" ToolTip="ONLY FOR LAPTOPS! Do not use on a desktop."/>
|
<CheckBox Name="WPFMiscTweaksLapPower" 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="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="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="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="MiscTweaksExt" Content="Show File Extensions" Margin="5,0"/>
|
<CheckBox Name="WPFMiscTweaksExt" 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="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="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="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="MiscTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/>
|
<CheckBox Name="WPFMiscTweaksDisableUAC" 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="WPFMiscTweaksDisableNotifications" Content="Disable Notification Tray/Calendar" Margin="5,0" ToolTip="Disables all Notifications INCLUDING Calendar"/>
|
||||||
<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="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="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="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="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="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="EssTweaksRemoveEdge" Content="Remove Microsoft Edge" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/>
|
<CheckBox Name="WPFEssTweaksRemoveEdge" 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="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="MiscTweaksDisableMouseAcceleration" Content="Disable Mouse Acceleration" Margin="5,0" ToolTip="Disables Mouse Acceleration."/>
|
<CheckBox Name="WPFMiscTweaksDisableMouseAcceleration" 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="WPFMiscTweaksEnableMouseAcceleration" Content="Enable Mouse Acceleration" Margin="5,0" ToolTip="Enables Mouse Acceleration."/>
|
||||||
<Label Content="DNS" />
|
<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 IsSelected="True" Content = "Default"/>
|
||||||
<ComboBoxItem Content = "DHCP"/>
|
<ComboBoxItem Content = "DHCP"/>
|
||||||
<ComboBoxItem Content = "Google"/>
|
<ComboBoxItem Content = "Google"/>
|
||||||
@ -351,12 +370,12 @@
|
|||||||
<ComboBoxItem Content = "Open_DNS"/>
|
<ComboBoxItem Content = "Open_DNS"/>
|
||||||
<ComboBoxItem Content = "Quad9"/>
|
<ComboBoxItem Content = "Quad9"/>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
<Button Name="tweaksbutton" Background="AliceBlue" Content="Run 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="undoall" Background="AliceBlue" Content="Undo 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>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Config" Visibility="Collapsed" Name="Tab3">
|
<TabItem Header="Config" Visibility="Collapsed" Name="WPFTab3">
|
||||||
<Grid Background="#444444">
|
<Grid Background="#444444">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@ -364,29 +383,29 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
|
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
|
||||||
<Label Content="Features" FontSize="16"/>
|
<Label Content="Features" FontSize="16"/>
|
||||||
<CheckBox Name="Featuresdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
|
<CheckBox Name="WPFFeaturesdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
|
||||||
<CheckBox Name="Featureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
|
<CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
|
||||||
<CheckBox Name="Featureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
|
<CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
|
||||||
<CheckBox Name="Featurenfs" Content="NFS - Network File System" Margin="5,0"/>
|
<CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/>
|
||||||
<CheckBox Name="Featurewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
|
<CheckBox Name="WPFFeaturewsl" 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"/>
|
<Button Name="WPFFeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
|
||||||
<Label Content="Fixes" FontSize="16"/>
|
<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="WPFPanelAutologin" 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="WPFFixesUpdate" 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="WPFPanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
|
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
|
||||||
<Label Content="Legacy Windows Panels" FontSize="16"/>
|
<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="WPFPanelcontrol" 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="WPFPanelnetwork" 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="WPFPanelpower" 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="WPFPanelsound" 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="WPFPanelsystem" 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="WPFPaneluser" FontSize="14" Background="AliceBlue" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="Updates" Visibility="Collapsed" Name="Tab4">
|
<TabItem Header="Updates" Visibility="Collapsed" Name="WPFTab4">
|
||||||
<Grid Background="#555555">
|
<Grid Background="#555555">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@ -394,15 +413,15 @@
|
|||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
|
<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>
|
<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>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
|
<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>
|
<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>
|
||||||
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
|
<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 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"/>
|
<TextBlock Text=" " Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300"/>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user