[Windows] Fix exit-code detection in the uninstaller process check

This commit is contained in:
Lukas Brübach 2026-09-21 18:43:47 +02:00 committed by GitHub
parent 8a6b4796cd
commit 410e59b507
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -308,12 +308,17 @@ FunctionEnd
; Uninstaller copies of the same routines (the uninstaller gets its own
; function set compiled in, it cannot call the installer functions).
Function un.IsAppRunning
nsExec::ExecToLog 'powershell -NoProfile -Command "Get-Process -Name $\'$R2$\' -ErrorAction SilentlyContinue | Where-Object { $$_.Path -like $\'$INSTDIR\*$\' } | Select-Object -First 1"'
; Exit the process explicitly so nsExec's pop reflects whether a matching
; process was found: powershell.exe exits 0 whether or not the pipeline
; produced objects. Any other result (exit 1, or nsExec's "error" string
; when powershell itself cannot be started) is treated as "running" so the
; lock guard fails closed.
nsExec::ExecToLog 'powershell -NoProfile -Command "if (Get-Process -Name $\'$R2$\' -ErrorAction SilentlyContinue | Where-Object { $$_.Path -like $\'$INSTDIR\*$\' } | Select-Object -First 1) { exit 1 } else { exit 0 }"'
Pop $R0
${If} $R0 = 0
StrCpy $R0 1
${Else}
${If} $R0 == "0"
StrCpy $R0 0
${Else}
StrCpy $R0 1
${EndIf}
FunctionEnd