[R] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multiples

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

[R] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multiples

#1

Message par ZDS »

Bonjour à tous,

Je me heurte à un gros problème de la commande "#AutoIt3Wrapper_Res_SaveSource=Y", qui ressemble plus à un bug du Wrapper qu'autre chose : Si j'utilise un #include ".\MonProg\Misc.au3" dans un script "MonProg.au3", la source récupérable ne concerne que le fichier d'entrée "MonProg.au3" (qui ne contient pas grand chose à part les infos du Wrapper, les includes, et un modèle de code assez générique avec les définitions des fonctions onFirstLaunch(), onLaunch(), onExit(), onError(), onRestart(), etc), je n'arrive pas à obtenir le fichier "Misc.au3" (en utilisant ResHacker par exemple).

C'est quand même dommage, car j'ai l'habitude Java-iste de cloisonner les fonctionnalités dans des fichiers séparés :
  • MonProg.au3
  • MonProg (répertoire du même nom que le point d'entrée)
    • Gui.au3
    • Modelisation.au3
    • Config.au3
    • Compilation.au3
    • Misc.au3
    • etc...
Et je ne pense pas être le seul ^^ (c'est plus facile pour maintenir, et aussi pour travailler sur un projet en équipe)

J'ai vu que Tlem avait bossé sur les alternatives à ce souci sur le forum anglophone il y a quelques temps, sans trouver de solution au souci sur "#AutoIt3Wrapper_Res_SaveSource=Y", quelqu'un aurait-il eu plus de chance? Merci d'avance, et à bientôt !
Modifié en dernier par ZDS le mar. 27 mai 2014 01:21, modifié 1 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#2

Message par Tlem »

Le plus simple pour ajouter les sources est de faire une section spécifique de FileInclude pour chaque fichier qui sera considéré important.

En ce qui me concerne, je rajoute systématiquement une section qui test les paramètres et si il trouve /src alors il y a extraction des sources que j'aurais déterminé importantes.
Ça alourdit l'exe de quelques Ko, mais ça simplifié drôlement la récupération des sources. :)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#3

Message par ZDS »

Bonjour Tlem,

Merci de ta réponse, mais je voulais éviter cette solution. J'avais une préférence pour l'utilisation du Wrapper, mais ta technique serait envisageable si je pouvais par exemple y mettre en FileInstall un zip qui se serait créé automatiquement AVANT de l'ajouter à la compilation (car sinon, je suis obligé de faire un FileInstall pour chaque fichier, sachant que j'en ai des tonnes - l'exemple fourni étant simplifié au maximum).

Il existe sans doute un truc du genre Compile:@Before ou @After, mais je ne sais pas du tout les utiliser (RunBefore il me semble, je ne suis pas sur mon ordi directement). Quelqu'un aurait ça sous le coude?
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#4

Message par TommyDDR »

Je post un UDF qui vous sera surement utile, je repasse mettre le lien ici une fois fait.

EDIT :
Voila : CreateFileInstall
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#5

Message par Tlem »

ZDS a écrit :je suis obligé de faire un FileInstall pour chaque fichier, sachant que j'en ai des tonnes
Effectivement, la solution du fichier compressé me paraît la plus indiquée en la circonstance.
ZDS a écrit :Il existe sans doute un truc du genre Compile:@Before ou @After, mais je ne sais pas du tout les utiliser (RunBefore il me semble,...
Oui il est possible d'utiliser une directive du wrapper pour lancer une commande avant la compilation. Ceci dit, d'après ce que vous décrivez, la compression manuelle des fichiers et dossiers nécessaires me semble plus indiquée. Après il suffit de rajouter (tout comme je l'ai fait pour le pack AutoIt Fr) l'utilisation d'une DLL de compression/décompression.

@Tommy
L'idée de la fonction CreateFileInstall est intéressante, mais il ne faut pas perdre de vue que la commande FileInstall n'a pas été conçue dans le but de rajouter des dizaines de fichiers à une compilation. Si des ressources (sous forme de dizaines ou centaines de fichiers) doivent être rajoutées, alors il vaut mieux privilégier la DLL de ressources ou plus simplement comme indiqué ci-dessus une archive compressée.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#6

Message par TommyDDR »

J'ai eu des soucis avec la dll 7zip (DllOpen qui fail sur un PC du jour au lendemain, du coup je suis un peu sceptique quant à son utilisation maintenant).
Je te l'accorde, les FileInstall (j'en ai 510 dans mon script) s'exécutent en 4.5secondes sur un disque dur "normal" (quasi instantané sur un ssd).
Mais il faudrait que je me penche sur les dll de ressource un jour.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#7

Message par Tlem »

Sinon, puisque feu XP n'est plus sensé être utilisé, les systèmes qui ont suivit prenaient en charge la décompression Zip.
Il me semble que sur le forum US il y a un UDF. ;)

Après, il est aussi possible d'utiliser 7Za.exe et donc de s'affranchir de la DLL.

Envoyé depuis mon appareil mobile.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#8

Message par ZDS »

Je n'ai pas pu répondre avant, désolé (enfin, pas si désolé que ça puisque maintenant j'ai une vraie crédence ! ^^). Je vais étudier les solutions, mais je pense m'orienter vers une commande permettant de faire un zip du code source avant compilation, puis ajouter le-dit zip avec un simple FileInstall. Par contre, je vais te piquer ton idée, Tlem; conditionner l'exécution du FileInstall avec la commande "/source", c'est une excellente façon de faire. Je vais ajouter ça à tous mes futurs scripts du projet en question.

Et je partage tes dires sur la compression : vu qu'XP est désormais sur la pente fatale, autant privilégier les compressions/décompressions directement prises en charge par Vista, Seven et 8. Ça évite de fournir une dll comme 7zip.dll, qui pour un néophyte paraîtra comme une boite noire (et donc hors de la transparence du code source que je cherche à privilégier).

Merci encore !

PS: Mon sujet n'est pas encore tout à fait [R]ésolu vu que je ne sais pas encore comment faire la commande en question (je vais fouiller), mais dès que j'aurais un code exemple propre à fournir dans mon premier message, je n'oublierai pas de modifier le titre.

NB: Il y a donc quand même bel et bien (au pire) un bug ou (au mieux) une erreur de conception dans le "#AutoIt3Wrapper_Res_SaveSource=Y" ? Genre un flag N / Y / A (pour "all")
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] "#AutoIt3Wrapper_Res_SaveSource=Y" et sources multi

#9

Message par ZDS »

Désolé de déterrer un sujet pas-si-vieux-que-ça-mais-quand-même, mais j'ai trouvé ma solution, basée sur vos différentes propositions :
  • Installer 7Zip, et ajouter le chemin du logiciel dans la variable d'environnement "Path" pour éviter les commandes à rallonge
  • Respecter une structure de code comme expliqué au dessus (si le point d'entrée d'un script est "C:\DossierScripts\MonProg.au3", alors le reste des sources est dans "C:\DossierScripts\MonProg\*")
  • Utiliser la version "avancée" de SciTE, SciTE4AutoIt3, afin d'avoir tous les outils pour traiter les commandes d'entête du Wrapper
    ► Afficher le texte
  • Utiliser dans le départ du logiciel une conditionnelle pour savoir si on demande l'extraction des sources ou pas
    ► Afficher le texte
Ainsi pour extraire les sources du programme compilé avec le Wrapper, on faire "C:\DossierScripts\MonProg.exe /src", et obtenir un fichier "C:\DossierScripts\MonProg-Sources.zip" contenant toutes les sources.

Problème [R]ésolu, merci encore !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre