From 1d401b2e02874b25443e9718a7019d2577b2d69b Mon Sep 17 00:00:00 2001 From: Chris Titus Date: Wed, 11 Mar 2026 10:29:38 -0500 Subject: [PATCH] initial fix (#4178) --- .../userguide/getting-started/_index.md | 2 +- functions/public/Invoke-WPFtweaksbutton.ps1 | 61 +++++++++++++------ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/docs/content/userguide/getting-started/_index.md b/docs/content/userguide/getting-started/_index.md index f8a8ef40..80b50b30 100644 --- a/docs/content/userguide/getting-started/_index.md +++ b/docs/content/userguide/getting-started/_index.md @@ -290,4 +290,4 @@ If you need assistance: | Change DNS | Tweaks tab | DNS section | | Open Control Panel | Config tab | Legacy Windows Panels | -Happy optimizing! \ No newline at end of file +Happy optimizing! diff --git a/functions/public/Invoke-WPFtweaksbutton.ps1 b/functions/public/Invoke-WPFtweaksbutton.ps1 index 2d80b201..192ca284 100644 --- a/functions/public/Invoke-WPFtweaksbutton.ps1 +++ b/functions/public/Invoke-WPFtweaksbutton.ps1 @@ -13,10 +13,14 @@ function Invoke-WPFtweaksbutton { } $Tweaks = $sync.selectedTweaks + $dnsProvider = $sync["WPFchangedns"].text + $restorePointTweak = "WPFTweaksRestorePoint" + $restorePointSelected = $Tweaks -contains $restorePointTweak + $tweaksToRun = @($Tweaks | Where-Object { $_ -ne $restorePointTweak }) + $totalSteps = [Math]::Max($Tweaks.Count, 1) + $completedSteps = 0 - Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text - - if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default") { + if ($tweaks.count -eq 0 -and $dnsProvider -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 @@ -24,24 +28,53 @@ function Invoke-WPFtweaksbutton { Write-Debug "Number of tweaks to process: $($Tweaks.Count)" + if ($restorePointSelected) { + $sync.ProcessRunning = $true + + if ($Tweaks.Count -eq 1) { + Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" } + } else { + Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" } + } + + Set-WinUtilProgressBar -Label "Creating restore point" -Percent 0 + Invoke-WinUtilTweaks $restorePointTweak + $completedSteps = 1 + + if ($tweaksToRun.Count -eq 0 -and $dnsProvider -eq "Default") { + Set-WinUtilProgressBar -Label "Tweaks finished" -Percent 100 + $sync.ProcessRunning = $false + Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" } + Write-Host "=================================" + Write-Host "-- Tweaks are Finished ---" + Write-Host "=================================" + return + } + } + # The leading "," in the ParameterList is necessary because we only provide one argument and powershell cannot be convinced that we want a nested loop with only one argument otherwise - $handle = Invoke-WPFRunspace -ParameterList @(,("tweaks",$tweaks)) -ScriptBlock { - param($tweaks) + $handle = Invoke-WPFRunspace -ParameterList @(("tweaks", $tweaksToRun), ("dnsProvider", $dnsProvider), ("completedSteps", $completedSteps), ("totalSteps", $totalSteps)) -ScriptBlock { + param($tweaks, $dnsProvider, $completedSteps, $totalSteps) Write-Debug "Inside Number of tweaks to process: $($Tweaks.Count)" $sync.ProcessRunning = $true - if ($Tweaks.count -eq 1) { + if ($completedSteps -eq 0) { + if ($Tweaks.count -eq 1) { Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" } - } else { + } else { Invoke-WPFUIThread -ScriptBlock{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" } + } } - # Execute other selected tweaks - for ($i = 0; $i -lt $Tweaks.Count; $i++) { - Set-WinUtilProgressBar -Label "Applying $($tweaks[$i])" -Percent ($i / $tweaks.Count * 100) + Set-WinUtilDNS -DNSProvider $dnsProvider + + for ($i = 0; $i -lt $tweaks.Count; $i++) { + Set-WinUtilProgressBar -Label "Applying $($tweaks[$i])" -Percent ($completedSteps / $totalSteps * 100) Invoke-WinUtilTweaks $tweaks[$i] - Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -value ($i/$Tweaks.Count) } + $completedSteps++ + $progress = $completedSteps / $totalSteps + Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -value $progress } } Set-WinUtilProgressBar -Label "Tweaks finished" -Percent 100 $sync.ProcessRunning = $false @@ -49,11 +82,5 @@ function Invoke-WPFtweaksbutton { Write-Host "=================================" Write-Host "-- Tweaks are Finished ---" Write-Host "=================================" - - # $ButtonType = [System.Windows.MessageBoxButton]::OK - # $MessageboxTitle = "Tweaks are Finished " - # $Messageboxbody = ("Done") - # $MessageIcon = [System.Windows.MessageBoxImage]::Information - # [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon) } }