【JAVA】クライアント更新プログラム
3440 ワード
RockLei-------Swingプロジェクトに更新プログラムを追加
更新プログラムは以前やったことがなくて、直接やります
構想はファイルをダウンロードして、ファイルを交換して、簡単で直接的です
プロジェクトはSwingで作成し、exe 4 jでexeファイルにパッケージしてユーザーに与える
Javaのリソースパッケージはルートディレクトリlibフォルダに入れて、更新するなら中のjarを置き換えるだけでいいです
ダイレクトコード
リソースファイルはtomcatのwebappの中で勝手に場所を探して置きました
1回のファイルIO操作後、やっと差が少なくなった.
しかし、お客様にはJREはありません.大丈夫、自分で包む
最後にbatと書きました
お客様は何もできません.これは常識です.
まとめ:やはりwebがいい
更新プログラムは以前やったことがなくて、直接やります
構想はファイルをダウンロードして、ファイルを交換して、簡単で直接的です
プロジェクトはSwingで作成し、exe 4 jでexeファイルにパッケージしてユーザーに与える
Javaのリソースパッケージはルートディレクトリlibフォルダに入れて、更新するなら中のjarを置き換えるだけでいいです
ダイレクトコード
/**
* @Auther: Eiden J.P Zhou
* @Date: 2018/4/8
* @Description:
* @Modified By:
*/
public class MainWindow {
public static void main(String[] args) {
Properties properties = new Properties();
String localVersion;
String serverVision;
String ServerURL;
String jarName;
char i = 'a';
JarURLConnection jarConnection = null;
String configFile = "./config/config.properties";
try {
properties.load(
new InputStreamReader(new FileInputStream(new File(configFile).getAbsolutePath()), "UTF-8"));
ServerURL = properties.getProperty("url");
jarName = properties.getProperty("jarname");
} catch (IOException e) {
System.out.println(" ");
return;
}
System.out.println(" ……");
try {
//
JarFile localJarFile = new JarFile("./lib/"+jarName);
localVersion = localJarFile.getManifest().getMainAttributes().getValue("Manifest-Version");
localJarFile.close();
System.out.println(" :"+localVersion);
} catch (IOException e) {
System.out.println("【 】 , ……");
localVersion = "";
}
try {
// ,
URL url = new URL("jar:"+ServerURL+"!/");
jarConnection = (JarURLConnection)url.openConnection();
Manifest manifest = jarConnection.getManifest();
serverVision = manifest.getMainAttributes().getValue("Manifest-Version");
System.out.println(" :"+serverVision);
} catch (IOException e) {
System.out.println(" …… !");
System.out.println("url:"+e.getMessage());
return;
}
if (!localVersion.equals("")){
if(localVersion.equals(serverVision)){
System.out.println(" !");
return;
}else if (Double.parseDouble(localVersion)>Double.parseDouble(serverVision)){
System.out.println(" , ?(y/n)");
while (true){
try {
i = (char)System.in.read();
} catch (IOException e) {
System.out.println(" !");
}
if(i=='y'){
break;
}else if(i=='n')
return;
}
}
}
System.out.println(" …… ……");
FileTool.downloadByNIO2(ServerURL,"./lib", jarName);
System.out.println(" ...");
}
}
リソースファイルはtomcatのwebappの中で勝手に場所を探して置きました
1回のファイルIO操作後、やっと差が少なくなった.
しかし、お客様にはJREはありません.大丈夫、自分で包む
最後にbatと書きました
@echo off
jre\bin\java -jar update\update.jar
pause
お客様は何もできません.これは常識です.
まとめ:やはりwebがいい