[R] Réduire la taille des executables

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
BaronMouDuKu
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 24 sept. 2007 18:03
Status : Hors ligne

[R] Réduire la taille des executables

#1

Message par BaronMouDuKu »

Hello all !

Technicien réseau dans un lycée de plus de 500 PCs, AutoIt est devenu pour moi mon meilleur ami :
pas de runtime, compatibilité 98 XP 2000,simple et exXxtrement puissant !!
Je scripte a tout va avec !

Seulement voila, plus le temps passe et plus, a chaque version d'AutoIt, les tailles d'executables augmente. Meme si 250 Ko peuvent paraitrent "legers", il faut voir quand 300 momes se connectent en même temps sur un reseau 100 Mbs. Et qu'il chargent des scripts avec 2 a 4 executables chaqu'un.
Bref très vite ca fait 500 Mo a faire passer dans les tuyaux a chaque sonnerie de debut de cours, et tout le monde rale si un script met plus de 5 sec a charger.

Donc ma question est simple, comment compiler des executables plus petits (un programme avec UNE ligne de code fait deja 240 Ko a la base) ?

Merci d'avance de vos suggestions !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#2

Message par sylvanie »

Bonjour,
la seule façon est de définir un taux de compression optimum et utiliser UPX dérrière lors de la compilation avec option.

sinon, il faut installer autoit sur tous les clents et travailler avec les compil .a3x, plus petites que la taille dus cript et semi compilées
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
BaronMouDuKu
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 24 sept. 2007 18:03
Status : Hors ligne

#3

Message par BaronMouDuKu »

j'ai deja regle tous les parametres possibles pour compresser au mieux mes executables
Et s'il est vrai que la taille des fichiers .a3x est imbattable (environ 10 Ko pour un script pas trop complexe), le code est en clair, et donc de petits bidouilleurs reussiraient a mettre le nez dedans, ce qui ne m'enchante guere. De plus, installer autoit sur tous les postes (plus de 500...) bof, enfin y'a toujours moyen de faire un script autoit pour ca :wink: !

Par contre j'ai ressorti de sous les fagots la version 3.0.1.2, et en recompilant 1 ou 2 script pour voir, je passe de 248Ko a 108Ko :shock: , sans message d'erreur.
J'imagine qu'il y a moins de biblio embarquees dans l'executable, mais est-ce que je prend un risque quelconque si je n'ai pas d'erreur a la compilation ?

y'a a-t-il des version d'autoit3 qu'il vaut mieux eviter (version avec un mechant bug par exemple) ?
Avatar du membre
BaronMouDuKu
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 24 sept. 2007 18:03
Status : Hors ligne

#4

Message par BaronMouDuKu »

Bon autant pour moi,
deja c'etait pas terrible de defendre l'idee d'utiliser un viel autoit (2004 quand meme), mais j'avais vraiment fait l'essai sur des scripts tres tres legers. :oops:
Y'a meme pas le support des variables booleenne dans la 3.0.1.2 (False/True) :lol:

j'ai épluche l'historique, et plein de fonctions que j'utilise n'apparaissent que recemment donc...

Je pense donc le sujet clos (sauf si quelqu'un me sort une aut' soluce)
Mais je garde l'idee de faire quelques scripts simplistes en version 3.0 pour les transferts reseau. Les scripts plus complexes (3.2.8.x) seront localement sur les postes.
A moi d'eclater mes programmes en plein de scripts !

Merci !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#5

Message par sylvanie »

Je ne sais pas réellement ce que fait autoit lorsqu'il compile en a3x, cependant depuis la 3.2.5.1, Exe2Au3 n'est plus censé pouvoir faire chemin arrière.

Comment arrives tu à revenir sur le code en clair depuis un a3x ?
C'est intéressant

Sinon je reviens sur ce que j'ai dit dans le dernier post : avec les a3x, seule la présence de l'executable AutoIt3.exe est nécessaire, pas son installation totale
Modifié en dernier par sylvanie le mar. 25 sept. 2007 23:08, modifié 1 fois.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

#6

Message par Voodoo »

Les includes !

Certaines sont remplies de code inutiles !! quelquefois + de 1500 lignes alors que tu en as besoin que de 10 !

Sa pourrait te faire gagner quelque chose...

Pour "vider" les passage inutiles des includes voila comment je procéderais.
  • Une fois ton code écris il faut compiler en autorisant la decompilation.
  • Puis tu decompiles ton programme et la miracle il y a beaucoup plus de ligne que prévu ! toutes les includes sont presentes ! efface tous ce dont tu n'as pas besoin ! ( attention a vérifier que le script fonctionne toujours au cas ou tu effacerais une fonction importante.)
  • Apres ce nettoyage terminé, efface les #include de ton programmme puisque elle sont deja ecrite !
  • Recompile...
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

#7

Message par sylvanie »

bien vu !
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
BaronMouDuKu
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 24 sept. 2007 18:03
Status : Hors ligne

#8

Message par BaronMouDuKu »

erreur de manip : je n'ai pas réussi a repasser en clair le code d'un .a3x, j'avais juste renommer un .au3 en .a3x.
Il n'est pas possible de revenir en arrière depuis la 3.2.5.1.

Donc pour tester la technique de décompilation de VooDoo, je vais m'installer la 3.2.4.9 (dernière version téléchargeable dans les archives) et tenter le coup des includes...

Je vous tiens au courant !
Avatar du membre
BaronMouDuKu
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 24 sept. 2007 18:03
Status : Hors ligne

#9

Message par BaronMouDuKu »

Et bien non,

En effet, on y gagne un peu mais... 10 Ko sur les 240 Ko de l'exécutable. L'idée était belle pourtant !
De toute façon ça voulait dire rester bloqué sur la version 3.2.4.9... ou alors faire ses includes manuellement en allant chercher le nécessaire dans les "constant.au3" et compagnie, vu qu'on ne peux plus décompiler maintenant...

Merci de toutes ces bonnes idées, j'en reste donc a un script simpliste d'installation et de mise a jour à travers le réseau en version 3.0.1 (90 Ko) et a des scripts locaux mais complexes en version 3.2.8 (240 Ko minimum)

Thanks !
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

#10

Message par Voodoo »

N'oubliez pas de mettre les balises merci
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

#11

Message par jl56 »

bonjour

je ne connaissais les fichiers a3x que mentionne Sylvanie
j'ai donc compilé un script au3 de 125 ko en a3x
résultat 60 k au lieu de 285 k l'exe
puis j'ai copier sur un poste où il n'y a pas autoit le programme AutoIt3.exe
en lancant le fichier autoit3.exe
via par exemple "c:\test\autoit3.exe" script.a3x
le script ce lance sans probleme
j'ai meme associer l'extension a3x au programme c:\test\autoit3.exe
et en cliquant sur le fichier script.a3x ca fonctionne normalement

tu peut donc copier une seul fois le fichier autoit3.exe et transferer ton script a3x seulement à chaque connexion

voila

a+ jl56
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#12

Message par ani »

et pour faire top tu compresse le tout (attribut compressed (2048))
exemple 300 passe à 200 compression 1,5 pour 1


garanti :)
Répondre