'Version 1.1 - updated error control and reporting 'Option Explicit Dim objfso, objShell Dim folder, files, sFolder, folderidx, Iretval, return Set objfso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Wscript.Shell") sFolder = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) Set folder = objfso.GetFolder(sFolder) Set files = folder.Files For each folderIdx In files If Ucase(Right(folderIdx.name,3)) = "MSP" then wscript.echo "msiexec.exe /p " & sfolder & folderidx.name & " /q REINSTALL=ALL REINSTALLMODE=mous" iretval=objShell.Run ("msiexec.exe /p " & sfolder & folderidx.name & " /q REINSTALL=ALL REINSTALLMODE=mous", 1, True) If (iRetVal = 0) or (iRetVal = 3010) then wscript.echo folderidx.name & " Success" Else wscript.echo folderidx.name & " Failed" call SMSWriteStatusMIF("PNITNST.MIF","Microsoft","SCCM Client Hotfixes", "2007",FolderIDX.name & " reported error: " & iretval &" and failed to install","fail") wscript.quit End If End If Next call SMSWriteStatusMIF("PNITNST.MIF","Microsoft","SCCM Client Hotfixes", "2007","The operation completed successfully.","true") Sub SMSWriteStatusMIF(FileName,Manufacturer, Product, Version, Description, bSuccess) ' Writing a status MIF for SWDist to return a success or a failure to execute ' Product is the name of the Script and MIF file. ' Description is the status message ' bSuccess is True/False of success Const ForWriting = 2 Dim mifFile Dim WinpDir Set FileSys = CreateObject("Scripting.FileSystemObject") WinDir = objShell.ExpandEnvironmentStrings("%WINDIR%") Set mifFile = FileSys.CreateTextFile(WinDir & "\" & FileName , ForWriting) With mifFile .Writeline ("START COMPONENT") .Writeline ("NAME = ""WORKSTATION""") .Writeline (" START GROUP") .Writeline (" NAME = ""ComponentID""") .Writeline (" ID = 1") .Writeline (" CLASS = ""DMTF|ComponentID|1.0""") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Manufacturer""") .Writeline (" ID = 1") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(64)") .Writeline (" VALUE = """ & Manufacturer & """") .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Product""") .Writeline (" ID = 2") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(64)") .Writeline (" VALUE = """ & Product & """") .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Version""") .Writeline (" ID = 3") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(64)") .Writeline (" VALUE = """ & Version & """") .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Locale""") .Writeline (" ID = 4") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(16)") .Writeline (" VALUE = ""ENU""") .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Serial Number""") .Writeline (" ID = 5") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(64)") .Writeline (" VALUE = ""NIL""") .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Installation""") .Writeline (" ID = 6") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(64)") .Writeline (" VALUE = ""DateTime""") .Writeline (" END ATTRIBUTE") .Writeline (" END GROUP") .Writeline (" START GROUP") .Writeline (" NAME = ""InstallStatus""") .Writeline (" ID = 2") .Writeline (" CLASS = ""MICROSOFT|JOBSTATUS|1.0""") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Status""") .Writeline (" ID = 1") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(32)") ' Pass or fail this status mif? If bSuccess = "true" then .Writeline (" VALUE = ""Success""") else .Writeline (" VALUE = ""Failed""") End if .Writeline (" END ATTRIBUTE") .Writeline (" START ATTRIBUTE") .Writeline (" NAME = ""Description""") .Writeline (" ID = 2") .Writeline (" ACCESS = READ-ONLY") .Writeline (" STORAGE = SPECIFIC") .Writeline (" TYPE = STRING(256)") .Writeline (" VALUE = """ & Description & """") .Writeline (" END ATTRIBUTE") .Writeline (" END GROUP") .Writeline ("END COMPONENT") End With mifFile.Close Set mifFile = Nothing End Sub 'Package Properties