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

  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] 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 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    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 à 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
    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 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    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 à 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
    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 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    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.

  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
    Tout d'abord, Merci pour tes différentes réponses qui me guide pour la réalisation de ce projet.
    J'ai donc coder CurStepChanged comme tu me l'avais dis.

    Cependant, je n'arrive pas a stopper les services.Il y a très peu d'exemples sur internet pour pouvoir stopper les services depuis [Code].

    Voici mon code pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Procedure CurStepChanged(CurStep : TSetupStep);
    var
    ErrorCode : Integer;
    begin 
     
          begin
          if CurStep = ssInstall then
          ShellExec( ' ',ExpandConstant('{pf32}\sc.exe'), ' ',' ',SW_SHOWNORMAL,ewWaitUntilTerminated, ErrorCode);
          ExpandConstant('sc stop FirebirdServerDefaultInstance') and ExpandConstant('sc stop FirebirdGuardianDefaultInstance');
          end;
    end;
    Ce sont 2 services que je dois stopper à la suites qui ont la même conditions, j'ai donc essayer de les rassembler

    Comment dois-je écrire pour pouvoir faire fonctionner les stops ?
    Merci de ton aide

    Cordialement
    Ayouten

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Est-il nécessaire d'arrêter Firebird avant de lancer sa désinstallation ? A voir !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShellExec('open', ExpandConstant('{pf32}\sc.exe'), 'stop FirebirdServerDefaultInstance', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
    ShellExec('open', ExpandConstant('{pf32}\sc.exe'), 'stop FirebirdGuardianDefaultInstance', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);

  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
    Je t'avoue que je me pose aussi la question on verra bien par la suite
    Merci pour ton aide cela fonctionne

    Cordialement
    Ayouten

  10. #10
    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
    Bonjour,

    Un nouveau problème est apparu, je veux toujours stopper les services, or lorsque que je compiles tous,une page apparait juste avant la barre de progression,

    Voici la page en question :

    Nom : Capture.PNG
Affichages : 971
Taille : 16,0 Ko


    Or, je ne comprend pas pourquoi cela apparait car normalement, lors du commencement de l'installe, je stop les services via cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     Procedure CurStepChanged(CurStep : TSetupStep);
    var
    ErrorCode,Wait : Integer;
    logfilepathname, logfilename, newfilepathname: string; 
     
    begin 
     
      if CurStep = ssInstall then
              begin
              ShellExec('open',ExpandConstant('{pf32}\sc.exe'),'stop FirebirdServerDefaultInstance','', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
              Shellexec('open',ExpandConstant('{pf32}\sc.exe'),'stop FirebirdGuardianDefaultInstance','', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
     
    end,

    Comment régler cela ?


    Cordialement
    Ayuten

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    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 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Est-il nécessaire d'arrêter Firebird avant de lancer sa désinstallation ? A voir !
    À mon avis, mais à tester car ce n'est pas le genre de chose que je ferais sur mon poste, je passerai directement par une désinstallation silencieuse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <repertoire firebird>\unins000.exe /SILENT /NORESTART /SUPPRESSMSGBOXES
    mais il faut s'assurer que toutes les bases sont fermées et il vaut mieux préserver certaines informations https://firebirdsql.org/rlsnotesh/in...installer.html
    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

  12. #12
    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
    Enfaite, je dois supprimer le unins000.exe si il se trouve dans le repertoire firebird, or celui-ci ne se trouve pas dans se répertoire mais dans un autres, donc pas besoin de le supprimer

    Donc si je le supprime pas, mon installe continue et j'ai besoin de stopper les services pour réaliser des tâches

    Merci pour votre aide, la page d'erreur a disparue le modifiant

    Cependant, vue que j'utilise des lignes de commandes, juste avant de commencer l'installe sur la page de progression, le CMD s'ouvre et se referme plusieurs fois, je me doute que celui-ci exécute ma demande.

    Mais est t'il possible de bloquer l'affichage de c'est pages ?

    Cordialement
    Ayouten

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par Ayouten Voir le message
    Enfaite, je dois supprimer le unins000.exe si il se trouve dans le repertoire firebird
    Es-tu conscient que si tu supprimes ce fichier, Firebird ne pourra plus être désinstallé proprement ?

    Citation Envoyé par Ayouten Voir le message
    Or, je ne comprend pas pourquoi cela apparait car normalement, lors du commencement de l'installe, je stop les services via cela :
    SI tu ciblais le bon répertoire (et dans le cas présent ne spécifiait même pas de répertoire du tout), ça irait sans doute mieux !

  14. #14
    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
    Es-tu conscient que si tu supprimes ce fichier, Firebird ne pourra plus être désinstallé proprement ?
    Oui je suis conscient, je le supprime au début pour le réinstaller par la suite ...



    Citation Envoyé par Andnotor Voir le message
    SI tu ciblais le bon répertoire (et dans le cas présent ne spécifiait même pas de répertoire du tout), ça irait sans doute mieux !
    en effet je sais pas ce que j'ai magouillé mais ne t'en fais pas, j'ai corrigé cela

    J'ai toujours un petit soucis, l'utilisation de sc.exe, provoque lors de l'installe une ouverture et une fermeture très rapide d'une page CMD, est-il possible de bloquer l'affichage de ces pages ?

    Cordialement
    Ayouten

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    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 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Etudiant dans le numérique, je suis actuellement en stage dans une entreprise,
    Attention aux fautes d'orthographe et de grammaire quand vous rendrez votre travail, en lisant vos différents posts ça pique un peu mes yeux (mais pas au point de corriger )
    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

  16. #16
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Ayouten Voir le message
    J'ai toujours un petit soucis, l'utilisation de sc.exe, provoque lors de l'installe une ouverture et une fermeture très rapide d'une page CMD, est-il possible de bloquer l'affichage de ces pages ?
    Salut, je ne comprends pas ce que tu entends par "bloquer" ? Tu aimerais que la fenêtre dos reste au premier plan en attendant une confirmation ? Ou au contraire, tu aimerais qu'elle n'apparaisse pas ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par Ayouten Voir le message
    J'ai toujours un petit soucis, l'utilisation de sc.exe, provoque lors de l'installe une ouverture et une fermeture très rapide d'une page CMD, est-il possible de bloquer l'affichage de ces pages ?
    Ben c'est toi qui demande à l'afficher par SW_SHOWNORMAL. Si tu ne veux pas la voir : SW_HIDE.

+ 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