使用nsis 在卸载过程遍历判断多个程序tm3c.exe.tm3ccam.exe是否正在运行,如果在运行,则弹出”XX程序正在运行,关闭后再卸载“
时间: 2023-12-10 12:40:43 浏览: 233
可以使用以下步骤实现:
1. 在卸载过程中,使用nsProcess插件中的nsExec命令执行TaskList命令获取当前正在运行的进程列表,保存到一个临时文件中。
2. 使用nsFile插件中的FileRead命令读取临时文件,将其转换为一个字符串变量。
3. 使用字符串处理函数StrStr或者StrContains等在该字符串变量中查找tm3c.exe和tm3ccam.exe是否存在,如果存在则说明这两个程序正在运行,弹出提示窗口并终止卸载过程。
以下是示例代码:
```
!include "nsProcess.nsh"
!include "nsFile.nsh"
Function CheckRunningProcesses
nsExec::ExecToStack 'tasklist /nh /fo csv /fi "imagename eq tm3c.exe" /fi "imagename eq tm3ccam.exe"'
Pop $0
FileOpen $1 "$TEMP\processes.txt" w
FileWrite $1 $0
FileClose $1
ClearErrors
${FileRead} "$TEMP\processes.txt" $2
${If} ${Errors}
MessageBox MB_OK "Error reading process list: $0"
Abort
${EndIf}
${If} ${StrContains} $2 "tm3c.exe"
MessageBox MB_OK "tm3c.exe is running. Please close it before uninstalling."
Abort
${EndIf}
${If} ${StrContains} $2 "tm3ccam.exe"
MessageBox MB_OK "tm3ccam.exe is running. Please close it before uninstalling."
Abort
${EndIf}
FunctionEnd
```
在卸载前调用CheckRunningProcesses函数即可。
阅读全文