IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Créer un installateur de programme existant


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Créer un installateur de programme existant
    Bonjour,

    Voila, j'ai tester plusieur installeteur mais aucun n'offre les fonctions dont j'ai besoin, je voudrais lancer l'installation de 3 executable dont 1 est obligatoire et donner le choix pour les deux autres, exemple :

    1° | Exe 1 > S'installe obligatoirement en premier
    2° | Choix d'installation entre le Exe 2 et le Exe 3 .

    Ensuite j'aimerais pour voir rechercher un certain fichier (qui n'est présent que lorsque Exe 1 est installer (ceci pour pouvoir localiser l'endroit ou l'utilisateur a installer Exe 1) un fois que j'ai trouver ce fichier (donc je Sait ou Exe 1 est installer ) je copie 2 repertoire dans le dossier de Exe 1 .

    Ensuite je propose a l'utilisateur de prendre un fichier .CFg sur son pc et de le mettre dans le dossier de Exe 1 .

    Résumer :

    Au lancement de l'installateur, On lance Exe 1 ...............

    Un fois que Exe 1 est terminer on donne le choix a l'utilisateur d'installer Exe 2 OU Exe 3 ...............

    Une fois que l'installation de Exe 2 ou Exe 3 (selon ce qu'a choisis l'utilisateur) est terminer, je lui propose de copier Repertoire 1 ou Repertoire 2 voir les deux Dans le dossier de Exe 1 ...................

    Un fois le ou les repertoire copier, je propose a l'utilisateur de choisir sur son HD un fichier de Config *.CFG et de le placer dans le répertoire de Exe 1 ...........

    Et voila une fois cela terminer, je remercis l'utilisateur et lui propose de lire le Read Me .

    J'ai d'autre idée mais la ca risque d'etre deja dur pour un débutant en delphi .

    Ceci est dans le cadre de l'installation d'un jeu qui pose asser probleme (ce jeu est enfete Exe 1) Exe 2 et Exe 3 sont des patch et repertoire 1 et repertoire 2 sont des mods et le fichier CFG est un fichier de config utiliser par le jeu on l'on toruve les configuration du clavier ect....

    Voila, ma question est simple :

    On trouver des ressources (en francais si possible ^^ ) Pour mener a bien mon projet .

    Ya t'il des biblioteche qui permette de créer ce genre de chose, ea savoir que j'ai voulue tester Youseful mais lorsque je lance delphi 2005 a la fin de l'installatioon il me dit qu'il me manque le paquet bdertl70.bpl , donc chez moi il est inutilisable .....

    Voila, si il y a des choses que vous n'avez pas compris, demander .

    Je vous remercis tous d'avance .

    Cordialement, Max .[/url]

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 678
    Points : 7 093
    Points
    7 093
    Par défaut
    Bin, pour ce que tu cherche as faire, tu va avoir besoin de :
    CopyFile, ShellExecute ou CreateProcess, SearchRec, ...
    Pour le Readme, tu peux le stocker en ressource.
    Pour créer un raccourci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Shlobj, ActiveX, ComObj;
     
    procedure CreateShortCut(const szNomRaccourci, szApplication, szParametres, szRepertoireDeTravail: String; nModeAffichage: Integer; nToucheRaccourci: Word; szFichierIcone: String; nIndexIcone: Byte; szDescription: String);
    var 
       SCObject: IUnknown; 
       SCSLink: IShellLink;
       SCPFile: IPersistFile; 
       WFName: WideString; 
    begin
       SCObject := CreateComObject(CLSID_ShellLink);
       SCSLink := SCObject as IShellLink;
       SCPFile := SCObject as IPersistFile;
       SCSLink.SetPath(PChar(szApplication));
       SCSLink.SetArguments(PChar(szParametres));
       SCSLink.SetWorkingDirectory(PChar(szRepertoireDeTravail));
       SCSLink.SetShowCmd(nModeAffichage);
    //   SCSLink.SetHotkey(nToucheRaccourci);
       SCSLink.SetIconLocation(PChar(szFichierIcone), nIndexIcone);
       SCSLink.SetDescription(PChar(szDescription));
       WFName := szNomRaccourci;
       SCPFile.Save(PWChar(WFName), False);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin                                                                                        //SW_SHOWMAXIMIZED
       CreateShortCut('Test.lnk', Application.ExeName, '56', ExtractFilePath(Application.ExeName), SW_SHOWNORMAL, 65, 'D:\Projets Delphi\Images\icone.ico', 0, 'Description du raccourci !');
    end;
    Je pense que c'est faisable.


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    ok simpas, bon je vais fair des recherche sur les fontions que tu ma données, mais je n'ai pas besoin du shorcut, puisque c'est los de l'installation du jeu (Exe 1) qu'il est créer, moi c'est surtout rechercher un fichier, lancer un exe et copier un repertoire .

    Sinon, merci bien

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 678
    Points : 7 093
    Points
    7 093
    Par défaut
    Citation Envoyé par maxoudu328
    moi c'est surtout rechercher un fichier
    Petit truc :
    Écris FindFirst dans Delphi et fais [F1]. Là, dans la page d'aide, tu as un exemple d'utilisation.


  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Findfirst ne me renvoi que le premier fichier trouver dans un repertoire don' til faut donner le nom :'( (dapré l'aide).

    Et si je recherche un fichier c'est justement pour savoir dans quel répertoire il ce trouve ...

    Mais bon merci quand meme de l'interet que tu porte .

    Sinon, une question hors sujet : ou trouver un tuto sur la création d'un moteur 3D simple en delphi, pas pour fair un jeu je n'ai pas cetteprétention, mais juste pour en apprendre un peu plus, parceque quand la théorie de la programmation systeme et réseau me parait simple, celle de la gestion 3D trés flou :s .

    Voila, sinon bah merci encor

    Ps : je ne veut pas des tuto pour tous biensur, mais comme j'en ai trouver plein sur la création d'un moteur 3D en c++ et de plus en francais, je me dit que peut etre l'un d'entre vous en connait un .

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 678
    Points : 7 093
    Points
    7 093
    Par défaut
    Citation Envoyé par maxoudu328
    Findfirst ne me renvoi que le premier fichier trouver dans un repertoire don' til faut donner le nom :'( (dapré l'aide).

    Et si je recherche un fichier c'est justement pour savoir dans quel répertoire il ce trouve ...
    Tu n'as pas regardé l'exemple complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then
    begin
       repeat
          if (sr.Attr and FileAttrs) = sr.Attr then
          begin
     
          end;
       until FindNext(sr) <> 0;
    FindClose(sr);
    Citation Envoyé par maxoudu328
    Sinon, une question hors sujet : ou trouver un tuto sur la création d'un moteur 3D simple en delphi, pas pour fair un jeu je n'ai pas cetteprétention, mais juste pour en apprendre un peu plus, parceque quand la théorie de la programmation systeme et réseau me parait simple, celle de la gestion 3D trés flou :s .
    http://eraquila.developpez.com/opengl/?page=sommaire


  7. #7
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    voici une petite fonction vite faite qui renvoie le répertoire du premier fichier trouvé.

    pour montrer le principe.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Function SearchFile( BeginDirectory, AfileName : String;
      var DirResult : String; astatusPanel: TstatusPanel):boolean ;
    Var
      searchrec:Tsearchrec;
      SearchResult, DirIndex : Integer;
      Var SubDirlist : Tstringlist;
    Begin
    result := False;
    {recherche du fichier dans le répertoire courant}
    SearchResult := FindFirst( BeginDirectory + '\' + AfileName, faAnyFile,
      SearchRec );
    ast.Text := BeginDirectory + '\' + AfileName;
    If SearchResult = 0 then
      Begin
      DirResult := BeginDirectory;
      FindClose(SearchRec);
      result := True;
      End
    else
      Begin
      FindClose(SearchRec);
      {Listage des sous répertoires}
      SubDirList := Tstringlist.create;
      SearchResult := FindFirst( BeginDirectory + '\*.*', faAnyFile, SearchRec);
      while SearchResult = 0 do
        begin
          if ((SearchRec.Attr and faDirectory > 0) and (SearchRec.Name <> '.')
            and (SearchRec.Name<>'..')) then
              SubDirList.Add( BeginDirectory + '\' + SearchRec.Name);
              SearchResult := Findnext(SearchRec);
         application.ProcessMessages;
        end;
      FindClose(SearchRec);
     
      {recherche du fichier dans les sous répertoires}
      For dirIndex := 0 to SubDirList.count - 1 do
        Begin
        if SearchFile( SubDirList.Strings[dirindex],
          Afilename, DirResult, AstatusPanel) then
          Begin
          result := true;
          break;
          end;
        application.ProcessMessages;
        End;
      SubDirList.Clear;
      subdirlist.Free;
      end;
     
    End;

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Deja merci de vos réponses, mais aprés des recherches sur le jeu, j'ai remarquer qu'a part copié des fichiers dans le program files il n'ajouter aucune clef de registre ni quoi que ce soit, je V donc copié récursivement tout les fichier du répertoire vers celui que veut l'user ce qui me permettra de connaitre le chemin d'installation sans avoir a éffectuer aucune recherche de fichiers .

    Par contre jai une question (et oui encor ) comment fair pour avoir un éxécutable qui contient tous les fichiers a copiés (le jeu les patch ect...) plus le programme d'installation lui meme ?

    je pence utiliser cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function MoveFile(FichierSource, FichierDestination: String;
                                   CommentDeplacerLeFichier: DWORD) : boolean;
    Begin
       Result := MoveFileEx(PChar(FichierSource), PChar(FichierDestination),MOVEFILE_COPY_ALLOWED);
    end;
    Qui suffira a 80% du programme, et shellexecute pour lancer l'installation du patch .

    Il faut juste que je me débrouille pour avoir le chemin vers le program files (trop risquer d'utiliser un chemin en dure ex: C:/program files/ , si l'utilisateur n'a pas C:/ en lecteur principal ) , peut etre existe t-il une fonction pour ca ??

    Une fois encor je me repond a moi-meme :

    voici le lien qui dit tous ce qu'il faut savoir pour inclure un fichier dans un exe :

    http://www.phidels.com/php/index.php3?page=ressources/ressourcesautres.htm

    Il me reste juste a trouver comment inclure un DOSSIER dans un exécutable, car la ca s'applique seulement aux fichiers (ce qui suffira pour les patchs) .

    (si je donne a chaque fois ce que je trouve c'est pour aider les gens qui serait dans le meme cas que moi )

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    pti up, il me reste que 1 pti probleme :

    Inclure un DOSSIER contenant des sous-dossiers et des fichier dans mon éxecutable .

    Voila, encor merci d'avance a tous le monde .

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    inclure un DOSSIER contenant des sous-dossiers et des fichier dans une ressource c'est pas possible.

    il faut que tu mettes en ressource tes fichiers 1 par 1, puis tu créer les répertoires puis tu extrais tes fichiers en ressource 1 par 1 dans les bons répertoires...

    si tu as beaucoup de fichiers à mettre en ressource, j'ai un petit prog pour toi

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Ben imagine c'est un dossier de jeux video, et pas amateur, en effet il y vraiment beaucoup de fichier, je veut bien tester ton prog D . sinon merci d'avoir répondue.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    laisse tomber.

    achete un vrai un antivirus pour noël

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    TON LIEN EST UN NIE A VIRUS (6 DIFFERENT EN TOUS) ET L'EXECUTABLE N'EXISTE PAS !!!!!!

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Je ne penser pas rencontrer de boulet ici, et je demande de l'aide a qq de mature que ne me donnera pas un lien 'pourie' .

    Merci d'avance.

  15. #15
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par maxoudu328
    Par contre jai une question (et oui encor ) comment fair pour avoir un éxécutable qui contient tous les fichiers a copiés (le jeu les patch ect...) plus le programme d'installation lui meme ?
    ça s'appelle un SFX ( auto-extracteur ). Le principe est simple, tu crees ton programme et tu rajoutes à la fin de celui-ci une archive ZIP par exemple, que tu extrait tranquillement vers le dossier que tu veux.

    Pour obtenir l'offset de la fin de l'exécutable tu as à ta disposition cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    unit SFXUtils;
     
    interface
     
    uses Windows;
    function GetExeSize: cardinal;
     
    implementation
     
    (*--------------------------------------------------------------------------*)
     
    // from Angus Johnson's TZip-SFX code:
    // get the executable's file size to get rid of caring about the exe size
    function GetExeSize: cardinal;
    var
      p: pchar;
      i, NumSections: integer;
    const
      IMAGE_PE_SIGNATURE  = $00004550;
    begin
      result := 0;
      p := pointer(hinstance);
      inc(p, PImageDosHeader(p)._lfanew + sizeof(Cardinal));
      NumSections := PImageFileHeader(p).NumberOfSections;
      inc(p,sizeof(TImageFileHeader)+ sizeof(TImageOptionalHeader));
      for i := 1 to NumSections do
      begin
        with PImageSectionHeader(p)^ do
          if PointerToRawData+SizeOfRawData > result then
            result := PointerToRawData+SizeOfRawData;
        inc(p, sizeof(TImageSectionHeader));
      end;
    end;
    (*--------------------------------------------------------------------------*)
     
    end.
    Pour ta compression/décompression, libre à toi de trouver une libraire de compression Zip/GZip/BZip2/...

    Pour obtenir le dossier Program Files, tu as cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GetEnvironmentVariable('ProgramFiles');


    Et enfin pour finir :
    Citation Envoyé par maxoudu328
    Je ne penser pas rencontrer de boulet ici, et je demande de l'aide a qq de mature que ne me donnera pas un lien 'pourie' .

    Merci d'avance.
    Calme et maitrise de soi sont des notions abstraites pour vous n'est-ce pas ?

Discussions similaires

  1. Comment créer un langage de programmation ?
    Par @v@lon dans le forum Langages de programmation
    Réponses: 27
    Dernier message: 16/06/2014, 22h04
  2. créer un JAR par programmation
    Par Kuroro dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2007, 01h19
  3. créer une instalation de programme
    Par kanea_iza dans le forum Windows
    Réponses: 4
    Dernier message: 14/05/2007, 15h50
  4. Créer un utilisateur par programmation
    Par digital prophecy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/05/2006, 14h06
  5. Comment créer un installateur de police
    Par dimitrimm972 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 08/04/2006, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo