Wie erzeuge ich eine ausführbare Datei mit PAR?

Inhalt:

PAR

PAR ist ein Modul von Autrijus Tang, mit dem ausführbare Dateien erzeugt werden können.

Arbeitsweise

PAR erstellt ein Archiv, ähnlich den .jar-Dateien bei Java. Man kann also die einzelnen Dateien ansehen.

Mit PAR kann man seinen Quellcode nicht "unlesbar" machen. Jeder, der weiß, dass es eine mit PAR gepackte Datei ist, kann sich den Inhalt mit einem Archiv-Programm wie WinZip oder WinRAR anschauen.

Das Modul eignet sich trotzdem hervorragend, um Programme zu verteilen. Stellen Sie sich vor, Sie schreiben ein Programm und Ihr Kollege in der Produktionsabteilung soll das Programm benutzen, hat jedoch kein Perl installiert - was nun?

Entweder beim Kollegen Perl installieren - nein, soll nicht gemacht werden. Selbst wenn Perl installiert wird, müssten noch die ganzen Zusatzmodule installiert werden. Und dann hat man doch wieder eins vergessen...

Eine ganz praktische Lösung bietet hier PAR. Man entwickelt das Programm, führt PAR aus und gibt die Datei an den Kollegen weiter.

Installation

Am besten nach dieser Anleitung

Archiv erstellen

pp -o archiv.par -p script.pl

Skript ausführen (aus Archiv)

Executable erstellen

Die einfachste Möglichkeit, die ausführbare Datei zu erzeugen ist die Verwendung von pp.

pp --output=test script.pl

Genausogut ist es möglich, mehrere Skripte zusammenzufassen:

pp --output=test script.pl script2.pl script3.pl

Executable ausführen

Bei Windows reicht ein Doppelklick auf die .exe.

Am einfachsten startet man das Programm in der Kommandozeile:

./test.exe

Möglichkeiten von pp

Mit pp kann man nicht nur Archive packen und zu Executables umwandeln. pp bietet einige Optionen, mit denen man viel erreichen kann. Einige dieser Optionen werden hier aufgeführt:

pp -M Spreadsheet::SimpleExcel hello zusätzliches Modul

Probleme und Lösungen

Problem:

C:\Test>pp -o Programm.exe script.pl
Can't spawn "C:\usr\bin\parl.exe": Bad file descriptor at C:\usr\bin\pp line 372.

So hat's bei mir dann funktioniert:

Ich habe zuerst mit pp -o Prog.par -p script.pl ein .par-Archiv erstellt und danach erst die ausführbare Datei mit pp -o Programm.exe Prog.par

Ich musste mittlerweile feststellen, dass das nicht das Problem war! Manchmal will parl.exe einfach nicht, da hilft nur mehrmals hintereinander versuchen...

Problem:

C:\Test>pp -o Programm script.pl

Ich kann die erzeugte Datei jetzt nicht ausführen

Lösung:

Windows-Executables benötigen eine Dateiendung (.exe). Mit einem

C:\Test>pp -o Programm.exe script.pl
sollte eine Datei erzeugt werden, die auch ausführbar ist...

Problem:

Unter Windows taucht die DOS-Box auf. Ich habe aber ein GUI, da stört die Box nur. Wie verhindere ich das aufpoppen der DOS-Box?

Lösung:

(von Strat im Forum): Unter Windows kannst du auch mit der Option --gui das DOS-Fenster entfernen (aber erst, wenn das Programm ohne diesen Parameter läuft, weil sonst die Fehlersuche unnötig erschwert wird).

pp --gui -o program.exe script.pl

Problem:

Mein Tk-Fenster zeigt nur noch kryptische Zeichen und nicht mehr den Original-Text. Es sieht jetzt so aus:

Lösung:

Schreibe an den Anfang des Programms ein use Encode::Unicode;. Das Problem besteht darin, dass PAR (noch) nicht mit Unicode umgehen kann und daher die Zeichen nicht richtig anzeigt.

Problem

Ich benutze __DATA__ in meinen Skripten/Modulen und dann will PAR nicht mehr.

Lösung:

Mache eine Leerzeile von __DATA__

Problem

Meine Anwendung stürzt ab und die Ursache ist ein Verzeichnis /tmp/par-hfk/cache-*

Lösung:

In diesem Cache können alte Zombies wiederbelebt werden. Um den Cache zu bändigen, muss die Anwendung mit der Option --clean gebaut werden.

Problem

Auf meinem Rechner klappt alles, aber auf einem anderen Rechner bekomme ich eine Fehlermeldung, die so ähnlich wie diese hier aussieht:

Lösung:

Es fehlt eine Library-Datei im par-Archiv. Einfach die fehlende(n) Libraries dazuladen. Dafür hat PAR die -l Option:

pp -l "vollerPfad\zurLibrary.dll" -o Archiv.par -p Skript.pl
z.B. (für obige Fehlermeldung)
pp -l C:\WINDOWS\system32\MSVCR71.dll -o Archiv.par -p Skript.pl
Je nachdem, welche Library fehlt (wird ja von PAR in der Fehlermeldung angegeben).

Links

http://search.cpan.org/search?query=par&mode=all
http://par.perl.org
http://renormalist.net/cgi-bin/twiki/view/PM/PAR
http://www.linux-magazin.de/Artikel/ausgabe/2004/09/perl/perl.html
http://forum.perl.de/bb/viewtopic.php?p=14306&

Erfahrungen

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):

---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie erzeuge ich eine ausführbare Datei mit PAR?
Autor ReneeBaecker
Bereich FaqAllgemeines
Tags
Topic revision: r6 - 21 Jun 2007 - 23:43:36 - ChristianKoerner
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um Rückmeldung.