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] Execution Externe


Sujet :

Outils Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut (Inno Setup] Execution Externe
    Bonjour,

    J'avance dans mon install de firebird, je suis arrivé a un endroit ou je dois exécuter un Programme Externe via une ligne de commande.

    Voici deux photos vous illustrant ce que je dois réaliser :

    Nom : Install.PNG
Affichages : 72
Taille : 15,3 Ko

    Nom : Install2.PNG
Affichages : 65
Taille : 7,1 Ko

    Comme vous pouvez le voir sur cette photo, je dois réaliser la ligne de commande "instclient install gds32" à la condition que le fichier suivant existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin\instclient.exe')
    Si celui-ci existe, je dois exécuter la commande donnée ci-dessous et le placer dans le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin')
    Voici le code que j'ai réalisé pour le moment :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (FileExists(ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin\instclient.exe'))) Then
    Exec(ExpandConstant('cmd.exe'),'instclient install gds32',ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin'), SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);

    Or, lorsque je compile celui-ci, La page CMD s'ouvre mais ne m’exécute pas la commande, je suis obligé de la taper au clavier pour que cela installe "gds32" !
    Vous allez me dire que c'est logique qu'elle s'ouvre car j'ai mis "SW_SHOWNORMAL", mais lorsque je mets "SW_HIDE" mon installateur s’arrête de fonctionner ... Je pense que celui-ci reste bloqué sur la page CMD car je ne peux pas rentrer la commande nécessaire.


    D’où ma question, quelle est mon erreur qui empêche le programme de continuer son installation automatiquement, sans que je rentre la commande ?
    Faut-il que j'utilise ShellExec à la place de Exec ?


    Cordialement
    Ayouten

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 606
    Points : 34 029
    Points
    34 029
    Billets dans le blog
    49
    Par défaut
    Bonjour,
    Franchement s'il ne s'agit que de l'installation de Firebird je trouve que vous vous compliquez la vie puisque la version windows propose un setup complet que vous pouvez rendre silencieux

    N.B. en plus la version 2.0 n'est plus maintenue
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Je ne fais que reproduire les tâches que l'on me demandes

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 091
    Points : 11 132
    Points
    11 132
    Par défaut
    Citation Envoyé par Ayouten Voir le message
    quelle est mon erreur qui empêche le programme de continuer son installation automatiquement
    Le problème est que tu copies/colles des lignes sans réfléchir. La réponse est sous tes yeux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exec(ExpandConstant('cmd.exe'),'instclient install gds32',ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin'), SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
    Deuxième point, pourquoi vouloir passer par cmd.exe pour installer ce client ?

    Troisième point, il n'est pas utile de tout faire par code. Tu mets dans CurStepChanged/ssInstall uniquement ce qui doit être fait au début de l'installation, avant le traitement des sections standards.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Run]
    Filename: "{pf32}\Firebird\Firebird_2_0\bin\instclient.exe"; Parameters: "install gds32"; Flags: skipifdoesntexist
    Citation Envoyé par Ayouten Voir le message
    Je ne fais que reproduire les tâches que l'on me demandes
    Ça n'empêche pas un minimum de réflexion et de le dire à ton boss si quelque chose est aberrant !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Le problème est que tu copies/colles des lignes sans réfléchir. La réponse est sous tes yeux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exec(ExpandConstant('cmd.exe'),'instclient install gds32',ExpandConstant('{pf32}\Firebird\Firebird_2_0\bin'), SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
    Je réflechie, mais peut être pas assez, et non je copie colle pas, je fait des recherches dans la documentations de Innosetup et je recherche la fonction qui pourrait correspondre au mieux


    Citation Envoyé par Andnotor Voir le message
    Deuxième point, pourquoi vouloir passer par cmd.exe pour installer ce client ?
    En effet, la j'ai pas du réfléchir , je pensait que l'utilisation de la ligne de commande devait passer par le cmd ...
    Citation Envoyé par Andnotor Voir le message
    Troisième point, il n'est pas utile de tout faire par code. Tu mets dans CurStepChanged/ssInstall uniquement ce qui doit être fait au début de l'installation, avant le traitement des sections standards.
    Cette partie que je vien de te montrer se passe dans le ssPostInstall, excusez moi de ne pas l'avoir précisé, je réalise cela ici car je dois vérifier si le fichier existe dans certaines conditions .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Run]
    Filename: "{pf32}\Firebird\Firebird_2_0\bin\instclient.exe"; Parameters: "install gds32"; Flags: skipifdoesntexist

    Citation Envoyé par Andnotor Voir le message
    Ça n'empêche pas un minimum de réflexion et de le dire à ton boss si quelque chose est aberrant !
    En effet, j'aurai peut être du lui en parler, mais a 1 semaine de la fin de mon stage, je sais pas si cela vaut le coup :/

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 091
    Points : 11 132
    Points
    11 132
    Par défaut
    Citation Envoyé par Ayouten Voir le message
    je réalise cela ici car je dois vérifier si le fichier existe dans certaines conditions .
    C'est à ça que sert le flag skipifdoesntexist.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    ah je suis vraiment ...

    Tous ce que je faisais dans le curStep ssPostinstall peut se faire dans le Run

    Juste une dernière question
    vue que l’exécution se fait en externe, comment je dois le préciser ? car dans cette section le drapeau externe ne peut pas fonctionner :/


    Merci de m'avoir réveillé

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 091
    Points : 11 132
    Points
    11 132
    Par défaut
    Tu mélanges les sections [Files] et [Run]. Il n'y a pas de flag external dans [Run]. Ou alors je n'ai pas compris la question...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Non enfaite je suis juste bête, t'avais raison je réfléchie pas assez
    J'ai trouvé la solution

    Cependant, j'ai trouvé un autre problème

    Lorsque je réalisais un copie de fichier dans mon ssPostinstall, je n'avais aucun problème a la réaliser grâce a la fonction Copyfiles
    Cependant dans le Run, je ne trouve pas de moyen de copier le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {pf32}\Firebird\Firebird_2_0\bin\msvcr71.dll
    dans le dossier

    Il y a t'il un moyen de le faire depuis la Sections [Run] ?

    Cordialement
    Ayouten

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2008
    Messages : 5 091
    Points : 11 132
    Points
    11 132
    Par défaut
    Section [Files] et puisque ce fichier ne fait pas partie de l'installateur, flag external.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Files]
    Source: "{pf32}\Firebird\Firebird_2_0\bin\msvcr71.dll"; DestDir: "{sys}"; Flags: external skipifsourcedoesntexist

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2019
    Messages : 41
    Points : 14
    Points
    14
    Par défaut
    Merci, j'avais bien tester cela mais il me manquait un petit truc

    Merci BCPPPPPPP

    cordialement
    Ayouten

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 606
    Points : 34 029
    Points
    34 029
    Billets dans le blog
    49
    Par défaut
    Normalement pour une installation client+serveur de Firebird des bibliothèques comme msvc*.dll et icu*.dll n'ont pas à être copiées dans sys seule la bibliothèque cliente (fbclient.dll, et à l'occasion gds32.dll à des fins de compatibilité) sont recommandées dans le répertoire système.

    J'ai une fâcheuse impression qu'il y a un peu de tout en vrac dans cet installateur
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2019, 10h04
  2. [Inno Setup] Fonction externe
    Par DAB.cz dans le forum Outils
    Réponses: 3
    Dernier message: 06/10/2016, 15h52
  3. inno setup - execution d'une fonction
    Par fk04 dans le forum Outils
    Réponses: 5
    Dernier message: 01/03/2010, 20h24
  4. Réponses: 3
    Dernier message: 17/07/2009, 17h01
  5. [inno setup] sources externes et cdrom
    Par hellomorld dans le forum Outils
    Réponses: 8
    Dernier message: 02/04/2009, 14h51

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