「[クライアント管理]Adobe Reader、Acrobat、Flash Player、JREのサイレント・インストール(アップデート)」でも書いた通り、Java(JRE)はオプション付きでコマンド実行することにより、サイレント・インストールすることができます。
msiexec.exe /qn /x {26A24AE4-039D-4CA4-87B4-2F03217067FF}
のように、オプション付きでMsiexec.exeを実行することで、逆にサイレント・アンインストールすることもできるのですが、このときアンインストールしたいバージョンのJavaのGUIDが必要になります。
「Active Directoryを使用してネットワーク経由でJavaをデプロイする方法」によると、このGUIDは「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products」以下を調べれば良いようなので、レジストリーを検索して必要な値だけを取得するVBAマクロを書いてみました。
Option Explicit Public Sub GetJavaGUID() 'JavaのGUIDを取得 Dim reg As Object Dim names As Variant Dim elm_names As Variant Dim elm_types As Variant Dim display_name As String Dim uninstall_string As String Dim i As Long, j As Long Const HKEY_LOCAL_MACHINE = &H80000002 Const REG_SZ = 1 Const SubKeyName As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products" Set reg = CreateObject("WbemScripting.SWbemLocator") _ .ConnectServer(, "root\default") _ .Get("StdRegProv") reg.EnumKey HKEY_LOCAL_MACHINE, SubKeyName, names If Not IsNull(names) Then On Error Resume Next For i = LBound(names) To UBound(names) reg.EnumValues HKEY_LOCAL_MACHINE, _ SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _ elm_names, _ elm_types If Not IsNull(elm_names) Then 'インストールされている製品を列挙 For j = LBound(elm_names) To UBound(elm_names) 'Debug.Print elm_names(j), elm_types(j) '確認用 If LCase(elm_names(j)) = "displayname" And elm_types(j) = REG_SZ Then display_name = "" '初期化 reg.GetStringValue HKEY_LOCAL_MACHINE, _ SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _ elm_names(j), _ display_name '[DisplayName]に[Java]を含む製品だけ処理 If InStr(LCase(display_name), "java") Then uninstall_string = "" '初期化 reg.GetExpandedStringValue HKEY_LOCAL_MACHINE, _ SubKeyName & ChrW(92) & names(i) & ChrW(92) & "InstallProperties", _ "UninstallString", _ uninstall_string Debug.Print "DisplayName:" & display_name, "UninstallString:" & uninstall_string End If End If Next End If Next On Error GoTo 0 End If End Sub
「DisplayName」の値に「Java」が含まれるキーの、「UninstallString」の値を取得するだけのザックリしたマクロですが、手作業で行うよりは早くGUIDを調べることができるだろうと思います。
この記事へのコメントはありません。