mirror of
https://github.com/hansjone/netx.git
synced 2026-10-15 04:53:20 +08:00
Never wait on the process tree when starting NetX.
Windows PowerShell 5.1 Start-Process -Wait (and `& exe` with captured output) waits for every descendant / until the stdout pipe closes. The postgres and NetX processes a start leaves running made runtime_ctl.ps1 never return: tray stuck on "Starting", Start Menu "Start NetX" never opened the UI. Start-NetxPowerShell -Wait, the UAC relaunch and the Setup wait in check_update now wait for the process itself (WaitForExit). Service mode in runtime_ctl: start via sc.exe without blocking on SERVICE_RUNNING; stop writes the supervisor stop flag, polls up to 120s, then kills the WinSW tree as a last resort. Verified in an offline Windows Sandbox (no VC++ redist, no Python). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ce9a78b5ec
commit
c8806c38bd
3 changed files with 61 additions and 13 deletions
|
|
@ -429,7 +429,8 @@ try {
|
|||
Write-Host "==> Program directory is not writable; relaunching update as Administrator (UAC)..." -ForegroundColor Yellow
|
||||
$arg = "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" -ProgramRoot `"$prog`" -DataRoot `"$data`" -Apply"
|
||||
$ep = Start-Process -FilePath "powershell.exe" -ArgumentList $arg -WorkingDirectory $prog `
|
||||
-Verb RunAs -Wait -PassThru
|
||||
-Verb RunAs -PassThru
|
||||
Wait-NetxProcessExit -Process $ep
|
||||
if ($null -eq $ep.ExitCode) { exit 1 }
|
||||
exit $ep.ExitCode
|
||||
}
|
||||
|
|
@ -444,7 +445,8 @@ try {
|
|||
$trayWasRunning = @(Get-CimInstance Win32_Process -ErrorAction SilentlyContinue | Where-Object {
|
||||
$_.CommandLine -and $_.CommandLine -match 'netx_tray\.ps1'
|
||||
}).Count -gt 0
|
||||
$sp = Start-Process -FilePath $pkgPath -ArgumentList $setupArgs -Wait -PassThru
|
||||
$sp = Start-Process -FilePath $pkgPath -ArgumentList $setupArgs -PassThru
|
||||
Wait-NetxProcessExit -Process $sp
|
||||
if ($null -eq $sp.ExitCode -or $sp.ExitCode -ne 0) {
|
||||
$code = if ($null -eq $sp.ExitCode) { "null" } else { $sp.ExitCode }
|
||||
throw "setup_update_failed: exit $code"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue