Générer un EXE avec un EXE...

sokoban Messages postés 32 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 4 novembre 2006 - 27 juin 2005 à 22:16
tombarbette Messages postés 3 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 29 juin 2005 - 28 juin 2005 à 13:04
Bonjour,

Je voudrais réussir à reproduire avec Delphi, le comportement de certains programmes, comme Winzip ou Flash, qui arrivent à générer un exécutable à partir d'un fichier particulier... Je vais tenter d'être plus clair, LOL. Bon, un fichier ZIP, c'est associé à Winzip, par contre, sauf erreur, un fichier EXE auto-extractible réalisé avec Winzip, n'a plus besoin de Winzip pour être extrait. De même, un fichier SWF est lisible avec IE ou Flash, mais il est possible avec Flash de générer un EXE indépendant.

Et bien j'aimerais comprendre cette technique de l'EXE à part, auquel on arrive à greffer le contenu d'un fichier donné en entrée... Toujours pas clair ? J'espère que si ! Alors disons que j'ai un programme A, avec des fichiers ".AAA", mais que je veux être capable de générer un programme EXE depuis mon programme A effectuant ce qu'aurait effectué le fichier ".AAA" si on l'avait chargé avec le programme A... Le programme A serait le programme permettant de créer les fichiers ".AAA" et permettant également de générer un EXE montrant le résultat à quelqun qui n'aurait pas le programme A !

Merci d'avance !


Ghislain "Sokoban" Martin
http://perso.wanadoo.fr/sokoban

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 juin 2005 à 23:21
Alors, intéresse toi au Portable Executable File format. C'est ainsi que se nomme le format des fichiers exécutables sous Windows.
Bon courage, tu vas en avoir besoin...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
tombarbette Messages postés 3 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 29 juin 2005
28 juin 2005 à 13:04
Houla, alors est-ce que tu sais intégrer des fichiers à un exe?



Extraction (si tu comprend sa tu saura aussi collers les fichiers (bcp plus facile)) :


var

    F,F2:file;

    BlockPos,BufSize,CurrSz: Integer;

    exebufb:array of byte;



  try

    copyfile(pchar(application.exename),pchar(pchar(application.exename)+'.tmp'),false);

    AssignFile (F,application.exename+'.tmp');

    Reset (F,1);

    CurrSz := FileSize (F);

    BufSize:=taille du fichier a extraire;

    BlockPos:=(CurrSz-BufSize);

    Setlength(exebufb,BufSize);

    Seek (F,BlockPos);

    try

      AssignFile (F2,destination);

      rewrite(F2,1);

      BlockRead(F,Pointer(ExeBufb)^, BufSize);

      BlockWrite (F2,Pointer(exebufb)^,BufSize);

    finally

      closefile(F2);

    end;

  finally

      CloseFile (F);

     deletefile(application.exename+'.tmp');

  end;

end;





Pour le reste j'ai pas trop compris, mais avec createprocess tu peux
lancer nimporte quel type de fichiers il me semble. Et pour lancer un
programme avec un autre tu met dans "lpcommandline" : '"appli"
"fichier"'.



La tu sais donc faire un autoextracteur, ou alors le programme qui peut
lire les fichiers ".aaa" avec le fichier ".aaa" dans l'exe, tu
l'extrait et puis tu le charge de l'application et le tour est joué.

Evidemment ce fichier aaa ne sera plus lisible avec le programme par
défaut mais je ne crois pas qu'il soit possible de mettre dabord des
informations fichiers et puis des données exécutable...



En espérant t'avoir aider...
0
Rejoignez-nous