如何从命令行列出已安装的MSI?

我们最近将我们的Windows软件包从RPM(cygwin)切换到MSI(wix)。 有一个本地包装是一个非常受欢迎的变化,我们打算坚持下去。 不过,微星的感觉过于复杂,似乎没有提供一些基本的能力。 但我可能错了。

有没有办法从命令行列出所有安装的MSI?

Solutions Collecting From Web of "如何从命令行列出已安装的MSI?"

Mabybe 这是一个很好的起点,你从MSDN示例VB脚本:

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 

您可以使用PowerShell和Windows Management Instrumentation(WMI) 。 这里是一个班轮:

 Get-WmiObject -Class win32_product 

这里是Get-WmiObject cmdlet的帮助:

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

下面是一个示例,我们选择第一个安装的程序并将其格式化为表格:

 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 

我不确定这是否是你所需要的,但你可以从命令行查询卸载列表:

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