Warten bis Prozess beendet ist

newmem

Grünschnabel
Hallo,

ich möchte mit Java eine Uninstall.exe ausführen und das Programm soll erst weiter ausgeführt werden, wenn die Uninstall.exe wieder geschlossen wird, also wenn der Prozess nicht mehr aktiv ist.

Mit Notepad funktioniert das einwandfrei:

Code:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("notepad");
pr.waitFor();

Der Aufruf der Uninstall.exe funktioniert auch:

Code:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("C:\\Programme\\Programm\\Uninstall.exe");
pr.waitFor();

Allerdings wird das Javaprogramm trotzdem weiterausgeführt, wenn ich zusätzlich pr.waitFor(); ausführe. Im Taskmanager wird aber ein Prozess angezeigt. Vielleicht hat jemand eine Idee, wie ich den Prozess ansprechen kann.
 
Kann es sein, dass die Uninstall.exe die du aufrufen willst selbst auch nur einen asynchronen Aufruf macht und somit schnell zurück kommt und die Java Anwendung weiterläuft?

Kannst du mal schauen, ob die Uninstall.exe noch läuft?


P.S.: Seit Java 5 ist der ProcessBuilder der Weg der Wege wie man einen Process erstellt.
 
Danke für den Hinweis. Mit demProcessBuilder habe ich das ganze auch schon probiert.

Wenn die Uninstall.exe aufgerufen wird, dann wird auch ein Prozess im Taskmanager angezeigt. Beende ich die exe, wird auch der Prozess beendet.
 
Zurück