2017-05-17 3 views
3

Je voudrais obtenir le chemin du répertoire d'installation, lorsque l'utilisateur clique sur Suivant, lorsque je suis dans le wpSelectDir de Inno Setup.Obtenir le chemin dans le wpSelectDir avant que {app} est défini Inno Setup

Je dois vérifier le chemin, car j'ai besoin de vérifier le chemin, et si ce n'est pas correct, je ne laisserai pas l'utilisateur continuer.

Mon problème est que la {app} constante n'est pas encore fixée, car il sera fixé après l'wpSelectDir et je suis encore.

Répondre

2

Utilisation WizardDirValue support function:

Renvoie le contenu actuel du contrôle d'édition sur le Sélectionnez l'emplacement de destination page de l'assistant.

Contrairement à ExpandConstant('{app}'), cette fonction n'échouera pas si elle est appelée après l'affichage de l'assistant mais avant que l'utilisateur ne sélectionne un répertoire. Au lieu de cela, il retournera le nom du répertoire par défaut.


Il est plus idiomatiques que le WizardForm.DirEdit.Text.

Bien que l'intérieur il fait à peu près la même:

RemoveBackslashUnlessRoot(WizardForm.DirEdit.Text) 

Voir aussi How do you find the user-selected install path in Inno Setup?

2

Vous pouvez faire quelque chose comme ça ....

procedure onDirChange(Sender: TObject); 
var 
    currentDir: String; 
begin 
    currentDir := WizardForm.DirEdit.Text; 
    // your validation goes here.... 
end; 

procedure InitializeWizard; 
begin 
    WizardForm.DirEdit.onChange := @onDirChange; 
end; 

WizardForm.DirEdit.Text renvoie la valeur actuelle dans la zone de texte DirEdit. La procédure onDirChange est appelée chaque fois que le texte de la zone de texte dirEdit est modifié. Vous pouvez utiliser cette valeur pour effectuer vos validations.