Fix windev prerelease version during elevation (#4908)

* Fix prerelease elevation cleanup

* Support restricted PowerShell in windev

* Use current PowerShell engine in windev
This commit is contained in:
Omar
2026-08-03 19:10:49 -05:00
committed by GitHub
parent 97e0711034
commit 97f2ad6e98
2 changed files with 32 additions and 2 deletions
+24
View File
@@ -517,7 +517,31 @@ $sync["WPFWin11ISOCleanResetButton"].Add_Click({
Invoke-WinUtilISOCleanAndReset Invoke-WinUtilISOCleanAndReset
}) })
function Remove-WinUtilTempScript {
<#
.SYNOPSIS
Removes the temporary script downloaded by windev.ps1.
.DESCRIPTION
Deletes the current script only when it is a winutil-*.ps1 file in
the system temporary directory. This preserves normal file-backed
and in-memory WinUtil launches.
#>
$scriptPath = $PSCommandPath
$tempPath = [IO.Path]::GetFullPath([IO.Path]::GetTempPath()).TrimEnd('\')
if (
$scriptPath -and
[IO.Path]::GetDirectoryName($scriptPath) -eq $tempPath -and
[IO.Path]::GetFileName($scriptPath) -like 'winutil-*.ps1'
) {
Remove-Item -LiteralPath $scriptPath -Force -ErrorAction SilentlyContinue
}
}
# ────────────────────────────────────────────────────────────────────────────── # ──────────────────────────────────────────────────────────────────────────────
$sync["Form"].ShowDialog() | out-null $sync["Form"].ShowDialog() | out-null
Remove-WinUtilTempScript
Stop-Transcript Stop-Transcript
+8 -2
View File
@@ -1,5 +1,11 @@
# Runs the pre-release version of winutil # Runs the pre-release version of winutil
$latestTag = (Invoke-RestMethod https://api.github.com/repos/ChrisTitusTech/winutil/tags).Name | Select-Object -First 1 $latestTag = (Invoke-RestMethod https://api.github.com/repos/ChrisTitusTech/winutil/tags).Name | Select-Object -First 1
$script = Invoke-RestMethod -Uri https://github.com/ChrisTitusTech/winutil/releases/download/$latestTag/winutil.ps1 $uri = "https://github.com/ChrisTitusTech/winutil/releases/download/$latestTag/winutil.ps1"
Invoke-Command -ScriptBlock ([scriptblock]::Create($script)) -ErrorAction Stop $scriptPath = Join-Path $env:TEMP "winutil-$latestTag.ps1"
Invoke-WebRequest -Uri $uri -OutFile $scriptPath -UseBasicParsing -ErrorAction Stop
$executable = if ($PSVersionTable.PSEdition -eq 'Core') { 'pwsh.exe' } else { 'powershell.exe' }
$currentPowerShell = Join-Path $PSHOME $executable
& $currentPowerShell -ExecutionPolicy Bypass -NoProfile -File $scriptPath