Aus JavaProgramm Setup Exe aufrufen

Joob

Top Contributor
Ich würde gerne eine Setup.exe welche sich auf das laufende Javaprogramm bezieht aufrufen.
Nach dem Aufruf würde ich natürlich das Programm sofort beenden.

Allerdings frage ich mich ob dann auch das Setup beendet wird weil das Betriebssystem den Thread beendet aus dem es aufgerufen wurde.
Ich dachte vielleicht über die Commandozeile, weiß aber nicht ob das mit beendet wird.

Gibt es dazu einen besten Weg ?
Wie macht man so was ?
 
Ich wollte aus der App heraus das Setup für eine neue Version starten.
Also Download.
Setup starten, und App Beenden.
Danach läuft das Setup.
 
Hast du es denn schon ausprobiert? Wenn es unter Windows Probleme gibt, dann könntest du probieren, den anderen Prozeß mit cmd /c starten. Aber das hängt aber wohl auch vom Prozess ab, den du startest.
 
Nö hab es noch nicht ausprobiert, ich wollte erst mal hören ob das Vorhaben kompletter Unsinn ist.

Ich mach das dann mal.
Ich melde mich wenn ich es fertig habe oder es noch Problem gibt.
 
Ich wollte aus der App heraus das Setup für eine neue Version starten.
Also Download.
Setup starten, und App Beenden.
Danach läuft das Setup.
 
Das funktioniert jetzt auch.
Leider popt jetzt das leidige Problem mit

mainStage.setOnCloseRequest(e -> auf.

Diese wird beim Schließen der Stage nicht ausgeführt.
Wenn ich das Fenster rechts oben schließen löst er immer aus.

Wenn ich aber mit
stage.close()

wird setOnCloseRequest nicht ausgelöst.

Ich hatte mal gesehen das man ein Fenster auch anders schliessen kann und dann auf jeden Fall setOnCloseRequest ausgelöst wird
aber ich kann mich nicht mehr erinnern.
 
In AWT gibt's die Möglichkeit, einen ordentlichen Close Event zu erzeugen.
[CODE lang="java" title="AWT"]window.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSING));
[/CODE]
Das geht sicher so ähnlich auch in FX.
 
In AWT gibt's die Möglichkeit, einen ordentlichen Close Event zu erzeugen.
[CODE lang="java" title="AWT"]window.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSING));
[/CODE]
Das geht sicher so ähnlich auch in FX.
in fx wird init launch ... platform.exit stop methode aufgerufen dh
Java:
public void exitApplication(ActionEvent event) {
   Platform.exit();
}
wenn man diesen eventhandler baut und hinzufügt kann man das programm schließen


damit wird die stop() methode in der extends Application aufgerufen ( nicht überschrieben ist die leer )
Java:
@Override
public void stop(){
    System.out.println("Stage is closing");
    // Save file
}
somit kannst du auf das "schließen" in javafx reagieren


System.exit ist nicht zu empfehlen... da zerschießt du einfach nur den FX thread usw, Platform.exit() wurde direkt dafür gemacht also sollte man das auch hernehmen dann funktioniert das mit dem stop auch


du kannst auch noch über Windows die primary stage finden und dann da was machen
Java:
Window window = Main.getPrimaryStage()  // Get the primary stage from your Application class
                .getScene()
                .getWindow();

window.fireEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSE_REQUEST));
das ist eher so wie in awt wie shcon gezeigt
 

Neue Themen


Zurück
Oben