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

Scripts/Batch Discussion :

Conflict between multiple instances of MSIEXEC in a batch script


Sujet :

Scripts/Batch

  1. #1
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut Conflict between multiple instances of MSIEXEC in a batch script
    Bonjour amis du forum,

    Pour les besoins d'un déploiement applicatif dans 25 pays, j'ai rédigé (c'est une première pour moi) un script batch afin de contrôler le processus d'installation / désinstallation de plusieurs logiciels et le nettoyage du système (shortcut, menu etc) .

    J'ai 3 applications a désinstaller a l'aide de MSI et 6 applications a réinstaller (les 3 precedemment désinstallées a un autre emplacement (a l'aide de MSI) + 3 composants Windows (a l'aide de exe) [Dotnet, C++VisualStudio et MSXML).

    J'ai déjà ecrit un script mais je bute désespérément sur un message d'erreur lorsque démarre la seconde désinstallation. Il semblerait que la seconde instance de msiexec ne peut s’exécuter car la première n'est pas achevée (ce qui selon moi n'est pas le cas)

    Concrètement :
    première commande ligne 631
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msiexec /uninstall "C:\Program Files\MonApplicationA\MonApplicationA.msi" /passive /qb
    deuxieme commande ligne 724
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msiexec /uninstall "C:\Program Files\MonApplicationB\MonApplicationB.msi" /qb
    Lors de l’exécution, une alerte indique que la seconde instance de Windows installer ne peut pas s’exécuter parce qu'une autre instance en en cours d’exécution puis force la sortie du script.

    Merci de vos conseils !

    Frédéric
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  2. #2
    Membre habitué

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    Faire une boucle d’attente de la fin d’exécution de Windows installer avant de lancer l'opération suivante peut surement résoudre ton problème si bien sur Windows installer se termine correctement au bout d'un certain temps.

    âpres le plus simple pour la boucle serait d’attendre que le processus msiexec se termine. (si je ne me trompe pas il doit être encore actif quand tu rencontre cette erreur)

  3. #3
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut precision
    Merci Cmanix,

    comment identifier le processus en cour de msiexec. Lors de mes tests la première fenêtre de désinstallation de l'application s'ouvre (/qb), l'application est désinstaller et il me semblait que le processus etait clos.

    Entre les deux appel de msiexec, je fais du nettoyage de fichiers et la deuxième désinstallation semblait être appelée bien après (qui devait laisser le temps au premier processus de ce clore)...

    Tu aurais un exemple de cette boucle a faire ?

    J'ai aussi penser qu'on pouvait lancer les différents processus dans des batch séparés et appelés depuis le script maitre, mais ce que j'ai tenté ne fonctionne pas et je ne sais plus comment je peut faire autrement.
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  4. #4
    Membre habitué

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 191
    Points
    191
    Par défaut
    Pour lancer plusieurs tâches depuis un batch "hôte" utilise la commande start
    après il y a moyen de contrôler l’état de ces tâches et d'effectuer des action via le batch hôte si c'est nécessaire.

    Pour msiexec si le processus n'est plus actif sa sert a rien de faire une telle boucle. il faudrait plutôt se pencher sur : comment dans cette boucle détecter cette erreur sans forcer la sortie du batch
    pour cela : l'erreur est dans la fenêtre batch (là c'est simple) ou dans une fenêtre windows séparé (plus compliqué) ?

  5. #5
    Membre averti Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Points : 306
    Points
    306
    Par défaut
    Citation Envoyé par wdionysos Voir le message

    J'ai déjà ecrit un script mais je bute désespérément sur un message d'erreur lorsque démarre la seconde désinstallation. Il semblerait que la seconde instance de msiexec ne peut s’exécuter car la première n'est pas achevée (ce qui selon moi n'est pas le cas)
    pour être vérifier l'état du process :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tasklist /v /fi "imagename eq msiexec.exe"
    Peut être penser à activer les options de journalisation de msiexec pour le debug, juste pour la validation en gros pas en prod

  6. #6
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    Excellent Plopi !

    Ca devient intéressant le batch dis donc, j'aurais pas cru Merci !

    Sans vouloir abuser, Tu ne saurais pas non plus par hasard comment arrêter proprement le processus msiexec sans tskill ou, en mode violence, comment isoler le numéro de processus ID généré par tasklist ?

    Merci en tout cas !

    Frédéric
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  7. #7
    Membre habitué

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Points : 191
    Points
    191
    Par défaut
    Je croyais que le processus n’était plus actif ?

    isoler le pid:

    for /f "tokens=2 skip=2" %%i in ('tasklist /v /fi "imagename eq msiexec.exe"') do echo %%i

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/08/2009, 22h17
  2. [FastReport] FastServer - multiple instance ISAPI
    Par powerlog dans le forum FastReport
    Réponses: 1
    Dernier message: 21/04/2008, 20h33
  3. Multiples instances d'un JInternalFrame.
    Par pierreact dans le forum NetBeans
    Réponses: 3
    Dernier message: 23/12/2007, 16h32
  4. Multiple instance de service Windows
    Par zubov dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/01/2007, 09h22
  5. [C++] DLL Multiples instances
    Par ouquoi dans le forum C++
    Réponses: 2
    Dernier message: 18/07/2006, 16h25

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