男女做爽爽爽网站-男女做羞羞高清-男女做爰高清无遮挡免费视频-男女做爰猛烈-男女做爰猛烈吃奶啪啪喷水网站-内射白浆一区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

ASP網(wǎng)站程序自動(dòng)升級(jí)實(shí)現(xiàn)的方法

admin
2011年2月15日 23:14 本文熱度 3475
現(xiàn)在流行虛擬主機(jī)建站,我也有個(gè)網(wǎng)站,也算是個(gè)站長(zhǎng)咯。當(dāng)了近一年的站長(zhǎng),感到網(wǎng)站程序每次升級(jí)的時(shí)候頗為麻煩:先去官方看公告,然后下載升級(jí)包到本地,解壓,F(xiàn)TP上傳到虛擬主機(jī)。這些都是累人的體力活,加之本人又懶得很,所以異想天開(kāi)的覺(jué)得要是程序能夠自動(dòng)升級(jí)就好了。所以就想了想,寫(xiě)了本文,希望對(duì)WEB程序開(kāi)發(fā)者有幫助。這里只針對(duì)ASP,因?yàn)槲抑粫?huì)ASP :-(

先看看傳統(tǒng)的win32程序的升級(jí)過(guò)程(比如殺毒軟件),它是依靠軟件的升級(jí)程序通過(guò)網(wǎng)絡(luò)連接到服務(wù)器分析并下載升級(jí)文件到本地。

WEB程序有點(diǎn)不一樣,因?yàn)樗沁\(yùn)行于WEB服務(wù)器。它最終是要把升級(jí)服務(wù)器上的文件覆蓋到WEB服務(wù)器,站長(zhǎng)的電腦只是中轉(zhuǎn)。如果直接把升級(jí)服務(wù)器上的文件Copy到WEB服務(wù)器(而不通過(guò)站長(zhǎng)中轉(zhuǎn))那就實(shí)現(xiàn)了自動(dòng)升級(jí)。

好在系統(tǒng)自帶了一個(gè) Microsoft.XMLHTTP 組件用于訪問(wèn)WEB,在ASP中可以調(diào)用它來(lái)實(shí)現(xiàn)連接升級(jí)服務(wù)器下載升級(jí)文件。

以下代碼是利用 Microsoft.XMLHTTP下載文件的例子:

<%
Set xPost = CreateObject("Microsoft.XMLHTTP")
         xPost.Open "GET","http://www.xxx.com/test.exe",False
         xPost.Send()
         Set sGet = CreateObject("ADODB.Stream")
         sGet.Mode = 3
         sGet.Type = 1
         sGet.Open()
         sGet.Write(xPost.responseBody)
         sGet.SaveToFile Server.MapPath("update.exe"),2
         set sGet = nothing
         set sPOST = nothing
         response.Write("下載文件成功!<br>")
%>

上面代碼就是把 http://www.xxx.org/test.exe保存到WEB服務(wù)器當(dāng)前目錄,至于Microsoft.XMLHTTP 的更多用法還是看看MSDN吧。

如果文件比較多,就會(huì)多次調(diào)用Microsoft.XMLHTTP連接網(wǎng)絡(luò),就可能出現(xiàn)某次連接失敗部分文件未能更新的情況,為了避免這種情況,最好是把所有文件打包為一個(gè)文件一次下載到WEB后再解包。
呵呵,這里說(shuō)的打包可不是RAR或者ZIP包,而是我們自己定義。比如把所有文件拼接為一個(gè),然后再根據(jù)特殊的記號(hào)分開(kāi)。現(xiàn)在沒(méi)這么麻煩咯,因?yàn)橛袀€(gè)現(xiàn)成的辦法,我們使用拿來(lái)主義就是:把所有文件(二進(jìn)制形式)及其路徑信息放入Access數(shù)據(jù)庫(kù)。

下面這個(gè)vbs文件(來(lái)自海洋頂端2006Plus)就是打包當(dāng)前目錄的所有文件的:

       Dim n, ws, fsoX, thePath
         Set ws = CreateObject("WScript.Shell")
         Set fsoX = CreateObject("Scripting.FileSystemObject")
         thePath = ws.Exec("cmd /c cd").StdOut.ReadAll() & "\"
         i = InStr(thePath, Chr(13))
         thePath = Left(thePath, i - 1)
         n = len(thePath)
On Error Resume Next
         addToMdb(thePath)
         Wscript.Echo "當(dāng)前目錄已經(jīng)打包完畢,根目錄為當(dāng)前目錄"
         Sub addToMdb(thePath)
                   Dim rs, conn, stream, connStr
                   Set rs = CreateObject("ADODB.RecordSet")
                   Set stream = CreateObject("ADODB.Stream")
                   Set conn = CreateObject("ADODB.Connection")
                   Set adoCatalog = CreateObject("ADOX.Catalog")
                   connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Packet.mdb"
                   adoCatalog.Create connStr
                   conn.Open connStr
                   conn.Execute("Create Table FileData(Id int IDENTITY(0,1) PRIMARY KEY CLUSTERED, P Text, fileContent Image)")
                   stream.Open
                   stream.Type = 1
                  rs.Open "FileData", conn, 3, 3
                   fsoTreeForMdb thePath, rs, stream
                   rs.Close
                   Conn.Close
                   stream.Close
                   Set rs = Nothing
                   Set conn = Nothing
                   Set stream = Nothing
                   Set adoCatalog = Nothing
         End Sub
         Function fsoTreeForMdb(thePath, rs, stream)
                   Dim i, item, theFolder, folders, files
                   sysFileList = "$" & WScript.ScriptName & "$Packet.mdb$Packet.ldb$"
                   Set theFolder = fsoX.GetFolder(thePath)
                   Set files = theFolder.Files
                   Set folders = theFolder.SubFolders
                   For Each item In folders
                            fsoTreeForMdb item.Path, rs, stream
                   Next
                   For Each item In files
                            If InStr(LCase(sysFileList), "$" & LCase(item.Name) & "$") <= 0 Then
                                     rs.AddNew
                                     rs("P") = Mid(item.Path, n + 2)
                                     stream.LoadFromFile(item.Path)
                                     rs("fileContent") = stream.Read()
                                     rs.Update
                            End If
                   Next
                   Set files = Nothing
                   Set folders = Nothing
                   Set theFolder = Nothing
         End Function

以下是解包的ASP文件:

<%
         Sub UnPack()
                   str = Server.MapPath(".") & "\"
                   Set rs = CreateObject("ADODB.RecordSet")
                   Set stream = CreateObject("ADODB.Stream")
                   Set conn = CreateObject("ADODB.Connection")
                   Set oFso = CreateObject("Scripting.FileSystemObject")
                   connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("update.mdb")
                   conn.Open connStr
                   rs.Open "FileData", conn, 1, 1
                   stream.Open
                   stream.Type = 1
                   Do Until rs.Eof
                            theFolder = Left(rs("P"), InStrRev(rs("P"), "\"))
                            If oFso.FolderExists(str & theFolder) = False Then
                                     oFso.CreateFolder(str & theFolder)
                            End If
                            stream.SetEOS()
                            If IsNull(rs("fileContent")) = False Then stream.Write rs("fileContent")
                            stream.SaveToFile str & rs("P"), 2
                            rs.MoveNext
                   Loop
                   rs.Close
                   conn.Close
                   stream.Close
                   Set ws = Nothing
                   Set rs = Nothing
                   Set stream = Nothing
                   Set conn = Nothing
                   Set oFso = Nothing
         End Sub
%>

嗯,有了以上代碼就不難開(kāi)發(fā)出自己的ASP升級(jí)程序了,流程無(wú)外乎這樣:判斷是否需要升級(jí)(Y) -> 下載升級(jí)包 -> 解開(kāi)升級(jí)包覆蓋舊文件 -> 刪除升級(jí)包 -> 更新版本信息 -> OK

寫(xiě)到這里差不多該結(jié)束了,還有些諸如版本判斷之類(lèi)的細(xì)節(jié)就略過(guò)略過(guò)咯。

希望早日用到自動(dòng)升級(jí)的各類(lèi)WEB程序,也好讓我等懶人樂(lè)得悠閑,哈哈。

該文章在 2011/2/15 23:14:36 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 麻豆成人在线观看 | 免费看高潮久久久久久久 | 国产精品色无码AV在线观看 | 无码日本少妇精品视频 | 亚洲亚中文久久 | 东京av在线无码 | 91国在线观看 | 99久久国产综合精品五月天喷水一个少妇二区黑人久久老师 | 午夜精品久久久久久久第一页 | 国产成人精品久久一区二区 | 大尺度做爰啪啪高潮床戏小说 | 麻豆日产精品卡2卡3卡4卡5卡追逐那份独一无二的驾驭乐趣 | 亚洲曰本无码v一区二区三区 | 国产精品成人啪精久久 | 欧美最猛黑人猛男无码视频 | 美女内射| 国产亚洲AV片在线观看16女人 | 欧美性1生交XXXXX无码 | 香港三级精品三级在线专区 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲精品中文字幕无码A片老 | 亚洲 国产 综合 在线 | 免费的毛片视频 | 亚洲色久桃花在线 | 天天干天天射天天做天天插 | 国产伦精品十在线观看 | 久久亚洲精品无码A片大香大香 | 亚洲乱码日产一区三区 | 亚洲国产一区二区三区四区色欲 | 在线精品国精品国产不卡 | 日韩欧美不卡一二三区 | 久久永久免费视频 | 国产91精品一区二区麻豆网站 | 精品国产三级a在线观看 | 苍井空大尺寸视频大全在线观看 | 日韩精品无码免费专网站 | 久久毛片毛片免费天天看 | 精品国产午夜久久久久九九 | 久久无码人妻中文国产AV苍井空 | 日本亚洲精品无码专区国产 | 久久精品国产成人午夜福利 |