IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[Inno Setup] chemin et clef de registre


Sujet :

Outils Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut [Inno Setup] chemin et clef de registre
    Bonjour,

    Je souhaite installer 2 applications (App1 et App2) "liées" entre elles: l'App1 exécute App2 avec certains paramètres.
    Il faut donc que App1 connaisse le chemin d'installation de App2 pour pouvoir la lancer. Pour cela, j'utilise les clefs de registre qui stockent les chemins des applications.

    On souhaite une installation avec l'arborescence suivante:
    {app}\App1.exe
    {app}\..\App2\App2.exe on monte d'un répertoire pour créer le répertoire App2
    avec {app} contenant (par exemple) "C:\Company\App1"

    L'installation des fichiers se fait sans erreur dans la section [Files]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Source: Fr\App1.exe; DestDir: {app};
    Source: Fr\App2.exe; DestDir: {app}\..\App2;
    Dans la section [Registry], j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Root: HKLM; Subkey: SOFTWARE\Company\App1\; ValueType: string; ValueName: ApplicationPath; ValueData: {app}; Tasks: ; Languages: 
    Root: HKLM; Subkey: SOFTWARE\Company\App2\; ValueType: string; ValueName: ApplicationPath; ValueData: {code:GetPathApp2|{{app}
    Dans la section [Code], j'ai implémenté la fonction GetPathApp2 qui ne me retourne pas ce que je veux : en sortie de la fonction, j'ai: {app\..\App2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function GetPathApp2(_Param: string): String;
    begin
      Result:= _Param + '\..\App2' ;
    end;
    Voyez-vous erreur dans ce qui est fait et/ou une bonne méthode pour obtenir ce répertoire ?

    Bonne journée.

  2. #2
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function GetPathApp2(_Param: string): String;
    begin
      Result:= ExpandConstant(_Param) + '\..\App2' ;
    end;
    pourquoi ne pas utiliser ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Root: HKLM; Subkey: SOFTWARE\Company\App1\; ValueType: string;  ValueName: ApplicationPath; ValueData: {app}; Tasks: ; Languages: 
    Root: HKLM; Subkey: SOFTWARE\Company\App2\; ValueType: string;  ValueName: ApplicationPath; ValueData: "{app}\..\App2"

  3. #3
    Membre habitué
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Salut ouiouioui,

    Merci pour tes propositions.

    Citation Envoyé par ouiouioui Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function GetPathApp2(_Param: string): String;
    begin
      Result:= ExpandConstant(_Param) + '\..\App2' ;
    end;
    La compilation est OK mais j'ai une erreur qui vient de cette instruction lorsque je lance le setup:
    Runtime error
    Erreur interne: unclosed constant

    Pour continuer sur cette piste, j'ai modifié la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function GetPathApp2(_Param: String): String;
    begin
      Result:= ExpandConstant('{app}') + '\..\App2' ;
    end;
    mais le résultat est "C:\Company\App1\..\App2"

    pourquoi ne pas utiliser ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Root: HKLM; Subkey: SOFTWARE\Company\App1\; ValueType: string;  ValueName: ApplicationPath; ValueData: {app}; Tasks: ; Languages: 
    Root: HKLM; Subkey: SOFTWARE\Company\App2\; ValueType: string;  ValueName: ApplicationPath; ValueData: "{app}\..\App2"
    J'avais essayé cette instruction mais il fait simplement une concaténation de chaîne avec un résultat identique au test précédent "C:\Company\App1\..\App2"

    Merci

  4. #4
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 991
    Par défaut
    plus sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extractfilepath(expandconstant('{app}')) + 'app2'
    je comprends pas pourquoi ces .. pour remonter d'un répertoire, {app}\..\App2\ c'est pas clair sa donne quoi au final les deux répertoires ?

  5. #5
    Membre habitué
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut OK
    Citation Envoyé par ouiouioui Voir le message
    plus sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extractfilepath(expandconstant('{app}')) + 'app2'
    C'est tout bon, merci. J'oubliais que je pouvais utiliser les routines Delphi



    Citation Envoyé par ouiouioui Voir le message
    plus sa:je comprends pas pourquoi ces .. pour remonter d'un répertoire, {app}\..\App2\ c'est pas clair sa donne quoi au final les deux répertoires ?
    Je voulais faire en relatif d'où les .. mais ça ne fonctionne pas.

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

Discussions similaires

  1. [Inno Setup] Utilisation de clé de registre
    Par kavaliero dans le forum Outils
    Réponses: 1
    Dernier message: 24/02/2011, 08h42
  2. Réponses: 3
    Dernier message: 09/03/2010, 11h22
  3. Réponses: 1
    Dernier message: 16/04/2008, 16h27
  4. [Inno setup/VB6]Récupération d'une clef de registre généré par VB6
    Par marsup54 dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 02/09/2006, 00h07
  5. [Inno Setup] Chemins dynamiques
    Par Corpio dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 28/04/2006, 09h32

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