Hallo zusammen,
Ich habe ein Java Programm was als Standalone auf einem PC läuft (kein Applet, kein Browser). Das programm liegt als .jar vor und wird ganz normal ausgeführt.
Neben dem Programm liegen in verschiedenen Ordnern diverse Bilder und Bibliotheken, die ich für das Programm brauche und die ich zur Laufzeit bei Bedarf lade.
Außerdem habe ich eine Datenbank, mit der ich arbeite. In dieser Datenbank ist die aktuelle Versionsnummer hinterlegt, die das Programm auch abfragt. Passt diese nicht mehr mit der eigenen Version überein, so wird derzeit eine Meldung ausgegeben und das Programm beendet sich dann. Bisher muss ich das Programm dann manuell updaten. Dies ist aber aufgrund der mittlerweile anwachsenden Menge an PCs etwas arg unpraktisch geworden.
Daher möchte ich nun eine automatische Update Routine für dieses Programm erstellen. Dieses Update soll in der Lage sein einerseits die Bibliotheken und Bilder, als auch das Programm selber auszutauschen.
Dateien aus der Datenbank zu holen ist gar kein Problem, das klappt auch alles.
Ich habe mir das so überlegt:
1. Mein Programm startet und überprüft die Version, so wie bisher auch.
2. Wenn ein Update nötig ist, dann wird ein Updater gestartet. Dies soll ein zweites kleines Programm sein, was ich gerade schreibe. Das Programm beendet sich dann natürlich.
3. Der Updater zieht nun die Daten aus der Datanbank und legt diese dahin, wo sie hin sollen. Auszutauschende Bilder, Bibliotheken etc werden dabei ersetzt.
4. Nach dem Update startet der Updater wieder mein Programm.
Mein Problem ist nun, wie kann ich im Updater überwachen, dass mein Programm beendet ist?
Ich kann das Programm ja nur austauschen, wenn es nicht läuft, ansonsten erhalte ich ja keinen zugriff auf das .jar File. Da sperrt sich Windows.
Da der Updater auch in einem separaten Prozess läuft kann ich auch nicht wirklich davon ausgehen, dass er sich schon rechtzeitig beendet. Daher würde ich gerne den Prozess irgendwie überwachen. Irgendwie stehe ich da aber auf dem Schlauch. Hat jemand eine Idee?
Ich habe ein Java Programm was als Standalone auf einem PC läuft (kein Applet, kein Browser). Das programm liegt als .jar vor und wird ganz normal ausgeführt.
Neben dem Programm liegen in verschiedenen Ordnern diverse Bilder und Bibliotheken, die ich für das Programm brauche und die ich zur Laufzeit bei Bedarf lade.
Außerdem habe ich eine Datenbank, mit der ich arbeite. In dieser Datenbank ist die aktuelle Versionsnummer hinterlegt, die das Programm auch abfragt. Passt diese nicht mehr mit der eigenen Version überein, so wird derzeit eine Meldung ausgegeben und das Programm beendet sich dann. Bisher muss ich das Programm dann manuell updaten. Dies ist aber aufgrund der mittlerweile anwachsenden Menge an PCs etwas arg unpraktisch geworden.
Daher möchte ich nun eine automatische Update Routine für dieses Programm erstellen. Dieses Update soll in der Lage sein einerseits die Bibliotheken und Bilder, als auch das Programm selber auszutauschen.
Dateien aus der Datenbank zu holen ist gar kein Problem, das klappt auch alles.
Ich habe mir das so überlegt:
1. Mein Programm startet und überprüft die Version, so wie bisher auch.
2. Wenn ein Update nötig ist, dann wird ein Updater gestartet. Dies soll ein zweites kleines Programm sein, was ich gerade schreibe. Das Programm beendet sich dann natürlich.
3. Der Updater zieht nun die Daten aus der Datanbank und legt diese dahin, wo sie hin sollen. Auszutauschende Bilder, Bibliotheken etc werden dabei ersetzt.
4. Nach dem Update startet der Updater wieder mein Programm.
Mein Problem ist nun, wie kann ich im Updater überwachen, dass mein Programm beendet ist?
Ich kann das Programm ja nur austauschen, wenn es nicht läuft, ansonsten erhalte ich ja keinen zugriff auf das .jar File. Da sperrt sich Windows.
Da der Updater auch in einem separaten Prozess läuft kann ich auch nicht wirklich davon ausgehen, dass er sich schon rechtzeitig beendet. Daher würde ich gerne den Prozess irgendwie überwachen. Irgendwie stehe ich da aber auf dem Schlauch. Hat jemand eine Idee?