[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:
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:
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:
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:
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