diff --git a/Winget-AutoUpdate/Winget-Upgrade.ps1 b/Winget-AutoUpdate/Winget-Upgrade.ps1 index 2a0c6ee..0852a31 100644 --- a/Winget-AutoUpdate/Winget-Upgrade.ps1 +++ b/Winget-AutoUpdate/Winget-Upgrade.ps1 @@ -49,34 +49,29 @@ if (Test-Network) { #Get Current Version $WAUCurrentVersion = $WAUConfig.DisplayVersion Write-Log "WAU current version: $WAUCurrentVersion" - #Check if WAU update feature is enabled or not - $WAUDisableAutoUpdate = $WAUConfig.WAU_DisableAutoUpdate - #If yes then check WAU update - if ($WAUDisableAutoUpdate -eq 1) { - Write-Log "WAU AutoUpdate is Disabled." "Grey" - } - else { - Write-Log "WAU AutoUpdate is Enabled." "Green" - #Get Available Version - $WAUAvailableVersion = Get-WAUAvailableVersion - #Compare - if ([version]$WAUAvailableVersion -gt [version]$WAUCurrentVersion) { - #If new version is available, update it - Write-Log "WAU Available version: $WAUAvailableVersion" "Yellow" - if ($IsSystem) { + if ($IsSystem) { + #Check if WAU update feature is enabled or not + $WAUDisableAutoUpdate = $WAUConfig.WAU_DisableAutoUpdate + #If yes then check WAU update if System + if ($WAUDisableAutoUpdate -eq 1) { + Write-Log "WAU AutoUpdate is Disabled." "Grey" + } + else { + Write-Log "WAU AutoUpdate is Enabled." "Green" + #Get Available Version + $WAUAvailableVersion = Get-WAUAvailableVersion + #Compare + if ([version]$WAUAvailableVersion -gt [version]$WAUCurrentVersion) { + #If new version is available, update it + Write-Log "WAU Available version: $WAUAvailableVersion" "Yellow" Update-WAU } else { - Write-Log "WAU Needs to run as system to update" "Yellow" + Write-Log "WAU is up to date." "Green" } } - else { - Write-Log "WAU is up to date." "Green" - } - } - if ($IsSystem) { - #Get External ListPath + #Get External ListPath if System if ($WAUConfig.WAU_ListPath) { Write-Log "WAU uses External Lists from: $($WAUConfig.WAU_ListPath)" $NewList = Test-ListPath $WAUConfig.WAU_ListPath $WAUConfig.WAU_UseWhiteList $WAUConfig.InstallLocation @@ -168,24 +163,23 @@ if (Test-Network) { if ($InstallOK -eq 0) { Write-Log "No new update." "Green" } - } -} -#Run WAU in user context if currently as system -if ($IsSystem) { + #Run WAU in user context if currently as system and the user task exist + $UserScheduledTask = Get-ScheduledTask -TaskName "Winget-AutoUpdate-UserContext" -ErrorAction SilentlyContinue + if ($IsSystem -and $UserScheduledTask) { - #Get Winget system apps to excape them befor running user context - Get-WingetSystemApps + #Get Winget system apps to excape them befor running user context + Write-Log "Get list of installed Winget apps in System context..." + Get-WingetSystemApps - #Run user context scheduled task - $UserScheduledTask = Get-ScheduledTask -TaskName "Winget-AutoUpdate-UserContext" -ErrorAction SilentlyContinue - if ($UserScheduledTask) { - Write-Log "Starting WAU in User context" - Start-ScheduledTask $UserScheduledTask.TaskName -ErrorAction SilentlyContinue - Exit 0 - } - else { - Write-Log "User context execution not installed" + #Run user context scheduled task + Write-Log "Starting WAU in User context" + Start-ScheduledTask $UserScheduledTask.TaskName -ErrorAction SilentlyContinue + Exit 0 + } + elseif (!$UserScheduledTask){ + Write-Log "User context execution not installed" + } } }