Simplified and changed updated process to be more versatile and flexible
This commit is contained in:
parent
3c9ef9c987
commit
141374eee3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
#Sat Oct 06 17:21:25 CEST 2018
|
||||
Load-File-on-startup=true
|
||||
key2=44
|
||||
key1=29
|
||||
Check-for-updates-on-startup=true
|
||||
#Sun Apr 14 19:07:39 CEST 2019
|
||||
Load-File-on-startup=true
|
||||
key2=44
|
||||
key1=29
|
||||
Check-for-updates-on-startup=true
|
||||
|
|
|
@ -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(){
|
||||
|
|
Loading…
Reference in New Issue