Clase de actualización en línea de ASP
Autor:Eve Cole
Fecha de actualización:2009-06-26 18:09:15
<%
Rem ############################################### ## ##################################
Rem ## Declaración de clase de actualización en línea
Clase Cls_oActualización
Rem ############################################### ## ##############
Rem ## Descripción: Clase de actualización en línea de ASP
Rem ## Versión: 1.0.0
Rem ## Autor: Xiao Yuehen
Rem ## MSN: xiaoyuehen(arroba)msn.com
Rem ## Por favor reemplace (arroba) con @
Rem ## Copyright: dado que se comparte, no hay derechos de autor, ¡pero debe limitarse a la difusión en línea y no puede usarse en medios tradicionales!
Rem ## ¡Si puedes conservar estas instrucciones, te lo agradecería aún más!
Rem ## Si tiene una mejor optimización del código y mejoras relacionadas, recuerde decírmelo, ¡muchas gracias!
Rem ############################################### ## ##############
Versión local pública, última versión, tipo de archivo
Versión de URL pública, actualización de URL, ruta local de actualización, información
Historial de URL públicas
sstrVersionList privado, sarrVersionList, sintLocalVersion, sstrLocalVersion
Privado sstrLogContent, sstrHistoryContent, sstrUrlUpdate, sstrUrlLocal
Rem ############################################### ## ##############
Subclase privada_Initialize()
Rem ## URL completa de la información de la versión, comenzando con http://
Rem ## Ejemplo: http://localhost/software/Version.htm
VersiónUrl = ""
Rem ## URL de actualización, que comienza con http:// y termina con /
Rem ## Ejemplo: http://localhost/software/
Actualización de URL = ""
Rem ## Directorio de actualización local, que comienza con / y termina con /. Comenzando con / es para actualizar el sitio actual.
Rem ## El programa comprobará si el directorio existe. Si no existe, se creará automáticamente.
UpdateLocalPath = "/"
Rem ## Archivo de historial de software generado
UrlHistory = "historia.htm"
Rem ## Último mensaje de aviso
Información = ""
Rem ## Versión actual
Versión local = "1.0.0"
Rem ## última versión
Última versión = "1.0.0"
Rem ## El nombre del sufijo de cada archivo de información de versión.
Tipo de archivo = ".asp"
Subtítulo final
Rem ############################################### ## ##############
Rem ############################################### ## ##############
Subclase privada_Terminate()
Subtítulo final
Rem ############################################### ## ##############
Rem ## Realizar acción de actualización
Rem ############################################### ## ##############
Función pública doUpdate()
actualizar = falso
VersiónUrl = Recortar(VersiónUrl)
Actualización de URL = Recortar (Actualización de URL)
Rem ## Actualizar detección de URL
Si (Left(UrlVersion, 7) <> " http://"<IMG SRC="smile/05.gif"> O (Left(UrlUpdate, 7) <> " http://"<IMG SRC="smile /05.gif">Entonces
Info = "La URL de detección de versión está vacía, la URL de actualización está vacía o tiene el formato incorrecto (#1)"
Función de salida
Terminar si
Si es correcto (UrlUpdate, 1) <> "/" Entonces
sstrUrlUpdate = Actualización de URL & "/"
Demás
sstrUrlUpdate = Actualización de URL
Terminar si
Si es correcto (UpdateLocalPath, 1) <> "/" Entonces
sstrUrlLocal = UpdateLocalPath & "/"
Demás
sstrUrlLocal = ActualizarRutaLocal
Terminar si
Rem ## Información de la versión actual (número)
sstrLocalVersion = Versión Local
sintLocalVersion = Reemplazar(sstrLocalVersion, ".", ""<IMG SRC="smile/05.gif">
sintLocalVersion = toNum(sintLocalVersion, 0)
Rem ## Detección de versión (inicializa la información de la versión y compara)
Si es IsLastVersion, entonces salga de la función
Rem ## Iniciar actualización
doUpdate = AhoraActualizar()
ÚltimaVersión = sstrLocalVersion
Función final
Rem ############################################### ## ##############
Rem ## Comprueba si es la última versión.
Rem ############################################### ## ##############
Función privada IsLastVersion()
Rem ## Inicializar información de versión (inicializar matriz sarrVersionList)
Si iniVersionList Entonces
Rem ## Si tiene éxito, compare versiones
Yo tenue
EsLastVersion = Verdadero
Para i = 0 a UBound(sarrVersionList)
Si sarrVersionList(i) > sintLocalVersion Entonces
Rem ## Si existe la última versión, salga del bucle.
EsLastVersion = Falso
Info = "¡Ya la última versión!"
Salir por
Terminar si
Próximo
Demás
Rem ## De lo contrario, devolverá un mensaje de error
EsLastVersion = Verdadero
Info = "¡Error al obtener información de la versión!(#2)"
Terminar si
Función final
Rem ############################################### ## ##############
Rem ## Comprueba si es la última versión.
Rem ############################################### ## ##############
Función privada iniVersionList()
iniVersionList = Falso
Dim strVersión
strVersion = getVersionList()
Rem ## Si el valor de retorno está vacío, la inicialización falla.
Si strVersion = "" Entonces
Información = "Error..."
Función de salida
Terminar si
sstrVersionList = Reemplazar(strVersion, " ", ""<IMG SRC="smile/05.gif">
sarrVersionList = Dividir(sstrVersionList, vbCrLf)
iniVersionList = Verdadero
Función final
Rem ############################################### ## ##############
Rem ## Comprueba si es la última versión.
Rem ############################################### ## ##############
Función privada getVersionList()
getVersionList = ObtenerContenido(UrlVersion)
Función final
Rem ############################################### ## ##############
Rem ## Iniciar actualización
Rem ############################################### ## ##############
Función privada NowUpdate()
Yo tenue
Para i = UBound(sarrVersionList) a 0 paso -1
Llame a doUpdateVersion(sarrVersionList(i))
Próximo
Info = "¡Actualización completada! <a href=""" & sstrUrlLocal & UrlHistory & """>Ver</a>"
Función final
Rem ############################################### ## ##############
Rem ## Contenido de la versión actualizada
Rem ############################################### ## ##############
Función privada doUpdateVersion(strVer)
doUpdateVersion = Falso
IntVer tenue
intVer = toNum(Replace(strVer, ".", ""<IMG SRC="smile/05.gif">, 0)
Rem ## Si la versión actualizada es más pequeña que la versión actual, salga de la actualización
Si intVer <= sintLocalVersion Entonces
Función de salida
Terminar si
Dim strFileListContent, arrFileList, strUrlUpdate
strUrlUpdate = sstrUrlUpdate & intVer & FileType
strFileListContent = ObtenerContenido(strUrlUpdate)
Si strFileListContent = "" Entonces
Función de salida
Terminar si
Rem ## Actualizar el número de versión actual
sintLocalVersion = intVer
sstrLocalVersion = strVer
Dim i, arrTmp
Rem ## Obtener lista de archivos de actualización
arrFileList = Dividir(strFileListContent, vbCrLf)
Rem ## Actualizar registro
sstrLogContent = ""
sstrLogContent = sstrLogContent & strVer & ":" & vbCrLf
Rem ## Iniciar actualización
Para i = 0 a UBound(arrFileList)
Rem ## Formato de actualización: número de versión/archivo.htm|archivo de destino
arrTmp = Split(arrFileList(i), "|"<IMG SRC="smile/05.gif">
sstrLogContent = sstrLogContent y vbTab y arrTmp(1)
Llame a doUpdateFile(intVer & "/" & arrTmp(0), arrTmp(1))
Próximo
Rem ## Escribir en el archivo de registro
sstrLogContent = sstrLogContent & Ahora() & vbCrLf
respuesta.Write("<pre>" & sstrLogContent & "</pre>"<IMG SRC="smile/05.gif">
Llame a sDoCreateFile(Server.MapPath(sstrUrlLocal & "Log" & intVer & ".htm"<IMG SRC="smile/05.gif">, _ "<pre>" & sstrLogContent & "</pre>"<IMG SRC ="sonrisa/05.gif">
Llame a sDoAppendFile(Server.MapPath(sstrUrlLocal & UrlHistory), "<pre>" & _ strVer & "_______" & Now() & "</pre>" & vbCrLf)
Función final
Rem ############################################### ## ##############
Rem ## actualizar archivo
Rem ############################################### ## ##############
Función privada doUpdateFile(strSourceFile, strTargetFile)
Dim strContenido
strContent = ObtenerContenido(sstrUrlUpdate & strSourceFile)
Rem ## Actualizar y escribir en el registro
Si sDoCreateFile(Server.MapPath(sstrUrlLocal & strTargetFile), strContent) Entonces
sstrLogContent = sstrLogContent & "Éxito" & vbCrLf
Demás
sstrLogContent = sstrLogContent y "Error" y vbCrLf
Terminar si
Función final
Rem ############################################### ## ##############
Rem ## Obtener contenido de forma remota
Rem ############################################### ## ##############
Función privada GetContent(strUrl)
Obtener contenido = ""
Dim oXhttp, strContent
Establecer oXhttp = Server.CreateObject("Microsoft.XMLHTTP"<IMG SRC="smile/05.gif">
'En caso de error, reanudar siguiente
Con oXhttp
.Abrir "GET", strUrl, False, "", ""
.Enviar
Si .readystate <> 4 Entonces salga de la función
strContenido = .Responsebody
strContenido = sBytesToBstr(strContenido)
Terminar con
Establecer oXhttp = Nada
Si Número de error <> 0 Entonces
respuesta.Escribir(Err.Descripción)
Err.Borrar
Función de salida
Terminar si
ObtenerContenido = strContenido
Función final
Rem ############################################### ## ##############
Rem ############################################### ## ##############
Rem ## Conversión de codificación binaria => cadena
Función privada sBytesToBstr(vIn)
dimobjStream
establecer objStream = Server.CreateObject("adodb.stream"<IMG SRC="smile/05.gif">
objStream.Tipo = 1
objStream.Modo = 3
objStream.Open
objStream.Escribir vIn
objStream.Posición = 0
objStream.Tipo = 2
objStream.Charset = "GB2312"
sBytesToBstr = objStream.ReadText
objStream.Cerrar
establecer objStream = nada
Función final
Rem ############################################### ## ##############
Rem ############################################### ## ##############
Rem ## Conversión de codificación binaria => cadena
Función privada sDoCreateFile(strFileName, ByRef strContent)
sDoCreateFile = Falso
Dim strPath
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Verifique la validez de la ruta y el nombre del archivo
Si no (CreateDir (strPath)) entonces salga de la función
'Si no (CheckFileName(strFileName)) entonces salga de la función
'respuesta.Escribir(strFileName)
Const para leer = 1, para escribir = 2, para agregar = 8
tenue fso, f
Establecer fso = CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
Establecer f = fso.OpenTextFile(strFileName, ForWriting, True)
f.Escribir strContent
f.Cerrar
Establecer fso = nada
Establecer f = nada
sDoCreateFile = Verdadero
Función final
Rem ############################################### ## ##############
Rem ############################################### ## ##############
Rem ## Conversión de codificación binaria => cadena
Función privada sDoAppendFile(strFileName, ByRef strContent)
sDoAppendFile = Falso
Dim strPath
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Verifique la validez de la ruta y el nombre del archivo
Si no (CreateDir (strPath)) entonces salga de la función
'Si no (CheckFileName(strFileName)) entonces salga de la función
'respuesta.Escribir(strFileName)
Const para leer = 1, para escribir = 2, para agregar = 8
tenue fso, f
Establecer fso = CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
Establecer f = fso.OpenTextFile(strFileName, ForAppending, True)
f.Escribir strContent
f.Cerrar
Establecer fso = nada
Establecer f = nada
sDoAppendFile = Verdadero
Función final
Rem ############################################### ## ##############
Rem ## Programa para crear un directorio. Si hay varios niveles de directorios, créelos uno por uno.
Rem ############################################### ## ##############
Función privada CreateDir (ByVal strLocalPath)
Dim i, strPath, objFolder, tmpPath, tmptPath
Dim arrPathList, intLevel
'En caso de error, reanudar siguiente
strPath = Reemplazar(strLocalPath, "", "/"<IMG SRC="smile/05.gif">
Establecer objFolder = server.CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
arrPathList = Split(strPath, "/"<IMG SRC="smile/05.gif">
intNivel = UBound(arrPathList)
Para I = 0 Para intLevel
Si yo = 0 entonces
tmptPath = arrPathList(0) & "/"
Demás
tmptPath = tmptPath & arrPathList(I) & "/"
Terminar si
tmpPath = Izquierda(tmptPath, Len(tmptPath) - 1)
Si no es objFolder.FolderExists (tmpPath), entonces objFolder.CreateFolder tmpPath
Próximo
Establecer objFolder = Nada
Si Número de error <> 0 Entonces
CrearDir = Falso
Err.Borrar
Demás
CrearDir = Verdadero
Terminar si
Función final
Rem ############################################### ## ##############
Rem ## conversión de entero largo
Rem ############################################### ## ##############
Función privada paraNum(s, predeterminado)
Si IsNumeric(s) y s <> "" entonces
toNum = CLng(s)
Demás
toNum = predeterminado
Terminar si
Función final
Rem ############################################### ## ##############
Fin de clase
Rem ############################################### ## ##################################
%>