MSXML 6SP2で SQL Server 2005 のセットアップが失敗
MSXML コア サービス 6.0 Service Pack 2 がインストールされていると、SQL Server 2005 のセットアップが失敗する
の情報が更新されて、パッチファイルがダウンロードできるようになりました。
該当する方は、あまりいないかもしれませんが、リリースが遅かったですね。
MSXML 6 Service Pack 2 (KB954459) -- 構成に失敗しました。 - 大人になったら肺呼吸
中身は、ZIPの自動解凍書庫で MSXML_~1.EXE 更にその中に、VBS(VBScript)とMSP(microsoftPatch)が入っています。
VBSでXPかどうか判定して、MSPを適用する仕組みになっているようです。
'msxml_fix.vbs Dim objRegWMI, objWMIService, objShell, objWMIOS Dim strCodeMSXML, strExec, strTempPath, strMSPPath Dim PID const HKLM = &H80000002 const OS = "5.1.2600" const KeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall" 'const MSXMLName = "MSXML 6 Service Pack 2 (KB954459)" const MSXMLName = "MSXML 6 Service Pack" const MSPName = "\msxml6.msp" const LOGFileName = "msxmlpatch.log" On Error Resume Next Set objWMIOS = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") For Each objItem in colResults if strOSVer = OS then if not (objWMIOS is nothing) then set objWMIOS = nothing Set objShell = CreateObject("WScript.Shell") if not (objShell is nothing) then set objShell = nothing For Each strKey in arrayRegKeys if not (objRegWMI is nothing) then set objRegWMI = nothing strExec = "MSIEXEC /X " & strCodeMSXML & " PATCH=""" & strMSPPath & """ /qn /l*v " & strTempPath & "\" & LOGFileName if not (objWMIService is nothing) then set objWMIService = nothing Wscript.Echo "=> Command: " & strExec Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") do while colProcesses.Count>0 if not (objWMIService is nothing) then set objWMIService = nothing strCodeMSXML = "" Set objRegWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") if not (objRegWMI is nothing) then set objRegWMI = nothing |
なんで、VBSなのかは謎です…。はて?
Comments