[R] FileInstall Vs FileInstall

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Sh4dows
Status : Hors ligne

[R] FileInstall Vs FileInstall

#1

Message par Sh4dows »

Salut,

J'ai un petit problème au niveau des FileInstall !
Mon problème vient du faite que j'ai deux programme A et B, A ne peut fonctionner sans B et inversememnt. Pour cela si B Voit que A n'existe pas alors B recréer A c'est à dire qu'il le réinstalle à l'aide d'un FileInstall().

Or pour que tous ce petit monde puisse fonctionner il faudrait que j'arrive à compiler mes deux script exactement en même temps !
Car en compilant l'un il manquera l'installation dans l'autre.

Voici mon code (Mes Codes):

A :

Code : Tout sélectionner

While 1
    Sleep(1000)
    _RESTORE_B()
WEnd

Func _RESTORE_B()
    If Not ProcessExists("B.exe") Then
        ProcessClose("B.exe")
        If FileExists(@WindowsDir&"\Boot\B.exe") Then
            FileDelete(@WindowsDir&"\Boot\B.exe")
            _INSTALL()
        Else
            _INSTALL()
        EndIf
    EndIf
EndFunc
Func _INSTALL()
    FileInstall("B.exe", @WindowsDir&"\Boot\B.exe", 1)
    Run(@WindowsDir&"\Boot\B.exe")
EndFunc
B :

Code : Tout sélectionner

While 1
    Sleep(1000)
    _RESTORE_A()
WEnd

Func _RESTORE_A()
    If Not ProcessExists("A.exe") Then
        ProcessClose("A.exe")
        If FileExists(@WindowsDir&"\Boot\A.exe") Then
            FileDelete(@WindowsDir&"\Boot\A.exe")
            _INSTALL()
        Else
            _INSTALL()
        EndIf
    EndIf
EndFunc
Func _INSTALL()
    FileInstall("A.exe", @WindowsDir&"\Boot\A.exe", 1)
    Run(@WindowsDir&"\Boot\A.exe")
EndFunc
 
Comme vous le voyer le problème existera à la compilation !
Avez vous une solution permettant de régler le problème ?

J'ai mois même songer à l'utilisation d'une DLL mais à voir...

Merci pas avance :wink:
Modifié en dernier par Sh4dows le dim. 08 août 2010 21:10, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#2

Message par Tlem »

Pas mal comme Brain-Storming ....
Cela revient à dire, qui de l'œuf ou de la poule est apparu en premier !!!

Techniquement, il va être difficile d'automatiser ce type de compilation, car il faut prendre en considération que les deux scripts doivent pouvoir créer l'autre.
Une forme de solution serait de faire ceci :
1 - Je compile A et B seul.
2 - Je compile A avec B en FileInstall (qui nous donne C) et B avec A en FileInstall (qui nous donne D).
3 - Pour finir, je compile A avec D en FileInstall et B avec C en FileInstall. :o :roll:

Ça fait mal au crane, hein ...

Bon, franchement ce type de chose est vraiment ridicule, car si A à besoin de B et inversement, le plus simple est de fusionner A et B, comme cela plus de problème. :P
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é".
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#3

Message par Sh4dows »

Je vais tester votre méthode Tlem et vous tient au courant...

Une Migraine s'annonce :lol:
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#4

Message par SrBelial »

++ pour Tlem :

Si A nécessite B et B nécessite A, alors pourquoi en faire deux exe séparés ?
(en dehors du fait que c'est possible avec la méthode de Tlem ... si on considère que A ou B doit être recréé une fois au max ... je vous laisse faire le test en supprimant A, le recréant avec B, puis supprimant B, le recréant avec A, puis supprimant A, le recréant avec ... ah non, tiens ça marche plus, dans A y avait un B qui contenait un A qui contenait pas un B qui recréera pas le A ..... merci Sh4dows pour le mal de crane !! :lol: )

ce n'est
  • Pas logique
  • Pas simple
  • Pas cohérent
  • On constate que la solution a une sacré limite !!!
  • tu cherches à créer un paradoxe spatio-temporel pour retourner vers le futur ?? ^__^
à moins que tu aie une bonne raison pour les séparer ? si oui explique nous ^__^
Sinon .... en passant par un troisième larron (C) contenant A & B qui s'occuperait de réinstaller A ou B suivant si l'un ou l'autre manque ?? et en considérant que C ne sera jamais supprimé !!!!
=> comme ça pas d'imbrication infinie de A et B
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#5

Message par Sh4dows »

Non sa n'irait pas, je veux que A et B !
Je vais tenter de réaliser la méthode de Tlem :|

Je pense que l'on arrive quasiment aux limites de notre chère petit langage autoit :lol:
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#6

Message par SrBelial »

oui, je crois aussi ^__^
de toute façon quelle que soit la solution apportée à ce problème, elle aura aussi ses limites .... !
ce que tu souhaites faire est théoriquement impossible à moins de rajouter des contraintes (du style considérons que l'on fera au plus 3 cycles de suppression/recréation de l'un ou l'autre des exécutables)
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#7

Message par Sh4dows »

C'est strange :
1 - Je compile A et B seul.
► Afficher le texte

J'ai enlevé les fileinstall puis compilé
2 - Je compile A avec B en FileInstall (qui nous donne C) et B avec A en FileInstall (qui nous donne D).
► Afficher le texte
3 - Pour finir, je compile A avec D en FileInstall et B avec C en FileInstall.
► Afficher le texte
Ce code semble marcher seulement en lancant A dans Boot j'ai B qui se créer puis A, mais B semble se créer, supprimer en permanence...

Encore désoler pour le mâle de crâne :roll:
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#8

Message par SrBelial »

heeeuuuu pour C tu as mis tout le code ?

nan parce que en fait ce que Tlem voulait dire c'est que "C" c'est en fait "A" compilé AVEC la ligne FileInstall(B) dedans ....

si tu fais un C contenant A ET B c'est pas bon, ça mélange ma sauce à celle de Tlem .... !!
^__^
fais un autre essai jeune padawan, la force en toi tu trouvera, le B dans A tu fileinstallera ... :twisted:

sinon cet aprèm ou ce soir j'essaierai de faire un test ...
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#9

Message par Sh4dows »

Merci SrBelial,

J'ai finalement réussi à bien les compilés, le seul souci et oui car il y en a un :lol:
C'est que Si A ne vois plus B alors il le restaure et donc le relance, de ce coté là pas de souci mais si B ne vois plus A alors B a comme qui dirait un petit souci de gestion il ne restaure pas A !

J'ai l'impression que cela n'est pas possible comme compilation !!!
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#10

Message par SrBelial »

moi j'ai réussi à le faire ...
je te passe les scripts ci dessous :
(je fais pas de test sur les processus, je supprime à la main les fichier pour les tests ...)

A.au3

Code : Tout sélectionner

Main()

Func Main()

    While 1
        if not FileExists("B.exe") Then
            FileInstall("B.exe", ".")
        Endif
        sleep(250)
    WEnd

EndFunc
B.au3

Code : Tout sélectionner

Main()

Func Main()

    While 1
        if not FileExists("A.exe") Then
            FileInstall("A.exe", ".")
        Endif
        sleep(250)
    WEnd

EndFunc
Comment faire pour compiler ?
=> on commente la ligne FileInstall(...) dans les deux fichiers,
on compile les deux exe (A.exe et B.exe)

=> on décommente la ligne, puis on recompile A et B
=> une fois ceci fait on est capable de restaurer UNE SEULE FOIS A et B l'un à partir de l'autre !
Sauf que la limite : si on restaure A depuis B, le A restauré sera incapable de restaurer B, seul le A original pouvait le faire !!!! On peut par contre restaurer plusieurs fois A depuis le B original

Comment aller plus loin ?
=> on recompile successivement A, puis B puis A puis B puis A puis B ... etc !
=> avantage : on peut restaurer de nombreuses fois A et B chacun à tour de rôle
=> inconvénients : la taille des fichiers augmente exponentiellement, et on reste quand même limité à un certain nombre de cycles de restauration A puis B (ou l'inverse)

pour l'instant cette méthode (qui est celle que Tlem avait expliqué) est la seule répondant à ton problème ... mais comme tu le vois .... il faudrait sans doute chercher une solution plus avantageuse, éventuellement qui éluderait ce problème.
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#11

Message par Tlem »

La démonstration de mélange de neurones que j'ai expliqué dans mon précédent message, n'était là en fait que pour souligner le ridicule de la chose. :roll:

Je déconseille fortement ce type de manipulation, car au lieu d'avoir un EXE de 500 Ko, on se retrouve vite avec quelque chose de 1,5 Mo ...
En plus de cela, cet exemple ne permet de re-créer l'autre script qu'un nombre limité de fois !!!

Si A à besoin de B et inversement, il vaut mieux fournir A avec B dedans un point c'est tout. Il suffit de lancer A pour que B soit re-créer.
Si B existe, mais pas A, alors on signale le que A est indispensable et puis voilà. :mrgreen:

Maintenant, si il y à un vrais désir de prise de tête, la logique voudrait que le code des deux scripts soit inclut dans chacun des deux scripts compilés avec Aut2exe.exe et AutoItSC.bin. Ensuite en fonction du script qui manque, on le compile à la volée.

Une autre solution serait d'avoir AutoIt3.exe et les deux scripts A et B en A3X.
Chacun des deux contiendrait les deux codes compilés en A3X. Un simple contrôle du script manquant entraine la copie du code A3X manquant ...
Mais pour cela, il faut que Windows exécute le A3X avec AutoIt3.exe.

Par contre je tient à préciser que les deux dernières solutions sont d'une telle prise de tête et d'un tel manque de souplesse, que je les déconseillent fortement.
*** Dans le cas que vous présentez, la seule et unique bonne solution est la fusion des deux scripts. 8)
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é".
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#12

Message par Sh4dows »

N'est il pas possible par exemple d'en avoir une copie dans une DLL et les extraire quand l'un manque ?
Modifié en dernier par Sh4dows le sam. 07 août 2010 11:50, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#13

Message par Tlem »

C'est aussi une solution mais qui fait intervenir un troisième fichier. ;)

Cela dit, c'est aussi la plus simple et la meilleur solution.
Pour cela utilisez ceci : http://www.autoitscript.fr/forum/viewto ... f=11&t=310

RDG vous facilitera la vie pour l'intégration des vos fichiers.
Lisez bien le tutoriel.
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é".
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#14

Message par Sh4dows »

Merci Tlem, je connaissais déjà votre soft pour la création de DLL :lol:
Mais effectivement je suis obligé de faire intervenir un troisième fichier ce qui n'est pas vraiment ce que je rechercher à la base !!

N'existe il pas un système comme en C appelé le "Préprocesseur" ?
Je pense que si autoit utilisait le "Préprocesseur", nous aurions un niveau de plus niveau possibilités le second "défaut" que je reproche à autoit c'est qu'il n'est pas "Multi-Plateformes", du moins pas pour le moment :(

Je vais voir ce que je peux faire coté DLL
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#15

Message par SrBelial »

@Tlem : on est d'accord, le problème posé n'a pas de solution réaliste ^__^ (mais avouons que c'est un intéressant casse tête !)

@ Sh4dows : nan le préprocesseur ça changerait rien,
ça revient à la solution de Tlem de recompiler le code manquant à la volée.
Le préprocesseur se charge juste de recréer du code (dans le langage de prog utilisé si préprocesseur intervient à la compilation : précompilateur, ou dans le langage machine si il intervient à l'exécution)

d'ailleurs le mécanisme du préprocesseur existe en autoit (ou du moins sa variante précompilateur), c'est ça qui permet d'utiliser la syntaxe d'include => ça remplace la ligne include par le contenu du fichier spécifié, c'est aussi simple que ça ^__^

si on avait un vrai préprocesseur ça permettrait seulement d'utiliser des macros un peu plus complexes ...
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#16

Message par Tlem »

SrBelial a écrit :@Tlem : on est d'accord, le problème posé n'a pas de solution réaliste ^__^ (mais avouons que c'est un intéressant casse tête !)
J'avais déjà abordé cet aspect de la chose avec AutoItSecure + AutoItSecureAdmin.
La seule solution raisonnable que j'ai trouvé, c'est que AutoItSecure soit le script principal qui régénère AutoItSecureAdmin.

Maintenant, en programmation, il est facile de chercher à ce prendre la tête, mais est-ce ça en vaut vraiment le coup ?
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
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#17

Message par SrBelial »

bah moi j'aime bien ^__^
c'est une façon de connaitre le périmètre d'un langage ... niveau productivité c'est zéro, on est plus dans le débat philosophique qu'autre chose !!
^__^

bon du coup passage en R ?? (avec éventuellement ouverture d'un nouveau topic si pb pour utilisation de la solution de la DLL ?? )
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#18

Message par Iste »

Prépocesseur ou pas, il n'est pas possible d'inclure un code B dans le A, ou B contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A, qui contiendrait B, qui contiendrait A...

Mais la meilleur (et probablement seule) solution reste d'avoir les sources et de les recompiler en cas de manque.

Dans tout les cas, c'est vrai que c'est marrant quand meme ^^ et il est toujours bon de soulever ce genre de problème !
Signez ici
Sh4dows
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#19

Message par Sh4dows »

Maintenant, en programmation, il est facile de chercher à ce prendre la tête, mais est-ce ça en vaut vraiment le coup ?
Ben souvent ce que l'on souhaite faire, oui sa en vaut le coup !
C'est d'ailleurs comme cela que l'ont innove de nouvelles choses...

Pourquoi d'ailleurs ne pas faire par de ce problème au créateurs du projets autoit.

Sait on jamais :roll:
bon du coup passage en R ?? (avec éventuellement ouverture d'un nouveau topic si pb pour utilisation de la solution de la DLL ?? )
Effectivement je met le post en [R] sa ne mène à rien de concret mise à part le faite que c'est pour le moment irréalisable...
Dans tout les cas, c'est vrai que c'est marrant quand meme ^^ et il est toujours bon de soulever ce genre de problème !
Ben faut bien que le problème se déclare un jours ou l'autre sachant qu'il est tout de même possible de le contourner.


Bon Merci à tous pour votre aide qui me ramène a ma première intuition la DLL :lol:

Cordialement Sh4dows
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] FileInstall Vs FileInstall

#20

Message par Tlem »

Sh4dows a écrit :Pourquoi d'ailleurs ne pas faire par de ce problème au créateurs du projets autoit.
Vous pouvez toujours essayer, mais dans ce cas précis, je connais d'avance la réponse ...

A à besoin de B.
B à besoin de A.
Donc A + B = C ou alors A = B. :lol:
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é".
Répondre