fix windows build
This commit is contained in:
@@ -3,83 +3,65 @@
|
|||||||
; Install: enables long paths, adds resources\cli to user PATH for openclaw CLI.
|
; Install: enables long paths, adds resources\cli to user PATH for openclaw CLI.
|
||||||
; Uninstall: removes the PATH entry and optionally deletes user data.
|
; Uninstall: removes the PATH entry and optionally deletes user data.
|
||||||
|
|
||||||
; When customCheckAppRunning is defined, electron-builder skips its conditional
|
|
||||||
; !include for getProcessInfo.nsh and the "Var pid" declaration. We must do
|
|
||||||
; both ourselves so ${GetProcessInfo} and $pid are available.
|
|
||||||
!ifndef getProcessInfo_included
|
|
||||||
!define getProcessInfo_included
|
|
||||||
!include "getProcessInfo.nsh"
|
|
||||||
Var pid
|
|
||||||
!endif
|
|
||||||
!ifndef nsProcess_included
|
!ifndef nsProcess_included
|
||||||
!define nsProcess_included
|
!define nsProcess_included
|
||||||
!include "nsProcess.nsh"
|
!include "nsProcess.nsh"
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!macro customCheckAppRunning
|
!macro customCheckAppRunning
|
||||||
${GetProcessInfo} 0 $pid $1 $2 $3 $4
|
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
||||||
${if} $3 != "${APP_EXECUTABLE_FILENAME}"
|
|
||||||
|
${if} $R0 == 0
|
||||||
${if} ${isUpdated}
|
${if} ${isUpdated}
|
||||||
# allow app to exit without explicit kill
|
# allow app to exit without explicit kill
|
||||||
Sleep 300
|
Sleep 1000
|
||||||
|
Goto doStopProcess
|
||||||
${endIf}
|
${endIf}
|
||||||
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(appRunning)" /SD IDOK IDOK doStopProcess
|
||||||
|
Quit
|
||||||
|
|
||||||
# Instead of launching cmd.exe /c tasklist, use the nsProcess plugin directly for all environments.
|
doStopProcess:
|
||||||
# This prevents the brief black cmd window from flashing.
|
DetailPrint `Closing running "${PRODUCT_NAME}"...`
|
||||||
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
|
||||||
|
|
||||||
${if} $R0 == 0
|
# Silently kill the process using nsProcess instead of taskkill / cmd.exe
|
||||||
${if} ${isUpdated}
|
${nsProcess::KillProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
||||||
# allow app to exit without explicit kill
|
|
||||||
|
# to ensure that files are not "in-use"
|
||||||
|
Sleep 300
|
||||||
|
|
||||||
|
# Retry counter
|
||||||
|
StrCpy $R1 0
|
||||||
|
|
||||||
|
loop:
|
||||||
|
IntOp $R1 $R1 + 1
|
||||||
|
|
||||||
|
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
||||||
|
${if} $R0 == 0
|
||||||
|
# wait to give a chance to exit gracefully
|
||||||
Sleep 1000
|
Sleep 1000
|
||||||
Goto doStopProcess
|
${nsProcess::KillProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
||||||
${endIf}
|
|
||||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(appRunning)" /SD IDOK IDOK doStopProcess
|
|
||||||
Quit
|
|
||||||
|
|
||||||
doStopProcess:
|
|
||||||
DetailPrint `Closing running "${PRODUCT_NAME}"...`
|
|
||||||
|
|
||||||
# Silently kill the process using nsProcess instead of taskkill / cmd.exe
|
|
||||||
${nsProcess::KillProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
|
||||||
|
|
||||||
# to ensure that files are not "in-use"
|
|
||||||
Sleep 300
|
|
||||||
|
|
||||||
# Retry counter
|
|
||||||
StrCpy $R1 0
|
|
||||||
|
|
||||||
loop:
|
|
||||||
IntOp $R1 $R1 + 1
|
|
||||||
|
|
||||||
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
||||||
${if} $R0 == 0
|
${If} $R0 == 0
|
||||||
# wait to give a chance to exit gracefully
|
DetailPrint `Waiting for "${PRODUCT_NAME}" to close.`
|
||||||
Sleep 1000
|
Sleep 2000
|
||||||
${nsProcess::KillProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
|
||||||
|
|
||||||
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
|
|
||||||
${If} $R0 == 0
|
|
||||||
DetailPrint `Waiting for "${PRODUCT_NAME}" to close.`
|
|
||||||
Sleep 2000
|
|
||||||
${else}
|
|
||||||
Goto not_running
|
|
||||||
${endIf}
|
|
||||||
${else}
|
${else}
|
||||||
Goto not_running
|
Goto not_running
|
||||||
${endIf}
|
${endIf}
|
||||||
|
${else}
|
||||||
|
Goto not_running
|
||||||
|
${endIf}
|
||||||
|
|
||||||
# App likely running with elevated permissions.
|
# App likely running with elevated permissions.
|
||||||
# Ask user to close it manually
|
# Ask user to close it manually
|
||||||
${if} $R1 > 1
|
${if} $R1 > 1
|
||||||
MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY loop
|
MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(appCannotBeClosed)" /SD IDCANCEL IDRETRY loop
|
||||||
Quit
|
Quit
|
||||||
${else}
|
${else}
|
||||||
Goto loop
|
Goto loop
|
||||||
${endIf}
|
${endIf}
|
||||||
not_running:
|
not_running:
|
||||||
nsProcess::Unload
|
nsProcess::Unload
|
||||||
${endIf}
|
|
||||||
${endIf}
|
${endIf}
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user