فئة ترقية ASP عبر الإنترنت
الكاتب:Eve Cole
وقت التحديث:2009-06-26 18:09:15
<%
ريم ######################################################################################### ######################################################################################
Rem ## بيان فئة الترقية عبر الإنترنت
فئة Cls_oUpdate
ريم ######################################################################################### ##############
Rem ## الوصف: فئة ترقية ASP عبر الإنترنت
ريم ## الإصدار: 1.0.0
ريم ## المؤلف: شياو يويهين
ريم ## MSN: xiaoyuehen(at)msn.com
Rem ## يرجى استبدال (at) بـ @
Rem ## حقوق الطبع والنشر: نظرًا لأنه مشترك، فلا توجد حقوق طبع ونشر ولكن يجب أن يقتصر على النشر عبر الإنترنت ولا يمكن استخدامه في الوسائط التقليدية!
Rem ## إذا كان بإمكانك الالتزام بهذه التعليمات، سأكون ممتنًا أكثر!
Rem ## إذا كان لديك تحسين أفضل للكود والتحسينات ذات الصلة، فيرجى تذكر أن تخبرني، شكرًا جزيلاً لك!
ريم ######################################################################################### ##############
الإصدار المحلي العام، الإصدار الأخير، نوع الملف
UrlVersion العام، UrlUpdate، UpdateLocalPath، معلومات
تاريخ URL العام
sstrVersionList الخاصة، sarrVersionList، sintLocalVersion، sstrLocalVersion
خاص sstrLogContent، sstrHistoryContent، sstrUrlUpdate، sstrUrlLocal
ريم ######################################################################################### ##############
فئة فرعية خاصة_Initialize()
Rem ## عنوان URL الكامل لمعلومات الإصدار، بدءًا من http://
Rem ## مثال: http://localhost/software/Version.htm
URLVersion = ""
Rem ## ترقية عنوان URL، الذي يبدأ بـ http:// وينتهي بـ /
Rem ## مثال: http://localhost/software/
تحديث URL = ""
Rem ## دليل التحديث المحلي، الذي يبدأ بـ / وينتهي بـ /. البدء بـ / مخصص لتحديث الموقع الحالي.
Rem ## سيتحقق البرنامج من وجود الدليل، وإذا لم يكن موجودًا، فسيتم إنشاؤه تلقائيًا.
أوبديتلوكالباث = "/"
Rem ## تم إنشاء ملف محفوظات البرنامج
UrlHistory = "history.htm"
Rem ## آخر رسالة سريعة
معلومات = ""
ريم ## الإصدار الحالي
الإصدار المحلي = "1.0.0"
ريم ## أحدث إصدار
الإصدار الأخير = "1.0.0"
Rem ## اسم اللاحقة لكل ملف معلومات الإصدار
نوع الملف = ".asp"
نهاية الفرعية
ريم ######################################################################################### ##############
ريم ######################################################################################### ##############
فئة فرعية خاصة_Terminate()
نهاية الفرعية
ريم ######################################################################################### ##############
Rem ## تنفيذ إجراء الترقية
ريم ######################################################################################### ##############
الوظيفة العامة doUpdate()
تحديث = خطأ
UrlVersion = Trim(UrlVersion)
UrlUpdate = تقليم(UrlUpdate)
Rem ## ترقية الكشف عن عنوان URL
إذا (Left(UrlVersion, 7) <> " http://"<IMG SRC="smile/05.gif"> أو (Left(UrlUpdate, 7) <> " http://"<IMG SRC="smile /05.gif">ثم
معلومات = "عنوان URL للكشف عن الإصدار فارغ، أو عنوان URL للترقية فارغ أو يحتوي على تنسيق خاطئ (#1)"
وظيفة الخروج
نهاية إذا
إذا كان Right(UrlUpdate, 1) <> "/" إذن
sstrUrlUpdate = UrlUpdate & "/"
آخر
sstrUrlUpdate = UrlUpdate
نهاية إذا
إذا كان Right(UpdateLocalPath, 1) <> "/" إذن
sstrUrlLocal = UpdateLocalPath & "/"
آخر
sstrUrlLocal = UpdateLocalPath
نهاية إذا
Rem ## معلومات الإصدار الحالي (الرقم)
sstrLocalVersion = LocalVersion
sintLocalVersion = Replace(sstrLocalVersion, ".", ""<IMG SRC="smile/05.gif">
sintLocalVersion = toNum(sintLocalVersion, 0)
Rem ## الكشف عن الإصدار (تهيئة معلومات الإصدار والمقارنة)
إذا كان IsLastVersion ثم اخرج من الوظيفة
Rem ## ابدأ الترقية
تحديث = NowUpdate()
LastVersion = sstrLocalVersion
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## تحقق مما إذا كان هو الإصدار الأحدث
ريم ######################################################################################### ##############
الوظيفة الخاصة IsLastVersion()
Rem ## تهيئة معلومات الإصدار (تهيئة مجموعة sarrVersionList)
إذا كان iniVersionList ثم
Rem ## إذا نجحت، قارن الإصدارات
خافت ط
IsLastVersion = صحيح
لأني = 0 إلى UBound(sarrVersionList)
إذا كان sarrVersionList(i)> sintLocalVersion ثم
Rem ## إذا كان هناك الإصدار الأحدث، فاخرج من الحلقة
IsLastVersion = خطأ
معلومات = "بالفعل أحدث إصدار!"
الخروج ل
نهاية إذا
التالي
آخر
Rem ## وإلا فسيتم إرجاع رسالة خطأ
IsLastVersion = صحيح
معلومات = "حدث خطأ أثناء الحصول على معلومات الإصدار!(#2)"
نهاية إذا
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## تحقق مما إذا كان هو الإصدار الأحدث
ريم ######################################################################################### ##############
وظيفة خاصة iniVersionList()
iniVersionList = خطأ
خافت strVersion
strVersion = getVersionList()
Rem ## إذا كانت القيمة المرجعة فارغة، فستفشل التهيئة.
إذا strVersion = "" إذن
معلومات = "خطأ......"
وظيفة الخروج
نهاية إذا
sstrVersionList = Replace(strVersion, " ", ""<IMG SRC="smile/05.gif">
sarrVersionList = سبليت (sstrVersionList، vbCrLf)
iniVersionList = True
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## تحقق مما إذا كان هو الإصدار الأحدث
ريم ######################################################################################### ##############
وظيفة خاصة getVersionList ()
getVersionList = GetContent(UrlVersion)
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## ابدأ التحديث
ريم ######################################################################################### ##############
وظيفة خاصة NowUpdate()
خافت ط
بالنسبة إلى i = UBound(sarrVersionList) إلى 0 الخطوة -1
استدعاء doUpdateVersion(sarrVersionList(i))
التالي
معلومات = "اكتملت الترقية! <a href=""" & sstrUrlLocal & UrlHistory & """>عرض</a>"
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## محتوى النسخة المحدثة
ريم ######################################################################################### ##############
الوظيفة الخاصة doUpdateVersion(strVer)
doUpdateVersion = خطأ
خافت intVer
intVer = toNum(Replace(strVer, ".", ""<IMG SRC="smile/05.gif">, 0)
Rem ## إذا كان الإصدار المحدث أصغر من الإصدار الحالي، فاخرج من التحديث
إذا كان intVer <= sintLocalVersion ثم
وظيفة الخروج
نهاية إذا
خافت strFileListContent، arrFileList، strUrlUpdate
strUrlUpdate = sstrUrlUpdate & intVer & FileType
strFileListContent = GetContent(strUrlUpdate)
إذا strFileListContent = "" إذن
وظيفة الخروج
نهاية إذا
Rem ## تحديث رقم الإصدار الحالي
sintLocalVersion = intVer
sstrLocalVersion = strVer
خافت أنا، arrTmp
Rem ## احصل على قائمة ملفات التحديث
arrFileList = سبليت (strFileListContent، vbCrLf)
Rem ## سجل التحديث
سسترلوجكونتينت = ""
sstrLogContent = sstrLogContent & strVer & ": " & vbCrLf
Rem ## ابدأ التحديث
لأني = 0 إلى UBound(arrFileList)
Rem ## تنسيق التحديث: رقم الإصدار/file.htm|ملف الوجهة
arrTmp = سبليت(arrFileList(i), "|"<IMG SRC="smile/05.gif">
sstrLogContent = sstrLogContent & vbTab & arrTmp(1)
استدعاء doUpdateFile(intVer & "/" & arrTmp(0), arrTmp(1))
التالي
Rem ## الكتابة إلى ملف السجل
sstrLogContent = sstrLogContent & Now() & vbCrLf
Response.Write("<pre>" & sstrLogContent & "</pre>"<IMG SRC="smile/05.gif">
اتصل بـ sDoCreateFile(Server.MapPath(sstrUrlLocal & "Log" & intVer & ".htm"<IMG SRC="smile/05.gif">, _ "<pre>" & sstrLogContent & "</pre>"<IMG SRC ="smile/05.gif">
اتصل بـ sDoAppendFile(Server.MapPath(sstrUrlLocal & UrlHistory), "<pre>" & _ strVer & "______" & Now() & "</pre>" & vbCrLf)
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## ملف التحديث
ريم ######################################################################################### ##############
وظيفة خاصة doUpdateFile (strSourceFile، strTargetFile)
المحتوى الخافت
strContent = GetContent(sstrUrlUpdate & strSourceFile)
Rem ## قم بالتحديث والكتابة في السجل
إذا كان sDoCreateFile(Server.MapPath(sstrUrlLocal & strTargetFile)، strContent) ثم
sstrLogContent = sstrLogContent و"النجاح" وvbCrLf
آخر
sstrLogContent = sstrLogContent & "فشل" & vbCrLf
نهاية إذا
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## احصل على المحتوى عن بعد
ريم ######################################################################################### ##############
الوظيفة الخاصة GetContent(strUrl)
الحصول على المحتوى = ""
خافت oXhttp، strContent
تعيين oXhttp = Server.CreateObject("Microsoft.XMLHTTP"<IMG SRC="smile/05.gif">
"عند حدوث خطأ في الاستئناف التالي."
مع أوكستتب
.افتح "GET"، strUrl، False، ""، ""
.يرسل
إذا .readystate <> 4 ثم اخرج من الوظيفة
strContent = .Responsebody
strContent = sBytesToBstr(strContent)
نهاية مع
اضبط oXhttp = لا شيء
إذا Err.Number <> 0 ثم
الاستجابة.الكتابة (خطأ.الوصف)
خطأ.واضح
وظيفة الخروج
نهاية إذا
GetContent = strContent
وظيفة النهاية
ريم ######################################################################################### ##############
ريم ######################################################################################### ##############
Rem ## ترميز التحويل الثنائي => string
وظيفة خاصة sBytesToBstr(vIn)
com.dimobjStream
تعيين objStream = Server.CreateObject("adodb.stream"<IMG SRC="smile/05.gif">
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
تعيين objStream = لا شيء
وظيفة النهاية
ريم ######################################################################################### ##############
ريم ######################################################################################### ##############
Rem ## ترميز التحويل الثنائي => string
وظيفة خاصة sDoCreateFile (strFileName، ByRef strContent)
sDoCreateFile = خطأ
مسار خافت
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## التحقق من صحة المسار واسم الملف
إذا لم يكن (CreateDir(strPath)) ثم اخرج من الوظيفة
"إذا لم يكن (CheckFileName (strFileName)) ثم اخرج من الوظيفة
"الاستجابة. الكتابة (strFileName)
Const ForReading = 1، ForWriting = 2، ForAppending = 8
خافت fso، f
تعيين fso = CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
تعيين f = fso.OpenTextFile (strFileName، ForWriting، True)
f.اكتب محتوى strContent
و. إغلاق
تعيين fso = لا شيء
تعيين و = لا شيء
sDoCreateFile = True
وظيفة النهاية
ريم ######################################################################################### ##############
ريم ######################################################################################### ##############
Rem ## ترميز التحويل الثنائي => string
وظيفة خاصة sDoAppendFile (strFileName، ByRef strContent)
sDoAppendFile = خطأ
مسار خافت
strPath = Left(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## التحقق من صحة المسار واسم الملف
إذا لم يكن (CreateDir(strPath)) ثم اخرج من الوظيفة
"إذا لم يكن (CheckFileName (strFileName)) ثم اخرج من الوظيفة
"الاستجابة. الكتابة (strFileName)
Const ForReading = 1، ForWriting = 2، ForAppending = 8
خافت fso، f
تعيين fso = CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
تعيين f = fso.OpenTextFile (strFileName، ForAppending، True)
f.اكتب محتوى strContent
و. إغلاق
تعيين fso = لا شيء
تعيين و = لا شيء
sDoAppendFile = True
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## برنامج لإنشاء دليل إذا كان هناك مستويات متعددة من الأدلة، فقم بإنشائها واحدًا تلو الآخر.
ريم ######################################################################################### ##############
وظيفة خاصة CreateDir (ByVal strLocalPath)
Dim i, strPath, objFolder, tmpPath, tmptPath
خافت arrPathList، intLevel
"عند حدوث خطأ في الاستئناف التالي."
strPath = Replace(strLocalPath, "", "/"<IMG SRC="smile/05.gif">
تعيين objFolder = server.CreateObject("Scripting.FileSystemObject"<IMG SRC="smile/05.gif">
arrPathList = Split(strPath, "/"<IMG SRC="smile/05.gif">
intLevel = UBound(arrPathList)
لأني = 0 إلى intLevel
إذا كنت = 0 ثم
tmptPath = arrPathList(0) & "/"
آخر
tmptPath = tmptPath & arrPathList(I) & "/"
نهاية إذا
tmpPath = اليسار (tmptPath، لين (tmptPath) - 1)
إذا لم يكن objFolder.FolderExists(tmpPath) ثم objFolder.CreateFolder tmpPath
التالي
تعيين objFolder = لا شيء
إذا Err.Number <> 0 ثم
CreateDir = خطأ
خطأ.واضح
آخر
CreateDir = صحيح
نهاية إذا
وظيفة النهاية
ريم ######################################################################################### ##############
Rem ## تحويل عدد صحيح طويل
ريم ######################################################################################### ##############
وظيفة خاصة لعدد (أرقام، افتراضي)
إذا كان IsNumeric(s) وs <> "" إذن
toNum = CLng(s)
آخر
toNum = default
نهاية إذا
وظيفة النهاية
ريم ######################################################################################### ##############
نهاية الفصل
ريم ######################################################################################### ######################################################################################
%>