ASP 온라인 업그레이드 수업
저자:Eve Cole
업데이트 시간:2009-06-26 18:09:15
<%
렘 ########################################## ## ###############################
Rem ## 온라인 업그레이드 클래스 명세서
클래스 Cls_oUpdate
렘 ########################################## ## ##############
Rem ## 설명: ASP 온라인 업그레이드 클래스
렘 ## 버전: 1.0.0
렘 ## 저자: Xiao Yuehen
렘 ## MSN: xiaoyuehen(at)msn.com
Rem ## (at)을 @로 바꿔주세요.
Rem ## 저작권 : 공유되기 때문에 저작권은 없습니다. 단, 온라인 배포에 국한되어야 하며, 기존 매체에서는 사용할 수 없습니다!
렘## 이 지시사항을 지켜주시면 더욱 감사하겠습니다!
렘 ## 더 나은 코드 최적화 및 관련 개선 사항이 있으면 꼭 말씀해 주세요. 정말 감사합니다!
렘 ########################################## ## ##############
공개 LocalVersion, LastVersion, FileType
공개 UrlVersion, UrlUpdate, UpdateLocalPath, 정보
공개 URL 기록
비공개 sstrVersionList, sarrVersionList, sintLocalVersion, sstrLocalVersion
비공개 sstrLogContent, sstrHistoryContent, sstrUrlUpdate, sstrUrlLocal
렘 ########################################## ## ##############
비공개 하위 클래스_Initialize()
Rem ## http://로 시작하는 버전 정보의 전체 URL
Rem ## 예: http://localhost/software/Version.htm
URL버전 = ""
Rem ## http://로 시작하고 /로 끝나는 업그레이드 URL
Rem ## 예: http://localhost/software/
UrlUpdate = ""
Rem ## /로 시작하고 /로 끝나는 로컬 업데이트 디렉터리. /로 시작하는 것은 현재 사이트를 업데이트하는 것을 방지합니다.
Rem ## 프로그램은 디렉토리가 존재하는지 확인합니다. 존재하지 않으면 자동으로 생성됩니다.
UpdateLocalPath = "/"
Rem ## 생성된 소프트웨어 기록 파일
UrlHistory = "history.htm"
Rem ## 마지막 프롬프트 메시지
정보 = ""
Rem ## 현재 버전
로컬버전 = "1.0.0"
Rem ## 최신 버전
마지막 버전 = "1.0.0"
Rem ## 각 버전 정보 파일의 접미사 이름
파일 유형 = ".asp"
서브 끝
렘 ########################################## ## ##############
렘 ########################################## ## ##############
비공개 하위 클래스_Terminate()
서브 끝
렘 ########################################## ## ##############
Rem ## 업그레이드 작업 수행
렘 ########################################## ## ##############
공개 함수 doUpdate()
doUpdate = 거짓
UrlVersion = 트림(UrlVersion)
UrlUpdate = 트림(UrlUpdate)
Rem ## 업그레이드 URL 감지
If (Left(UrlVersion, 7) <> " http://"<IMG SRC="smile/05.gif"> Or (Left(UrlUpdate, 7) <> " http://"<IMG SRC="smile /05.gif">그럼
Info = "버전 감지 URL이 비어 있습니다. 업그레이드 URL이 비어 있거나 형식이 잘못되었습니다(#1)."
종료 기능
종료 조건
If Right(UrlUpdate, 1) <> "/" 그런 다음
sstrUrlUpdate = UrlUpdate & "/"
또 다른
sstrUrlUpdate = UrlUpdate
종료 조건
If Right(UpdateLocalPath, 1) <> "/" 그러면
sstrUrlLocal = UpdateLocalPath & "/"
또 다른
sstrUrlLocal = UpdateLocalPath
종료 조건
Rem ## 현재 버전 정보(번호)
sstrLocalVersion = 로컬 버전
sintLocalVersion = 바꾸기(sstrLocalVersion, ".", ""<IMG SRC="smile/05.gif">
sintLocalVersion = toNum(sintLocalVersion, 0)
Rem ## 버전 감지 (버전 정보 초기화 및 비교)
IsLastVersion인 경우 함수 종료
Rem ## 업그레이드 시작
doUpdate = NowUpdate()
LastVersion = sstrLocalVersion
기능 종료
렘 ########################################## ## ##############
Rem ## 최신버전인지 확인하세요
렘 ########################################## ## ##############
개인 함수 IsLastVersion()
Rem ## 버전 정보 초기화(sarrVersionList 배열 초기화)
iniVersionList가 다음인 경우
Rem ## 성공하면 버전 비교
나는 어둡다
IsLastVersion = 참
i = 0에서 UBound(sarrVersionList)까지
sarrVersionList(i) > sintLocalVersion이면
Rem ## 최신 버전이 있으면 루프를 종료합니다.
IsLastVersion = 거짓
Info = "이미 최신 버전입니다!"
종료 대상
종료 조건
다음
또 다른
Rem ## 그렇지 않으면 오류 메시지를 반환합니다.
IsLastVersion = 참
Info = "버전 정보를 가져오는 중 오류가 발생했습니다!(#2)"
종료 조건
기능 종료
렘 ########################################## ## ##############
Rem ## 최신버전인지 확인하세요
렘 ########################################## ## ##############
개인 함수 iniVersionList()
iniVersionList = 거짓
희미한 strVersion
strVersion = getVersionList()
Rem ## 반환 값이 비어 있으면 초기화가 실패합니다.
strVersion = ""인 경우 다음
정보 = "오류......"
종료 기능
종료 조건
sstrVersionList = 바꾸기(strVersion, " ", ""<IMG SRC="smile/05.gif">
sarrVersionList = 분할(sstrVersionList, vbCrLf)
iniVersionList = 참
기능 종료
렘 ########################################## ## ##############
Rem ## 최신버전인지 확인하세요
렘 ########################################## ## ##############
비공개 함수 getVersionList()
getVersionList = GetContent(UrlVersion)
기능 종료
렘 ########################################## ## ##############
Rem ## 업데이트 시작
렘 ########################################## ## ##############
비공개 함수 NowUpdate()
나는 어둡다
i = UBound(sarrVersionList)의 경우 0 단계 -1
doUpdateVersion(sarrVersionList(i)) 호출
다음
Info = "업그레이드가 완료되었습니다! <a href=""" & sstrUrlLocal & UrlHistory & """>보기</a>"
기능 종료
렘 ########################################## ## ##############
Rem ## 업데이트된 버전 내용
렘 ########################################## ## ##############
비공개 함수 doUpdateVersion(strVer)
doUpdateVersion = 거짓
희미한 내부 버전
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 = sstrLogContent & strVer & ":" & vbCrLf
Rem ## 업데이트 시작
i = 0에서 UBound(arrFileList)까지
Rem ## 업데이트 형식: 버전 번호/file.htm|대상 파일
arrTmp = Split(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 호출 ="미소/05.gif">
sDoAppendFile(Server.MapPath(sstrUrlLocal & UrlHistory), "<pre>" & _ strVer & "_______" & Now() & "</pre>" & vbCrLf)를 호출합니다.
기능 종료
렘 ########################################## ## ##############
Rem ## 업데이트 파일
렘 ########################################## ## ##############
개인 함수 doUpdateFile(strSourceFile, strTargetFile)
희미한 strContent
strContent = GetContent(sstrUrlUpdate & strSourceFile)
Rem ## 업데이트 및 로그에 쓰기
sDoCreateFile(Server.MapPath(sstrUrlLocal & strTargetFile), strContent) 그렇다면
sstrLogContent = sstrLogContent & "성공" & vbCrLf
또 다른
sstrLogContent = sstrLogContent & "실패" & vbCrLf
종료 조건
기능 종료
렘 ########################################## ## ##############
Rem ## 원격으로 콘텐츠 가져오기
렘 ########################################## ## ##############
비공개 함수 GetContent(strUrl)
GetContent = ""
Dim oXhttp, strContent
oXhttp = Server.CreateObject("Microsoft.XMLHTTP"<IMG SRC="smile/05.gif"> 설정
'오류 발생 시 다음 재개
oXhttp를 사용하면
.Open "GET", strUrl, False, "", ""
.보내다
.readystate <> 4이면 함수 종료
strContent = .Responsebody
strContent = sBytesToBstr(strContent)
끝
oXhttp = 없음으로 설정
Err.Number <> 0이면
응답.쓰기(Err.설명)
Err.Clear
종료 기능
종료 조건
GetContent = strContent
기능 종료
렘 ########################################## ## ##############
렘 ########################################## ## ##############
Rem ## 인코딩 변환 바이너리 => 문자열
개인 함수 sBytesToBstr(vIn)
dimobj스트림
set 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 ## 인코딩 변환 바이너리 => 문자열
개인 함수 sDoCreateFile(strFileName, ByRef strContent)
sDoCreateFile = 거짓
희미한 strPath
strPath = 왼쪽(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## 경로 및 파일 이름의 유효성을 확인하십시오.
If Not(CreateDir(strPath)) Then 함수 종료
'If Not(CheckFileName(strFileName)) Then 종료 함수
'응답.쓰기(str파일이름)
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 쓰기
f.닫기
fso = 아무것도 설정하지 않음
f = 없음으로 설정
sDoCreateFile = 참
기능 종료
렘 ########################################## ## ##############
렘 ########################################## ## ##############
Rem ## 인코딩 변환 바이너리 => 문자열
개인 함수 sDoAppendFile(strFileName, ByRef strContent)
sDoAppendFile = 거짓
희미한 strPath
strPath = 왼쪽(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## 경로 및 파일 이름의 유효성을 확인하십시오.
If Not(CreateDir(strPath)) Then 함수 종료
'If Not(CheckFileName(strFileName)) Then 종료 함수
'응답.쓰기(str파일이름)
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 쓰기
f.닫기
fso = 아무것도 설정하지 않음
f = 없음으로 설정
sDoAppendFile = 참
기능 종료
렘 ########################################## ## ##############
Rem ## 디렉토리를 생성하는 프로그램입니다. 디렉토리가 여러 레벨인 경우 하나씩 생성합니다.
렘 ########################################## ## ##############
개인 함수 CreateDir(ByVal strLocalPath)
Dim i, strPath, objFolder, tmpPath, tmptPath
희미한 arrPathList, intLevel
'오류 발생 시 다음 재개
strPath = 바꾸기(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)
I = 0의 경우 intLevel로
만약 I = 0이면
tmptPath = arrPathList(0) & "/"
또 다른
tmptPath = tmptPath & arrPathList(I) & "/"
종료 조건
tmpPath = 왼쪽(tmptPath, Len(tmptPath) - 1)
objFolder.FolderExists(tmpPath)가 아닌 경우 objFolder.CreateFolder tmpPath
다음
objFolder = 없음 설정
Err.Number <> 0이면
CreateDir = 거짓
Err.Clear
또 다른
CreateDir = 참
종료 조건
기능 종료
렘 ########################################## ## ##############
Rem ## 긴 정수 변환
렘 ########################################## ## ##############
개인 함수 toNum(s, 기본값)
IsNumeric(s) 및 s <> ""인 경우
toNum = CLng(들)
또 다른
toNum = 기본값
종료 조건
기능 종료
렘 ########################################## ## ##############
수업 종료
렘 ########################################## ## ###############################
%>