Обнаружение уже запущенного Java-приложения из NSIS - PullRequest
1 голос
/ 08 декабря 2011

Да, это хорошо документировано как получить имя исполняемого файла вашего приложения и посмотреть, запущено ли оно.Когда рассматриваемое приложение является java-приложением, исполняемый exe всегда будет java.exe, и поэтому этот метод не имеет смысла, так как в настоящий момент может быть любое количество java-приложений, все запущенные с java.exe.Каждый из них будет отличаться передаваемыми параметрами командной строки, включая имя основного класса.

Мне нужно знать параметры командной строки для java.exe, чтобы я мог знать, что должен быть только тот, который говорит java.exe MyProgramпрекращено.

Как мне это сделать в NSIS?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Я использую команду 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
1 голос
/ 08 декабря 2011

Команда jps -v предоставит вам параметры командной строки для запущенных процессов Java.

...