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 : 308
Taille : 15,3 Ko

    Nom : Install2.PNG
Affichages : 288
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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, 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
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    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
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    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
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    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
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, 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