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

Outils Delphi Discussion :

inno setup - rechercher un fichier et le recopier sur un autre disque


Sujet :

Outils Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut inno setup - rechercher un fichier et le recopier sur un autre disque
    bonjour,
    dans la section code, j'aimerai proposer une fenêtre permettant à l'utilisateur d'aller chercher un fichier pour le recopier dans un autre dossier.

  2. #2
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    et tu bloque à quel endroit? Montre ton code
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ouiouioui
    et tu bloque à quel endroit? Montre ton code
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Procedure test;
    var
    ResultCode: Integer;
    DossierPf : string;     // contient le chemin du dossier d'installation des programmes
    DossierInstall: string; // chemin où sont stockés les fichiers d'installation
     
    BEGIN
    if IsWin64 then  // test si 64 bits; initialisation des variables
       begin
    	 DossierPf := 'C:\Program Files (x86)\';
    	 DossierInstall := 'c:\test\64\';
    	 MsgBox ('La machine fonctionne en 64 bits', mbInformation, MB_OK);
       end
      else
       begin
    	 DossierPf := 'C:\Program Files\';
    	 DossierInstall := 'c:\test\32\';
         MsgBox ('La machine fonctionne en 32 bits', mbInformation, MB_OK);
       end
     
    //ici, désinstallation des anciennes versions de java, postgres...
    // ici désinstallation des anciennes versions de postgis et postgres
     
    if MsgBox ('Voulez-vous poursuivre l''installation (java, postgres',mbInformation, mb_YESNO)=idYES then
       begin
    	 // installation de JAVA 6 update 18
    	 Lg_param:= 'c:\test\jre-6u18-windows-i586-s.exe';
    	 MsgBox ('Installation de java 6 update 18',mbInformation, mb_Ok);
    	 Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode);
    	 // installation de postgres 8.4
    	 Lg_param:= DossierInstall + '\inst_postgres.bat';
    	 MsgBox ('Installation de Postgres 8.4 mode silencieux',mbInformation, mb_Ok);
    	 Exec (Lg_Param,'', '', SW_HIDE,ewWaitUntilTerminated, ResultCode);
    	 // installation de postgis 1.5.0
    	 Lg_param:= 'C:\test\postgis-pg84-setup-1.5.0-1.exe';
    	 MsgBox ('Installation de Postgis 1.5.0',mbInformation, mb_Ok);
    	 Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode);
         // ajout d'un script sql supplémentaire
         MsgBox ('si vous avez un fichier .bat supplémentaire à exécuter,' #13#13 'veuillez le recopier dans c:\test avant de cliquer sur ok',mbInformation, mb_Ok);
     
    {
    Précision, je ne sais pas par avance le nom du fichier de l'utilisateur
    ici, plutôt que de faire afficher une boîte, je pensais permettre à l'utilisateur d'aller chercher son fichier, de récupérer le chemin et le nom du fichier
    de le recopier dans le dossier d'installation puis de l'executer
    mais je ne trouve pas d'exemple de la fonction CreateInputFilePage 
    si c'est la bonne solution ?
    }
    	 Lg_param:= 'c:\test\scriptDep.bat';
    	 if FileExists(Lg_Param)= true then
    	   begin
    	     MsgBox ('Exécution du fichier'#13#13 + Lg_param,mbInformation, mb_Ok);
    	     Exec (Lg_Param,'', '', SW_SHOW,ewWaitUntilTerminated, ResultCode);
    	   end
       end
    END;
     
    Procedure CurStepChanged (CurStep: TsetupStep);
    var W_Curstep: Variant;
    Begin
    w_Curstep:=Curstep;
    if W_Curstep = 2 then
     Begin
     Test;
     end
    End;

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    voila un exemple simple, les fichiers sont inclus et extrait, une simple page pour proposer a l'user d'executer un bat:

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    ; -- CodePrepareToInstall.iss --
    ;
    ; This script shows how the PrepareToInstall event function can be used to
    ; install prerequisites and handle any reboots in between, while remembering
    ; user selections across reboots.
     
    [Setup]
    AppName=My Program
    AppVerName=My Program version 1.5
    DefaultDirName={pf}\My Program
    DefaultGroupName=My Program
    UninstallDisplayIcon={app}\MyProg.exe
    OutputDir=userdocs:Inno Setup Examples Output
     
    [Files]
    Source: "MyProg.exe"; DestDir: "{app}";
    Source: "MyProg.chm"; DestDir: "{app}";
    Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme;
    Source: "jre-6u18-windows-i586-s.exe"; Flags: dontcopy
    Source: "inst_postgres.bat"; Flags: dontcopy
    Source: "postgis-pg84-setup-1.5.0-1.exe"; Flags: dontcopy
     
    [Icons]
    Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
     
    [Code]
    const
      QuitMessageError = 'Error. Cannot continue.'#13#13'A dependencies required have not correctly installed';
     
    var
      RestartNeeded: Boolean;
      ISPageSelectFile: TInputFileWizardPage;
     
    function DetectAndInstallPrerequisites: Boolean;
    var
      ResultCode: Integer;
      DossierPf, DossierInstall, FileName: String;
    begin
      (*** Return False if missing prerequisites were detected but their installation failed, else returnTrue. ***)
      Result := True;
     
      {*** Set RestartNeeded to True if restart is needed by dependencies install before use it}
    //  RestartNeeded := True;
     
      if IsWin64 then  // test si 64 bits; initialisation des variables
      begin
        DossierPf :=  ExpandConstant('{pf64}');
        DossierInstall := 'c:\test\64\';
        MsgBox ('La machine fonctionne en 64 bits', mbInformation, MB_OK);
      end
      else
      begin
        DossierPf :=  ExpandConstant('{pf32}');
        DossierInstall := 'c:\test\32\';
        MsgBox ('La machine fonctionne en 32 bits', mbInformation, MB_OK);
      end
     
      //ici on detecte version java, postgres, postgis et si besoin de l'installer ou pas
     
      //ici, désinstallation des anciennes versions de java, postgres...
      //ici désinstallation des anciennes versions de postgis et postgres
     
      if MsgBox('Voulez-vous poursuivre l''installation (java, postgres', mbInformation, MB_YESNO) = idYES then
      begin
        // installation de JAVA 6 update 18
        MsgBox ('Installation de java 6 update 18',mbInformation, mb_Ok);
        FileName := ExpandConstant('{tmp}\jre-6u18-windows-i586-s.exe');
        if not FileExists(FileName) then
          ExtractTemporaryFile(ExtractFileName(FileName));
        Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
     
        // installation de postgres 8.4
        MsgBox ('Installation de Postgres 8.4 mode silencieux',mbInformation, mb_Ok);
        FileName := DossierInstall + '\inst_postgres.bat';
        if not FileExists(FileName) then
        begin
          if not FileExists(ExpandConstant('{tmp}\') + ExtractFileName(FileName)) then
            ExtractTemporaryFile(ExpandConstant('{tmp}\') + ExtractFileName(FileName));
          FileCopy(ExpandConstant('{tmp}\') + ExtractFileName(FileName), FileName, False);
        end;
        Exec(FileName, '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
        DeleteFile(FileName);
     
        // installation de postgis 1.5.0
        MsgBox ('Installation de Postgis 1.5.0',mbInformation, mb_Ok);
        FileName := ExpandConstant('{tmp}\postgis-pg84-setup-1.5.0-1.exe');
        if not FileExists(FileName) then
          ExtractTemporaryFile(ExtractFileName(FileName));
        Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
     
    {
    Précision, je ne sais pas par avance le nom du fichier de l'utilisateur
    ici, plutôt que de faire afficher une boîte, je pensais permettre à l'utilisateur d'aller chercher son fichier, de récupérer le chemin et le nom du fichier
    de le recopier dans le dossier d'installation puis de l'executer
    mais je ne trouve pas d'exemple de la fonction CreateInputFilePage
    si c'est la bonne solution ?
    }
        if FileExists(ISPageSelectFile.Values[0]) then
        begin
          MsgBox ('Exécution du fichier'#13#13 + ISPageSelectFile.Values[0], mbInformation, mb_Ok);
          Exec(ISPageSelectFile.Values[0], '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
        end;
      end;
    end;
     
    function PrepareToInstall(var NeedsRestart: Boolean): String;
    begin
      RestartNeeded := False;
      if not DetectAndInstallPrerequisites then
        Result := QuitMessageError;
    end;
     
    function NeedRestart(): Boolean;
    begin
      Result := RestartNeeded;
    end;
     
    procedure InitializeWizard;
    begin
      ISPageSelectFile  := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé');
      ISPageSelectFile.Add('Indiquer ici si vous avez un bat supplémentaire à executer après l''installation de java', 'Fichier bat|*.bat', '.bat');
    end;
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    voila un exemple simple, les fichiers sont inclus et extrait, une simple page pour proposer a l'user d'executer un bat:
    Merci beaucoup pour cet exemple très précis qui m'a permis la résolution de mon problème.

    Une interrogation, si j'ai 2 fichiers à récupérer (?), lorsque je duplique les 2 lignes contenues dans la procédure InitializeWizard, j'ai bien mes 2 fenêtres de sélection, mais comment je retrouve les variables contenant le nom (+ chemin) pour les 2 fichiers.

  6. #6
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    tu peux mettre deux champs sur la même page et même plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure InitializeWizard;
    begin
      ISPageSelectFile  := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé');
      ISPageSelectFile.Add('file 1', 'Fichier bat|*.bat', '.bat');
      ISPageSelectFile.Add('file 2', 'Fichier bat|*.bat', '.bat');
    end;
    ISPageSelectFile.Values[0] //file 1
    ISPageSelectFile.Values[1] //file 2

    sinon 2 pages:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
      page1, page2: TInputFileWizardPage;
     
    procedure InitializeWizard;
    begin
      page1 := CreateInputFilePage(wpReady, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé');
      page1.Add('file 1', 'Fichier bat|*.bat', '.bat');
     
      page2 := CreateInputFilePage(page1.id, 'bat supplémentaire', 'indiquer le chemin d''un bat supplémentaire à executer', 'lorque vous cliquerez suivant java sera installé');
      page2.Add('file 2', 'Fichier bat|*.bat', '.bat');
    end;
    page1.Values[0] //file 1
    page2.Values[0] //file 2
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Super !!! je m'empresse de tester.

    et félicitations pour ta rapidité et tes compétences.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/05/2011, 21h42
  2. Inno Setup: Installer certains fichiers suivant le choix de l'utilisateur
    Par remfleyf dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 17/12/2008, 10h55
  3. [Inno Setup] Renommer un fichier durant l'install
    Par freud dans le forum Outils
    Réponses: 2
    Dernier message: 17/09/2008, 21h49
  4. [Inno Setup][VISTA] et fichiers INI
    Par Droïde Système7 dans le forum Outils
    Réponses: 23
    Dernier message: 21/04/2008, 14h47
  5. [Inno Setup] Recherche de tutoriels
    Par argon dans le forum Autres langages
    Réponses: 5
    Dernier message: 30/01/2006, 19h55

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