2010-11-14 6 views
3

Existe-t-il un moyen de définir le DefaultDirName par code en fonction de la décision que l'utilisateur a prise lors de l'installation? Laissez-moi le commentaire: J'ai du code qui est construit pour deux systèmes différents (en utilisant différents interops/ocx et tels trucs). Mes fichiers d'entrée sont stockés dans deux répertoires input \ A et input \ B. Je veux avoir un seul fichier d'installation pour les deux systèmes.Inno setup et DefaultDirName

Dans le fichier d'installation, j'utilise CreateInputOptionPage avec 2 options pour déterminer les fichiers à installer (en utilisant Check sur chaque fichier). Cela fonctionne bien.

Mais j'ai aussi un ShellExec à la fin de la configuration, qui utilise actuellement {app} par exemple. enregistrer des classes .Net et ShellExec pour annuler l'inscription des classes .Net sur InitializeUninstall (utilise également {app})

La configuration doit installer le logiciel sur deux emplacements différents (en fonction de la sélection de l'utilisateur (par exemple, c: \ software_a ou c: \ software_b)

Y a-t-il un moyen de spécifier le DefaultDirName avant que les fichiers ne soient copiés sur le système, donc je peux utiliser le même ShellExec lors de l'installation et de la désinstallation? Bien sûr, ajoutez le même ShellExec pour les deux systèmes sur installtation et utilisez un if pour vérifier quels fichiers enregistrer (selon la sélection de l'utilisateur) mais lors de la désinstallation je n'aurais pas cette information (sélection de l'utilisateur), donc je ne peux pas désenregistrer le. classes

merci

Répondre

1

Si vous devez changer le dossier d'installation après l'DefaultDirName a été initialisé, ce travaillait pour moi bien:

procedure CurPageChanged(CurPageID: Integer); 
begin 
    { updates the install path depending on the install type or the entered suffix } 
    if CurPageID = wpSelectDir then begin 
    WizardForm.DirEdit.Text := ExpandConstant('{pf}') + '\MyAppName' + GetAppSuffix(''); 
    end; 
end; 

Vive Chris

+0

Quelle est la raison de 'GetAppSuffix ('')'? –

3

Dans votre section de code CreateInputOptionPage, vous pourriez être en mesure de définir une valeur puis utiliser cette valeur dans l'extrait de code ci-dessous. Je ne l'ai pas testé mais cela pourrait fonctionner.

[Setup] 
DefaultDirName={code:getpath} 

[Code] 
function GetPath(Default: string): string; 
begin 

if (CreateInputOptionPageValue1) then 
Result := ExpandConstant({sd}) + '\path1'; 
else 
Result := ExpandConstant({sd}) + '\path2'; 
end; 
+0

Bonjour, j'essayé d'utiliser le { code :.} pour DefaultDirName, mais le programme d'installation existe avec une erreur. Probablement parce que la valeur doit être définie avant le démarrage de l'installation et que la valeur des radiobuttons est présente seulement après que la première boîte de dialogue est affichée ... –

+1

Je l'ai fait de manière "manuelle" ... spécifier un {pf} \ dir pour DefaultDirName (donc mon programme de désinstallation est installé ici) et fais tout le contenu avec Desc: {code: ...} et Check() dans la section Fichiers. Semble fonctionner jusqu'à présent –

+0

Oui, 'Param' ne peut pas être un global. L'aide de la section [Setup Section] (http://www.jrsoftware.org/ishelp/index.php?topic=setupsection) ne traite pas de l'utilisation de [paramètres dans les sections] (http://www.jrsoftware.org/ ishelp/index.php? topic = params), mais il est possible de passer l'un des [paramètres communs] (http://www.jrsoftware.org/ishelp/index.php?topic=commonparams). FWIW n'a pas, pour la section d'installation utilisé soit une [Vérifier la fonction] (http://www.jrsoftware.org/ishelp/index.php?topic=scriptcheck) ou [Avant/Après l'installation] (http: // www .jrsoftware.org/ishelp/index.php? topic = scriptinstall) paramètres. –

Questions connexes