Bonjour,
Je prépare un setup pour l'installation et/ou la maj de mon logiciel
J'ai créé des composants :
Le système des composants fonctionne bien
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
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
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 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;
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
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;
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
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;
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
Partager