●Beschreibung: ASP-Online-Upgrade-Klasse ●Version: 1.0.0
●Autor: Xiao Yuehen (xiaoyuehen)
●MSN: xiaoyuehen(at)msn.com
●Bitte ersetzen Sie (at) durch @●Copyright: Da es geteilt wird, spielt das Urheberrecht keine Rolle. Es muss jedoch auf die Online-Verbreitung beschränkt sein und darf nicht in herkömmlichen Medien verwendet werden!
●Umso dankbarer wäre ich, wenn Sie diese Anleitung behalten könnten!
●Wenn Sie eine bessere Codeoptimierung und damit verbundene Verbesserungen haben, teilen Sie mir dies bitte mit. Vielen Dank!
●Ideen:
1. Versionsliste abfragen => 2. Versionsunterschiede vergleichen => 3. Update-Liste der nächsthöheren Version abrufen, falls keine höhere Version vorhanden, weiter zu Schritt 5 => 4. Update => zurück zu Schritt 3
5. Beenden Sie das Update. ●Weitere Anweisungen: Inkrementelles Upgrade.
●Off-Topic: Es hat insgesamt etwa 7 Stunden gedauert, und der Code war nicht ausreichend verfeinert. Beim lokalen Testen dauerte es fast 1 Sekunde, um zwei Versionen und insgesamt 4 Dateien zu aktualisieren.
Ich habe noch nie etwas Ähnliches gemacht, daher kann ich nicht über einen Algorithmus sprechen, der es getan hat. Bitte teilen Sie mir Ihre Meinung mit.
●Dieser Code dient der Kommunikation untereinander.●
●Bevor Sie beginnen, lesen Sie bitte die folgenden Anweisungen sorgfältig durch.
●Serverseitige Anforderungen:
1. Site Manager: Sie können über die URL-Adresse auf die Version und zugehörige Upgrade-Informationen zugreifen.
2. Versionsinformationsdatei, z. B. Version.asp
3. Jedes Versionsverzeichnis muss sich unter dem durch UrlUpdate angegebenen Verzeichnis befinden (siehe Beschreibung unten).
Wenn die Version 1.0.8 ist, muss sich die Upgrade-Datei dieser Version unter http://Localhost/__Jxc/Update/108/ befinden.
4. Die von den Versionsinformationen zurückgegebenen Informationen sind eine Liste. Jede Zeile stellt eine Versionsinformation dar (keine Leerzeilen sind zulässig), und die höhere Version steht oben. Das Format ist wie folgt:
1.1.0
1.0.8
1.0.0
5. Das Dateiaktualisierungsinformationsformat einer bestimmten Version besteht darin, die Nummer nach der Nummer + Dateityp zu entfernen (siehe Beschreibung unten) und sie unter UrlUpdate zu platzieren, z. B.: http://Localhost/__Jxc/Update/110.asp . und sein Inhaltsformat ist wie folgt:
3.htm|Test/Test/3.asp
4.htm|Test/Test/4.asp
5.htm|Test/5.asp
6.htm|Test/6.asp
Trennen Sie die Quelldatei und die Zieldatei mit |. Die Quelldatei wird aus dem entsprechenden Versionsverzeichnis gelesen, wie oben gezeigt, die entsprechende Adresse sollte 3.htm sein
http://Localhost/__Jxc/Update/110/3.htm
Wenn UpdateLocalPath = „/“, ist das entsprechende Aktualisierungsziel von Test/Test/3.asp /Test/Test/3.asp. Während des Aktualisierungsvorgangs erstellt das Programm automatisch ein nicht vorhandenes Verzeichnis.
Und überschreiben Sie die Zieldatei.
●Client-Anforderungen:
IIS 5.0 oder höher
FSO-Unterstützung (zum Generieren von Dateien)
Adodb.Stream-Unterstützung (zur Kodierungskonvertierung)
Microsoft.XMLHTTP-Unterstützung (zum Fernabruf von Informationen)
●Attribute:
Info Holen Sie sich die letzten Informationen während des Upgrade-Vorgangs ●Parameterbeschreibung:
UrlVersion ●Erforderlich● Vollständige URL der Versionsinformationen, beginnend mit http://
URLUpdate ●Erforderlich● Upgrade-URL, beginnend mit http:// und endend mit /
UpdateLocalPath ●Erforderlich● Lokales Update-Verzeichnis, beginnend mit /, dient zum Aktualisieren der aktuellen Site ●Standardwert● /.
UrlHistory ●Erforderlich● Dateiname der generierten Software-Verlaufsdatei
LocalVersion ●Erforderlich● Aktuelle Versionsinformationen ●Standardwert● 1.0.0
Dateityp ●Erforderlich● Versionsinformationssuffix ●Standardwert● .asp
●Methodenbeschreibung:
doUpdate-Upgrade
Nachdem die relevanten Parameter festgelegt wurden, können Sie die Langebene auf diese Weise starten. ●Weitere Anweisungen: Die Versionsnummer muss aus den Zahlen 0-9 und . bestehen und die erste Ziffer darf nicht kleiner als 1 sein. Die Länge jeder Version Die Nummer muss gleich sein. Zum Beispiel 1.0 .0 und 1.2.2 oder 1.2.04 und 1.2.78
●Beispiel:
Programmcode
<!--#include file="../__Inc/Cls_OnlineUpdate.asp"-->
<%
ObjUpdate dimmen
Setze objUpdate = New Cls_oUpdate
Mit objUpdate
.UrlVersion = " http://Localhost/__Jxc/Update/Version.asp "
.UrlUpdate = " http://Localhost/__Jxc/Update/ "
.UpdateLocalPath = "/"
.LocalVersion = "1.0.0"
.doUpdate
Antwort.Write(.Info)
Ende mit
Setze objUpdate = Nothing
%>
Klassendateien:
Programmcode
<%
Rem ############################################# ################################
Rem ## Online-Upgrade-Klassenanweisung
Klasse Cls_oUpdate
Rem ############################################# ##############
Rem ## Beschreibung: ASP-Online-Upgrade-Klasse
Rem ## Version: 1.0.0
Rem ## Autor: Xiao Yuehen
Rem ## MSN: xiaoyuehen(at)msn.com
Rem ## Bitte ersetzen Sie (at) durch @
Rem ## Urheberrecht: Da es geteilt wird, besteht kein Urheberrecht. Es muss jedoch auf die Online-Verbreitung beschränkt sein und darf nicht in herkömmlichen Medien verwendet werden!
Rem ## Wenn Sie diese Anleitung behalten können, wäre ich noch dankbarer!
Rem ## Wenn Sie eine bessere Codeoptimierung und damit verbundene Verbesserungen haben, denken Sie bitte daran, es mir mitzuteilen. Vielen Dank!
Rem ############################################# ##############
Öffentliche LocalVersion, LastVersion, FileType
Öffentliche UrlVersion, UrlUpdate, UpdateLocalPath, Info
Öffentlicher URL-Verlauf
Private sstrVersionList, sarrVersionList, sintLocalVersion, sstrLocalVersion
Privat sstrLogContent, sstrHistoryContent, sstrUrlUpdate, sstrUrlLocal
Rem ############################################# ##############
Private Sub Class_Initialize()
Rem ## Vollständige URL der Versionsinformationen, beginnend mit http://
Rem ## Beispiel: http://localhost/software/Version.htm
UrlVersion = ""
Rem ## Upgrade-URL, beginnend mit http:// und endend mit /
Rem ## Beispiel: http://localhost/software/
URLUpdate = ""
Rem ## Lokales Update-Verzeichnis, beginnend mit / und endend mit /, dient zum Verhindern des Schreibens in andere Verzeichnisse.
Rem ## Das Programm prüft, ob das Verzeichnis existiert. Wenn es nicht existiert, wird es automatisch erstellt.
UpdateLocalPath = "/"
Rem ## Erstellte Software-Verlaufsdatei
UrlHistory = "history.htm"
Rem ## Letzte Aufforderungsnachricht
Info = ""
Rem ## Aktuelle Version
LocalVersion = „1.0.0“
Rem ## neueste Version
LastVersion = „1.0.0“
Rem ## Der Suffixname jeder Versionsinformationsdatei
FileType = „.asp“
Sub beenden
Rem ############################################# ##############
Rem ############################################# ##############
Private Sub Class_Terminate()
Sub beenden
Rem ############################################# ##############
Rem ## Upgrade-Aktion durchführen
Rem ############################################# ##############
Öffentliche Funktion doUpdate()
doUpdate = Falsch
UrlVersion = Trim(UrlVersion)
UrlUpdate = Trim(UrlUpdate)
Rem ## URL-Erkennung aktualisieren
Wenn (Left(UrlVersion, 7) <> "http://") oder (Left(UrlUpdate, 7) <> "http://") Dann
Info = „Die Versionserkennungs-URL ist leer, die Upgrade-URL ist leer oder hat das falsche Format (#1)“
Exit-Funktion
Ende wenn
Wenn Right(UrlUpdate, 1) <> "/" Dann
sstrUrlUpdate = UrlUpdate & "/"
Anders
sstrUrlUpdate = UrlUpdate
Ende wenn
Wenn Right(UpdateLocalPath, 1) <> "/" Dann
sstrUrlLocal = UpdateLocalPath & "/"
Anders
sstrUrlLocal = UpdateLocalPath
Ende wenn
Rem ## Aktuelle Versionsinformationen (Nummer)
sstrLocalVersion = LocalVersion
sintLocalVersion = Ersetzen(sstrLocalVersion, „.“, „“)
sintLocalVersion = toNum(sintLocalVersion, 0)
Rem ## Versionserkennung (Versionsinformationen initialisieren und vergleichen)
Wenn IsLastVersion, dann Funktion beenden
Rem ## Starten Sie das Upgrade
doUpdate = NowUpdate()
LastVersion = sstrLocalVersion
Funktion beenden
Rem ############################################# ##############
http://bizhi.downcodes.com/
Rem ## Überprüfen Sie, ob es sich um die neueste Version handelt
Rem ############################################# ##############
Private Funktion IsLastVersion()
Rem ## Versionsinformationen initialisieren (sarrVersionList-Array initialisieren)
Wenn iniVersionList Dann
Rem ## Bei Erfolg Versionen vergleichen
Dim ich
IsLastVersion = True
Für i = 0 bis UBound(sarrVersionList)
Wenn sarrVersionList(i) > sintLocalVersion Dann
Rem ## Wenn es die neueste Version gibt, verlassen Sie die Schleife
IsLastVersion = False
Info = „Bereits die neueste Version!“
Ausgang für
Ende wenn
Nächste
Anders
Rem ## Andernfalls wird eine Fehlermeldung zurückgegeben
IsLastVersion = True
Info = „Fehler beim Abrufen der Versionsinformationen!(#2)“
Ende wenn
Funktion beenden
Rem ############################################# ##############
Rem ## Überprüfen Sie, ob es sich um die neueste Version handelt
Rem ############################################# ##############
Private Funktion iniVersionList()
iniVersionList = False
Dimmen Sie strVersion
strVersion = getVersionList()
Rem ## Wenn der Rückgabewert leer ist, schlägt die Initialisierung fehl.
Wenn strVersion = "" Dann
Info = „Fehler......“
Exit-Funktion
Ende wenn
sstrVersionList = Ersetzen(strVersion, " ", "")
sarrVersionList = Split(sstrVersionList, vbCrLf)
iniVersionList = True
Funktion beenden
Rem ############################################# ##############
Rem ## Überprüfen Sie, ob es sich um die neueste Version handelt
Rem ############################################# ##############
Private Funktion getVersionList()
getVersionList = GetContent(UrlVersion)
Funktion beenden
Rem ############################################# ##############
Rem ## Starten Sie die Aktualisierung
Rem ############################################# ##############
Private Funktion NowUpdate()
Dim ich
Für i = UBound(sarrVersionList) bis 0 Schritt -1
Rufen Sie doUpdateVersion(sarrVersionList(i)) auf.
Nächste
Info = „Upgrade abgeschlossen! <a href=""" & sstrUrlLocal & UrlHistory & """>Anzeigen</a>"
Funktion beenden
Rem ############################################# ##############
http://qqface.downcodes.com/
Rem ## Aktualisierter Versionsinhalt
Rem ############################################# ##############
Private Funktion doUpdateVersion(strVer)
doUpdateVersion = False
Dim intVer
intVer = toNum(Replace(strVer, ".", ""), 0)
Rem ## Wenn die aktualisierte Version kleiner als die aktuelle Version ist, beenden Sie das Update
Wenn intVer <= sintLocalVersion Dann
Exit-Funktion
Ende wenn
Dimmen Sie strFileListContent, arrFileList, strUrlUpdate
strUrlUpdate = sstrUrlUpdate & intVer & FileType
strFileListContent = GetContent(strUrlUpdate)
Wenn strFileListContent = "" Dann
Exit-Funktion
Ende wenn
Rem ## Aktualisiert die aktuelle Versionsnummer
sintLocalVersion = intVer
sstrLocalVersion = strVer
Dim i, arrTmp
Rem ## Update-Dateiliste abrufen
arrFileList = Split(strFileListContent, vbCrLf)
Rem ## Protokoll aktualisieren
sstrLogContent = ""
sstrLogContent = sstrLogContent & strVer & ":" & vbCrLf
Rem ## Starten Sie die Aktualisierung
Für i = 0 bis UBound(arrFileList)
Rem ## Update-Format: Versionsnummer/Datei.htm|Zieldatei
arrTmp = Split(arrFileList(i), "|")
sstrLogContent = sstrLogContent & vbTab & arrTmp(1)
Rufen Sie doUpdateFile(intVer & "/" & arrTmp(0), arrTmp(1)) auf.
Nächste
Rem ## In Protokolldatei schreiben
sstrLogContent = sstrLogContent & Now() & vbCrLf
Response.Write("<pre>" & sstrLogContent & "</pre>")
Call sDoCreateFile(Server.MapPath(sstrUrlLocal & "Log" & intVer & ".htm"), _
„<pre>“ & sstrLogContent & „</pre>“)
Rufen Sie sDoAppendFile(Server.MapPath(sstrUrlLocal & UrlHistory), "<pre>" & _ auf
strVer & "_______" & Now() & "</pre>" & vbCrLf)
Funktion beenden
Rem ############################################# ##############
Rem ## Update-Datei
Rem ############################################# ##############
Private Funktion doUpdateFile(strSourceFile, strTargetFile)
Dim strContent
strContent = GetContent(sstrUrlUpdate & strSourceFile)
Rem ## Aktualisieren und in das Protokoll schreiben
Wenn sDoCreateFile(Server.MapPath(sstrUrlLocal & strTargetFile), strContent) Dann
sstrLogContent = sstrLogContent & "Erfolg" & vbCrLf
Anders
sstrLogContent = sstrLogContent & „Fehlgeschlagen“ & vbCrLf
Ende wenn
Funktion beenden
Rem ############################################# ##############
Rem ## Inhalte aus der Ferne abrufen
Rem ############################################# ##############
Private Funktion GetContent(strUrl)
GetContent = ""
Dim oXhttp, strContent
Setze oXhttp = Server.CreateObject("Microsoft.XMLHTTP")
„Bei Fehler Weiter fortsetzen.“
Mit oXhttp
.Öffnen Sie „GET“, strUrl, False, „“, „“
.Schicken
Wenn .readystate <> 4, dann Funktion beenden
strContent = .Responsebody
strContent = sBytesToBstr(strContent)
Ende mit
Setze oXhttp = Nichts
Wenn Err.Number <> 0, dann
Antwort.Write(Err.Description)
Err.Clear
Exit-Funktion
Ende wenn
GetContent = strContent
Funktion beenden
Rem ############################################# ##############
Rem ############################################# ##############
Rem ## Kodierungskonvertierung binär => Zeichenfolge
Private Funktion sBytesToBstr(vIn)
dimobjStream
set objStream = Server.CreateObject("adodb.stream")
objStream.Type = 1
objStream.Mode = 3
objStream.Open
objStream.Write vIn
objStream.Position = 0
objStream.Type = 2
objStream.Charset = "GB2312"
sBytesToBstr = objStream.ReadText
objStream.Close
set objStream = nichts
Funktion beenden
Rem ############################################# ##############
Rem ############################################# ##############
Rem ## Kodierungskonvertierung binär => Zeichenfolge
Private Funktion sDoCreateFile(strFileName, ByRef strContent)
sDoCreateFile = False
Dimmen Sie strPath
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Überprüfen Sie die Gültigkeit von Pfad und Dateiname
Wenn nicht (CreateDir(strPath)), dann Funktion beenden
'If Not(CheckFileName(strFileName)) Then Exit function
'response.Write(strFileName)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Setze fso = CreateObject("Scripting.FileSystemObject")
Setze f = fso.OpenTextFile(strFileName, ForWriting, True)
f. Schreiben Sie strContent
f.Schließen
Setze fso = nichts
Setze f = nichts
sDoCreateFile = True
Funktion beenden
Rem ############################################# ##############
Rem ############################################# ##############
Rem ## Kodierungskonvertierung binär => Zeichenfolge
Private Funktion sDoAppendFile(strFileName, ByRef strContent)
sDoAppendFile = False
Dimmen Sie strPath
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Überprüfen Sie die Gültigkeit von Pfad und Dateiname
Wenn nicht (CreateDir(strPath)), dann Funktion beenden
'If Not(CheckFileName(strFileName)) Then Exit function
'response.Write(strFileName)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Setze fso = CreateObject("Scripting.FileSystemObject")
Setze f = fso.OpenTextFile(strFileName, ForAppending, True)
f. Schreiben Sie strContent
f.Schließen
Setze fso = nichts
Setze f = nichts
sDoAppendFile = True
Funktion beenden
Rem ############################################# ##############
Rem ## Programm zum Erstellen eines Verzeichnisses. Wenn es mehrere Verzeichnisebenen gibt, erstellen Sie diese nacheinander.
Rem ############################################# ##############
Private Funktion CreateDir(ByVal strLocalPath)
Dim i, strPath, objFolder, tmpPath, tmptPath
Dimmen Sie arrPathList, intLevel
„Bei Fehler Weiter fortsetzen.“
strPath = Ersetzen(strLocalPath, „“, „/“)
Setze objFolder = server.CreateObject("Scripting.FileSystemObject")
arrPathList = Split(strPath, "/")
intLevel = UBound(arrPathList)
Für I = 0 bis intLevel
Wenn I = 0, dann
tmptPath = arrPathList(0) & "/"
Anders
tmptPath = tmptPath & arrPathList(I) & "/"
Ende wenn
tmpPath = Left(tmptPath, Len(tmptPath) - 1)
Wenn nicht objFolder.FolderExists(tmpPath), dann objFolder.CreateFolder tmpPath
Nächste
Setze objFolder = Nothing
Wenn Err.Number <> 0, dann
CreateDir = False
Err.Clear
Anders
CreateDir = True
Ende wenn
Funktion beenden
Rem ############################################# ##############
Rem ## Long-Integer-Konvertierung
Rem ############################################# ##############
Private Funktion toNum(s, Standard)
Wenn IsNumeric(s) und s <> "", dann
toNum = CLng(s)
Anders
toNum = Standard
Ende wenn
Funktion beenden
Rem ############################################# ##############
Unterricht beenden
Rem ############################################# ################################
%>