最近、WindowsソフトウェアパッケージをRPM(cygwin)からMSI(wix)に切り替えました。ネイティブパッケージを使用することは非常に歓迎すべき変更であり、私たちはそれに固執するつもりです。ただし、MSIは、その機能が非常に複雑であり、いくつかの基本的な機能を提供していないようです。しかし、私はおそらく間違っています。
コマンドラインからインストールされているすべてのMSIを一覧表示する方法はありますか?
最近、WindowsソフトウェアパッケージをRPM(cygwin)からMSI(wix)に切り替えました。ネイティブパッケージを使用することは非常に歓迎すべき変更であり、私たちはそれに固執するつもりです。ただし、MSIは、その機能が非常に複雑であり、いくつかの基本的な機能を提供していないようです。しかし、私はおそらく間違っています。
コマンドラインからインストールされているすべてのMSIを一覧表示する方法はありますか?
おそらく、これは 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
コマンドレットのヘルプは次のとおりです。
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