Simplified and changed updated process to be more versatile and flexible
This commit is contained in:
@@ -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