nsis 卸载过程在FUnction un.oninit 中使用nsprocess::FIndProcess 判断多个程序是否正在运行,若其中一个或多个正在运行,则弹出窗口“程序正在运行,是否强制关闭并继续卸载,点击确定后,强制关程序并继续卸载
时间: 2023-11-22 08:55:17 浏览: 108
好的,那我来给你提供一个可能的解决方案。
你可以在 `un.onInit` 函数中使用 `nsProcess::findProcess` 函数,检查需要关闭的程序是否正在运行。如果正在运行,可以使用 `MessageBox` 函数弹出提示框,询问用户是否要强制关闭并继续卸载。如果用户选择确认,则可以使用 `nsProcess::killProcess` 函数强制关闭指定的程序。
下面是一个示例代码:
```
Function un.onInit
; 需要关闭的程序列表
StrCpy $1 "notepad.exe|calc.exe|..."
; 检查程序是否正在运行
nsProcess::findProcess $1 "" $0
${If} $0 == "0"
; 所有程序都未运行,直接继续卸载
Goto done
${Else}
; 有程序正在运行,弹出提示框
MessageBox MB_ICONQUESTION|MB_YESNO "程序正在运行,是否强制关闭并继续卸载?" IDYES forceClose
${EndIf}
Quit
forceClose:
; 强制关闭指定的程序
nsProcess::killProcess $1
; 继续卸载
Goto done
done:
; 正常卸载流程
...
FunctionEnd
```
需要注意的是,`nsProcess::killProcess` 函数会强制关闭指定的程序,可能会导致数据丢失或其他不可预知的问题,因此需要谨慎使用。同时,在弹出提示框时,需要向用户清楚地说明可能会发生的风险和影响,以便用户可以做出明智的选择。
阅读全文