Как указать список установленных MSI из командной строки?
Недавно мы переключили наши программные пакеты Windows с RPM (cygwin) на MSI (wix). Наличие родной упаковки - очень приятное изменение, и мы намерены придерживаться этого. Однако MSI чувствует себя чересчур сложным для того, что он делает, и, похоже, не предоставляет некоторые базовые способности. Но я, наверное, ошибаюсь.
Есть ли способ перечислить все установленные MSI из командной строки?
Ответы
Ответ 1
Mabybe это является хорошей отправной точкой для вас, например, VB Script из 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
Ответ 2
Вы можете использовать PowerShell и Инструментарий управления Windows (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
Ответ 3
Я не уверен, что это то, что вам нужно, но вы можете запросить список удаления из командной строки с помощью
REG QUERY HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall