' その3 からの続きです
Wscript.Echo
WScript.Echo "更新ファイルをインストールしています..."
' 更新ファイルをインストールするには、UpdateInstaller オブジェクトを使用します。
' まずは「その1」に示したオブジェクトモデル図をご覧ください。
' UpdateSession オブジェクトの配下に UpdateInstaller オブジェクトがありますよね。
' つまり、UpdateSession オブジェクトを起点として、UpdateInstaller オブジェクトの
' インスタンスを取得する必要があるわけです。
' UpdateInstaller オブジェクトのインスタンスを取得するには、CreateUpdateInstaller
' メソッドを使用します。
Set objUpdateInstaller = objUpdateSession.CreateUpdateInstaller()
' UpdateInstaller オブジェクトを取得したら、インストールする更新ファイルを指定
' しなければなりません。今回は、未適用の更新ファイルを片っ端から適用しますので、
' その2 で取得した UpdateCollection オブジェクトを Update パラメタに与えてあげれば
' OK です。
objUpdateInstaller.Updates = objUpdateCollection
' 更新ファイルを指定したら、Install メソッドで更新開始です。
' ちなみに、更新が完了するまで一旦応答が無くなりますので注意してください。
' 処理結果は、InstallationResult オブジェクトに格納されます。
Set objInstallationResult = objUpdateInstaller.Install()
Wscript.Echo
WScript.Echo "更新結果"
Wscript.Echo "-------------------------------------------------"
' 更新が完了したら、それぞれの更新ファイルごとにインストール結果を参照しましょう。
For i = 0 to objUpdateCollection.Count - 1
' インストール結果を取得するには、InstallationResult オブジェクトの
' GetUpdateResult メソッドを使用します。注意しなければならないのは、
' GetUpdateResult メソッドの戻り値がコレクション型であるということです。
' つまり、個々の更新ファイルごとに戻り値が格納されているわけです。
' なので、変数 i をインデックスとして、For Next でループさせることで
' 個々の結果を取得できわけですね。
' でもって、もう1点だけ注意です。
' GetUpdateResult メソッドの戻り値は、UpdateInstallationResult オブジェクト
' であり、戻り値そのものではありません。以下を見てください。
' http://msdn2.microsoft.com/en-us/library/aa386486.aspx
' 戻り値を取得するには、UpdateInstallationResult オブジェクトの ResultCode
' プロパティを使用します。
'
' なお、以下は、objInstallationResult.GetUpdateResult(i).ResultCode
' というように、ResultCode 取得を1行で書いてあります。
' objInstallationResult.GetUpdateResult(i).ResultCode によって戻り値が
' とれますから、これを Select Case で判断して strResult には表示用の
' 日本語をセットしています。
Select Case objInstallationResult.GetUpdateResult(i).ResultCode
Case 0
strResult = "開始されていません"
Case 1
strResult = "処理中です"
Case 2
strResult = "正常に終了しました"
Case 3
strResult = "処理は完了しましたがエラーがあります"
Case 4
strResult = "失敗しました"
Case 5
strResult = "中断しました"
Case Else
strResult = "不明"
End Select
WScript.Echo "・" & objUpdateCollection.Item(i).Title & ", " & strResult
Next
' 更新ファイルを適用すると、中には再起動を要求するものがあります。
' 再起動の要否は RebootRequired プロパティで確認することができます。
' ただし、ここでも1点注意してください。
' 以下の場合、RebootRequired プロパティを InstallationResult オブジェクト
' から取得しています。InstallationResult オブジェクトの RebootRequired には、
' 今回の更新処理の結果、再起動を要求している更新ファイルがあれば True が格納
' されます。
' 個々の更新ファイルごとに再起動の要否を確認するのであれば、上記の Forループ
' の中で、objInstallationResult.GetUpdateResult(i).RebootRequired を参照
' してください。
If objInstallationResult.RebootRequired then
WScript.Echo
WScript.Echo "再移動が必要です" & vbCrLf
Else
WScript.Echo
WScript.Echo "再移動は必要ありません" & vbCrLf
End If
Wscript.Echo "更新処理が完了しました"