From 4388f0c2b4218f0e2e038fd039c8914607ad24ed Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Sun, 27 Aug 2006 04:21:27 +0000 Subject: [PATCH] make downloads work without adodb.stream in case it fails. Thanks to Dave Horner for the inspiration on this. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2405 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/win32/util.vbs | 65 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/libs/win32/util.vbs b/libs/win32/util.vbs index 952734f445..bec45b1b5d 100644 --- a/libs/win32/util.vbs +++ b/libs/win32/util.vbs @@ -1,3 +1,9 @@ +' +' Contributor(s): +' Michael Jerris +' David A. Horner http://dave.thehorners.com +'---------------------------------------------- + 'On Error Resume Next ' ************** ' Initialization @@ -7,13 +13,28 @@ Set WshShell = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set WshSysEnv = WshShell.Environment("SYSTEM") Set xml = CreateObject("Microsoft.XMLHTTP") +Dim UseWgetEXE + +On Error Resume Next Set oStream = CreateObject("Adodb.Stream") +On Error Goto 0 + +If Not IsObject(oStream) Then + wscript.echo("Failed to create Adodb.Stream, using alternative download method.") + UseWgetEXE=true +Else + UseWgetEXE=false +End If + Set objArgs = WScript.Arguments quote=Chr(34) ScriptDir=Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName)) UtilsDir=Showpath(ScriptDir) ToolsBase="http://svn.freeswitch.org/downloads/win32/" +If UseWgetEXE Then + GetWgetEXE UtilsDir +End If GetCompressionTools UtilsDir @@ -58,6 +79,14 @@ Sub GetCompressionTools(DestFolder) End If End Sub +Sub GetWgetEXE(DestFolder) + Dim oExec + If Right(DestFolder, 1) <> "\" Then DestFolder = DestFolder & "\" End If + If Not FSO.FileExists(DestFolder & "wget.exe") Then + Slow_Wget ToolsBase & "wget.exe", DestFolder + End If +End Sub + Sub UnCompress(Archive, DestFolder) wscript.echo("Extracting: " & Archive) Set MyFile = fso.CreateTextFile(UtilsDir & "tmpcmd.Bat", True) @@ -100,19 +129,51 @@ Sub Wget(URL, DestFolder) If Right(DestFolder, 1) <> "\" Then DestFolder = DestFolder & "\" End If Wscript.echo("Downloading: " & URL) + +If UseWgetEXE Then + Set MyFile = fso.CreateTextFile(UtilsDir & "tmpcmd.Bat", True) + MyFile.WriteLine("@cd " & quote & DestFolder & quote) + MyFile.WriteLine("@" & quote & UtilsDir & "wget.exe" & quote & " " & URL) + MyFile.Close + Set oExec = WshShell.Exec(UtilsDir & "tmpcmd.Bat") + Do + WScript.Echo OExec.StdOut.ReadLine() + Loop While Not OExec.StdOut.atEndOfStream + +Else xml.Open "GET", URL, False xml.Send Const adTypeBinary = 1 Const adSaveCreateOverWrite = 2 Const adSaveCreateNotExist = 1 - + oStream.type = adTypeBinary oStream.open oStream.write xml.responseBody oStream.savetofile DestFolder & filename, adSaveCreateOverWrite - oStream.close +End If + +End Sub + +Sub Slow_Wget(URL, DestFolder) + StartPos = InstrRev(URL, "/", -1, 1) + strlength = Len(URL) + filename=Right(URL,strlength-StartPos) + If Right(DestFolder, 1) <> "\" Then DestFolder = DestFolder & "\" End If + + Wscript.echo("Downloading: " & URL) + xml.Open "GET", URL, False + xml.Send + + const ForReading = 1 , ForWriting = 2 , ForAppending = 8 +Set MyFile = fso.OpenTextFile(DestFolder & filename ,ForWriting, True) +For i = 1 to lenb(xml.responseBody) + MyFile.write Chr(Ascb(midb(xml.responseBody,i,1))) +Next +MyFile.Close() + End Sub Function Showpath(folderspec)