[R] Les include avec les fichiers executables

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Atab
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 22 janv. 2014 01:00
Status : Hors ligne

[R] Les include avec les fichiers executables

#1

Message 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
Modifié en dernier par Atab le mar. 05 août 2014 11:06, modifié 1 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

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

#2

Message 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
Avatar du membre
Atab
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 22 janv. 2014 01:00
Status : Hors ligne

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

#3

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#4

Message 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 ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Atab
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 22 janv. 2014 01:00
Status : Hors ligne

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

#5

Message 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.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#6

Message par jguinch »

Non, pas besoin qu'il soit installé.
Quand ton script est compilé, @AutoitExe te retourne le chemin de ton propre exécutable.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

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

#7

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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. ;)
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
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#9

Message 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 ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Atab
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 22 janv. 2014 01:00
Status : Hors ligne

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

#10

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Les include avec les fichiers executables

#11

Message par jguinch »

Attention aux includes natifs ! Il faudra qu'il fassent partie du paquet
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Atab
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mer. 22 janv. 2014 01:00
Status : Hors ligne

Re: [R] Les include avec les fichiers executables

#12

Message 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 ;)
Répondre