Salut,
Nouvel article dans les cours et tutoriel Perl : Créer un exécutable à partir de sources Perl
Vos commentaires, corrections et remarques sont les bienvenues.
Merci !
Salut,
Nouvel article dans les cours et tutoriel Perl : Créer un exécutable à partir de sources Perl
Vos commentaires, corrections et remarques sont les bienvenues.
Merci !
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Très intéressant. Une idée de comment ça se passe sous strawberry avec PAR ?
Je pense que mon article pourrait s'utiliser également pour StrawberryPerl si ce dernier utilise ppm. Mais je n'ai pas testé. Peux-tu me dire s'il y a le gestionnaire ppm sous Strawberry ?
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Bonjour,
Pour mon application Kandela j'ai utilisé Strawberry, et ça marche sans problème.
(J'ai pas de Windows vierge pour retester, mais j'ai pas l'impression d'avoir du faire autre chose)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cpan install PAR::Packer pp -o kandela.exe kandela.pl
PS : C'est chouette Packer sans balise code "cpan install PAR:acker"
pour Strawberry.
Sinon pour PAR::Packer sans balise, il faut utiliser la balise [noparse]PAR::Packer[/noparse].
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Rien de bien constructif à dire, juste : merci beaucoup! ça marche impeccable (Windows 7 64-bits)
Bonjour,
Merci pour ce tutoriels Perl. il mériterai néanmoins quelques mis a jours (lien nmake faut par example).
J'ai réussit a compiler avec :
puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part cpan> install PAR::Packer
Qui a l'air de fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 c:\>pp -o prog.exe "c:\prog\connector.pl"
par contre, lors de l'execution, j'ai ce message d'erreur :
je précise que, dans la même commande msdos, "perl prog.pl" fonctionne correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 c:\>prog.exe The locale codeset (cp1252) isn't one that perl can decode, stopped at Encode/Locale.pm line 87. Compilation failed in require at LWP/UserAgent.pm line 975. Compilation failed in require at script/prog.pl line 11. BEGIN failed--compilation aborted at script/prog.pl line 11.
Merci d'avance pour l'aide
Antoine
Bonjour,
J'ai reinstallé Strawberry sur un XP SP3 vierge, et je n'ai pas eu de problème avec StrawBerry, par contre si on fait un
il va être en erreur. Il y a un patch de StrawBerrycpan install PAR::Packer
http://strawberryperl.com/pack age/k...patched.tar.gz
On detar, on va dans le répertoire, et
On a bien 3 erreurs au "test" mais ça fonctionne quand même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 dmake dmake test dmake install
Bonjour,
Très bon article.
J'ai pu convertir un .pl en .exe avec PAR, grâce à ton travail.
Merci d'avoir tapé un code complet pour l'installation !
Travail très utile, bravo.
Le tutoriel a été mis à jour, notamment le programme permettant d'installer PAR::Packer dans le chapitre « *Solution miracle ». Le programme peut être lancé sous Windows avec ActivePerl ou Strawberry Perl, ou sous Linux/Mac OS. En fonction de l'environnement, il lance les commandes adéquates. J'ai introduit également l'installation de modules Tk afin de pouvoir utiliser l'utilitaire tkpp.
Il y a aussi deux options de pp (ou tkpp) qui n'existent plus.
Bonne utilisation et n'hésitez pas à me faire un retour si vous avez un souci.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
MERCI djibril !
Super, juste un pb avec l'interface graphique tkpp
Jusqu'à ce jour je n'ai pas eu l'utilité de générer un exécutable, mais ma curiosité était trop grande, donc :
Sur Strawberry j'ai simplement fait un cpan install PAR:acker passé comme une lettre à la poste
En ligne de commande aucun pb, je réalise des exécutables qui fonctionnent parfaitement de gros pgm.pl contenant, entre autre, des appels à Tk ; Win32::API ; Win32::MediaPlayer...
En lançant l'interface graphique j'ai :
Donc je fais un install de Tk:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 E:\_APPLI\Veille>tkpp You have to install this module : - Tk::Pod [try command : cpan -i Tk::Pod]od qui plante alors que tous les autres install du cpan ont toujours fonctionné jusqu'à présent.
Durant l'installation j'ai un plantage de l'interpréteur Perlavec :
NB : J'ai bien un dmake.exe dans C:\Strawberry\c\bin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 CPAN: CPAN::SQLite loaded ok (v0.203) Database was generated on Sun, 22 Feb 2015 03:33:31 GMT Running install for module 'Tk::Pod' CPAN: Digest::SHA loaded ok (v5.91) CPAN: Compress::Zlib loaded ok (v2.064) Checksum for C:\STRAWB~1\cpan\sources\authors\id\S\SR\SREZIC\Tk-Pod-0.9942.tar.gz ok CPAN: Archive::Tar loaded ok (v1.96) CPAN: File::Temp loaded ok (v0.2304) CPAN: YAML::XS loaded ok (v0.41) CPAN: Parse::CPAN::Meta loaded ok (v1.4414) CPAN: CPAN::Meta loaded ok (v2.141170) CPAN: Module::CoreList loaded ok (v3.11) Configuring S/SR/SREZIC/Tk-Pod-0.9942.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Generating a dmake-style Makefile Writing Makefile for Tk::Pod Writing MYMETA.yml and MYMETA.json SREZIC/Tk-Pod-0.9942.tar.gz C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK Running make for S/SR/SREZIC/Tk-Pod-0.9942.tar.gz cp Pod/Cache.pm blib\lib\Tk\Pod\Cache.pm cp Pod/Search.pm blib\lib\Tk\Pod\Search.pm cp Pod/Util.pm blib\lib\Tk\Pod\Util.pm cp Pod/SimpleBridge.pm blib\lib\Tk\Pod\SimpleBridge.pm cp Pod/WWWBrowser.pm blib\lib\Tk\Pod\WWWBrowser.pm cp Pod/Tree.pm blib\lib\Tk\Pod\Tree.pm cp Pod.pm blib\lib\Tk\Pod.pm cp Pod/Search_db.pm blib\lib\Tk\Pod\Search_db.pm cp Pod/FindPods.pm blib\lib\Tk\Pod\FindPods.pm cp More.pm blib\lib\Tk\More.pm cp Pod/Styles.pm blib\lib\Tk\Pod\Styles.pm cp Pod/Text.pm blib\lib\Tk\Pod\Text.pm cp Pod_usage.pod blib\lib\Tk\Pod_usage.pod C:\Strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- tkpod blib\script\tkpod pl2bat.bat blib\script\tkpod C:\Strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- tkmore blib\script\tkmore pl2bat.bat blib\script\tkmore SREZIC/Tk-Pod-0.9942.tar.gz C:\STRAWB~1\c\bin\dmake.exe -- OK Running make test C:\Strawberry\perl\bin\perl.exe "-It" "-MTkTest" "-e" "check_display_test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/basic.t ......... ok t/cmdline.t ....... skipped: not on Windows t/more.t .......... ok t/optionalmods.t .. skipped: no Test::More and/or Devel::Hide modules t/pods.t .......... ok t/podtree.t ....... Dubious, test returned 255 (wstat 65280, 0xff00) All 5 subtests passed t/subclass.t ...... ok Test Summary Report ------------------- t/podtree.t (Wstat: 65280 Tests: 5 Failed: 0) Non-zero exit status: 255 Files=7, Tests=72, 15 wallclock secs ( 0.06 usr + 0.05 sys = 0.11 CPU) Result: FAIL SREZIC/Tk-Pod-0.9942.tar.gz C:\STRAWB~1\c\bin\dmake.exe test -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports SREZIC/Tk-Pod-0.9942.tar.gz Stopping: 'install' failed for 'Tk::Pod'.
Sinon en ligne de commande ça me va très bien !
MERCI !
[EDIT 08:05]
Pour info j'ai téléchargé Tk-Pod-0.9942-PPM520.tar.gz sur Bribes
Le tar -zxvf ne donne qu'un répertoire C:\Strawberry\Patch_et_Modules_TARGZ\blib\lib\Tk
J'ai copié ce Tk dans C:\Strawberry\perl\lib
Tkpp fonctionne !
- Fonctionne correctement sur ton test.pl, le test.exe s'exécute correctement
- Ne Fonctionne pas sur un gros Arabe.pl le Arabe.exe est bien généré mais ne s'exécute pas, il semble qu'il n'ait pas trouvé tous les modules ??? (Descripteur invalide dans console tkpp)
Le log en verbose 3 ne précise rien :
Bon rien de terrible pour moi, la ligne de commande qui génère l'exécutable correctement me suffit !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C:\Strawberry\perl\site\bin\pp.bat: Packing E:\_APPLI\Arabe\Arabe.pl ... TROP LONG !
C'était juste pour faire remonter l'info...
Encore MERCI !
Merci pour ce retour, je vais revérifier cela et tester afin d'améliorer la processus d'installation.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Pour moi l'installation est impeccable !
Il y a juste une différence de fonctionnement suivant que j'utilise tkpp ou pp
Et en fait je viens de trouver, en partie du moins :
J'ai un module perso TestModule.pm dans le répertoire qui contient le source.pl
Quand je lance pp dans le répertoire courant, aucun pb il trouve le module, l'inclut dans le .exe, tout est OK
Quand je lance tkpp toujours dans le répertoire courant, il ne trouve pas le module perso, bien que je l'ajoute dans la liste et même si j'ajoute le répertoire et le fichier.pm dans "Add Files, Directories and shared librairies"...
Au lancement dans une console ouverte j'ai bien l'ano :
Si je lance la commande générée par tkpp dans le répertoire courant c'est OK !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 E:\_APPLI\Arabe>arabe Can't locate TestModule.pm in @INC (you may need to install the TestModule module) (@INC c ontains: CODE(0x33777d0) C:\Users\Michel\AppData\Local\Temp\par-4d696368656c\cache-8afa7bd 4f480807e95d7330beb843435a87abfdd\inc\lib C:\Users\Michel\AppData\Local\Temp\par-4d6963686 56c\cache-8afa7bd4f480807e95d7330beb843435a87abfdd\inc CODE(0x3012ae8) CODE(0x3012f98)) at script/Arabe.pl line 19. BEGIN failed--compilation aborted at script/Arabe.pl line 19.
Code : Sélectionner tout - Visualiser dans une fenêtre à part E:\_APPLI\Arabe>C:\Strawberry\perl\bin\perl.exe "C:\Strawberry\perl\site\bin\pp.bat" --output="E:\_APPLI\Arabe\Arabe.exe" --compress 6 --bundle "E:\_APPLI\Arabe\Arabe.pl"![]()
Le script d'installation dans le tutoriel est OK alors, c'est bien.
Peux-tu m'envoyer le zip de ton programme Arabe ? Je vais faire des tests.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Il est beaucoup trop gros... et il faut des tas de fichiers pour le faire fonctionner...
Mais je reproduis facilement en prenant que le début :
Qui réclame TestModule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #!/usr/bin/perl #=================================================== # Auteur : dmganges avec l'aide précieuse de djibril # Date : 16/10/2012 # But : Cours d'arabe #=================================================== # Références croisées : # perl -MO=Xref Cours.pl # use strict; use warnings; use utf8; use Carp; use Tk; use Tk::LabFrame; use Tk::ROText; use Tk::Photo; use TestModule; # Perso, TestModule.pm doit exister dans répertoire courant use English '-no_match_vars'; use File::Spec; # Permet une meilleure gestion des noms des chemins sous tous les OS. use Encode; # Pour encoder notamment en iso-8859-16 les nom de fichier pour Win32::API use Config::Std; # Lecture/ecriture d'un fichier .ini use File::Basename; print "Coucou\n";
Au cas où :
TestModule.pm :
Mais il doit te parler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #!/usr/bin/perl use strict; use warnings; use Carp; # verifie si un module perl est installé sur une machine sub module_non_installe { my $un_module = shift; eval "use $un_module;"; if ($@ !~ /^\s*$/) { return $@; } return; } # Retourne l'information de présence ou non du module sub exist_module { my @modules = @_; my @modules_non_installes = grep { module_non_installe($_) } @modules; if (@modules_non_installes != 0) { return ("ABSENT"); } return ("PRESENT"); } 1;
En résumé pptk ne trouve pas le module, qu'on précise ou non l'ajout dans l'interface graphique.
J'ai vais voir comment améliorer tkpp.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
MERCI à toi !
En fait ça fonctionne
Pour un module dans le répertoire courant il faut ajouter dans le deuxième bouton "Add Directories" celui qui génère avec -p et non -d
c'est peut-être là qu'il faut préciser au niveau des boutons...
Il reste une ano en rouge lors de la génération mais c'est OK
![]()
J'ai corrigé tkpp. Il sera prochainement disponible dans le module PAR::Packer.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
MERCI beaucoup !
C'était déjà bluffant comme çà... c'est un SUPER boulot !
J'efface les images.
@+
Bonjour, pour ma part ça ne fonctionne pas, j'ai essayé de lancer le script magique mais j'obtiens cette erreur à la fin (j'ai ActivePerl)
j'ai pas installé nmake car je ne le trouve pas :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 windres -i winres/pp.rc -o ppresource.coff --input-format=rc --output-format=cof f --target=pe-x86-64 'windres' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. dmake.exe: Error code 129, while making 'ppresource.coff' dmake.exe: Error code 255, while making 'subdirs' RSCHUPP/PAR-Packer-1.025.tar.gz C:\Perl64\site\bin\dmake.exe -- NOT OK
et je précise que je l'ai déjà installé y a quelque temps sur un autre pc avec strawBerry cette fois et ça fonctionnait.
Si l'un d'entre vous a une idée merci
(ou l'une d'entre vous je suis pas regardant)
Partager