1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2011
    Messages : 34
    Points : 33
    Points
    33

    Par défaut [Inno Setup] Composant et Pages perso

    Bonjour,

    Je prépare un setup pour l'installation et/ou la maj de mon logiciel

    J'ai créé des composants :
    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
     
    [Types]
    Name: Reseau; Description: Reseau
    Name: Client; Description: Client
    Name: Client_Install; Description: Installation
    Name: Client_MAJ; Description: MAJ
     
     
    [Components]
     
    //Si il n'y a eu aucune installation du logiciel déjà faite sur le poste c'est cette liste de composants qui apparait
    Name: Reseau_New; Description: Reseau; Flags: exclusive; Languages: ; Types: Reseau
    Name: Reseau_New\Client_New; Description: Client; Flags: exclusive; Languages: ; Types: Client
     
    //Si il y a déjà eu une installation de faite sur le poste (Check clé de registre) c'est cette liste de composants qui apparait 
    //on laisse la possibilité à l'utilisateur de mettre à jour le logiciel ou d'installer une nouvelle version
    Name: Reseau; Description: Reseau; Flags: exclusive; Languages: ; Types: Reseau
    Name: Reseau\Client; Description: Client; Flags: exclusive; Languages: ; Types: Client
    Name: Reseau\Client\Install; Description: Installation Client; Flags: exclusive; Languages: ; Types: Client_Install
    Name: Reseau\Client\MAJ; Description: MAJ Client; Flags: exclusive; Languages: ; Types: Client_MAJ
    Le système des composants fonctionne bien
    Selon le composant sélectionné je veux faire apparaitre des pages perso

    Si c'est le composant Reseau\Client\MAJ qui est sélectionné voici la page qui doit apparaitre

    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
    var
      PageClientMAJ: TInputDirWizardPage;
      CheckValue4 : string;
    procedure CreateTheWizardPages3;
    begin
      PageClientMAJ := CreateInputDirPage(wpSelectComponents,
    		'Répertoires d''installation',
    		'Définissez le répertoire d''installation du programme :',
    			'Cliquer sur "Suivant" pour continuer. Pour définir un répertoire différent, cliquez sur "Parcourir".',
    		False, 'New Folder');
    	PageClientMAJ.Add('Répertoire d''installation');
    	CheckValue4 := ExpandConstant('{reg:HKLM\SOFTWARE\MonProg\Client,LastInstallationPath}') ;
      PageClientMAJ.Values[0] := CheckValue4;
    end;
     
    function GetPageClientMAJ(Param: String): string;
    begin
    result := PageClientMAJ.Values[0];
    end;
    Si c'est un des 2 autres composants Reseau\Client\Install ou Reseau_New\Client_New c'est cette page :
    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
    var
      UserPageNew: TInputDirWizardPage; 
      CheckValue8 : string;
    procedure CreateTheWizardPages6;
    begin
    UserPageNew := CreateInputDirPage(wpSelectComponents,
        'Répertoires d''installation',
    		'Définissez le répertoire d''installation du programme :',
    			'Cliquer sur "Suivant" pour continuer. Pour définir un répertoire différent, cliquez sur "Parcourir".',
    		False, 'New Folder')
      UserPageNew.Add('Répertoire d''installation');
      CheckValue8 :=  ExpandConstant('C:\MonProg');
      UserPageNew.Values[0] := CheckValue8;
    end;
     
     
    var
      PageClientNew: TInputQueryWizardPage;
    procedure CreateTheWizardPages7;
    begin
    PageClientNew := CreateInputQueryPage(UserPageNew.id,'Installation client', 'Information serveur',
        'Merci de renseigner les informations réseau. Puis appuyer sur suivant.');
      PageClientNew.Add('IP du serveur:', False);
      PageClientNew.Add('Port du serveur de BDD:', False);
    end;
     
    function GetPageClientNew(Param: String): string;
    begin
    result := UserPageNew.Values[0];
    end;
     
    function GetIPClientNew(Param: String): string;
    begin
    result := PageClientNew.Values[0];
    end;
     
    function GetPortSERVERClientNew(Param: String): string;
    begin
    result := PageClientNew.Values[1];
    end;
    Et voici mon code pour la gestion des pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure InitializeWizard();
    begin
        CreateTheWizardPages3;
        CreateTheWizardPages6;
        CreateTheWizardPages7;
    end;
     
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
     Result := ((PageFromID(PageID) = PageClientMAJ) and not IsComponentSelected('Reseau\Client\MAJ')) or
               ((PageFromID(PageID) = UserPageNew) and not IsComponentSelected('Reseau\Client\Install')) or
               ((PageFromID(PageID) = UserPageNew) and not IsComponentSelected('Reseau_New\Client_New')) ;
    end;
    Mais cela ne fonctionne pas quand je sélectionne 'Reseau\Client\Install' ou 'Reseau_New\Client_New' j'ai que la page PageClientNew qui s'affiche et la page UserPageNew qui doit apparaitre avant ne s'affiche pas

    Et quand je sélectionne 'Reseau\Client\MAJ' la page PageClientMAJ s'affiche mais avant j'ai aussi la page PageClientNew qui s'affiche alors qu'elle ne devrait pas

    Auriez-vous une idée je tourne en rond

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    4 383
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 4 383
    Points : 8 904
    Points
    8 904

    Par défaut

    PageClientNew n'est pas conditionnée, normal qu'elle apparaisse systématiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
     Result := ((PageFromID(PageID) = PageClientMAJ) and not IsComponentSelected('Reseau\Client\MAJ')) or
               ((PageFromID(PageID) = UserPageNew) and not IsComponentSelected('Reseau\Client\Install')) or
               ((PageFromID(PageID) = UserPageNewPageClientNew) and not IsComponentSelected('Reseau_New\Client_New')) ;
    end;
    Ensuite, pas sûr qu'on puisse placer plusieurs pages à la suite de la même page (ici wpSelectComponents).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserPageNew := CreateInputDirPage(PageClientMAJ.id, ...);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2011
    Messages : 34
    Points : 33
    Points
    33

    Par défaut

    Merci pour cette réponse.
    J'ai peut être trouvé une solution pour détourner mon problème

    Est-il possible de créer une pages perso avec une zone de sélection de dossier et des zones de texte ?

    Je sais faire des pages qui combine les 2 types de zones

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

Discussions similaires

  1. [Inno Setup] Ordre des pages dans InitializeWizard
    Par Filou07 dans le forum Outils
    Réponses: 2
    Dernier message: 20/07/2017, 10h25
  2. [Inno Setup] Personnalisation des pages prédéfinies
    Par dede2laure dans le forum Outils
    Réponses: 2
    Dernier message: 21/02/2015, 10h31
  3. [inno setup] ajout de page CreateInputDirPage
    Par marco62118 dans le forum Outils
    Réponses: 21
    Dernier message: 14/02/2011, 09h51
  4. [Inno Setup] ajouter une page avec des checkbox
    Par cotede2 dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 28/05/2007, 23h01
  5. [Inno Setup] Éliminer la page wpWelcome
    Par formateo dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 01/11/2006, 14h48

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