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

VB 6 et antérieur Discussion :

[vb6] commande shell avec un .msi


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 48
    Points
    48
    Par défaut [vb6] commande shell avec un .msi
    Bonjour,

    Dans mon appli vb6, je souhaite lancer un .msi qui se trouve dasn un chemin construit dynamiquement.
    J'ai mis le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MonPath= chemin & "\programme.msi"
     ShellOk = Shell(""" & MonPath & """, vbMinimizedNoFocus)
      DoEvents
      Do While ShellOk = 0
      Loop
    Mais cela ne fonctionne pas. "MonPath" donnant un bon chemin
    Est qu'il faut bien utiliser Shell pour un .msi?
    Si oui quelle est mon erreur ? (j'ai mis 3 guillemets pour gérer les espaces dans le chemin)

    Merci d'avance

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Et en mettant :

    ShellOk = Shell(MonPath, vbMinimizedNoFocus)

    Ca marcherait pas mieux ?

    Je ne comprends pas non plus ta boucle, ShellOK va te renvoyer l'identificateur du programme que tu lances, il ne va pas repasser miraculeusement à 0 ensuite.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 48
    Points
    48
    Par défaut
    Et en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellOk = Shell(MonPath, vbMinimizedNoFocus)
    J'ai l'erreur
    Invalid procedure call or argument
    Quand à ma boucle, c'est pour "boucler" jusqu'à que le programme soit installé.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    apprenons à pêcher...

    Si l'on ouvre la BDR et que l'on recherche ".msi", on découvre que ce type d'extension correspond aux fichiers Msi.package...
    Bien.

    Si l'on recommence l'opération sur ce dernier mot, on arrive à une clef qui nous montre comment ouvrir de tels fichiers ...
    Elle nous dit ceci :

    "%SystemRoot%\System32\msiexec.exe" /i "%1" %*
    Ce qui veut dire ceci :

    1) soit on utilise Shell et il ne suffit pas de se référer au fichier à exécuter, mais également au chemin de l'appli qui en permet l'exécution

    2) soit on utilise ShellExecute (Api de Windows) qui, elle, est fort capable de se débrouiller abec la seule extension .msi, sans lui indiquer quelle est l'application nécessaire...

    Pour continuer avec cette philosophie de recherche, je te conseille de faire une toute petite recherche (y compris sur ce forum) en ce qui concerne l'utilisation de la Fonction ShellExecute de l'Api de Windows...

    Edit (et avant cris éventuels) : ce n'est pas un "sarcasme", non ... c'est bien au contraire de la vraie générosité : celle de la mise du pied à l'étrier ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 48
    Points
    48
    Par défaut
    Merci

    En choisissant Shell et d'apres tes propos j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test = "c:\windows\System32\msiexec.exe /I " & MaPath & " /passive"
      ShellOk = Shell(test, vbMinimizedNoFocus)
    Cela ne plante plus, mais cela ne m'a pas installer le programme voulu (alors que si je lance le msi en double cliquant ce la fonctionne)
    De plus j'onbtiens une fenetre Window Installer avec les options.

    Est-ce que j'ai raté quelque chose ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par sun19 Voir le message
    Est-ce que j'ai raté quelque chose ?
    Probablement l'option silencieuse si elle existe pour ce .msi. Qu'en dit l'aide ?

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Fais tes essais depuis la ligne de commande (démarrer ===>> exécuter)

    - sans te préoccuper pour l'instant de la fenêtre
    - en essayant également sans le paramètre i

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Ouais,

    Je n'utilise et n'ai jamais utilisé cet installateur...

    Un copain me dit de loin d'essayer ceci (depuis la ligne de commande, d'abord, pour voir si ça marche)

    Windows\System32\msiexec.exe /i le_chemin_de_ce_que_tu_dois-installer /qb,1,TRUE

    Une fois trouvée la bonne commande, c'est elle qu'il faudra passer à SHELL...

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    qu'elle est la valeur de MaPath ..?

    si elle contient des espaces ... j'aurai bien mis des " autour...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test = "c:\windows\System32\msiexec.exe /I """ & MaPath & """ /passive

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 48
    Points
    48
    Par défaut
    Effectivement en tapant la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msiexec.exe /i le_chemin_de_mon_msi /qb
    dans démarrer --> executer, l'install ne se lance et j'obitiens la fenetre suivante (voir piece jointe)
    Alors que si je cliclk sur le .msi, il se lance sans pb

    Que me manque-t-il ?
    Images attachées Images attachées  

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bon...

    Je vais voir si j'ai la chance d'avoir à nouveau le copain... (dur dur compte tenu des évènements électoraux aux USA et de l'atmosphère du moment à Chicago ....)

    Dans l'attente : il me semble que cette fenêtre est là pour t'aider à compléter ta syntaxe (paramètres à passer)....

    Lis-la entièrement et fais des essais "combinés"...

    A +, peut-être

    Edit : T'as essayé avec /package ?

    Deux liens à lire en attendant :

    http://helpnet.macrovision.com/robo/...CmdLineMSI.htm

    http://support.microsoft.com/kb/314881/fr

    Ils concernent la syntaxe de la commande et les paramètres à passer selon le cas de figure.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 94
    Points : 48
    Points
    48
    Par défaut
    Finalement en tapant dans demarrer--> executer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\windows\System32\msiexec.exe /i "le_chemin_de_mon_msi"
    cela fonctionne (j'avais oublié les guillements pour le chemin, il continet des espaces)
    Et donc dans mon code vb6, j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test = "c:\windows\System32\msiexec.exe /I """ & MonPath & """ " 
      ShellOk = Shell(test, vbMinimizedNoFocus)
    Et c'est ok

    Merci de votre aide

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Puisque c'est ok, un petit clic sur ?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. VBA & commande Shell avec paramètres
    Par lgab3 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/11/2009, 13h14
  2. Exécution de commandes SHELL avec SharpSSH
    Par belaidw dans le forum Services Web
    Réponses: 0
    Dernier message: 29/09/2009, 05h00
  3. commande shell avec Popen : problème d'accent
    Par cyrull dans le forum Général Python
    Réponses: 3
    Dernier message: 04/03/2009, 23h49
  4. commande shell avec gestion des erreurs
    Par nymus7 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 06/08/2008, 13h59

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