[R] Questions sur la compilation
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Questions sur la compilation
Bonjour à tous,
Alors voilà, je vous explique ma situation. J'ai passé tout le weekend à apprendre l'AutoIt puis à coder un logiciel si bien que le voilà maintenant achevé à 90%. Cependant, avant de passer à la phase finale de la conception, à savoir la GUI, je dois effectuer un grand débogage ! Le fait est qu'avec un script de 10 000 lignes s'y retrouver n'est pas très aisé, d'autant plus que j'arrive à mettre le doigt sur des dysfonctionnements sans pour autant être en mesure de les corriger. Problématique.
D'où l'idée de répartir mes fonctions dans plusieurs sous-fichiers ! Seulement voilà, de cette évidence découlent de nouvelles interrogations, notamment sur la phase de compilation. J'explicite : lorsque l'on compile le fichier principal, l'ossature du programme, celui qui fait la jonction entre tous les sous-fichiers contenant les fonctions, ceux-ci sont-ils intégralement inclus dans l'application, dans le sens où peut-elle dès lors être lancée dans n'importe quel environnement et fonctionner "normalement", exactement comme si un seul et unique script de 10 000 lignes avait été compilé ?
Si ce n'est pas le cas, cela veut dire que seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués. Seulement moi, je désire un logiciel sous forme d'un seul et unique exécutable pour que sa circulation soit la plus aisée et la plus sûre possible. Dans ce cas-là, que devrai-je faire pour qu'AutoIt réponde à mes exigences ? Quelles options et autres instructions de compilation devrai-je spécifier ? Merci d'avance !
Dernière chose, je n'ai pas pu m'empêcher de remarquer la fonction FileInstall. Elle me semble excellente, seulement je ne suis pas sûr de l'avoir bien comprise. Selon mes interprétations, elle servirait à intégrer dans le (.exe) final des fichiers tiers. Cela voudrait donc dire que je pourrais intégrer à mon application un fichier (.js) et des images que j'invoque à répétition et les faire fonctionner à l'intérieur-même du logiciel ! Génial ! Or dans les attributs de la fonction, pourquoi demander deux chemins d'accès (source, dest) ? Si en effet elle effectuait ce que je viens de conjecturer alors seul "source" est justifié car par définition le fichier devrait finir à l'intérieur de l'exécutable ce qui de fait retire le caractère nécessaire d'une copie du fichier dans un nouveau répertoire ! Encore une fois je sollicite des explications, et je vous remercie d'avance pour celles-ci !
Alors voilà, je vous explique ma situation. J'ai passé tout le weekend à apprendre l'AutoIt puis à coder un logiciel si bien que le voilà maintenant achevé à 90%. Cependant, avant de passer à la phase finale de la conception, à savoir la GUI, je dois effectuer un grand débogage ! Le fait est qu'avec un script de 10 000 lignes s'y retrouver n'est pas très aisé, d'autant plus que j'arrive à mettre le doigt sur des dysfonctionnements sans pour autant être en mesure de les corriger. Problématique.
D'où l'idée de répartir mes fonctions dans plusieurs sous-fichiers ! Seulement voilà, de cette évidence découlent de nouvelles interrogations, notamment sur la phase de compilation. J'explicite : lorsque l'on compile le fichier principal, l'ossature du programme, celui qui fait la jonction entre tous les sous-fichiers contenant les fonctions, ceux-ci sont-ils intégralement inclus dans l'application, dans le sens où peut-elle dès lors être lancée dans n'importe quel environnement et fonctionner "normalement", exactement comme si un seul et unique script de 10 000 lignes avait été compilé ?
Si ce n'est pas le cas, cela veut dire que seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués. Seulement moi, je désire un logiciel sous forme d'un seul et unique exécutable pour que sa circulation soit la plus aisée et la plus sûre possible. Dans ce cas-là, que devrai-je faire pour qu'AutoIt réponde à mes exigences ? Quelles options et autres instructions de compilation devrai-je spécifier ? Merci d'avance !
Dernière chose, je n'ai pas pu m'empêcher de remarquer la fonction FileInstall. Elle me semble excellente, seulement je ne suis pas sûr de l'avoir bien comprise. Selon mes interprétations, elle servirait à intégrer dans le (.exe) final des fichiers tiers. Cela voudrait donc dire que je pourrais intégrer à mon application un fichier (.js) et des images que j'invoque à répétition et les faire fonctionner à l'intérieur-même du logiciel ! Génial ! Or dans les attributs de la fonction, pourquoi demander deux chemins d'accès (source, dest) ? Si en effet elle effectuait ce que je viens de conjecturer alors seul "source" est justifié car par définition le fichier devrait finir à l'intérieur de l'exécutable ce qui de fait retire le caractère nécessaire d'une copie du fichier dans un nouveau répertoire ! Encore une fois je sollicite des explications, et je vous remercie d'avance pour celles-ci !
Modifié en dernier par grandMOJ le lun. 30 janv. 2012 19:08, modifié 1 fois.
- TT22
- Membre émérite

- Messages : 1566
- Enregistré le : lun. 18 avr. 2011 15:21
- Localisation : La Quatrième Dimension
- Status : Hors ligne
Re: [..] Questions sur la compilation
Bravo, moi j'ai mis 1 à 2 mois avant de comprendre à peut près son fonctionnementgrandMOJ a écrit :J'ai passé tout le weekend à apprendre l'AutoIt
Attention, on n'est pas en C/C++ ou d'autres, seul le fichier indiqué est compilé, si tu veux "ajouter" d'autres fichiers au script lors de la compilation, utilise #include "TonFichier.au3"grandMOJ a écrit :seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués.
C'est exactement ça, le paramètre Source indique ou se trouve le fichier à intégrer dans l'exécutable, et le paramètre Dest indique l'endroit ou sera copié le fichier lors du lancement du logiciel.grandMOJ a écrit :elle servirait à intégrer dans le (.exe) final des fichiers tiers.
Voilà, j'espère que j'ai répondu à tes questions.
Cordialement,
TT22
TT22
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Questions sur la compilation
Bonsoir,
je vais me permettre de compléter les réponses de TT22, qui bien que très justes, peuvent ne pas paraitre complètes pour celui qui pose la question.
Tout d'abord, vous pouvez diviser votre script en autant de partie que nécessaire. Du moment ou au début de votre script maitre, vous indiquez par la commande #Include "Partie1.au3" que vous voulez inclure à la compilation le fichier désigné.
Cela aura pour effet de faire comme si l'intégralité du fichier était ajoutée à votre script. Comme généralement, cette déclaration est faites en début de script, vous devrez prendre garde aux déclarations de variables, car chaque variable à une portée qui lui est spécifiée.
Pour exemple, si vous spécifiez la variable $Var dans votre script principal, après avoir fait l'inclusion du fichier Partie1.au3, alors cette variable ne pourra être utilisée dans Partie1.au3.
Une variable qui devra être utilisée dans l'intégralité du script (y compris les includes), devra obligatoirement être déclarée dans le premier include ou avant les includes.
En ce qui concerne la commande FileInstall, celle-ci à besoin impérativement du chemin source de ce que vous voulez inclure, car le compilateur ne peut pas connaitre l'origine du fichier. Notez aussi que cette origine doit impérativement être une chaine et non une variable.
Et vous devez aussi spécifier la destination, car lorsque votre script est compilé, lors de l'exécution de cette commande, il fera l'extraction du fichier source vers la destination, ce qui vous permettra d'utiliser la ressource sans vous préoccuper d'autre chose puisque vous stipulez l'endroit ou vous voulez le copier.
Voilà, j'espère avoir été un peut plus complet dans la réponse, bien que nous abordons là un niveau bien au dessus du simple débutant.
je vais me permettre de compléter les réponses de TT22, qui bien que très justes, peuvent ne pas paraitre complètes pour celui qui pose la question.
Tout d'abord, vous pouvez diviser votre script en autant de partie que nécessaire. Du moment ou au début de votre script maitre, vous indiquez par la commande #Include "Partie1.au3" que vous voulez inclure à la compilation le fichier désigné.
Cela aura pour effet de faire comme si l'intégralité du fichier était ajoutée à votre script. Comme généralement, cette déclaration est faites en début de script, vous devrez prendre garde aux déclarations de variables, car chaque variable à une portée qui lui est spécifiée.
Pour exemple, si vous spécifiez la variable $Var dans votre script principal, après avoir fait l'inclusion du fichier Partie1.au3, alors cette variable ne pourra être utilisée dans Partie1.au3.
Une variable qui devra être utilisée dans l'intégralité du script (y compris les includes), devra obligatoirement être déclarée dans le premier include ou avant les includes.
En ce qui concerne la commande FileInstall, celle-ci à besoin impérativement du chemin source de ce que vous voulez inclure, car le compilateur ne peut pas connaitre l'origine du fichier. Notez aussi que cette origine doit impérativement être une chaine et non une variable.
Et vous devez aussi spécifier la destination, car lorsque votre script est compilé, lors de l'exécution de cette commande, il fera l'extraction du fichier source vers la destination, ce qui vous permettra d'utiliser la ressource sans vous préoccuper d'autre chose puisque vous stipulez l'endroit ou vous voulez le copier.
Voilà, j'espère avoir été un peut plus complet dans la réponse, bien que nous abordons là un niveau bien au dessus du simple débutant.
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é".
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é".
Re: [..] Questions sur la compilation
Eh bien justement, puisque je dis faire appel à des fonctions externes, j'utilise forcément des #include, ce qui au final signifie que je n'ai pas de soucis à me faire et que tout fonctionnera comme je le voudrais.TT22 a écrit :Attention, on n'est pas en C/C++ ou d'autres, seul le fichier indiqué est compilé, si tu veux "ajouter" d'autres fichiers au script lors de la compilation, utilise #include "TonFichier.au3"grandMOJ a écrit :seul ce qui est explicité dans le script "main.au3" est compilé, et donc que le (.exe) ne sera opérationnel que si les sous-fichiers sont présents dans les dossiers indiqués.
Ah d'accord, je viens de comprendre le mécanisme interne de la fonction : je pensais que le fichier-même était inclus dans le programme alors qu'en réalité seules les instructions de sa création le sont, et celles-ci sont lues lors de l'exécution.TT22 a écrit :C'est exactement ça, le paramètre Source indique ou se trouve le fichier à intégrer dans l'exécutable, et le paramètre Dest indique l'endroit ou sera copié le fichier lors du lancement du logiciel.grandMOJ a écrit :elle servirait à intégrer dans le (.exe) final des fichiers tiers.
Quoi qu'il en soit merci, tu m'as été d'un grand secours !
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Questions sur la compilation
C'est tout à fait cela.grandMOJ a écrit :je pensais que le fichier-même était inclus dans le programme
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é".
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é".
- TT22
- Membre émérite

- Messages : 1566
- Enregistré le : lun. 18 avr. 2011 15:21
- Localisation : La Quatrième Dimension
- Status : Hors ligne
Re: [..] Questions sur la compilation
Mais de rien, mais lis aussi le message de Tlem qui t’apportera plus d'informations.grandMOJ a écrit :Quoi qu'il en soit merci, tu m'as été d'un grand secours !
Et pense à mettre un [R] comme balise
Cordialement,
TT22
TT22
Re: [..] Questions sur la compilation
Merci pour cette information, si je ne l'avais pas eue j'aurais sans doute tourné en rond pendant un bon bout de temps. Vous m'avez fait gagner un temps précieux !Tlem a écrit :Pour exemple, si vous spécifiez la variable $Var dans votre script principal, après avoir fait l'inclusion du fichier Partie1.au3, alors cette variable ne pourra être utilisée dans Partie1.au3.
Re: [R] Questions sur la compilation
Je vous remercie tous les deux pour votre aide !
- Résolu
- Résolu
Re: [..] Questions sur la compilation
Il faut que tu édite le titre de ton premier message en [R] Questions sur la compilation
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.


