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] Utilisation des Services (sc.exe)


Sujet :

Outils Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    Par défaut [Inno Setup] Utilisation des Services (sc.exe)
    Bonjour,

    Je vais réaliser un petit récapitulatif de mon projet . Etudiant dans le numérique, je suis actuellement en stage dans une entreprise, mon projet à pour but de reproduire un installeur de logiciel, passant de InstallJammer à InnoSetup.

    Mon projet se déroule comme prévu,j'avance correctement, cependant je suis arriver a un point ou j'ai un certain soucis

    Je dois pouvoir stopper des services, activer des services, faire des pauses. En faisant différentes recherche, j'ai trouvé le moyen d’exécuter ces services, grâces a sc.exe. Cependant, je n'ai pas trouvé d'exemple clair pour pouvoir faire fonctionner cela ?

    Voici un petit exemple:

    Je dois pouvoir stopper le Service FireBird Guardian avec la condition "si le fichier sc.exe" existe
    Or je vois bien quelle commande utiliser : sc stop FireBirdGuardianDefaultInstance . Mais, je ne sais pas comment l'exprimer dans InnoSetup( j'ai fait des essais mais rien de fonctionnelle", ni ou le placer ( même si je m'en doute un peu ).

    Auriez-vous une solution ?


    Bonne fin de journée a vous et merci pour votre aide.
    Cordialement
    Ayouten

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Dans CurStepChanged.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure CurStepChanged(CurStep: TSetupStep);
    begin
      //Stop
      if CurStep = ssInstall then ShellExec(...)
     
      //Start
      else if CurStep = ssPostInstall then ShellExec(...)
    Le démarrage pourrait aussi être dans [Run].

  3. #3
    Membre averti
    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
    Par défaut
    Bonjour et merci pour cette réponse

    En effet, comme tu l'as annoncé, nous pouvons réaliser cela dans le [Run] et c'est cela que je voudrais réaliser

    Après différentes recherches, j'ai trouver la fonction FilesExist que j'instaure avec un Check dans le [Run], cela me permettrais de vérifier si le sc.exe existe bien .

    Voici ce que j'ai réalisé dans le [Run] :
    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
    Filename: {sys}\sc.exe; Parameters: "sc stop FirebirdServerDefaultInstance"; Flags: runhidden;  Check : FilesExist1;
     
    [Code]
    function FilesExist1 (): Boolean;
    begin
         if(FilesExist1('C:\Windows\System32\sc.exe'))then
         begin
         Result := True;
         end;
         else
         begin
         MsgBox('sc.exe introuvable'), mbCriticalError, MB_OK);
         Result := False;
         end;
    end;
    Or, cela m'affiche un message d'erreur qui est : "Invalid Number of parameters", je n'arrive point à trouver l'erreur
    Est ce la meilleur solution pour faire ce que je souhaite faire sachant que après je dois supprimer un exe, puis faire un sleep ...?


    Cordialement
    Ayouten

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Rien ne te choque ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function FilesExist1 (): Boolean;
    begin
         if(FilesExist1('C:\Windows\System32\sc.exe'))then
    Mais ce code est inutile, il te suffit d'ajouter le bon flag à la commande (attention aux paramètres aussi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename: {sys}\sc.exe; Parameters: "stop FirebirdServerDefaultInstance"; Flags: runhidden skipifdoesntexist
    Citation Envoyé par Ayouten Voir le message
    Est ce la meilleur solution pour faire ce que je souhaite faire sachant que après je dois supprimer un exe, puis faire un sleep ...?
    Pas sûr, il faudrait expliquer clairement ce qui doit être fait depuis l'arrêt du service.

  5. #5
    Membre averti
    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
    Par défaut
    Pas sûr, il faudrait expliquer clairement ce qui doit être fait depuis l'arrêt du service.
    Lorsque je réalise l’arrêt du service, j'ai plusieurs étapes qui suivent :

    1ère étape : Une fois le service stopper, je dois désinstaller Unins000.exe par précaution (Firebird), mais à la condition que celui existe
    2ème étape : Je dois réaliser une pause de 500ms (sleep)
    3ème étape : je dois supprimer le fichier BDD s'il existe, cette étape dois pouvoir agir sur ma barre de progression .
    4ème étape : je dois activer des Groupes ( les groupes correspondent a mes dossier contenant tous ce que je dois installer sur le pc de l'utilisateur) une fois que les services sont arrêtes.
    ...

    Il y a encore beaucoup d'étapes, déja si j'arrive a faire cela se serait une bonne chose


    Désolé si vous n'arrivez pas forcément a visualiser les étapes

    Cordialement
    Ayouten

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 934
    Par défaut
    Tu ne peux donc clairement pas tous faire dans [Run]. Cette section est traitée en dernier, les fichiers ont déjà été extraits. L'étape 4 surviendra avant la 1 !

    Il faudrait une section [BeforeInstallRun] mais elle n'existe pas. A la place, il faut coder CurStepChanged comme montré précédemment.

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

Discussions similaires

  1. [Inno Setup] Utiliser un ' dans Msgbox()
    Par Ethancarter dans le forum Outils
    Réponses: 2
    Dernier message: 16/07/2008, 13h11
  2. [Framework] Utilisation des services dans un controller
    Par Ylias dans le forum Spring
    Réponses: 2
    Dernier message: 08/06/2008, 21h45
  3. [Inno Setup] Utilisation de date
    Par Sytchev3 dans le forum Outils
    Réponses: 2
    Dernier message: 14/04/2008, 16h13
  4. Réponses: 4
    Dernier message: 18/09/2007, 08h47
  5. inno setup utilisation
    Par Morfus dans le forum Delphi
    Réponses: 5
    Dernier message: 10/03/2007, 16h36

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