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 :

[InnoSetup] Identifier le PATH du .exe généré depuis un fichier .bat qui se trouve dedans


Sujet :

Outils Delphi

  1. #1
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut [InnoSetup] Identifier le PATH du .exe généré depuis un fichier .bat qui se trouve dedans
    Bonjour à tous,

    J'utilise INNOSETUP pour déployer une application que j'ai développé...

    L'application est un ensemble des fichiers .bat (Scripts batchs) qui lisent des paramètres depuis un fichier de configuration et après ils font des traitements sur un serveur... Le fichier de configuration doit être configuré par l'utilisateur selon l'environnement sur lequel il va installé l'application.

    Pour le moment, j'exige que le fichier de configuration doit être mis sous le bureau du serveur puisque j'utilise la variable définie dans DOS %%userprofile%desktop/FilaName.xls pour pouvoir lire la liste des paramètres nécessaire du fichier de configuration...


    Ma question est : Est-il possible de savoir l'emplacement du fichier de configuration (qui est juste à coté du Setup.exe généré par InnoSetup) depuis les fichiers .bat pour pouvoir lire les variables définies dans le fichier de configuration.

    Avez-vous une idée comment je peux résoudre ce problème s'il vous plaît ?

    Merci beaucoup d'avance !

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 689
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Ton explication n'est pas très claire.

    Si tu exécutes ce .bat depuis ton installateur, tu peux lui passer le chemin en paramètre.
    Mais pourquoi passer par un fichier de configuration plutôt que de préconfigurer le tout par des options proposées par l'installateur ?

  3. #3
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Désolé pour ma réponse tardive et aussi bien de ne pas pus pouvoir présenter correctement ma question.

    On'a plusieurs paramètres et nous avons choisi de passer par un fichier Excel pour définir ces différents paramètres au lieu d'utiliser InnoSetup.

    Une fois ces paramètres sont définis, les scripts batch lisent ces paramètres depuis un fichier Excel et font le nécessaire (Configuration des serveurs, Modifications des bases...)

    Pour cette version, je dois toujours mettre le fichier de configuration sous le bureau pour que je puisse utiliser la variable définie "%userprofile%desktop" afin d'accéder au fichier Excel.

    Si le fichier est mis dans un autre endroit, je vois pas comment le trouver sans faire une recherche sur tout le disque ou bien procéder comme j'ai mentionné dans la paragraphe précédente.

    Du coup, ma question est : Y'a t-il un moyen pour détecter l'emplacement de fichier de configuration en mettant comme exigence que le fichier excel doit être à coté de fichier installateur...

    En d'autre terme, je ne vois pas comment je peux identifier l'emplacement du fichier Excel via un script Batch qui est dedans un .exe généré par InnoSetup.

    J'espère que mon problème est un peu plus clair et désolé encore une fois..

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 689
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Citation Envoyé par fraisa1985 Voir le message
    En d'autre terme, je ne vois pas comment je peux identifier l'emplacement du fichier Excel via un script Batch qui est dedans un .exe généré par InnoSetup.
    Je ne vois pas comment tu pourrais sans modifier ton script actuel.

    A nouveau, si ce .bat est lancé depuis ton installateur, il suffit d'ajouter un paramètre équivalent à {src}.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Run]
    Filename: "{tmp}\MonScript.bat"; Parameters: """{src}""";
    et modifier le script ainsi :
    S'il est lancé manuellement hors installation, modifier le script depuis l'installateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      FileName :string;
      Text :string;
    begin
      FileName := ExpandConstant('{app}\MonScript.bat';
     
      LoadStringFromFile(FileName, Text);
      Text := ExpandConstant('SET ConfigPath={src}') +#13#10 +Text;
      SaveStringToFile(FileName, Text, FALSE);
    end;
    le script devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "%ConfigPath%\Filename.xls"

  5. #5
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Je vous remercie infiniment pour votre réponse. En effet, le .bat est lancé depuis mon installateur mais franchement je ne comprends pas trop votre message.. L'installeur que j'ai crée est l'ensemble des fichiers .bat et des .exe qui sont exécuté une fois qu'ils sont extraits via mon installateur.

    Pourriez-vous me donner plus des détails à propos votre idée svp

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 689
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    On va tourner en rond si tu ne nous montres pas ton script IS.

  7. #7
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    ah ok désolé. Voila un exemple:

    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
     
     
    #define MyAppName "Installer"
    #define MyAppVersion "0.1"
     
    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUI, click Tools | Generate GUID inside the IDE.)
    AppId={{65659024-C294-491F-8C99-363C253B1FD3}}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    ;DefaultGroupName={#MyAppName}
    Compression=lzma
    SolidCompression=yes
    PrivilegesRequired=admin
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    Name: "french"; MessagesFile: "compiler:Languages\French.isl"
     
    [Files]
    Source: "python-2.7.12.msi"; DestDir: "{app}"
    Source: "ModifySql.pyc"; DestDir: "{app}"
    Source: "main.bat"; DestDir: "{app}"
    Source: "paramsMod.bat"; DestDir: "{app}"
     
    [Run]
    Filename: "{cmd}"; Parameters: "/C ""{app}\main.bat"""; Flags: runascurrentuser waituntilterminated; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"
     
    [Registry]
    ;Root: "HKLM64"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: string; ValueName: "{app}\main.bat"; ValueData: "RUNASADMIN"
    Le .exe generé par InnoSetup lance le fichier "main.bat" qui appel le script "paramsMod.bat" et qui à son tour lit des variables du fichier Excel (fichier de configuration) pour pouvoir par exemple modifier une base de données... Pour le moment, ce fichier Excel est mis dans un dossier sous le bureau pour pouvoir le lire en utilisant la variable %userprofile%desktop...Je cherche un moyen pour pouvoir lire les valeurs de fichier Excel sans être obligé à mettre le fichier sous le bureau..J'espère que c'est plus clair maintenant et vraiment désolé pour le dérangement

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 689
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Puisque ce .bat n'est pas un fichier temporaire et pourrait être lancé ultérieurement manuellement, il faudrait utiliser la deuxième option.
    SetConfigPath est appelé après la décompression du fichier.

    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
    [Files]
    Source: "main.bat"; DestDir: "{app}"; AfterInstall: SetConfigPath
     
    [Code ]
    procedure SetConfigPath;
    var
      FileName :string;
      Text :AnsiString;
    begin
      FileName := ExpandConstant(CurrentFilename);
     
      LoadStringFromFile(FileName, Text);
      Text := ExpandConstant('SET ConfigPath={src}') +#13#10 +Text;
      SaveStringToFile(FileName, Text, FALSE);
    end;
    Et dans main.bat, changer les chemins de %userprofile%desktop\FilaName.xls à %ConfigPath%\FilaName.xls.

  9. #9
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut
    Je vous remercie pour votre réponse. Dans ce cas, le fichier excel doit être mis à coté du fichier .Exe (généré par InnoSetup) ou dans le dossier ou .exe va dézipper les .bat ou bien n'importe ou ? En plus, le fichier main.bat est censé lancé automatiquement et après (juste pour info) elle appelle d'autres scripts .bat...

    Y'a -t-il une possibilité d'avoir une fenêtre permettant à l'utilisateur de sélectionner le fichier de configuration et après utiliser ce qu'il a mentionné comme paramètre dans mes fichiers .bat...

    Merci beaucoup d'avance !

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 689
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Ta demande était le répertoire de l'installateur, donc {src} mais tu peux laisser le choix à l'utilisateur en ajoutant une page de sélection de répertoire par CreateInputDirPage.

Discussions similaires

  1. Archetype généré depuis un fichier jar
    Par bernidupont dans le forum Maven
    Réponses: 1
    Dernier message: 20/01/2014, 16h38
  2. [Batch] Création d'une page PHP ou HTML depuis un fichier.bat
    Par arno_mrs13 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/07/2012, 19h03
  3. Réponses: 4
    Dernier message: 28/10/2011, 08h17
  4. Réponses: 9
    Dernier message: 31/01/2010, 23h27
  5. Insérer des données dans une BD depuis un fichier .bat
    Par kurkaine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 08h31

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