是的,well documented如何获取应用程序的exe文件的名称并查看它是否正在运行。当有问题的应用程序是一个java应用程序时,正在运行的exe将始终是java.exe,因此这个方法不言而喻,因为当前可能有任意数量的java应用程序正在运行,所有这些都是用java.exe启动的。 每个传递的命令行参数都不同,包括主类名。
我需要知道java.exe的命令行参数,所以我知道只有那个说java.exe MyProgram的人才会被终止。
我如何在NSIS中这样做?
答案 0 :(得分:1)
命令jps -v
将为您提供正在运行的Java进程的命令行参数。
答案 1 :(得分:1)
我使用FindWindow
命令。这假设不同的Java应用程序具有不同的窗口标题。
编辑添加:虽然窗口类是必需参数,但空字符串(任何窗口类)是有效的窗口类参数。以下是我的FindWindow
安装程序之一的完整NSIS
函数:
Function filzip_check
filzip_check_start:
ClearErrors
FindWindow $5 "" "FilZip"
StrCmp $5 "0" filzip_check_end +1
MessageBox MB_OK "Please close any FilZip windows before continuing \
the install"
Goto filzip_check_start
filzip_check_end:
FunctionEnd