diff --git a/src/Launcher/Main.java b/src/Launcher/Main.java index e9d12a6..2ea1d39 100644 --- a/src/Launcher/Main.java +++ b/src/Launcher/Main.java @@ -24,6 +24,9 @@ import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import javafx.stage.StageStyle; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; import java.net.URL; import com.tofvesson.async.*; @@ -34,7 +37,7 @@ public class Main extends Application { public static final String semVerDevState = "PreDev"; // Development stage public static final int semVerMajor = 0; // Major version public static final int semVerMinor = 2; // Minor version - public static final int semVerPatch = 0; // Patch version + public static final int semVerPatch = 1; // Patch version private double xOffset = 0, yOffset = 0; // Offsets for dragging @@ -155,8 +158,12 @@ public class Main extends Application { icon.setImage(appIcon); } - public static void main(String[] args) { - Updater u = Updater.getInstance(); + public static void main(String[] args) throws Exception{ + if(args.length<2 || !args[1].equals("false")) Updater.checkUpdate(); // Check for update + if(args.length>0){ + File f = new File(args[0]); + if(f.isFile()) while(!f.delete()) Thread.sleep(50); // Delete previous jar + } launch(args); } diff --git a/src/Launcher/net/Updater.java b/src/Launcher/net/Updater.java index 7155ebc..ac1189b 100644 --- a/src/Launcher/net/Updater.java +++ b/src/Launcher/net/Updater.java @@ -1,5 +1,6 @@ package Launcher.net; +import Launcher.Main; import com.tofvesson.async.Async; import com.tofvesson.reflection.SafeReflection; import javax.net.ssl.HttpsURLConnection; @@ -18,8 +19,8 @@ import static Launcher.Main.semVerPatch; public class Updater { private static volatile Updater instance; - private static final Async setup = new Async<>(SafeReflection.getFirstConstructor(Updater.class)); - public static final Pattern version = Pattern.compile("(?s).*(\\d).(\\d).(\\d).*"); // Pattern to match when finding refs + private static Async setup; + public static final Pattern version = Pattern.compile("(?s).*?(\\d)\\.(\\d)\\.(\\d).*?"); // Pattern to match when finding refs private HttpsURLConnection conn; public static final URL updateURL; @@ -44,24 +45,27 @@ public class Updater { conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } + while ((inputLine = in.readLine()) != null) response.append(inputLine); in.close(); Matcher m = version.matcher(response.toString()); String downloadLink = ""; + int semMajor = semVerMajor, semMinor = semVerMinor, semPatch = semVerPatch; while(m.find()){ int semMaj = Integer.parseInt(m.group(1)), semMin = Integer.parseInt(m.group(2)), semPat = Integer.parseInt(m.group(3)); - if(semMaj < semVerMajor || (semMaj==semVerMajor && semMin(SafeReflection.getFirstConstructor(Updater.class)); } + public static Updater getInstance() { - return instance==null?instance=setup.await():instance; // Await async creation + return instance==null?setup!=null?instance=setup.await():null:instance; // Await async creation } }