Zum Inhalt springen

[mac]Druckerinstallation in JAVA


Empfohlene Beiträge

Geschrieben

Hallo,

ich will mir ein Programm samt gui basteln um MAC Drucker per Klick oder später Checkbox-Auswahl installieren zu können.

Problem:

Ich schaffe es weder den Unix- (lpadmin..), noch den applescript- (do shell script "lpadmin..") Befehl aufzurufen.

Momentan habe ich ein applescript, welches die Drucker installiert und ich rufe in Java diese applescript datei auf.

Problem dabei ist, dass ich die applescript datei ja als Pfadangabe angegeben habe. Das Programm funktioniert dann also nichtmehr sobald ich es iregndwo anders hin verschiebe, z.b. auf anderen Rechnern verteile.

Kann mir jmd. helfen wie ich das am besten löse?

Hier mal der Quellcodes

UNIX-Befehl:

lpadmin -p 5570_EDV -E -v lpd://192.168.15.52 -P /Users/Shared/Druckerbeschreibungen/Canon\ iR5570-6570-M3\ PS\ Ver\ 1.1
applescript:
do shell script "lpadmin -p \"5570_EDV\" -E -L \"EDV Gang\" -o printer-is-shared=false -v lpd://192.168.15.52 -P /Users/Shared/Druckerbeschreibungen/Canon\\ iR5570-6570-M3\\ PS\\ Ver\\ 1.1"
Java Funktion um die es geht:
        //Funktion Button "5570 EDV"

        b_5570_edv.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ 5570_EDV.app"; UnixComm(cmd);}

        });
der gesamte code (falls benötigt):

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


/**

 * @author andreas heinle

 *

 */


class mpinstall {

    //Deklaration

    private Frame f;

    private Panel pOben, pUnten;

    private Label l, l2;

    private Button b_5570_edv, b_clc_4040, b_ImagePressC1, b_clc_1100_pharma, b_ir5570_crea_3og;


    //Erzeugung

    public mpinstall()

    {

        f = new Frame();

        pOben = new Panel();

                pUnten = new Panel();

        l = new Label("Zu installierende Drucker auswählen:");

        l2 = new Label("");

        b_5570_edv = new Button("5570 EDV");

                b_clc_4040 = new Button("CLC 4040");

                b_ImagePressC1 = new Button("ImagePress C1");

                b_clc_1100_pharma = new Button("CLC 1100 Pharma");

                b_ir5570_crea_3og = new Button("IR5570 Creation 3.OG");


    }


        //vorbereitung zum aufruf der applescripts

        public static String UnixComm(String cmd){

        try{

            Process Results=Runtime.getRuntime().exec(new String[] {

                "/bin/sh","-c",cmd});

            //Results.waitFor(); //- Add this line if and only if you aren't collecting any data but need the command line stuff to have finished before continuing.

            //If you don't need either then you can remove 'Process Results=' from the line above.

            BufferedReader br=new  BufferedReader(new InputStreamReader(Results.getInputStream()));

            String s=br.readLine();

            br.close();

            br=null;

            Results=null;

            return s;

        }

        catch(Exception e){

            return "Error with UNIX Command";

        }

    }


    //Festlegen der Eigenschaften des Programms

    public void frameFestlegen()

    {

        f.setTitle("Heye Druckerinstallation (Macs)");

        f.setSize(500,300);

        f.addWindowListener(new WindowAdapter()

        {

            public void windowClosing(WindowEvent e)

            { System.exit(0); }

        } );


        //Elemente platzieren

        //Layout pOben

        pOben.setLayout(new GridLayout(3,1));

        pOben.add(l);pOben.add(l2);


                //Layout pUnten

                pUnten.setLayout(new GridLayout(2,4));

        pUnten.add(b_5570_edv);pUnten.add(b_clc_4040);

                pUnten.add(b_ImagePressC1);pUnten.add(b_clc_1100_pharma);

                pUnten.add(b_ir5570_crea_3og);


        //Fenster Layout

        f.setLayout(new BorderLayout());

        f.add(pOben, BorderLayout.NORTH);f.add(pUnten, BorderLayout.CENTER);


        //Funktion Button "5570 EDV"

        b_5570_edv.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ 5570_EDV.app"; UnixComm(cmd);}

        });


                //Funktion Button "CLC 4040"

        b_clc_4040.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ CLC\\ 4040.app"; UnixComm(cmd);}

        });


                //Funktion Button "ImagePressC1"

        b_clc_4040.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ CLC\\ 4040.app"; UnixComm(cmd);}

        });


                //Funktion Button "CLC 1100 Pharma"

        b_clc_4040.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ CLC\\ 4040.app"; UnixComm(cmd);}

        });


                //Funktion Button "iR5570 Creation 3.OG"

        b_ir5570_crea_3og.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            { String cmd="osascript /Users/heinle/Desktop/printer\\ scripts/install\\ 5570\\ Creation\\ 3OG.app"; UnixComm(cmd);}

        });


    f.setVisible(true);

    }



    //Hauptmethode

    public static void main(String[]args)

    {

        mpinstall fenster = new mpinstall();

        fenster.frameFestlegen();


    }

}

Vielen Dank für die Bemühungen :)

Andreas

PS: Ich nutze NetBeans dafür

Geschrieben

Ich versteh nicht so ganz wie du das mit dem Suchpfad meinst.

Es geht darum das wir ca. 100 Drucker haben und täglich an verschiedenen Rechnern verschiedenste Drucker davon manuell installieren müssen.

Es sind auch helios Drucker dabei, also verdammt viel copy & paste Arbeit (stunden).

Geschrieben

Schau Dir die Umgebungsvariable PATH an, die kannst Du global über die /etc/profile oder userbezogen setzen. Lege Dein Applescript in einen entsprechenden Pfad und Du kannst mit Deinem Applescript arbeiten

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...