Simplified and changed updated process to be more versatile and flexible
This commit is contained in:
@@ -29,7 +29,6 @@ public class BasicGuiApp extends Application{
|
||||
public static Stage mainStage;
|
||||
public static Scene mainScene;
|
||||
public static KeyChecker listener;
|
||||
public static Updater up = new Updater();
|
||||
|
||||
public BasicGuiApp(){
|
||||
|
||||
@@ -78,8 +77,13 @@ public class BasicGuiApp extends Application{
|
||||
primaryStage.show();
|
||||
|
||||
if(SettingManager.isCheckUptdateOnBoot()){
|
||||
up.checkForUpdate();
|
||||
|
||||
new Thread(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
Updater up = new Updater();
|
||||
up.checkForUpdate();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,20 +23,25 @@ public class ResourceManager {
|
||||
fontBig = Font.loadFont(ResourceManager.class.getResourceAsStream("/LiberationSerif-Regular.ttf"), 40);
|
||||
fontSmall = Font.loadFont(ResourceManager.class.getResourceAsStream("/LiberationSerif-Regular.ttf"), 17);
|
||||
|
||||
addImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/plus.png"), 32, 32, true, false));
|
||||
addImage = loadIcon("/plus.png");
|
||||
addImage.setFitWidth(32);
|
||||
addImage.setFitHeight(32);
|
||||
addImage.setPreserveRatio(true);
|
||||
|
||||
backImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/back.png"), 32, 32 ,true, false));
|
||||
editImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/edit.png"),32 ,32, true, false));
|
||||
lockImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/lock.png"), 32, 32, true, false));
|
||||
saveImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/save.png"), 32, 32 ,true, false));
|
||||
unsavedImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/unsaved.png"), 32, 32, true, false));
|
||||
backImage = loadIcon("/back.png");
|
||||
editImage = loadIcon("/edit.png");
|
||||
lockImage = loadIcon("/lock.png");
|
||||
saveImage = loadIcon("/save.png");
|
||||
unsavedImage = loadIcon("/unsaved.png");
|
||||
|
||||
trashImage = new ImageView(new Image(ResourceManager.class.getResourceAsStream("/trash.png"), 32, 32 ,true, false));
|
||||
trashImage = loadIcon("/trash.png");
|
||||
}
|
||||
|
||||
|
||||
private static ImageView loadIcon(String path) {
|
||||
return new ImageView(new Image(ResourceManager.class.getResourceAsStream(path), 32, 32,true , false));
|
||||
}
|
||||
|
||||
public static Font getFontBig() {
|
||||
return fontBig;
|
||||
}
|
||||
@@ -65,8 +70,6 @@ public class ResourceManager {
|
||||
return lockImage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static ImageView getSaveImage() {
|
||||
return saveImage;
|
||||
}
|
||||
|
||||
@@ -21,13 +21,8 @@ public class SettingManager {
|
||||
private static int key1 = -1,key2 = -1;
|
||||
private static OperatingSystem currentOS = null;
|
||||
|
||||
|
||||
private static String jarDirectory = "";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public SettingManager(){
|
||||
if(System.getProperty("os.name").toLowerCase().contains("nux")){
|
||||
currentOS = OperatingSystem.LINUX;
|
||||
@@ -57,10 +52,10 @@ public class SettingManager {
|
||||
try{
|
||||
input = new FileInputStream(settingFile);
|
||||
prop.load(input);
|
||||
loadFileOnBoot = Boolean.parseBoolean(prop.getProperty("Load-File-on-startup"));
|
||||
checkUptdateOnBoot = Boolean.parseBoolean(prop.getProperty("Check-for-updates-on-startup"));
|
||||
key1 = Integer.parseInt(prop.getProperty("key1"));
|
||||
key2 = Integer.parseInt(prop.getProperty("key2"));
|
||||
loadFileOnBoot = Boolean.parseBoolean(prop.getProperty("Load-File-on-startup", "true"));
|
||||
checkUptdateOnBoot = Boolean.parseBoolean(prop.getProperty("Check-for-updates-on-startup", "true"));
|
||||
key1 = Integer.parseInt(prop.getProperty("key1", "-1"));
|
||||
key2 = Integer.parseInt(prop.getProperty("key2", "-1"));
|
||||
}catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
|
||||
@@ -17,6 +17,7 @@ import javafx.stage.StageStyle;
|
||||
import main.Start;
|
||||
import manager.SettingManager;
|
||||
import scenes.SettingScene;
|
||||
import update.Updater;
|
||||
|
||||
public class QuickLaunch extends BasicMod {
|
||||
|
||||
@@ -94,7 +95,13 @@ public class QuickLaunch extends BasicMod {
|
||||
}
|
||||
|
||||
private void checkForUpdates() {
|
||||
BasicGuiApp.up.checkForUpdate();
|
||||
new Thread(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
Updater up = new Updater();
|
||||
up.checkForUpdate();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private void loadFile() throws IOException {
|
||||
|
||||
@@ -6,81 +6,42 @@ import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class UpdateChecker {
|
||||
Socket socket;
|
||||
DataInputStream in;
|
||||
DataOutputStream out;
|
||||
String ip;
|
||||
int port;
|
||||
float feedback = -1;
|
||||
String linkToFile = "";
|
||||
public UpdateChecker(String ip, int port){
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
try {
|
||||
socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(InetAddress.getByName("cookiestudios.org"), port), 700);
|
||||
in = new DataInputStream(socket.getInputStream());
|
||||
out = new DataOutputStream(socket.getOutputStream());
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
HashMap<String, String> serverData = new HashMap<>();
|
||||
|
||||
|
||||
public float getCurrentVersion(){
|
||||
public void requestServerData(){
|
||||
try {
|
||||
Socket socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(InetAddress.getByName("cookiestudios.org"), 9999), 700);
|
||||
DataInputStream in = new DataInputStream(socket.getInputStream());
|
||||
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
|
||||
|
||||
feedback = in.readFloat();
|
||||
out.writeUTF(System.getProperty("os.name"));
|
||||
out.writeUTF(System.getProperty("os.version"));
|
||||
out.writeUTF(System.getProperty("os.arch"));
|
||||
out.writeUTF(System.getProperty("java.version"));
|
||||
StringBuilder data = new StringBuilder();
|
||||
data.append(System.getProperty("os.name")).append(";");
|
||||
data.append(System.getProperty("os.version")).append(";");
|
||||
data.append(System.getProperty("os.arch")).append(";");
|
||||
data.append(System.getProperty("java.version"));
|
||||
|
||||
return feedback;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return feedback;
|
||||
out.writeUTF(data.toString());
|
||||
String[] response = in.readUTF().split(";");
|
||||
for(String str: response) {
|
||||
String[] keyValue = str.split("=");
|
||||
serverData.put(keyValue[0], keyValue[1]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public String getDownloadLink(){
|
||||
try {
|
||||
out.writeBoolean(true);
|
||||
linkToFile = in.readUTF();
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return linkToFile;
|
||||
|
||||
}
|
||||
|
||||
public void upToDate() {
|
||||
try {
|
||||
out.writeBoolean(false);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void close(){
|
||||
try {
|
||||
out.writeBoolean(false);
|
||||
in.close();
|
||||
out.close();
|
||||
socket.close();
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public float getLatestVersion() {
|
||||
if(serverData.containsKey("VERSION")) {
|
||||
return Float.parseFloat(serverData.get("VERSION"));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,23 +7,22 @@ import java.nio.file.StandardCopyOption;
|
||||
|
||||
import manager.SettingManager;
|
||||
|
||||
public class UpdateThread implements Runnable {
|
||||
public class UpdateFileHandler {
|
||||
|
||||
File sq;
|
||||
File qlN;
|
||||
File fMark;
|
||||
|
||||
public UpdateThread(){
|
||||
public UpdateFileHandler(){
|
||||
sq = new File(SettingManager.getJarDirectory()+File.separator+"Squirrel.jar");
|
||||
qlN = new File(SettingManager.getJarDirectory()+File.separator+"QuickLaunch.jar");
|
||||
fMark = new File(SettingManager.getJarDirectory()+File.separator+"f.MARK");
|
||||
}
|
||||
public void run(){
|
||||
public void launch(){
|
||||
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(sq.exists()){
|
||||
@@ -34,17 +33,12 @@ public class UpdateThread implements Runnable {
|
||||
else{
|
||||
try {
|
||||
Files.copy(sq.toPath(), qlN.toPath(),StandardCopyOption.REPLACE_EXISTING);
|
||||
fMark.createNewFile();
|
||||
|
||||
fMark.createNewFile();
|
||||
} catch (IOException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,8 @@
|
||||
package update;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
@@ -18,66 +16,52 @@ import main.Start;
|
||||
import manager.SettingManager;
|
||||
|
||||
public class Updater {
|
||||
|
||||
Thread uT;
|
||||
|
||||
public void checkForUpdate(){
|
||||
try{
|
||||
UpdateChecker uc = new UpdateChecker("cookiestudios.org", 9999);
|
||||
float tmpversion = uc.getCurrentVersion();
|
||||
System.out.println("got version: " + tmpversion);
|
||||
|
||||
if(tmpversion > Start.VERSION){
|
||||
String dl = uc.getDownloadLink();
|
||||
Alert updateAlert = new Alert(AlertType.INFORMATION,
|
||||
UpdateChecker uc = new UpdateChecker();
|
||||
uc.requestServerData();
|
||||
System.out.println("got version: " + uc.getLatestVersion());
|
||||
if(uc.getLatestVersion() > Start.VERSION){
|
||||
String dl = "https://cookiestudios.org/software/QuickLaunch/QuickLaunch.jar";
|
||||
Alert updateAlert = new Alert(AlertType.INFORMATION,
|
||||
"There is a newer version of QuickLaunch available\nDownload now?",
|
||||
ButtonType.YES,
|
||||
ButtonType.NO);
|
||||
updateAlert.setTitle("Update available!");
|
||||
Optional<ButtonType> result = updateAlert.showAndWait();
|
||||
if(result.isPresent() && result.get() == ButtonType.YES){
|
||||
try {
|
||||
System.out.println("here");
|
||||
cleanDirectory();
|
||||
URL website = new URL(dl);
|
||||
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
|
||||
FileOutputStream fos = new FileOutputStream(SettingManager.getJarDirectory()+File.separator+"Squirrel.jar");
|
||||
fos.getChannel().transferFrom(rbc, 0, Integer.MAX_VALUE);
|
||||
fos.close();
|
||||
System.out.println("Done");
|
||||
try {
|
||||
ProcessBuilder pb = new ProcessBuilder("java","-jar",SettingManager.getJarDirectory()+File.separator+"Squirrel.jar");
|
||||
pb.directory(new File(SettingManager.getJarDirectory()));
|
||||
pb.redirectErrorStream(true);
|
||||
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
|
||||
pb.start();
|
||||
|
||||
}catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.println("started newer version");
|
||||
updateAlert.setTitle("Update available!");
|
||||
Optional<ButtonType> result = updateAlert.showAndWait();
|
||||
if(result.isPresent() && result.get() == ButtonType.YES){
|
||||
try {
|
||||
System.out.println("here");
|
||||
cleanDirectory();
|
||||
URL website = new URL(dl);
|
||||
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
|
||||
FileOutputStream fos = new FileOutputStream(SettingManager.getJarDirectory()+File.separator+"Squirrel.jar");
|
||||
fos.getChannel().transferFrom(rbc, 0, Integer.MAX_VALUE);
|
||||
fos.close();
|
||||
try {
|
||||
ProcessBuilder pb = new ProcessBuilder("java","-jar",SettingManager.getJarDirectory()+File.separator+"Squirrel.jar");
|
||||
pb.directory(new File(SettingManager.getJarDirectory()));
|
||||
pb.redirectErrorStream(true);
|
||||
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
|
||||
pb.start();
|
||||
}catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.exit(0);
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
MainGui.addNotification("Couldn´t reach update server", 2);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
MainGui.addNotification("Couldn´t reach update server", 2);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
MainGui.addNotification("Couldn´t reach update server", 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
uc.upToDate();
|
||||
MainGui.addNotification("QuickLaunch is up to date", 2);
|
||||
uT = new Thread(new UpdateThread());
|
||||
uT.start();
|
||||
}
|
||||
uc.close();
|
||||
}catch(Exception e){
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
MainGui.addNotification("Couldn't download update", 2);
|
||||
}
|
||||
}
|
||||
} else{
|
||||
if(uc.getLatestVersion() == Start.VERSION){
|
||||
MainGui.addNotification("QuickLaunch is up to date", 2);
|
||||
}
|
||||
else {
|
||||
MainGui.addNotification("Update server unavailable", 2);
|
||||
}
|
||||
new UpdateFileHandler().launch();
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanDirectory(){
|
||||
|
||||
Reference in New Issue
Block a user