【JAVA】クライアント更新プログラム

3440 ワード

RockLei-------Swingプロジェクトに更新プログラムを追加
更新プログラムは以前やったことがなくて、直接やります
構想はファイルをダウンロードして、ファイルを交換して、簡単で直接的です
プロジェクトは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がいい