@@ -204,16 +204,41 @@ runs:
204
204
exit 0
205
205
}
206
206
207
+ # Check if we need to handle a downgrade scenario
208
+ $isDowngrade = $false
209
+ if ($detected -and $detected -ne $env:REQUESTED_VERSION) {
210
+ try {
211
+ $detectedVersion = [version]$detected
212
+ $requestedVersion = [version]$env:REQUESTED_VERSION
213
+ if ($detectedVersion -gt $requestedVersion) {
214
+ Write-Host "Downgrade detected: $detected → $($env:REQUESTED_VERSION)"
215
+ $isDowngrade = $true
216
+ } else {
217
+ Write-Host "Upgrade detected: $detected → $($env:REQUESTED_VERSION)"
218
+ }
219
+ } catch {
220
+ Write-Host "Warning: Could not compare versions, proceeding with installation"
221
+ }
222
+ }
223
+
207
224
$msi = "PowerShell-$($env:REQUESTED_VERSION)-win-x64.msi"
208
225
$url = "https://github.com/PowerShell/PowerShell/releases/download/v$($env:REQUESTED_VERSION)/$msi"
209
226
Write-Host "Downloading from: $url"
210
227
211
- Write-Host "Starting installation of PowerShell [$($env:REQUESTED_VERSION)]..."
212
-
213
228
if (-not (Invoke-WebRequest -Uri $url -OutFile $msi -UseBasicParsing -PassThru)) {
214
229
Write-Host "Error: Failed to download PowerShell package"
215
230
exit 1
216
231
}
217
- Start-Process msiexec.exe -ArgumentList '/i', $msi, '/quiet', '/norestart' -Wait
232
+
233
+ Write-Host "Starting installation of PowerShell [$($env:REQUESTED_VERSION)]..."
234
+
235
+ if ($isDowngrade) {
236
+ # For downgrades, use force reinstall to overwrite the existing version
237
+ Write-Host "Using force reinstall for downgrade scenario..."
238
+ Start-Process msiexec.exe -ArgumentList '/f', $msi, '/quiet', '/norestart' -Wait
239
+ } else {
240
+ # For upgrades or fresh installs, use regular install
241
+ Start-Process msiexec.exe -ArgumentList '/i', $msi, '/quiet', '/norestart' -Wait
242
+ }
218
243
219
244
Write-Host "Installation complete. PowerShell [$($env:REQUESTED_VERSION)] is now available."
0 commit comments