'Patch 2010/03 Option Explicit Dim wshshell,fso,i,Fnct Dim strPath,strSystemFolder,strWinFolder,strTempFolder '----------------------------- Objekte erzeugen -------------------------------- i = 0 On Error Resume Next Do err.Clear i = i+1 Set wshshell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set Fnct = CreateObject("Install.Functions") WScript.Sleep 1000 Loop Until Err.Number = 0 OR i > 30 If Err.Number <> 0 Then WScript.Quit End If On Error Goto 0 '--------------------------- Standardpfade ------------------------------------- strPath = GetCurrentPath() strSystemFolder = fso.GetSpecialFolder(1) & "\" strWinFolder = fso.GetSpecialFolder(0) & "\" strTempFolder = fso.GetSpecialFolder(2) & "\" '------------------------------ Main ------------------------------------------- WriteToLog("Start") Dim strSoftwareTxt, strSoftwareTxtContent Dim strMainVolume strMainVolume = ExpandPath("%MAIN_VOLUME%","c:\") strSoftwareTxt = strMainVolume & "Software.txt" strSoftwareTxtContent = ReadFileContent(strSoftwareTxt) 'Retten der alten TCATSysSrv.exe Dim strFileToRescue Dim strRescuedFile strFileToRescue = "c:\TWinCAT\TCATSysSrv.exe" strRescuedFile = fso.BuildPath(strTempFolder,"TCATSysSrv.exe") If fso.FileExists(strFileToRescue) Then Call fso.CopyFile(strFileToRescue,strRescuedFile) End if 'Installation Dim strMsiFile,strLogFile If Instr(1,strSoftwareTxtContent,"FockeBackupReplicator") <> 0 Then strMsiFile = """" & strPath & "FockeBackupReplicator.msi""" strLogFile = """" & strTempFolder & "FockeBackupReplicator.log""" Call InstallMsiFile(strMsiFile,strLogFile) End If strMsiFile = """" & strPath & "FockeSP_SysfilesXP.msi""" strLogFile = """" & strTempFolder & "SysfilesXP.log""" Call InstallMsiFile(strMsiFile,strLogFile) strMsiFile = """" & strPath & "SecondaryLogon.msi""" strLogFile = """" & strTempFolder & "SecondaryLogon.log""" Call InstallMsiFile(strMsiFile,strLogFile) strMsiFile = """" & strPath & "MbDiag\Setup.msi""" strLogFile = """" & strTempFolder & "InstallMbDiag.log""" Call InstallMsiFile(strMsiFile,strLogFile) strMsiFile = """" & strPath & "FockeTools.msi""" strLogFile = """" & strTempFolder & "FockeTools.log""" Call InstallMsiFile(strMsiFile,strLogFile) On Error Resume Next Dim strPcType strPcType = "" const PcTypeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\IPC\Platform" strPcType = wshshell.RegRead(PcTypeKey) Err.Clear On Error Goto 0 If Instr(strPcType,"C6930") <> 0 Then strMsiFile = """" & strPath & "MbDiag\C6930\Setup.msi""" strLogFile = """" & strTempFolder & "InstallMbDiag.log""" Call InstallMsiFile(strMsiFile,strLogFile) End If 'Wenn der TCATSysSrv.exe verschwinden ist, dann wiederherstellen If Not fso.FileExists(strFileToRescue) Then Call fso.CopyFile(strRescuedFile,strFileToRescue) End If 'Spuren verwischen If fso.FileExists(strRescuedFile) Then Call fso.DeleteFile(strRescuedFile,True) End If WriteToLog("End") '------------------------------- Funktionen ------------------------------------ Function GetCurrentPath() Dim l_strScriptName Dim l_strTemp l_strScriptName = WScript.ScriptFullName l_strTemp = WScript.ScriptName GetCurrentPath = Left(l_strScriptName, Len(l_strScriptName) - Len(l_strTemp)) End Function Function ExpandPath(p_strEnvironment,p_strDefault) Dim l_strTemp l_strTemp = wshshell.ExpandEnvironmentStrings(p_strEnvironment) If l_strTemp = p_strEnvironment Then l_strTemp = p_strDefault End If ExpandPath = l_strTemp End Function Function ReadFileContent(p_strFileName) Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim TextFile Set TextFile = fso.OpenTextFile(p_strFileName,ForReading) ReadFileContent = TextFile.ReadAll() TextFile.Close End Function '----------------------------------- Sub -------------------------------------- Sub InstallMsiFile(p_strMsiFile,p_strLogFile) Dim i Dim strFileContent Dim bResult Dim LogFile Dim l_strLogFile l_strLogFile = Replace(p_strLogFile,"""","") wshshell.Run("msiexec.exe /qn /l* " & p_strLogFile & " /i " & p_strMsiFile & " REBOOT=ReallySuppress") i = 0 do WScript.Sleep 1000 strFileContent = "" If fso.FileExists(l_strLogFile) Then On Error Resume Next Set LogFile = fso.OpenTextFile(l_strLogFile,1,false,-1) if(err.Number = 0) Then strFileContent = LogFile.ReadAll LogFile.Close Else strFileContent = "" End If bResult = Instr(strFileContent,"=== Logging stopped:") > 0 err.Clear On Error Goto 0 End If err.Clear i = i+1 loop until (bResult = True) Or (i >60) End Sub Sub WriteToLog(p_strMessage) Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim strLineToWrite strLineToWrite = WScript.ScriptName & " -- " & p_strMessage Dim strLogFile strLogFile = ExpandPath("%SERVICEPACK_LOG%","c:\fockeservicepack.log") ' msgbox sLine & LogFile Dim FileObject if fso.FileExists(strLogFile) then set FileObject = fso.OpenTextFile( strLogFile,ForAppending,false,0) else set FileObject = fso.OpenTextFile( strLogFile,ForWriting, true,0) end if FileObject.WriteLine(strLineToWrite) FileObject.Close set FileObject=nothing End Sub