123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package de.nplusc.izc.izformats;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintStream;
- import java.io.UnsupportedEncodingException;
- import java.net.URL;
- import java.net.URLDecoder;
- import java.util.Map;
- import java.util.Scanner;
- import javax.swing.JFileChooser;
- import javax.swing.JTextArea;
- /**
- *
- * @author LH
- */
- public class sfxMain
- {
- public static void main(String args[])
- {
- try
- {
- //String path = processEnvVarsinLine("%temp%/iZunpaq");
-
- String path2 = sfxMain.class.getProtectionDomain().getCodeSource().getLocation().getPath();
- String decodedPath = URLDecoder.decode(path2, "UTF-8");
- System.out.println(decodedPath);
- IZPackage izp = new IZPackage(decodedPath);
- String[] content = izp.getFileList();
- boolean gotparamfile=false;
- boolean installer = false;
- boolean portableapp=false;
- for (String string : content)
- {
- if(string.equals("params.sfx"))
- {
- gotparamfile=true;
- }
- if(string.equals("sfx.bat"))
- {
- installer=true;
- }
- if(string.equalsIgnoreCase("portableapp"))
- {
- portableapp=true;
- }
- }
- String path = FileTK.getFilePath(decodedPath);
- if(portableapp)
- {
- path=processEnvVarsinLine("%temp%\\"+new File(decodedPath).getName());
- }
- String execafterXTract="";
- if(gotparamfile)
- {
- execafterXTract = replaceHashmarkedVars(izp.getFileContent("params.sfx"), "path", path);
- execafterXTract = replaceHashmarkedVars(execafterXTract, "sfxjar", decodedPath);
- }
- izp.unload();
- IZPackage.ExtractFilesToPath(decodedPath, path);
- if(gotparamfile)
- {
- FileTK.writeFile(execafterXTract,path+File.separator+"sfx.bat");
- runSingleCmd(path+File.separator+"sfx.bat");
- }
- else
- {
- if(installer)runSingleCmd(path+File.separator+"sfx.bat");
- }
- //exec
- }
- catch (UnsupportedEncodingException ex)
- {
-
- ex.printStackTrace();
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static String replaceHashmarkedVars(String line,String varname,String toReplace)
- {
- System.out.println("in: "+line);
- String linemod = line;
- int varstart = linemod.indexOf("#");
- int varend = linemod.indexOf("#", varstart + 1);
- String preVar = "";
- if (varstart == -1||varend == -1)
- {
- System.out.println("NullVar");
- return line;
- }
- if (varstart > 0)
- {
- preVar = linemod.substring(0, varstart);
- }
- String postVar = linemod.substring(varend + 1);
- String var = linemod.substring(varstart + 1, varend);
- System.out.println("davor: "+varstart);
- System.out.println("var: "+var);
- System.out.println("ende: "+varend);
- if(var.equalsIgnoreCase(varname))
- {
- System.out.println("recurseNormal");
- var = toReplace;
- postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
- }
- else
- {
- System.out.println("recurseOther");
- var="#"+var+"#";
- postVar=replaceHashmarkedVars(postVar, varname, toReplace);//falls sich noch wo anders eine versteckt
- }
- line = preVar + var + postVar;
- System.out.println("Retval"+line);
- return line;
- }
-
- public static String processEnvVarsinLine(String line)
- {
- Map<String, String> env = System.getenv();
- String linemod = line;
- int varstart = linemod.indexOf("%");
- int varend = linemod.indexOf("%", varstart + 1);
- String preVar = "";
- if (varstart == -1)
- {
- return line;
- }
- if (varstart > 0)
- {
- preVar = linemod.substring(0, varstart);
- }
- String postVar = linemod.substring(varend + 1);
- String var = linemod.substring(varstart + 1, varend);
- var = env.get(var.toUpperCase());
- line = preVar + var + postVar;
- return line;
- }
-
- public static String FileChooseDlg(javax.swing.JFrame frm)
- {
- return FileChooseDlg(frm,false,false,null);
- }
-
- public static String FileChooseDlg(javax.swing.JFrame frm,boolean restrict,boolean dirsOnly,String[] exts)
- {
- JFileChooser fc = new JFileChooser();
- String ret = "";
- //fc.
- if(!dirsOnly)
- fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
- else
- fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- if(restrict)
- {
- FIleLImiter f = new FIleLImiter();
- f.setExtensions(exts);
- fc.setFileFilter(f);
- }
- int returnVal = fc.showOpenDialog(frm);
- if (returnVal == JFileChooser.APPROVE_OPTION)
- {
- File file = fc.getSelectedFile();
- try
- {
- //This is where a real application would open the file.
- ret = file.getCanonicalPath();
- }
- catch (IOException ex)
- {
- }
- }
- return ret;
- //log.setCaretPosition(log.getDocument().getLength());
- }
-
-
- public static void runSingleCmd(String... runnable)
- {
- runSingleCmd(true, runnable);
- }
- public static void runSingleCmd(boolean logg, String... runnable)
- {
- runSingleCmd(true, false, runnable);
- }
- public static void runSingleCmd(boolean logg, boolean legacy, String... runnable)
- {
- runSingleCmd(logg, legacy, false, runnable);
- }
-
-
-
- public static String runSingleCmd(boolean logg, boolean legacy, boolean sret, String... runnable)
- {
- return runSingleCmd(logg, legacy, sret, null, runnable);
- }
- public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,JTextArea tx, String... runnable)
- {
- return runSingleCmd(logg, legacy, sret, false, tx, runnable);
- }
- public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,JTextArea tx, String... runnable)
- {
- return runSingleCmd(logg, legacy, sret, asArray, tx, null, runnable);
- }
-
- private static Process p;
- public static String runSingleCmd(boolean logg, boolean legacy, boolean sret,boolean asArray,final JTextArea tx, final PrintStream pw, String... runnable)
- {
- boolean execCrashed = false;
- String cret = "";
- //String rn = runnable[0];
- //String[]temp = runnable[0].split("\\.");
- /*if("bat".equals(temp[temp.length-1]))
- {
-
- runnable[0] = "cmd.exe";
- runnable[1] = "/c";
- runnable[2] = "\"\""+rn+"\" \"";
- }*/
- //else
- //{
- //String[] r2 = runnable;
- //}
- String cmd = "";
- if(!asArray)
- {
- for (String string : runnable)
- {
- cmd += string + " ";
- cmd = cmd.trim();
- }
- }
- try
- {
- {
- p = null;
- if(!asArray)
- p=Runtime.getRuntime().exec(cmd);
- else
- p=Runtime.getRuntime().exec(runnable);
- if(tx!=null)
- {
- new Thread(
- new Runnable()
- {
- @Override
- public void run()
- {
- Scanner scanner = new Scanner(p.getInputStream());
- Scanner scannerE = new Scanner(p.getErrorStream());
- while ((scanner.hasNextLine()||scannerE.hasNextLine()))
- {
- if(scanner.hasNextLine())
- {
- String l = scanner.nextLine();
- tx.append(l+"\n");
- if(pw!=null)
- pw.println(l);
- }
- if(scannerE.hasNextLine())
- {
- String l = scannerE.nextLine();
- tx.append(l+"\n");
- if(pw!=null)
- pw.println(l);
- }
- }
- }
- }
- ).start();
- }
- if (sret)
- {
- cret = new BufferedReader(new InputStreamReader(p.getInputStream())).readLine();
- }
- int rv = p.waitFor();
- if(rv>0)
- {
- execCrashed=true;
- }
- }
- }
- catch (Exception ex)
- {
- //TODO:SetupError_Here
- //Logger.getLogger(Tools.class.getName()).log(Level.SEVERE, null, ex);
- }
- return cret;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
|