Sep 30, 2014 Thomas Ehler Uncategorized 0
On a newly deployed and fully updated PC, run the script below (Copy the content to a .vbs file).
Then copy all the collected MSP files from %Temp%\Updates to the “\Updates” folder in you Office package and update content on the DP’s.
– And save time and complexity on every installation! 🙂
——-
Dim oMsi,oFso,oWShell
Dim Patches,SumInfo
Dim patch,record,msp
Dim qView
Dim sTargetFolder,sMessage
Const OFFICEID = “000-0000000FF1CE}”
Const PRODUCTCODE_EMPTY = “”
Const MACHINESID = “”
Const MSIINSTALLCONTEXT_MACHINE = 4
Const MSIPATCHSTATE_APPLIED = 1
Const MSIOPENDATABASEMODE_PATCHFILE = 32
Const PID_SUBJECT = 3 ‘Displayname
Const PID_TEMPLATES = 7 ‘PatchTargets
Set oMsi = CreateObject(“WindowsInstaller.Installer”)
Set oFso = CreateObject(“Scripting.FileSystemObject”)
Set oWShell = CreateObject(“Wscript.Shell”)
‘Create the target folder
sTargetFolder = oWShell.ExpandEnvironmentStrings(“%TEMP%”)&”\Updates”
If Not oFso.FolderExists(sTargetFolder) Then oFso.CreateFolder sTargetFolder
sMessage = “Patches are being copied to the %Temp%\Updates folder.” & vbCrLf & “A Windows Explorer window will open after the script has run.”
oWShell.Popup sMessage,20,”Office Patch Collector”
‘Get all applied patches
Set Patches = oMsi.PatchesEx(PRODUCTCODE_EMPTY,MACHINESID,MSIINSTALLCONTEXT_MACHINE,MSIPATCHSTATE_APPLIED)
On Error Resume Next
‘Enum the patches
For Each patch in Patches
  If Not Err = 0 Then Err.Clear
   ‘Connect to the patch file
   Set msp = oMsi.OpenDatabase(patch.PatchProperty(“LocalPackage”),MSIOPENDATABASEMODE_PATCHFILE)
   Set SumInfo = msp.SummaryInformation
   If Err = 0 Then
       If InStr(SumInfo.Property(PID_TEMPLATES),OFFICEID)>0 Then
           ‘Get the original patch name
           Set qView = msp.OpenView(“SELECT `Property`,`Value` FROM MsiPatchMetadata WHERE `Property`=’StdPackageName'”)
           qView.Execute : Set record = qView.Fetch()
           ‘Copy and rename the patch to the original file name
           oFso.CopyFile patch.PatchProperty(“LocalPackage”),sTargetFolder&”\”&record.StringData(2),TRUE
       End If
   End If ‘Err = 0
Next ‘patch
oWShell.Run “explorer /e,”&chr(34)&sTargetFolder&chr(34)
———-
Jun 11, 2020 0
May 29, 2019 0
Apr 09, 2019 0
Aug 09, 2018 0
Jun 11, 2020 0
May 29, 2019 0
Apr 09, 2019 0
Aug 09, 2018 0