How do I list installed MSI from the command line?

2019-03-15 08:46发布

We recently switched our Windows software packages from RPM (cygwin) to MSI (wix). Having a native packaging is a much welcome change and we intend to stick with it. However, MSI feels overly complicated for what it does and doesn't seem to provide some basic abilities. But I'm probably mistaken.

Is there a way to list all installed MSI from the command line ?

3条回答
2楼-- · 2019-03-15 09:05

I'm not sure if this is what you need but you can query the uninstall list from the command line with:

REG QUERY HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
查看更多
爱情/是我丢掉的垃圾
3楼-- · 2019-03-15 09:15

Mabybe this is a good starting point for you example VB Script from 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
查看更多
聊天终结者
4楼-- · 2019-03-15 09:17

You may use PowerShell and Windows Management Instrumentation (WMI). Here is a one liner:

Get-WmiObject -Class win32_product

Here is help for the Get-WmiObject cmdlet:

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

Here is a sample where we select the first installed program and format it as a 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
查看更多
登录 后发表回答