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 :

Récupérer l'auteur et l'objet d'un package msi


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut Récupérer l'auteur et l'objet d'un package msi
    Bonjour,

    je souhaiterais extraire l'auteur et l'objet des packages *.msi qui se trouvent dans le répertoire %SystemRoot%\Installer

    La commande dir ne semble pas permettre ceci. Quelqu'un aurait une idée svp ? de préférence en batch

    Merci

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde du coté de WMI, les classes associées à Win32_SoftwareFeature et Win32_Product
    Utilise le programme wmic.exe

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    Merci pour ces indications. Par contre où trouver ce wmic.exe ? j'ai cherché partout dans l'ordi (XP) et rien trouvé

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par eZula Voir le message
    Merci pour ces indications. Par contre où trouver ce wmic.exe ? j'ai cherché partout dans l'ordi (XP) et rien trouvé
    Regarde dans le répertoire C:\WINDOWS\system32\wbem

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    ben justement, pas de fichier wmic.exe dans ce répertoire, j'avais lancé une recherche partout dans C:\windows (sous-dossiers, fichiers cachés et système), il n'est nulle part

    C'est important de savoir ça car il faudrait pouvoir extraire ces informations depuis n'importe quel poste vista ou xp à partir d'un programme que je proposerais en téléchargement, donc si ce wmic.exe est nécessaire il faudrait qu'il soit accessible à tous

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Je crois qu'il est installé par défaut sur XP et WS 2003.
    Sinon regarde ce package http://www.microsoft.com/downloads/d...displaylang=en

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    le truc c'est que j'ai un XP familial, c'est peut être dans le pro que c'est installé par défaut ?
    J'ai installé le package WMITools qui a créé un répertoire du même nom dans C:\Program Files\WMI Tools mais aucune trace de wmic.exe dedans et pas non plus dans wbem après cette installation
    J'ai exploré le cd de XP et rien de plus

    Mince, comment se sortir de là ?

    Merci

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par eZula
    le truc c'est que j'ai un XP familial,
    Là c'est rapé ! De plus si je me souviens bien WMI n'est pas dispo, la totale
    Citation Envoyé par eZula
    Mince, comment se sortir de là ?
    Un utilitaire dédié à la gestion des MSI me semble le plus approprié mais je n'en connais pas.
    [edit]
    Il y a bien celui-ci mais sous .NET ...
    http://blogs.pingpoet.com/overflow/a...6/02/2449.aspx
    Le framework .NET est-il installé sur les postes cibles ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    hé oui ce qui est important c'est que ça marche aussi bien sous xp familial - pro que sous vista

    Par rapport au framework la question que tu soulèves est juste, et devant l'incertitude (je ne sais rien de la config des ordis qui vont utiliser cet outil) il faudrait une solution généraliste. En vbs ce serait pas jouable d'après toi, ou avec un unixutil ?

    je cherche le plus simple, le plus universel, le plus léger et que ça puisse s'appeler par un batch, j'en demande pas beaucoup hein

    ce qui est curieux c'est que ces informations (vendeur & objet) sont visibles dans l'infobulle lorsqu'on passe le curseur sur les icones msi, où sont stockées ces infos ? simple curiosité de noob

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par eZula Voir le message
    En vbs ce serait pas jouable d'après toi, ou avec un unixutil ?
    Pour VBS cela semble possible d'après cette page. Mais là mieux vaut poster dans le forum approprié.
    UnixUtil ne fait que reprendre les briques de base du shell Unix, le format MSI est spécifique à Windows.
    Citation Envoyé par eZula Voir le message
    j'en demande pas beaucoup hein
    J'ai bien compris et dans ton cas les batchs ne peuvent pas beaucoup comme dans tant d'autres. Ils peuvent mais surtout à l'aide de programme externe, il reste à trouver le programme correspondant à ton besoin, dans ton cas codé en "Win32".
    Mais d'une manière générale l'automatisation de tâche et/ou la récupération de données de base, telles que celles que tu recherches, est l'enfant pauvre de la conception logiciel.
    Par exemple on peut trouver surprenant que MS n'ai pas pensé livrer un outil additionnel à MSIExec, pourtant MS a tout sous la main.
    MS a, à mon avis, corrigé le tir avec PowerShell mais il faut attendre encore une paire d'années pour qu'il devienne incontournable puisque VBS ne sera plus supporté...
    Citation Envoyé par eZula Voir le message
    où sont stockées ces infos ?
    Aucune idée à ce jour mais en creusant le SDK on peut le savoir, yaka

  11. #11
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Citation Envoyé par eZula Voir le message
    ce qui est curieux c'est que ces informations (vendeur & objet) sont visibles dans l'infobulle lorsqu'on passe le curseur sur les icones msi, où sont stockées ces infos ? simple curiosité de noob
    Ils sont stockés dans le package lui-même et sont récupérés grâce à l'interfaçage d'Explorer avec la bibliothèque msi (msi.dll).

    L'idéal est quand même de faire un programme CLI dédié. Mais si tu y es réfractaire il y a aussi la solution OLE, puisque MSI dispose d'une interface référencée dans Windows.

    Voici un exemple: getmsiinfo.vbs
    accessible depuis cmd avec la syntaxe suivante:
    cscript /i /nologo getmsiinfo.vbs /f:"path\yourfile.msi"

    enjoy;

    getmsiinfo.vbs
    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
    16
    17
    18
    19
    20
    21
    'sample for Read Summary Information in an msi package by maxim_um 
    'for http://www.developpez.net/forums/d650634/general-developpement/programmation-windows/scripts-batch/recuperer-lauteur-lobjet-package-msi/
    'usage: cscript /i /nologo getmsiinfo.vbs /f:"path\yourfile.msi"
    'enjoy;
       
    MsiPackageName=WScript.Arguments.Named.Item("f")
    
    'Summary Information Property id
    const PID_TITLE=2
    const PID_AUTHOR=4 'manufacturer
          'for more look http://msdn.microsoft.com/en-us/library/aa370310.aspx
    
    Set objMSI = CreateObject("WindowsInstaller.Installer") 
    Set objMSISInfo = objMSI.SummaryInformation(MsiPackageName)
    
    infoPackage=  "File  : " & MsiPackageName & vbcrlf & _
    infoPackage+	"Title : " & objMSISInfo.Property(PID_TITLE) & vbcrlf & _
    infoPackage+  "Author: " & objMSISInfo.Property(PID_AUTHOR) & vbcrlf
    
    Wscript.Echo infoPackage

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    maxim_um

    Ils sont stockés dans le package lui-même
    en effet j'ai remarqué ça en ouvrant ces packages avec le bloc-notes. J'ai tenté de récupérer ces infos avec findstr au début, puis avec grep mais le problème est de trouver des délimiteurs constants de surcroit, voilà à quoi ça ressemble

    Installer,MSI,Database  $ Java(TM) SE Runtime Environment 6.0   Sun Microsystems, Inc.
    ça me parait impossible

    Ta solution est impeccable, merci

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

Discussions similaires

  1. [POO] récupérer l'id d'un objet qui a le focus.
    Par chateau64 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/05/2008, 10h43
  2. Réponses: 2
    Dernier message: 17/02/2006, 15h11
  3. [AS2] Récupérer une valeur d'un objet lorqu'on clique dessus
    Par softyClochette dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 13/10/2005, 18h40
  4. [Sources]Récupérer le chemin d'un objet OLE
    Par Mr.Gus dans le forum Contribuez
    Réponses: 9
    Dernier message: 12/05/2005, 10h11
  5. [Ada] Récupérer un pointeur sur un objet existant
    Par vincnet500 dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2004, 14h26

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