diff --git a/winutil.ps1 b/winutil.ps1 index ebd97cd6..cab34677 100644 --- a/winutil.ps1 +++ b/winutil.ps1 @@ -8,7 +8,7 @@ Author : Chris Titus @christitustech Runspace Author: @DeveloperDurp GitHub : https://github.com/ChrisTitusTech - Version : 24.07.16 + Version : 24.07.17 #> param ( [switch]$Debug, @@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms # Variable to sync between runspaces $sync = [Hashtable]::Synchronized(@{}) $sync.PSScriptRoot = $PSScriptRoot -$sync.version = "24.07.16" +$sync.version = "24.07.17" $sync.configs = @{} $sync.ProcessRunning = $false @@ -1001,18 +1001,17 @@ Function Install-WinUtilProgramWinget { [Parameter(Position=1)] [String]$manage = "Installing" ) - + $x = 0 $count = $ProgramsToInstall.Count Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0 Write-Host "===========================================" Write-Host "-- Configuring winget packages ---" Write-Host "===========================================" - for ($i = 0; $i -le $ProgramsToInstall.Count; $i++) { - $Program = $ProgramsToInstall[$i] + Foreach ($Program in $ProgramsToInstall){ $failedPackages = @() - Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($i + 1) of $count" -PercentComplete $(($i/$count) * 100) - if($manage -eq "Installing") { + Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($x + 1) of $count" -PercentComplete $($x/$count*100) + if($manage -eq "Installing"){ # Install package via ID, if it fails try again with different scope and then with an unelevated prompt. # Since Install-WinGetPackage might not be directly available, we use winget install command as a workaround. # Winget, not all installers honor any of the following: System-wide, User Installs, or Unelevated Prompt OR Silent Install Mode. @@ -1020,21 +1019,21 @@ Function Install-WinUtilProgramWinget { Write-Host "Starting install of $($Program.winget) with winget." try { $status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode - if($status -eq 0) { + if($status -eq 0){ Write-Host "$($Program.winget) installed successfully." continue } - if ($status -eq -1978335189) { + if ($status -eq -1978335189){ Write-Host "$($Program.winget) No applicable update found" continue } Write-Host "Attempt with User scope" $status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --scope user --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode - if($status -eq 0) { + if($status -eq 0){ Write-Host "$($Program.winget) installed successfully with User scope." continue } - if ($status -eq -1978335189) { + if ($status -eq -1978335189){ Write-Host "$($Program.winget) No applicable update found" continue } @@ -1048,11 +1047,11 @@ Function Install-WinUtilProgramWinget { } else { Write-Host "Skipping installation with specific user credentials." } - if($status -eq 0) { + if($status -eq 0){ Write-Host "$($Program.winget) installed successfully with User prompt." continue } - if ($status -eq -1978335189) { + if ($status -eq -1978335189){ Write-Host "$($Program.winget) No applicable update found" continue } @@ -1061,11 +1060,11 @@ Function Install-WinUtilProgramWinget { $failedPackages += $Program } } - elseif($manage -eq "Uninstalling") { + if($manage -eq "Uninstalling"){ # Uninstall package via ID using winget directly. try { $status = $(Start-Process -FilePath "winget" -ArgumentList "uninstall --id $($Program.winget) --silent" -Wait -PassThru -NoNewWindow).ExitCode - if($status -ne 0) { + if($status -ne 0){ Write-Host "Failed to uninstall $($Program.winget)." } else { Write-Host "$($Program.winget) uninstalled successfully." @@ -1076,9 +1075,7 @@ Function Install-WinUtilProgramWinget { $failedPackages += $Program } } - else { - throw "[Install-WinUtilProgramWinget] Invalid Value for Parameter 'manage', Provided Value is: $manage" - } + $X++ } Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed return $failedPackages;