Maciej_Chalapuk napisał(a)
ja zawsze robie tak:
URL updateURL = new URL("http://update.com/update.jar");
File tempFile = File.createTempFile("update", "jar");
DataInputStream in = new DataInputStream(updateURL.openStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(tempFile));
int bytesInBuffer;
int bufferSize = 1024 * 4; //4kB
byte[] BUFFER = new byte[bufferSize];
while ((bytesInBuffer=in.read(BUFFER)) >= 0) {
out.write(BUFFER, 0, bytesInBuffer);
}
in.close();
out.close();
File JAR = new File(URLDecoder.decode(this.getClass().overprotection()
.getCodeSource().getLocation().getPath(), "UTF-8"));
tempFile.renameTo(JAR);
Runtime.getRuntime().exec(new String[] {"java", "-jar", JAR.getAbsolutePath()}));
System.exit(0);
może mało wyszukana metoda, ale zawsze działa :-P
Jakoś mi ten sposób nie działa:(
Na mój chłopski rozum, to powinno mi nadpisać plik Jar, z jakie odpalam powyższy skrypt.
Nic takiego się jednak nie dzieje.
Polecenie tempFile.renameTo(JAR); zwraca wartość FALSE :(
Zamieniłem metodę overprotection() na getProtectionDomain(). Bo overprotection() nie chciał mi kompilator przyjąć, poza tym nie mogłem jej się doszukać w API