From: Debayan Sutradhar Date: Tue, 29 Jun 2021 14:18:07 +0530 Subject: Added better startup at boot support for jpackage-built binaries --- Added better startup at boot support for jpackage-built binaries --- --- 'a/.github/scripts/jpackage.sh' +++ b/.github/scripts/jpackage.sh @@ -12,5 +12,5 @@ $JPACKAGE_HOME/bin/jpackage \ --dest $INSTALL_DIR \ --name 'Stream-Pi Server' \ --java-options '-Dprism.verbose=true -Djavafx.verbose=true -Dprism.dirtyopts=false' \ ---arguments -DStream-Pi.startupRunnerFileName=./run_min \ +--arguments -DStream-Pi.startupRunnerFileName=run_min -DStream-Pi.appendPathBeforeRunnerFileToOvercomeJPackageLimitation=true \ "$@" --- 'a/assets/run_min_linux.properties' +++ b/assets/run_min_linux.properties @@ -1 +1 @@ -arguments=-DStream-Pi.startupMode=min -DStream-Pi.startupRunnerFileName=./run_min \ No newline at end of file +arguments=-DStream-Pi.startMinimised=true -DStream-Pi.startupRunnerFileName=run_min -DStream-Pi.appendPathBeforeRunnerFileToOvercomeJPackageLimitation=true \ No newline at end of file --- 'a/assets/run_min_win.properties' +++ b/assets/run_min_win.properties @@ -1 +1 @@ -arguments=-DStream-Pi.startupMode=min -DStream-Pi.startupRunnerFileName=run_min.exe \ No newline at end of file +arguments=-DStream-Pi.startMinimised=true -DStream-Pi.startupRunnerFileName=run_min.exe \ No newline at end of file --- 'a/src/main/java/com/stream_pi/server/Main.java' +++ b/src/main/java/com/stream_pi/server/Main.java @@ -23,6 +23,9 @@ import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; +import java.io.File; +import java.net.URISyntaxException; + public class Main extends Application { /** @@ -40,10 +43,18 @@ public class Main extends Application { String arg = r[0]; String val = r[1]; - if(arg.equals("-DStream-Pi.startupRunnerFileName")) - StartupFlags.RUNNER_FILE_NAME = val; - else if(arg.equals("-DStream-Pi.startupMode")) - StartupFlags.START_MINIMISED = val.equals("min"); + switch (arg) + { + case "-DStream-Pi.startupRunnerFileName": + StartupFlags.RUNNER_FILE_NAME = val; + break; + case "-DStream-Pi.startMinimised": + StartupFlags.START_MINIMISED = val.equals("true"); + break; + case "-DStream-Pi.appendPathBeforeRunnerFileToOvercomeJPackageLimitation": + StartupFlags.APPEND_PATH_BEFORE_RUNNER_FILE_TO_OVERCOME_JPACKAGE_LIMITATION = val.equals("true"); + break; + } } Controller d = new Controller(); --- 'a/src/main/java/com/stream_pi/server/info/StartupFlags.java' +++ b/src/main/java/com/stream_pi/server/info/StartupFlags.java @@ -4,4 +4,5 @@ public class StartupFlags { public static String RUNNER_FILE_NAME = null; public static boolean START_MINIMISED = false; + public static boolean APPEND_PATH_BEFORE_RUNNER_FILE_TO_OVERCOME_JPACKAGE_LIMITATION = false; } --- 'a/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java' +++ b/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java @@ -1,6 +1,7 @@ package com.stream_pi.server.window.settings; import com.stream_pi.action_api.actionproperty.property.FileExtensionFilter; +import com.stream_pi.server.Main; import com.stream_pi.server.controller.ServerListener; import com.stream_pi.server.info.StartupFlags; import com.stream_pi.server.io.Config; @@ -38,6 +39,7 @@ import org.w3c.dom.Text; import java.awt.SystemTray; import java.io.File; +import java.net.URISyntaxException; import java.util.logging.Logger; public class GeneralSettings extends VBox { @@ -319,12 +321,26 @@ public class GeneralSettings extends VBo { try { - startAtBoot.create(StartupFlags.RUNNER_FILE_NAME); + if(StartupFlags.APPEND_PATH_BEFORE_RUNNER_FILE_TO_OVERCOME_JPACKAGE_LIMITATION) + { + startAtBoot.create(new File(Main.class.getProtectionDomain().getCodeSource().getLocation() + .toURI()).getParentFile().getParentFile().getAbsolutePath() + + "/bin/" + StartupFlags.RUNNER_FILE_NAME); + } + else + { + startAtBoot.create(StartupFlags.RUNNER_FILE_NAME); + } } catch (MinorException e) { exceptionAndAlertHandler.handleMinorException(e); startOnBoot = false; + } catch (URISyntaxException e) { + exceptionAndAlertHandler.handleMinorException(new MinorException( + "Unable to get path \n"+e.getMessage() + )); + startOnBoot = false; } } else