Thank you and Thank you
Moderators: Waldo2k2, RogueSpear, dumpydooby
'==========================================================================
'
' VBScript Source File
'
' NAME: Install.vbs
' VERSION: 2.1.0.1
'
' AUTHOR: David R. Stein
' LAST UPDATED: 10/08/2009
'
' COMMENT: This script will install new and update existing runtime files.
' Existing files which the OS has a file system lock, will be
' replaced using Microsoft's PendingFileOperatings feature. The
' list of pending file operations is a REG_MULTI_SZ registry value
' and be viewed at the following location:
'
' HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
'
' When this script is executed from svcpack during Windows setup,
' the command line utility, pendmove.exe, written by Code65536 Is
' used to populate the registry with the appropriate information.
' This utility is used in order to avoid clobbering any existing
' pending instructions. Unfortunately this seems to only work as
' intended from svcpack. So when this script is executed post setup,
' the script itself will generate the registry entries and this will
' clobber any existing operations. This needs to be kept in mind
' when run post setup and it should be considered best practice To
' execute this script as soon as possible after a reboot when used
' post-setup in order to avoid any potential conflicts.
'
' Any pre-existing runtime files will be compared with those in this
' setup package by the date last modified time stamp per file. This
' is a departure from previous versions of this script where the file
' version number was used as a basis for comparison.
'
'==========================================================================
Option Explicit
Dim fs, ws, objArg, txtArg, SetupState, CurrentVersion, svcpack
Dim sysroot, sysdrive, comspec, LogFile, LogText
Dim param, mypath, fastOEM, msiexecPROPERTIES, msiexecSWITCHES
Dim installFW35, DisableNag, Ren, objRen, vcrt8Dir, vcrt9Dir
Set fs = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
Set objArg = WScript.Arguments
SetupState = ws.RegRead("HKLM\SYSTEM\Setup\SystemSetupInProgress")
CurrentVersion = ws.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
svcpack = False : fastOEM = False : txtArg = "/qb"
comspec = ws.ExpandEnvironmentStrings("%COMSPEC%")
sysroot = ws.ExpandEnvironmentStrings("%SYSTEMROOT%")
sysdrive = ws.ExpandEnvironmentStrings("%SYSTEMDRIVE%")
mypath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - ( Len(WScript.ScriptName) + 1 ) )
vcrt8Dir = sysroot & "\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989"
vcrt9Dir = sysroot & "\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e"
If fs.FileExists(sysroot & "\RSRTerr.log") Then
Set LogFile = fs.OpenTextFile(sysroot & "\RSRTerr.log", 8, False)
Else
Set LogFile = fs.OpenTextFile(sysroot & "\RSRTerr.log", 8, True)
End If
WriteLog("Begin")
If WScript.Arguments.Count <> 0 Then
For each param in WScript.Arguments
If InStr(LCase(param),"qb") > 0 Or InStr(LCase(param),"passive") > 0 Then
txtArg = "/qb!" : WriteLog("Interaction is PASSIVE")
ElseIf InStr(LCase(param),"qn") > 0 Or InStr(LCase(param),"silent") > 0 Then
txtArg = "/qn" : WriteLog("Interaction is SILENT")
ElseIf InStr(LCase(param),"nff") > 0 Or InStr(LCase(param),"no-firefox-extension") > 0 Then
DisableNag = True
ElseIf InStr(LCase(param),"dn35") > 0 Or InStr(LCase(param),"install-dot-net-framework-35") > 0 Then
installFW35 = True
ElseIf InStr(LCase(param),"fastoem") > 0 Or InStr(LCase(param),"svcpack") > 0 Then
If Left(sysdrive, 1) = Left(mypath, 1) Then
fastOEM = True : WriteLog("Manually enabling FASTOEM")
End If
ElseIf InStr(LCase(param),"cleanup") > 0 Then
WriteLog("Cleanup on next boot")
ws.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100\", "Cleaning up" , "REG_SZ"
ws.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100\2", comspec & " /c RmDir /S /Q """ & mypath & """", "REG_SZ"
End If
Next
End If
If installFW35 Then
InstalldotNETFW35SP1
End If
If SetupState = 1 Then
svcpack = True
If Left(sysdrive, 1) = Left(mypath, 1) And fastOEM <> True Then
fastOEM = True : WriteLog("Automatically enabling FASTOEM")
End If
ws.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\010\", ".NET Framework 3.5 SP1" , "REG_SZ"
ws.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\010\1", WScript.ScriptFullName & " --passive --no-firefox-extension --install-dot-net-framework-35", "REG_SZ"
End If
InstallMSI Array("PKG\VC2005SP1\vcredist.msi", "ADDEPLOY=1 ARPNOMODIFY=0 ARPNOREPAIR=0")
InstallMSI Array("PKG\VC2008SP1\vc_red.msi", "ADDEPLOY=1 ARPNOMODIFY=0 ARPNOREPAIR=0")
If (Not fs.FileExists(vcrt8Dir & "\msvcr80.dll")) Or (Not fs.FileExists(vcrt8Dir & "\msvcp80.dll")) Or (Not fs.FileExists(vcrt8Dir & "\msvcm80.dll")) Then Close "Microsoft Visual C++ 2005 (v8.0) was not detected."
If svcpack Then
ws.Run("reg.exe delete HKLM\Software\Microsoft\PCHealth\ErrorReporting\DW /f"),0,True
If CurrentVersion > "5.0" Then
ws.Run("reg.exe add HKLM\SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f"),0,True
End If
End If
'**********************************************************************
'** Function; Shitty little function that appends a log file **
'**********************************************************************
Function WriteLog(line)
LogFile.WriteLine(Date & " " & Time & " - " & "Runtimes Installer : " & line)
End Function
'**********************************************************************
'** Function; Remove all NULL characters from a text file **
'**********************************************************************
Function RemoveNullFromLog(file)
Dim oLog : Set oLog = fs.OpenTextFile(file,1,False)
Dim sLog : sLog = oLog.ReadAll : oLog.Close
If InStr(sLog,Chr(0)) Then
sLog = Replace(sLog, Chr(0), "")
fs.DeleteFile file, True
Set oLog = fs.OpenTextFile(file,2,True)
oLog.WriteLine(sLog) : oLog.Close
End If
End Function
'**********************************************************************
'** Function; Exit installation routine; leave a message (optional) **
'**********************************************************************
Function Close(msg)
If LCase(TypeName(msg)) = "string" And msg <> "" Then
WriteLog("[ERROR] " & msg)
End If
LogFile.WriteBlankLines(1) : WriteLog("End") : LogFile.Close
RemoveNullFromLog sysroot & "\RSRTerr.log"
WScript.Quit
End Function
'**********************************************************************
'** Function; Install an MSI package, append errors to log **
'**********************************************************************
Function InstallMSI(args)
On Error Resume Next
Dim msiFile, msiFileName, msiPath, msiArr, msiPathPart, RunCommandLine
Dim params, confirmFastOEM, logSwitch, method, objMsiPath, installSize
method = txtArg
logSwitch = "/lew+ " & Chr(34) & sysroot & "\RSRTerr.log" & Chr(34)
confirmFastOEM = False
If LCase(TypeName(args)) = "string" Then
msiFile = args
params = ""
Else
msiFile = args(0)
If UBound(args) > 0 Then params = " " & args(1)
If UBound(args) > 1 Then confirmFastOEM = args(2)
End If
msiArr = split(msiFile, "\") : msiPath = "\"
For Each msiPathPart In msiArr
If Right(LCase(msiPathPart),4) <> ".msi" Then
msiPath = msiPath & msiPathPart & "\"
Else
msiFileName = msiPathPart
End If
Next
If fastOEM And confirmFastOEM Then
'FASTOEM makes a big difference in time, but it requires a lot of properties to be set. Because of this, not all installers play nice with it.
'Even worse, it MUST be run in silent mode, and it DOES NOT track errors (they must manually be searched for in a verbose log)
'I'm not using FASTOEM for now. The option still exists in this function, but not of my calls to the function request it. Haven't tested it enough.
logSwitch = "/l*v " & Chr(34) & sysroot & "\RSRTverbose-" & Left(msiFileName,Len(msiFileName)-4) & ".log" & Chr(34)
Set objMsiPath = fs.GetFolder(mypath & msiPath) : installSize = Round(objMsiPath.size/1024)
method = "/qn"
params = params & " ARPSIZE=" & installSize & " FASTOEM=1 ALLUSERS=1 DISABLEROLLBACK=1 CURRENTDIRECTORY=""" & mypath & msiPath & """ MEDIAPACKAGEPATH=""" & mypath & msiPath & """ ROOTDRIVE=" & sysdrive & "\"
End If
msiexecPROPERTIES = "REBOOT=ReallySuppress" & params
msiexecSWITCHES = method & " " & logSwitch
RunCommandLine = "msiexec.exe " & msiexecSWITCHES & " /i " & Chr(34) & mypath & "\" & msiFile & Chr(34) & " " & msiexecPROPERTIES
LogFile.WriteBlankLines(1)
LogFile.WriteLine("==================================================")
LogFile.WriteLine("Logging routine from " & msiFile)
If params <> "" Then LogFile.WriteLine("PROPERTIES: " & params)
If fastOEM And confirmFastOEM Then LogFile.WriteLine("See: <" & sysroot & "\RSRTverbose-" & Left(msiFileName,Len(msiFileName)-4) & ".log>")
LogFile.Close
ws.Run (RunCommandLine),0,True
RemoveNullFromLog sysroot & "\RSRTerr.log"
Set LogFile = fs.OpenTextFile(sysroot & "\RSRTerr.log", 8, False)
LogFile.WriteLine("Finished @ " & Date & " " & Time & " local time")
LogFile.WriteLine("==================================================")
End Function
'**********************************************************************
'** Subroutine; Install Microsoft .NET Framework 3.5 SP1 **
'**********************************************************************
Sub InstalldotNETFW35SP1
If (Not fs.FileExists(vcrt9Dir & "\msvcr90.dll")) Or (Not fs.FileExists(vcrt9Dir & "\msvcp90.dll")) Or (Not fs.FileExists(vcrt9Dir & "\msvcm90.dll")) Then Close "Microsoft Visual C++ 2008 (v9.0) was not detected."
Dim KB932471, SPLevel, CurrentVersion, BitsState, SpoolerState, BitsMode, SpoolerMode
If installFW35 = True Then
If Not fs.FileExists(sysroot & "\Microsoft.NET\Framework\v2.0.50727\ngen.exe") Then Close "Microsoft .NET Framework 2.0 was not detected."
CurrentVersion = ws.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
SPLevel = ws.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion")
BitsState = ws.RegRead("HKLM\SYSTEM\CurrentControlSet\Services\BITS\Start")
SpoolerState = ws.RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start")
Select Case CurrentVersion
Case "5.1"
If SPLevel = "Service Pack 3" Then
KB932471 = False
Else
KB932471 = True
End If
Case "5.2"
If SPLevel = "Service Pack 2" Then
KB932471 = False
Else
KB932471 = True
End If
Case Else
WScript.Quit
End Select
Select Case BitsState
Case 4
BitsMode = "Disabled"
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\BITS\Start\", 2, "REG_DWORD"
ws.Run "NET START BITS", 0, True
Case 3
BitsMode = "Manual"
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\BITS\Start\", 2, "REG_DWORD"
ws.Run "NET START BITS", 0, True
Case 2
BitsMode = "Auto"
ws.Run "NET START BITS", 0, True
End Select
Select Case SpoolerState
Case 4
SpoolerMode = "Disabled"
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start\", 2, "REG_DWORD"
ws.Run("NET START Spooler"),0,True
Case 3
SpoolerMode = "Manual"
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start\", 2, "REG_DWORD"
ws.Run("NET START Spooler"),0,True
Case 2
SpoolerMode = "Auto"
ws.Run("NET START Spooler"),0,True
End Select
InstallMSI Array("PKG\dotNET30SP2\RGB9RAST_x86.msi", "ARPNOMODIFY=0 ARPNOREPAIR=0")
ws.Run("""" & mypath & "\PKG\dotNET30SP2\XPSEPSC-x86-en-US\update\update.exe"" /quiet /nobackup /norestart"),0,True
InstallMSI Array("PKG\dotNET30SP2\Netfx30a_x86.msi", "ARPNOMODIFY=0 ARPNOREPAIR=0")
ws.Run("""" & mypath & "\WaitNET.exe"" " & txtArg),0,True
If DisableNag = True Then
InstallMSI Array("PKG\dotNET35SP1\vs_setup.msi", "TRANSFORMS=""" & mypath & "\PKG\dotNET35SP1\no_firefox_extension.mst"" ARPNOMODIFY=0 ARPNOREPAIR=0")
Else
InstallMSI Array("PKG\dotNET35SP1\vs_setup.msi", "ARPNOMODIFY=0 ARPNOREPAIR=0")
End If
ws.Run("""" & mypath & "\WaitNET.exe"" " & txtArg),0,True
If Not fs.FileExists(sysroot & "\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension\MicrosoftDotNetFrameworkAssistant.xpi") Then
fs.CreateTextFile sysroot & "\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\DotNetAssistantExtension\MicrosoftDotNetFrameworkAssistant.xpi",True
End If
Select Case BitsMode
Case "Disabled"
ws.Run("NET STOP BITS"),0,True
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\BITS\Start\",4,"REG_DWORD"
Case "Manual"
ws.Run("NET STOP BITS"),0,True
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\BITS\Start\",3,"REG_DWORD"
Case "Auto"
End Select
Select Case SpoolerMode
Case "Disabled"
ws.Run("NET STOP Spooler"),0,True
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start\",4,"REG_DWORD"
Case "Manual"
ws.Run("NET STOP Spooler"),0,True
ws.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start\",3,"REG_DWORD"
Case "Auto"
End Select
If svcpack Then
ws.Run("reg.exe add HKLM\SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 1 /f"),0,True
End If
ws.Run(Chr(34) & sysroot & "\Microsoft.NET\Framework\v2.0.50727\ngen.exe" & Chr(34) & " executequeueditems"),0,True
Close NULL
End If
End Sub
InstallMSI Array("PKG\dotNET20SP2\Netfx20a_x86.msi", "ADDEPLOY=1 ARPNOMODIFY=0 ARPNOREPAIR=0")
ws.Run("WaitNET.exe " & txtArg),0,True
ws.Run(Chr(34) & sysroot & "\Microsoft.NET\Framework\v2.0.50727\ngen.exe" & Chr(34) & " executequeueditems"),0,True
InstallMSI Array("PKG\VJ#20SE\jsredist.msi","ARPNOMODIFY=0 ARPNOREPAIR=0",True)
ws.Run("WaitNET.exe " & txtArg),0,True
If svcpack Then
If CurrentVersion > "5.0" Then
ws.Run("reg.exe add HKLM\SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 1 /f"),0,True
End If
End If
InstallMSI "PKG\Silverlight\Silverlight.msi"
InstallMSI "PKG\SAPI51\SAPI51.msi"
InstallMSI "PKG\TTSEngine\MSTTSEngine.msi"
InstallMSI "PKG\msxml6\msxml6.msi"
InstallMSI "PKG\Capicom\capicom2.msi"
ws.Run("rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 128 PKG\DirectX\dx9.inf"),0,True
Dim txtSysFolder, arrOLD, oldfile, arrDLL, dllfile, arrEXE, exefile, arrOCX, ocxfile, arrRegister, registerfile, strLocked, boolLocked
txtSysFolder = ws.ExpandEnvironmentStrings("%systemroot%") & "\system32"
arrOLD = Array("ipy.exe", "ipyw.exe", "IronMath.dll", "IronPython.dll", "python25.dll", "python30.dll", "pythoncom25.dll", "pywintypes25.dll")
arrDLL = Array("atl70.dll", "atl71.dll", "AutoItX3.dll", "dbadapt.dll", "KiXtart.dll", "libeay32.dll", "libmmd.dll", "libssl32.dll", _
"mfc70.dll", "mfc70CHS.dll", "mfc70CHT.dll", "mfc70DEU.dll", "mfc70ENU.dll", "mfc70ESP.dll", "mfc70FRA.dll", "mfc70ITA.dll", _
"mfc70JPN.dll", "mfc70KOR.dll", "mfc70u.dll", "mfc71.dll", "mfc71CHS.dll", "mfc71CHT.dll", "mfc71DEU.dll", "mfc71ENU.dll", _
"mfc71ESP.dll", "mfc71FRA.dll", "mfc71ITA.dll", "mfc71JPN.dll", "mfc71KOR.dll", "mfc71u.dll", "msaddndr.dll", "msbind.dll", _
"mscdrun.dll", "mscsfdbg.dll", "msdbrpt.dll", "msdbrptr.dll", "mshtmpgd.dll", "mshtmpgr.dll", "msrdo20.dll", "msstdfmt.dll", _
"msstkprp.dll", "msvci70.dll", "msvcp70.dll", "msvcp71.dll", "msvcr70.dll", "msvcr71.dll", "msvcrt10.dll", "msvcrt-ruby18.dll", _
"mswcrun.dll", "OpenAL32.dll", "python26.dll", "python31.dll", "simpleaudio.dll", "ssleay32.dll", "vb40016.dll", "vb40032.dll", _
"vbrun100.dll", "vbrun200.dll", "vbrun300.dll", "wrap_oal.dll")
arrEXE = Array("KiX32.exe", "python.exe", "pythonw.exe", "ruby.exe", "rubyw.exe", "WKiX32.exe")
arrOCX = Array("comct232.ocx", "comct332.ocx", "comctl32.ocx", "comdlg32.ocx", "dbgrid32.ocx", "dblist32.ocx", "mci32.ocx", "msadodc.ocx", _
"mschrt20.ocx", "mscomct2.ocx", "mscomctl.ocx", "mscomctl32.ocx", "mscomm32.ocx", "msdatgrd.ocx", "msdatlst.ocx", "msdatrep.ocx", _
"msflxgrd.ocx", "mshflxgd.ocx", "msinet.ocx", "msmapi32.ocx", "msmask32.ocx", "msrdc20.ocx", "mswinsck.ocx", "picclp32.ocx", _
"richtx32.ocx", "sysinfo.ocx", "tabctl32.ocx", "wbclsdsr.ocx")
arrRegister = Array("AutoItX3.dll", "comct232.ocx", "comct332.ocx", "comctl32.ocx", "comdlg32.ocx", "dbadapt.dll", "dbgrid32.ocx", _
"dblist32.ocx", "KiXtart.dll", "mci32.ocx", "msaddndr.dll", "msadodc.ocx", "msbind.dll", "mscdrun.dll", "mschrt20.ocx", "mscomct2.ocx", _
"mscomctl.ocx", "mscomctl32.ocx", "mscomm32.ocx", "msdatgrd.ocx", "msdatlst.ocx", "msdatrep.ocx", "msdbrpt.dll", "msdbrptr.dll", _
"msflxgrd.ocx", "mshflxgd.ocx", "mshtmpgd.dll", "mshtmpgr.dll", "msinet.ocx", "msmapi32.ocx", "msmask32.ocx", "msrdc20.ocx", _
"msrdo20.dll", "msstdfmt.dll", "msstkprp.dll", "mswinsck.ocx", "picclp32.ocx", "richtx32.ocx", "sysinfo.ocx", "tabctl32.ocx", "wbclsdsr.ocx")
strLocked = Null
boolLocked = False
For Each dllfile In arrDLL
If fs.FileExists(txtSysFolder & "\" & dllfile) Then
Dim a, b
Set a = fs.GetFile(".\PKG\" & dllfile)
Set b = fs.GetFile(txtSysFolder & "\" & dllfile)
If a.DateLastModified > b.DateLastModified Then
On Error Resume Next
fs.CopyFile ".\PKG\" & dllfile, txtSysFolder & "\" & dllfile, True
If Err = 70 Then
fs.CopyFile ".\PKG\" & dllfile, ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & dllfile, True
If svcpack = True Then
ws.Run("pendmove.exe " & ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & dllfile & " " & txtSysFolder & "\" & dllfile),0,True
Else
boolLocked = True
strLocked = strLocked & "\??\%systemdrive%\" & dllfile & "\0!\??\%systemroot%\system32\" & dllfile & "\0"
End If
End If
fs.DeleteFile ".\PKG\" & dllfile, True
End If
Else
fs.MoveFile ".\PKG\" & dllfile, txtSysFolder & "\" & dllfile
End If
Next
For Each exefile In arrEXE
If fs.FileExists(txtSysFolder & "\" & exefile) Then
Dim c, d
Set c = fs.GetFile(".\PKG\" & exefile)
Set d = fs.GetFile(txtSysFolder & "\" & exefile)
If c.DateLastModified > d.DateLastModified Then
On Error Resume Next
fs.CopyFile ".\PKG\" & exefile, txtSysFolder & "\" & exefile, True
If Err = 70 Then
fs.CopyFile ".\PKG\" & exefile, ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & exefile, True
If svcpack = True Then
ws.Run("pendmove.exe " & ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & exefile & " " & txtSysFolder & "\" & exefile),0,True
Else
boolLocked = True
strLocked = strLocked & "\??\%systemdrive%\" & exefile & "\0!\??\%systemroot%\system32\" & exefile & "\0"
End If
End If
fs.DeleteFile ".\PKG\" & exefile, True
End If
Else
fs.MoveFile ".\PKG\" & exefile, txtSysFolder & "\" & exefile
End If
Next
For Each ocxfile In arrOCX
If fs.FileExists(txtSysFolder & "\" & ocxfile) Then
Dim e, f
Set e = fs.GetFile(".\PKG\" & ocxfile)
Set f = fs.GetFile(txtSysFolder & "\" & ocxfile)
If e.DateLastModified > f.DateLastModified Then
On Error Resume Next
fs.CopyFile ".\PKG\" & ocxfile, txtSysFolder & "\" & ocxfile, True
If Err = 70 Then
fs.CopyFile ".\PKG\" & ocxfile, ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & ocxfile, True
If svcpack = True Then
ws.Run("pendmove.exe " & ws.ExpandEnvironmentStrings("%systemdrive%") & "\" & ocxfile & " " & txtSysFolder & "\" & ocxfile),0,True
Else
boolLocked = True
strLocked = strLocked & "\??\%systemdrive%\" & ocxfile & "\0!\??\%systemroot%\system32\" & ocxfile & "\0"
End If
End If
fs.DeleteFile ".\PKG\" & ocxfile, True
End If
Else
fs.MoveFile ".\PKG\" & ocxfile, txtSysFolder & "\" & ocxfile
End If
Next
For Each registerfile In arrRegister
If fs.FileExists(txtSysFolder & "\" & registerfile) Then
ws.Run("regsvr32.exe /s %systemroot%\system32\" & registerfile),0,True
End If
Next
For Each oldfile In arrOLD
If fs.FileExists(txtSysFolder & "\" & oldfile) Then
fs.DeleteFile txtSysFolder & "\" & oldfile, True
End If
Next
If boolLocked Then
ws.Run("reg add ""HKLM\SYSTEM\CurrentControlSet\Control\Session Manager"" /v PendingFileRenameOperations /t REG_MULTI_SZ /d " & strLocked & " /f"),0,True
End If
Close NULLRogueSpear wrote:RogueSpear's Runtimes V3.5.1
Multimode Installer - 85.5MB
MD5: 2eec01b4ff1aadf1f8655649bc2d3722
Last Updated: 20090910
Installs From: svcpack.inf
Description: The latest version of my eponymous runtimes installer is finally putting to bed the .NET Framework 1.1. This combo installer includes the newest installation routine that I have come up with which kindly allows the .NET Runtime Optimization Service to finish running before continuing on to the next task. And it also includes the latest installation routine for properly installing legacy runtimes, either during setup or on existing installations - including updating those files the OS has a lock on. These are the runtimes that I use on virtually every single install. I have not included some of the more specialized and lesser utilized runtime packages, preferring instead to include those only for installations that truly need them.
What is Included:
- Microsoft .NET Framework 2.0 Service Pack 2
- Microsoft Visual J# 2.0 Runtimes Second Edition
- Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package
- Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package
- Microsoft MSXML 6 Service Pack 2 (KB954459)
- Microsoft Silverlight v3.0.40818.0
- Microsoft Speech API v5.1.4324.0
- Microsoft Text to Speech Engine v2.0
- Microsoft CAPICOM 2.1.0.2
- Microsoft DirectX Redistributable August 2009
- RogueSpear's Other Runtimes (most recent version)
kane3162 wrote: i want RogueSpears installers.... not user_hidden or dumpys
Return to Application Installer Releases
Users browsing this forum: No registered users and 2 guests