Page 1 sur 1

[R] Les include avec les fichiers executables

Posté : dim. 03 août 2014 15:38
par Atab
Bonjour,

Tout d'abord, j'espère que ceci n'est pas un doublon, vu qu'après plusieurs recherches il m'est apparu que personne n'avait posé cette question avant...

Je suis en train de créer un jeu, et j'aimerais que les "#include" ne soit pas directement inclus une fois compilé.

Je m'explique: tant que le fichier est en "*.au3", on retrouve dans le script nos #include ;
mais dès que l'on compile notre fichiers, AutToExe les inclus directement ce qui fait que si l'on modifie un de ces fichiers inclus, il faut recompiler le programme principal.

Savez vous s'il existe une parade pour ceci ?

Merci d'avance,
Atab

Re: [...] Les include avec les fichiers executables

Posté : dim. 03 août 2014 16:55
par timmalos
Je pense que le meilleur moyen serait de créer un Launcher compilé qui exécute votre script principal. Ainsi vous aurez le launcher.exe, main.au3 et tous vos includes.au3

Re: [...] Les include avec les fichiers executables

Posté : dim. 03 août 2014 20:02
par Atab
Tout d'abord, merci pour ta réponse.

Cependant, après l'avoir essayée, (include "main.au3" dans le script du "launcher" pour continuer sur votre exemple) je me rends compte que finalement "include.au3" inclus dans "main.au3" se retrouve lui aussi inclus dans le launcher... ce qui me fait revenir au problème initial.

Du coup, j'ai pensé à executer le fichier autoit (run ou shellexecute), mais après differents test, on ne peut pas le faire sur un ordinateur ne possédant pas AutoIt.

Ainsi, s'il existe une autre possibilité, ce serait surement celle là, mais existe il une fonction (incluse ou non) qui permet de le faire?

Encore merci pour ta réponse,
Atab

Re: [...] Les include avec les fichiers executables

Posté : dim. 03 août 2014 21:31
par jguinch
Tu peux te servir de ton propre exécutable pour exécuter du code et/ou un script AutoIt, ceci sans avoir à installer quoique ce soit sur le PC.
Regarde dans la doc : Using AutoIt / Command Line Parameters, le paramètre /AutoIt3ExecuteScript ne permet de lancer un script.
Ce pourrait convenir ?

Re: [...] Les include avec les fichiers executables

Posté : lun. 04 août 2014 11:13
par Atab
malheureusement, j'ai vu que dans tout les exemples utilisant /AutoIt3ExecuteScript étaient précédés de @AutoitExe (qui étant le chemin de "Auoit3.exe", il faut donc qu'il soit installé) ... et quand j'essaye un autre chemin, cela ne fonctionne pas.

Merci tout de même pour l'idée des CommandLine ;) je vais essayer de chercher dans cette direction.

Re: [...] Les include avec les fichiers executables

Posté : lun. 04 août 2014 12:00
par jguinch
Non, pas besoin qu'il soit installé.
Quand ton script est compilé, @AutoitExe te retourne le chemin de ton propre exécutable.

Re: [...] Les include avec les fichiers executables

Posté : lun. 04 août 2014 12:16
par timmalos
Pour revenir à mon histoire de launcher, je pensais plutôt à l'utilisation de Execute() dans le launcher vu que celui-ci compilé contient Autoit3.exe mais après quelques tests ca serait beaucoup plus compliqué que prévu et pas très très bon ;)

Sinon, tu peux toujours ajouter autoit3.exe dans ton dossier et le partager avec tes sources également ! En ajoutant uniquement les includes necessaires.

Re: [..] Les include avec les fichiers executables

Posté : lun. 04 août 2014 20:19
par Tlem
Bonsoir Atab.
Pouvez-vous nous expliquer ce que vont contenir les fichiers #Include que vous ne voulez pas compiler dans le script principal ?

Réflexion n°1 : Pourquoi ne pas "distribuer" votre application sous forme non compilé (Le programme AutoIt3.exe + vos fichiers au3) ?
Cela vous permettrait de mettre à jour plus facilement sans prise de tête. ^^

Réflexion n°2 : Si vous avez peur que l'utilisateur admire votre code, vous pouvez l'obfusquer afin de rendre sa lecteur assez confuse.

Réflexion n°3 : Si vos #Include ne contiennent que des fonctions, pourquoi ne pas simplement faire une gestion d'entrée/sortie de résultat par le biais de paramètres donné à un Exe et un retour console, puisque une fonction est sensée avoir ou pas un ou plusieurs paramètres et doit retourner un résultat ! Donc vous pourriez donner une commande ou un traitement à faire à un exe compilé selon vos besoins.

Réflexion n°3 : Pourquoi ne pas gérer le code externe qui doit être mis à jour par une dll faite maison ?

Réflexion n°4 : Vous pourriez aussi faire une gestion de "re-compilation automatique" en cas de mise à jour d'une partie du code. C'est un peux plus lourd car il faut s'embarquer le ou les stub ainsi que l'Aut2exe correspondant, mais l'exe serait recompiler avec les #Includes qui vont bien et ce serait presque transparent. ;)

Re: [..] Les include avec les fichiers executables

Posté : lun. 04 août 2014 22:00
par jguinch
Que ce soit clair : une fois compilé, on ne peut pas faire un #Include d'un script AutoIt.

Pour moi, les possibilités d'appeler du code externe, sont :
- Execute() : ne fonctionne que pour une ligne de code
- Utiliser Run(@AutoItExe & ' /AutoIt3ExecuteLine ....") : ne fonctionne que pour une ligne de code et s'exécute à part (les variables ne sont pas communes)
- Utiliser Run(@AutoItExe & ' /AutoIt3ExecuteScript ....") : fonctionne pour un script complet, mais s'exécute également à part

C'est uniquement en vue de tests du jeu ?

Re: [..] Les include avec les fichiers executables

Posté : mar. 05 août 2014 11:06
par Atab
Merci pour votre aide,
Je crois bien que je vais me rabattre sur votre première proposition Tlem c'est effectivement le plus simple/rapide :D.
(pourquoi j'y ai pas pensé :cry: )

Ce sujet est donc résolu. Merci encore a vous ;)

Atab

Re: [R] Les include avec les fichiers executables

Posté : mar. 05 août 2014 11:17
par jguinch
Attention aux includes natifs ! Il faudra qu'il fassent partie du paquet

Re: [R] Les include avec les fichiers executables

Posté : mar. 05 août 2014 11:24
par Atab
Ils en faisait déjà partie avant ;) car je ne savais pas que le compilage incluait directement dans le script..
Donc pas de soucis de ce côté :D

Merci quand même ;)