2008-10-13 5 views
12

Nous avons récemment changé nos progiciels Windows de RPM (cygwin) à MSI (wix). Avoir un emballage natif est un changement bienvenu et nous avons l'intention de s'en tenir à cela. Cependant, MSI se sent trop compliqué pour ce qu'il fait et ne semble pas fournir certaines capacités de base. Mais je me trompe probablement. Y at-il un moyen de lister tous les MSI installés à partir de la ligne de commande? Comment puis-je lister MSI installé à partir de la ligne de commande?

Répondre

11

Mabybe this est un bon point de départ pour vous par exemple VB Script de MSDN:

strComputer = "." 

Set objWMIService = GetObject("winmgmts:" & _ 
    "{impersonationLevel=impersonate}!\\" & _ 
    strComputer & _ 
    "\root\cimv2") 

Set colSoftware = objWMIService.ExecQuery _ 
    ("SELECT * FROM Win32_Product") 

If colSoftware.Count > 0 Then 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objTextFile = objFSO.CreateTextFile(_ 
     "c:\SoftwareList.txt", True) 

    For Each objSoftware in colSoftware 
     objTextFile.WriteLine objSoftware.Caption & vbtab & _ 
     objSoftware.Version 
    Next 

    objTextFile.Close 

Else 
    WScript.Echo "Cannot retrieve software from this computer." 

End If 
+1

J'aurais préféré quelque chose à utiliser depuis la ligne de commande, mais cela fera l'affaire. Merci. – bltxd

+1

Allez-y et utilisez le script depuis la ligne de commande, puis. Utilisez cscript.exe pour l'exécuter, et ne le publiez pas dans un fichier mais dans stdout (comme ceci: WScript.Echo objSoftware.Caption & vbtab & objSoftware.Version). Tous les trucs FSO ne sont plus nécessaires. – Tomalak

5

Je ne sais pas si c'est ce dont vous avez besoin, mais vous pouvez interroger la liste de désinstallation de la ligne de commande avec :

REG QUERY HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall 
+0

Excellent: Cependant, il y a une petite faute de frappe. Il devrait lire: 'HKLM' pas 'HLKM' (HKEY_LOCAL_MACHINE). – Martin

10

Vous pouvez utiliser PowerShell et Windows Management Instrumentation (WMI). Voici une seule ligne:

Get-WmiObject -Class win32_product 

Voici une aide pour le Get-WmiObjectcmdlet:

http://technet.microsoft.com/en-us/library/dd315295.aspx

Voici un échantillon où l'on sélectionne le premier programme installé et le format comme une table:

PS C:\Users\knut> Get-WmiObject -Class win32_product | 
>> select -First 1 | ft Name, Version, Vendor -AutoSize 
>> 

Name    Version Vendor 
----    ------- ------ 
AWS SDK for .NET 1.2.0200 Amazon Web Services Developer Relations 
+0

Voir la réponse similaire ici: http://stackoverflow.com/questions/29937568/how-can-i-find-the-product-guid-of-an-installed-msi-setup/29937569 –

Questions connexes