HerrWinter: perl und exe und konsole

Grüß Gott.

Ich habe es endlich geschafft aus einem Perl Programm eine exe-Datei zu machen. Alles funktioniert so weit. Aber eines gefällt mir noch nicht so: Wenn ich ein Perl Programm in eine exe umwandle startet die exe datei die Konsole. Kann man es mit irgendeinem Modul o.ä. verändern sodass es quasi in einer Konsolen unabhängigen Oberfläche startet? Zum Beispiel wie bei der C/C++ Programmierung?

Danke!!
mfg

  1. hallo,

    Ich habe es endlich geschafft aus einem Perl Programm eine exe-Datei zu machen.

    Warum untetrnimmst du diese Anstrengung?

    Wenn ich ein Perl Programm in eine exe umwandle startet die exe datei die Konsole. Kann man es mit irgendeinem Modul o.ä. verändern sodass es quasi in einer Konsolen unabhängigen Oberfläche startet?

    Du solltest das aktuelle Forum aufmerksamer mitlesen. Genau dieselbe Frage wird nur wenig weiter unten auch diskutiert, außerdem hättest du im Forums-Archiv fündig werden können.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hi,

    Ich habe es endlich geschafft aus einem Perl Programm eine exe-Datei zu machen. Alles funktioniert so weit.

    Bravo *SCNR* ;)
    Welchen Nutzen ziehst du draus?

    Aber eines gefällt mir noch nicht so: Wenn ich ein Perl Programm in eine exe umwandle startet die exe datei die Konsole. Kann man es mit irgendeinem Modul o.ä. verändern sodass es quasi in einer Konsolen unabhängigen Oberfläche startet?

    Ich bin mir nicht sicher was du willst. Meinst du mit unabhängige Oberfläche eine GUI?
    Hier sind ein paar Möglichkeiten aufgelistet: http://en.wikibooks.org/wiki/Programming:Perl_GUI_programming.

    Zum Beispiel wie bei der C/C++ Programmierung?

    Du kannst natürlich auch mit C/C++ Konsolenanwendungen schreiben.

    mfG,
    steckl

    1. Hallo steckl

      Bravo *SCNR* ;)
      Welchen Nutzen ziehst du draus?

      Wenn ich Du wäre, dann würde ich mir solche, von Unkenntnis der Materie geprägten Kommentare wirklich verkneifen. Es gibt nämlich durchaus ernsthafte Anwedungsgebiete, bei denen in Windows Executables gepackte Perl Module eingesetzt werden.

      Beispiel:

      http://www.sno.phy.queensu.ca/~phil/exiftool/

      Viele Grüße

      Uwe
      Portland, Oregon

      1. hallo uwe,

        Es gibt nämlich durchaus ernsthafte Anwedungsgebiete, bei denen in Windows Executables gepackte Perl Module eingesetzt werden.

        Die gibt es. Allerdings: alles, was sich mit einer solchen EXE machen läßt, kann man auch mit einem winzigen Batch-Script erreichen, in dem einfach nur "perl [scriptname]" drinsteht. Ich halte es für eine überflüssige Anstrengung, aus Perl-Scripts EXE-Files zu machen.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hallo Christoph

          Ich halte es für eine überflüssige Anstrengung, aus Perl-Scripts EXE-Files zu machen.

          Eben nicht, denn mit in EXE's gepackten Perl Modulen benötigst du nicht den Perl Interpreter auf deinem System, um Perl Scripts laufen zu lassen. Ich gebe dir gerne ein Beispiel:

          Stell dir vor, du willst eine Software schreiben, die Meta Informationen aus Bilddateien extrahiert und anzeigt. Selbstverständlich kannst man die notwendigen Routinen dafür selber programmieren (falls man mehrere Jahre Zeit hat und leicht wahnsinning ist...), aber wozu? Ich kann genauso gut das ExifTool von Phil Harvey nehmen und für meine Zwecke ausnutzen. Das ist fünf Minuten Arbeit und ich brauch noch nichtmal den Perl Interpreter auf dem System des Endanwenders, um die volle Funktionalität meines Programms zu gewährleisten.

          Viele Grüße

          Uwe
          Portland, Oregon

          1. hallo uwe,

            Ich halte es für eine überflüssige Anstrengung, aus Perl-Scripts EXE-Files zu machen.
            Eben nicht, denn mit in EXE's gepackten Perl Modulen benötigst du nicht den Perl Interpreter auf deinem System

            Das ist leider ein Irrtum, aber er ist schwer durchschaubar. Schau dir einfach mal an, _was_ da alles in die EXE gepackt wird. Es sind Teile des Interpreters enthalten, und es sind zumindest Teile der Basismodule enthalten. Richtig ist allerdings, daß so eine EXE auch ohne Vorhandensein eines Perl-Interpreters funktioniert und damit auf einer Windows-Kiste ausführbar ist, auf der sonst keinerlei Perl installiert wurde. Aber immer nur für das _eine_ Script, für das sie erstellt wurde.
            Aber was hat man davon? Perl zu installieren ist auch unter Windows eine Sache von sehr wenigen Minuten, es ist kostenlos ...

            Na gut, es mag sein, daß es hie und da tatsächlich geboten scheint, solche EXE-Files zu erzeugen, und ich leugne ja nicht, daß das geht. Meine Aussage war, daß _ich_ es nicht für nötig halte - du mußt dich dieser Aussage ja nicht anschließen.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
            1. Hi Christoph

              Bist aber noch spät unterwegs...

              Natürlich müssen Teile des Interpreters in der EXE Datei mit drin sein; sonst könnten die enthaltenen Scripts ja nicht intern ausgeführt werden. Ich hab mich schlecht ausgedrückt: ich meinte, daß ich meinen End User nicht dazu anhalten muß, erst 15.4MB (ActivePerl) runterzuladen und zu installieren, bevor er mein Programm ausführen kann. Die 1,9 MB ExifTool EXE liefer ich gleich so mit.

              ...du mußt dich dieser Aussage ja nicht anschließen.

              Kann ich in diesem Fall auch nicht... ;-)

              Gute Nacht nach Deutschland - ich schmeiß jetzt erstmal den Grill an.

              Uwe
              Portland, Oregon

          2. Stell dir vor, du willst eine Software schreiben, die Meta Informationen aus Bilddateien extrahiert und anzeigt. Selbstverständlich kannst man die notwendigen Routinen dafür selber programmieren (falls man mehrere Jahre Zeit hat und leicht wahnsinning ist...), aber wozu? Ich kann genauso gut das ExifTool von Phil Harvey nehmen und für meine Zwecke ausnutzen. Das ist fünf Minuten Arbeit und ich brauch noch nichtmal den Perl Interpreter auf dem System des Endanwenders, um die volle Funktionalität meines Programms zu gewährleisten.

            Naja, dann würde ich mir eine Bibliothek, in der Sprache in der ich die Anwendung schreibe und die die diese Funktionalität erfüllt, suchen. Das ist kein Grund für eine Perl exe. Ich nutze auch ExifTool, aber eben als Modul in den Perlskripten.

            Struppi.

            1. Hi Struppi

              Naja, dann würde ich mir eine Bibliothek, in der Sprache in der ich die Anwendung schreibe und die die diese Funktionalität erfüllt, suchen.

              Könnte man natürlich machen, aber was tust du, wenn es keine entsprechenden DLL's gibt (die nicht der GPL unterliegen, meine ich) oder wenn dir die Header Files nicht zur Verfügung stehen und du sie nicht in die Programmiersprache deiner Wahl übersetzen kannst?

              Gruß

              Uwe
              Portland, Oregon

              1. Naja, dann würde ich mir eine Bibliothek, in der Sprache in der ich die Anwendung schreibe und die die diese Funktionalität erfüllt, suchen.

                Könnte man natürlich machen, aber was tust du, wenn es keine entsprechenden DLL's gibt (die nicht der GPL unterliegen, meine ich) oder wenn dir die Header Files nicht zur Verfügung stehen und du sie nicht in die Programmiersprache deiner Wahl übersetzen kannst?

                Dann hast du zwei Lösungsmöglichkeiten, entweder mit einem externen Programm, wie du es vorschlägst oder gleich auf Perl umsteigen. Es ist aber nicht unbedingt DIE Lösung eine aufgeblähte exe Datei zu verwenden. Da ich selbst eigentlich nur Perl verwenden, stellt sich mir aber die Frage bisher nicht. Da z.b. die ExifTools ja als Modul verfügbar sind.

                Perl ist halt eine Skriptsprache. Um eine exe zu erzeugen müssen im Prinzip der compiler, der linker, alle potentientiellen Module komplett in die Anwendung eingebaut werden, für extrem Fälle ist das vielleicht eine Lösung eines Problems, als sinnvoll würde ich es aber nicht bezeichnen. Das wäre im Prinzip ähnlich, wie wenn du C/C++ Anwendung als Quellcode vertreiben würdest.

                Struppi.

                1. Hi Struppi

                  Perl ist halt eine Skriptsprache. Um eine exe zu erzeugen müssen im Prinzip der compiler, der linker, alle potentientiellen Module komplett in die Anwendung eingebaut werden...

                  Ich habe sogar mal daran gedacht, ExifTool direkt nach Delphi zu portieren. Als ich allerdings im Quellcode sah, wie viele Module tatsächlich involviert sind, hab ich schnell wieder die Finger davon gelassen.

                  Gruß

                  Uwe
                  Portland, Oregon

                  1. Ich habe sogar mal daran gedacht, ExifTool direkt nach Delphi zu portieren. Als ich allerdings im Quellcode sah, wie viele Module tatsächlich involviert sind, hab ich schnell wieder die Finger davon gelassen.

                    Das würde ich als sinnvoll bezeichnen ;-)
                    Es sieht nach viel aus, aber das meiste sind wohl nur Datenfelder für die verschiedenen Optionen der Kameras. aber nach einer Heidenarbeit sieht es schon aus.

                    Struppi.

                    1. Hi

                      Es sieht nach viel aus, aber das meiste sind wohl nur Datenfelder für die verschiedenen Optionen der Kameras. aber nach einer Heidenarbeit sieht es schon aus.

                      EXIF, IPTC etc. aus den Dateien zu extrahieren, ist relativ simpel. Übel sind eigentlich nur die Maker Notes, weil das Zeugs proprietär ist und jeder Hersteller sein eigenes Süppchen kocht.

                      Ich bin mit der ExifTool exe einfach nur den Weg des geringsten Widerstandes gegangen. Wozu das Rad neu erfinden, wenn es bereits entsprechende, erstklassige Lösungen gibt? Und Phil Harvey ist ein sehr kooperativer Mensch, der auch keine Probleme damit hat, sein Werk für die kommerzielle Nutzung freizugeben. Wobei mir allerdings immer noch nicht ganz klar ist, wie ich die "Artistic Licence" von PERL zu deuten habe.

                      Gruß

                      Uwe
                      Portland, Oregon

      2. Hi,

        Wenn ich Du wäre, dann würde ich mir solche, von Unkenntnis der Materie geprägten Kommentare wirklich verkneifen.

        Sorry, ich war gestern nur ziemlich genervt. Den Kommentar hätte ich mir auch sparen können.

        Aber die Frage nach dem Nutzen war ernst gemeint. Den einzigen "Vorteil" den ich darin sah war, dass der Anwender des Programms den Quellcode nicht sehen kann.

        mfG,
        steckl

  3. Grüß dich

    Arbeitest du unter Windows und hast etwas Ahnung von der Programmierung? Dann gibt es eine Möglichkeit:

    Du kannst die Anzeige der Konsole unterbinden, den Input/Output des Konsolenprogramms abfangen (mit Hilfe sogenannter Pipes), und die generierten (z.B.) Strings in deinem Programm weiterverarbeiten. Hier ein Beispiel für Delphi:

    http://www.delphi3000.com/articles/article_2112.asp

    HTH

    Uwe
    Portland, Oregon

  4. Grüße,
    ob pearl oder schere-
    werkzeuge sind zweckmäßig - eher man dir sagen kann ob du einen kreuz- oder schlitzschruaber brauchst, wäre ein blick auf die schrauben nötig.

    welchem zweck dient deine kreation?
    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    http://www.sexgott-or-not.com/?test=428054
  5. Ich habe es endlich geschafft aus einem Perl Programm eine exe-Datei zu machen. Alles funktioniert so weit. Aber eines gefällt mir noch nicht so: Wenn ich ein Perl Programm in eine exe umwandle startet die exe datei die Konsole. Kann man es mit irgendeinem Modul o.ä. verändern sodass es quasi in einer Konsolen unabhängigen Oberfläche startet? Zum Beispiel wie bei der C/C++ Programmierung?

    Also zu meiner Zeit waren C/C++ Programme auch Konsolenprogramme.

    Du kannst mit Perl aber auch GUI Programme schreiben, dazu empfiehlt sich Tk oder wxPerl. wx sieht schöner aus, Tk ist älter und vermutlich ausgereifter bzw. gibt es vermutlich mehr Unterstützung mit Modulen. In so einem Fall wird die Umwandlung in eine Ausführbare Datei, aber richtig schwierig, weil diese Module natürlich richtig gross sind und u.U. mehr oder weniger komplett in die exe mit eingebunden werden müssen.

    Kurz gesagt, es ist nicht sinnvoll Perl zu benutzen um Standalone Anwendungen in einer grafischen Umgebung zu schreiben. Es ist vielleicht in Einzelfällen, für Kommandozeilen Programme, erträglich, wie das Beispiel von Uwe. Aber selbst da, sind die Programme um ein vielfaches größer, als wenn sie direkt in einer Sprache die übersetzt geschrieben werden.

    Wenn dein Programm keine Ein- oder ausgabe erwartet gibt es auch Tricks um die Konsole zu umgehen, die Threads dazu, hat dir Christoph schon gezeigt.

    Struppi.