tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
40
ZUGRIFFE
1511
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    hallo zusammen,

    folgendes problem ich wollte nur ein kleines Programm schreiben das mehrere Programme installiert ohne das man was machen muss also eine silent installation.
    ich hab das auch schon mit batch gemacht (was auch funktioniert), Nun wollte ich das zum üben in Java programmieren. Nur eine exe aufzurufen habe ich auch hinbekommen, nur die exe mit parametern zu starten leider nicht. HIer mal der Code was ich bis jetzt habe:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    Runtime rt = Runtime.getRuntime();
    String[] command = {"wrar380d.exe, "/s"};
    try {
    Process install = rt.exec(command);
    install.waitFor();
    System.out.println("Process exit code is:" + install.exitValue());
    log.append("WinRAR fertig installiert! \r\n");
     }
    catch(IOException e) {System.err.println(
    "IOException starting process!");
    log.append("Fehler beim starten der Installation von WinRAR \r\n");
     }
    catch(InterruptedException e) {System.err.println(
    "Interrupted waiting for process!");
      }
            
      }

    Danke für eure Hilfe

    mfg

    Seji
     

  2. #2
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    Wenn das der Code ist, den du gepostet hast.....naja....wahrscheinlich nicht....

    also:
    Code java:
    1
    
    rt.exec("winrar.exe /s");
    klappt echt nicht?

    wie macht sich das denn bemerkbar?
     

  3. #3
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    Zitat Zitat von benhaze Beitrag anzeigen
    Wenn das der Code ist, den du gepostet hast.....naja....wahrscheinlich nicht....
    Wenn du damit sagen willst das ich das nicht selber geschrieben habe, hast du recht. Ich hab mir den Code ausm Inernet zusammengesucht.

    wie macht sich das denn bemerkbar?
    Es macht sich bemerkbar indem er eine IOException wirft und zwar in Zeile 10.

    Und
    Code java:
    1
    
    rt.exec("winrar.exe /s");
    geht leider auch net, was ich haber aber auch schon probiert hatte.
     

  4. #4
    Avatar von joschi70
    joschi70 joschi70 ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Beiträge
    143
    Hi,

    bis auf das fehlende " in Zeile 2 sieht das doch gut aus.
    Was macht denn die "/s" Option?

    Habe kein winrar.

    Gruß
    joschi
     

  5. #5
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    was sagt denn die Exception genau?
    Code java:
    1
    2
    3
    4
    
    ...catch(IOException e)
    {
       e.printStackTrace(); //für mehr infos
    }

    Wenn du damit sagen willst das ich das nicht selber geschrieben habe, hast du recht. Ich hab mir den Code ausm Inernet zusammengesucht.
    ne, das wollt ich damit eigentlich nicht sagen...gestern sah der code irgendwie absolut nicht kompilierfähig aus...

    bis auf das fehlende " in Zeile 2 sieht das doch gut aus.
    stimmt....keine ahnung was ich da gesehen habe.... das "IOException in Zeile 10 hatte mich irritiert.
    wahrscheinlich wegen der Formatierung...
     

  6. #6
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    Wenn du in deinem Code *nicht* den vollen Pfad zu der winrar.exe angibst
    muss sich deine exe in folgenden Verzeichnis befinden:

    Code java:
    1
    
    System.out.printLn(new File(".").getAbsolutePath(););

    (sonst gibbet wahrscheinlich eine FileNotFoundException oder so....)
     

  7. #7
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    Hallo zusammen,

    danke für die vielen antworten. habs dadurch hinbekommen. Code sieht jetzt so aus(sry für die schlechte formatierung):

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    log.append("WinRAR wird nun Installiert, bitte warten... \r\n");
    String pfad=new File(".").getAbsolutePath();
    Runtime rt = Runtime.getRuntime();
    String[] command = {pfad+"/data/"+"wrar380d.exe","/s"};
    try {
    Process install = rt.exec(command);
    install.waitFor();
    System.out.println("Process exit code is:" + install.exitValue());
    log.append("WinRAR fertig installiert! \r\n");
    }
    catch(IOException e) {
    System.err.println("IOException starting process!");
    e.printStackTrace(printWriter);
     System.out.println(stringWriter.toString());
     }
    catch(InterruptedException e) {System.err.println(
    "Interrupted waiting for process!");
      }
            
     }

    ne, das wollt ich damit eigentlich nicht sagen...gestern sah der code irgendwie absolut nicht kompilierfähig aus...
    Ja sry, hab vergesen zu sagen das nur ein Codeauschnitt handelt. ich wollte net ganzen code mit gui usw. posten.

    Was macht denn die "/s" Option?
    Dadurch wird WinRAR silent installiert, ich will ein "AllinOneSilent" installer machen...

    Es lag schließlich es daran das ich nicht den kompletten Pfad angeben habe.
     

  8. #8
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    Code :
    1
    
    String[] command = {pfad+"/data/"+"wrar380d.exe","/s"};

    pfad angaben werden soweit ich weiß in windows mit
    Code :
    1
    
    \
    getrennt angegeben und nicht wie bei dir mit
    Code :
    1
    
    /

    dabei nicht vergessen: um ein \ in Java in einen String zuschreiben musst du \\ eingeben
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  9. #9
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    ok danke werde es ändern.

    mfg

    Seji
     

  10. #10
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    So ich bin nochmal

    ein problem hätte ich da noch und zwar, das wenn ich installieren klicke dann sollte das Programm erst ausgeben:" andwendung xx wird installiert bitte warten.." das gibt er aber erst aus wenn die anwendung fertig installiert ist.

    Hier könnt ihr euch diesmal den ganzen qulltext anschauen.
     

  11. #11
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    also zuerst:

    / im windows-pfad unter java benutzen ist gar kein problem.

    der Vorteil dabei:
    - keine blöden doppelten \ (also \\)
    - auch unter nicht Windows-Systemen nutzbar

    zum anderen:
    - pack dein exec("winrar") in einen Thread
    - wenn dein exec im EDT(event-dispatch-thread) läuft, wird alles blockiert bis er fertig ist....
     

  12. #12
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    man lernt nie aus
    gut zu wissen @ benhaze
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  13. #13
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    hier nochmal nen kleines Beispiel:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    Thread t = new Thread(new Runnable() {
     
                @Override
                public void run() 
                {
                   String pfad=new File(".").getAbsolutePath();
                   Runtime rt = Runtime.getRuntime();
     
                   String[] command = {pfad+"/data/"+"wrar380d.exe","/s"};
                   try 
                   {
                        Process install = rt.exec(command);
                        install.waitFor();
                        System.out.println("Process exit code is:" + install.exitValue());
                        log.append("WinRAR fertig installiert! \r\n");
                   }
                   catch(IOException e) 
                   {
                       System.err.println("IOException starting process!");
                       e.printStackTrace(printWriter);
                       System.out.println(stringWriter.toString());
                   }
                   catch(InterruptedException e) 
                   {
                       System.err.println("Interrupted waiting for process!");
                   }
            });
            t.start();

    dann musste halt noch was einbauen um bescheid zu bekommen wann der thread durch ist...
     

  14. #14
    seji seji ist offline Mitglied Bronze
    Registriert seit
    Aug 2008
    Beiträge
    28
    okay danke hört sich logisch an. ich werds morgen probieren hab heute leider keine zeit.

    mfg

    Seji
     

  15. #15
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    hab mir nochmal den code angesehen...

    also nochmal zum Verständnis:

    im Prinzip muss *NUR*

    Code java:
    1
    
    rt.exec(command);

    in einen Thread.
    Alles andere kann (sollte!?) außerhalb passieren.

    Nochwas:

    je nachdem WIE deine Anwendung gestartet wurde, kann:
    Code java:
    1
    
    new File(".").getAbsolutePath();
    auch mal einen anderen Pfad (als den von dir vermuteten) ausgeben!

    In meinen Servlets wird folgendes ausgegeben:
    c:\apache\tomcat\bin
    (also daran denken)
     

Ähnliche Themen

  1. Standardwert bei Parametern
    Von Veränderung im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 15.12.08, 20:45
  2. CMD mit Parametern starten
    Von KartoffelKiffer im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 12.07.07, 15:36
  3. Antworten: 4
    Letzter Beitrag: 17.10.06, 21:23
  4. Thread starten, stoppen, erneut starten.
    Von flashray im Forum Java
    Antworten: 1
    Letzter Beitrag: 22.01.06, 14:14
  5. Makro automatisch starten beim Starten von Word
    Von zoltan im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 17.11.04, 14:30