●Deskripsi: Kelas peningkatan online ASP ●Versi: 1.0.0
●Penulis: Xiao Yuehen (xiaoyuehen)
●MSN: xiaoyuehen(at)msn.com
●Harap ganti (at) dengan @●Hak Cipta: Karena dibagikan, hak cipta tidak menjadi masalah. Namun harus dibatasi pada penyebaran online dan tidak dapat digunakan di media tradisional!
●Saya akan lebih berterima kasih jika Anda dapat menaati instruksi ini!
●Jika Anda memiliki pengoptimalan kode yang lebih baik dan peningkatan terkait, harap ingat untuk memberi tahu saya, terima kasih banyak!
●Ide:
1. Kueri daftar versi => 2. Bandingkan perbedaan versi => 3. Dapatkan daftar pembaruan versi berikutnya yang lebih tinggi, jika tidak ada versi yang lebih tinggi, lompat ke langkah 5 => 4. Perbarui => kembali ke langkah 3
5. Keluar dari pembaruan ●Petunjuk lainnya: Peningkatan bertahap.
●Di luar topik: Butuh waktu total sekitar 7 jam. Agak terburu-buru dan kodenya kurang disempurnakan. Selama pengujian lokal, diperlukan waktu hampir 1 detik untuk memperbarui dua versi dan total 4 file.
Saya belum pernah melakukan hal serupa sebelumnya, jadi saya tidak bisa membicarakan algoritma apa pun. Teman-teman yang pernah melakukannya, mohon pendapatnya.
●Kode ini dimaksudkan untuk berkomunikasi satu sama lain●
●Sebelum memulai, harap baca petunjuk berikut dengan cermat.
●Persyaratan sisi server:
1. Manajer Situs, Anda dapat mengakses versi dan informasi peningkatan terkait melalui alamat URL.
2. File informasi versi, seperti Version.asp
3. Setiap direktori versi harus berada di bawah direktori yang ditentukan oleh UrlUpdate ( lihat uraian di bawah).
Jika Versi adalah 1.0.8, file pemutakhiran versi ini harus berlokasi di http://Localhost/__Jxc/Update/108/ .
4. Informasi yang dikembalikan oleh informasi versi adalah daftar, setiap baris mewakili informasi versi (tidak boleh ada baris kosong), dan versi yang lebih tinggi ada di atas.
1.1.0
1.0.8
1.0.0
5. Format informasi update file versi tertentu adalah dengan menghilangkan nomor setelah nomor + FileType (lihat uraian di bawah), dan letakkan di bawah UrlUpdate, seperti: http://Localhost/__Jxc/Update/110.asp , dan format isinya adalah sebagai berikut:
3.htm|Uji/Uji/3.asp
4.htm|Uji/Uji/4.asp
5.htm|Tes/5.asp
6.htm|Tes/6.asp
Pisahkan file sumber dan file tujuan dengan |. File sumber akan dibaca dari direktori versi yang sesuai, seperti yang ditunjukkan di atas, alamat 3.htm yang sesuai seharusnya
http://Localhost/__Jxc/Update/110/3.htm
Jika UpdateLocalPath = "/", tujuan pembaruan yang sesuai dari Test/Test/3.asp adalah /Test/Test/3.asp. Selama proses pembaruan, program secara otomatis akan membuat direktori yang tidak ada.
Dan timpa file target
●Persyaratan klien:
IIS 5.0 atau lebih tinggi
Dukungan FSO (untuk menghasilkan file)
Dukungan Adodb.Stream (untuk konversi pengkodean)
Dukungan Microsoft.XMLHTTP (untuk pengambilan informasi jarak jauh)
●Atribut:
Info Dapatkan informasi terakhir selama proses upgrade ●Deskripsi parameter:
UrlVersion ●Wajib● URL lengkap informasi versi, dimulai dengan http://
Pembaruan Url ●Wajib● Peningkatan URL, dimulai dengan http:// dan diakhiri dengan /
UpdateLocalPath ●Diperlukan● Direktori pembaruan lokal, dimulai dengan / dan diakhiri dengan /. Dimulai dengan / untuk memperbarui situs saat ini. Mencegah penulisan ke direktori lain.
UrlHistory ●Wajib● Nama file dari file riwayat perangkat lunak yang dihasilkan
Versi Lokal ●Diperlukan● Informasi versi saat ini ●Nilai default● 1.0.0
Tipe File ●Diperlukan● Akhiran informasi versi ●Nilai default● .asp
●Deskripsi metode:
lakukan pembaruan peningkatan
Setelah parameter yang relevan ditetapkan, Anda dapat memulai level panjang dengan cara ini. ●Petunjuk lainnya: Nomor versi harus terdiri dari angka 0-9 dan ., dan digit pertama tidak boleh kurang dari 1. Panjang setiap versi angkanya harus sama. Misalnya, 1.0 .0 dan 1.2.2 atau 1.2.04 dan 1.2.78
●Contoh:
Kode program
<!--#include file="../__Inc/Cls_OnlineUpdate.asp"-->
<%
Redupkan objUpdate
Setel objUpdate = Cls_oUpdate Baru
Dengan objUpdate
.UrlVersion = " http://Localhost/__Jxc/Update/Version.asp "
.UrlUpdate = " http://Localhost/__Jxc/Update/ "
.PerbaruiLocalPath = "/"
.Versi Lokal = "1.0.0"
.doPerbarui
respon.Tulis(.Info)
Akhiri Dengan
Setel objUpdate = Tidak Ada
%>
File kelas:
kode program
<%
Rem ################################################# ## ####################################
Rem ## Pernyataan kelas peningkatan online
Kelas Cls_oUpdate
Rem ################################################# ## ##############
Rem ## Deskripsi: Kelas upgrade online ASP
Rem ## Versi: 1.0.0
Rem ## Penulis: Xiao Yuehen
Rem ## MSN: xiaoyuehen(at)msn.com
Rem ## Silakan ganti (at) dengan @
Rem ## Hak Cipta: Karena dibagikan, tidak ada hak cipta. Namun harus dibatasi pada penyebaran online dan tidak dapat digunakan di media tradisional!
Rem ## Jika Anda dapat menaati instruksi ini, saya akan lebih berterima kasih!
Rem ## Jika Anda memiliki pengoptimalan kode yang lebih baik dan peningkatan terkait, harap ingat untuk memberi tahu saya, terima kasih banyak!
Rem ################################################# ## ##############
Versi Lokal Publik, Versi Terakhir, Tipe File
Versi Url Publik, Pembaruan Url, PembaruanLocalPath, Info
Riwayat Url Publik
SstrVersionList pribadi, sarrVersionList, sintLocalVersion, sstrLocalVersion
SstrLogContent pribadi, sstrHistoryContent, sstrUrlUpdate, sstrUrlLocal
Rem ################################################# ## ##############
Sub Kelas Pribadi_Inisialisasi()
Rem ## URL lengkap informasi versi, dimulai dengan http://
Rem ## Contoh: http://localhost/software/Version.htm
Versi Url = ""
Rem ## Tingkatkan URL, dimulai dengan http:// dan diakhiri dengan /
Rem ## Contoh: http://localhost/software/
Pembaruan Url = ""
Rem ## Direktori pembaruan lokal, dimulai dengan / dan diakhiri dengan /. Dimulai dengan / adalah untuk mencegah penulisan ke direktori lain.
Rem ## Program akan memeriksa apakah direktori tersebut ada, jika tidak ada maka akan dibuat secara otomatis.
PerbaruiLocalPath = "/"
Rem ## File riwayat perangkat lunak yang dihasilkan
UrlHistory = "history.htm"
Rem ## Pesan prompt terakhir
Info = ""
Rem ## Versi saat ini
Versi Lokal = "1.0.0"
Rem ## versi terbaru
Versi Terakhir = "1.0.0"
Rem ## Nama akhiran setiap file informasi versi
Tipe File = ".asp"
Akhiri Sub
Rem ################################################# ## ##############
Rem ################################################# ## ##############
Sub Kelas_Terminate() Pribadi
Akhiri Sub
Rem ################################################# ## ##############
Rem ## Lakukan tindakan peningkatan
Rem ################################################# ## ##############
Fungsi publik doUpdate()
doUpdate = Salah
UrlVersion = Pangkas(UrlVersion)
UrlUpdate = Pangkas(UrlUpdate)
Rem ## Tingkatkan deteksi URL
Jika (Kiri(UrlVersion, 7) <> "http://") atau (Kiri(UrlUpdate, 7) <> "http://") Lalu
Info = "URL deteksi versi kosong, URL pemutakhiran kosong atau formatnya salah (#1)"
Fungsi keluar
Akhiri Jika
Jika Benar(UrlUpdate, 1) <> "/" Lalu
sstrUrlUpdate = Pembaruan Url & "/"
Kalau tidak
sstrUrlUpdate = Pembaruan Url
Akhiri Jika
Jika Benar(UpdateLocalPath, 1) <> "/" Lalu
sstrUrlLocal = PerbaruiLocalPath & "/"
Kalau tidak
sstrUrlLocal = PerbaruiLocalPath
Akhiri Jika
Rem ## Informasi versi saat ini (angka)
sstrLocalVersion = Versi Lokal
sintLocalVersion = Ganti(sstrLocalVersion, ".", "")
sintLocalVersion = toNum(sintLocalVersion, 0)
Rem ## Deteksi versi (inisialisasi informasi versi dan bandingkan)
Jika IsLastVersion Kemudian Keluar dari fungsi
Rem ## Mulai upgrade
doUpdate = SekarangUpdate()
Versi Terakhir = sstrLocalVersion
Fungsi akhir
Rem ################################################# ## ##############
http://bizhi.downcodes.com/
Rem ## Periksa apakah ini versi terbaru
Rem ################################################# ## ##############
Fungsi pribadi IsLastVersion()
Rem ## Inisialisasi informasi versi (inisialisasi array sarrVersionList)
Jika iniVersionList Lalu
Rem ## Jika berhasil, bandingkan versinya
Redupkan saya
IsLastVersion = Benar
Untuk i = 0 hingga UBound(sarrVersionList)
Jika sarrVersionList(i) > sintLocalVersion Lalu
Rem ## Jika ada versi terbaru, keluar dari loop
IsLastVersion = Salah
Info = "Sudah versi terbaru!"
Keluar Untuk
Akhiri Jika
Berikutnya
Kalau tidak
Rem ## Jika tidak, kembalikan pesan kesalahan
IsLastVersion = Benar
Info = "Kesalahan saat mendapatkan informasi versi!(#2)"
Akhiri Jika
Fungsi akhir
Rem ################################################# ## ##############
Rem ## Periksa apakah ini versi terbaru
Rem ################################################# ## ##############
Fungsi pribadi iniVersionList()
iniVersionList = Salah
Redupkan strVersion
strVersion = getVersionList()
Rem ## Jika nilai kembalian kosong, inisialisasi gagal.
Jika strVersion = "" Lalu
Info = "Kesalahan......"
Fungsi keluar
Akhiri Jika
sstrVersionList = Ganti(strVersion, " ", "")
sarrVersionList = Berpisah(sstrVersionList, vbCrLf)
iniVersionList = Benar
Fungsi akhir
Rem ################################################# ## ##############
Rem ## Periksa apakah ini versi terbaru
Rem ################################################# ## ##############
Fungsi pribadi getVersionList()
getVersionList = DapatkanKonten(UrlVersion)
Fungsi akhir
Rem ################################################# ## ##############
Rem ## Mulai memperbarui
Rem ################################################# ## ##############
Fungsi pribadi NowUpdate()
Redupkan saya
Untuk i = UBound(sarrVersionList) hingga 0 langkah -1
Panggil doUpdateVersion(sarrVersionList(i))
Berikutnya
Info = "Peningkatan selesai! <a href=""" & sstrUrlLocal & UrlHistory & """>Lihat</a>"
Fungsi akhir
Rem ################################################# ## ##############
http://qqface.downcodes.com/
Rem ## Konten versi yang diperbarui
Rem ################################################# ## ##############
Fungsi pribadi doUpdateVersion(strVer)
doUpdateVersion = Salah
Redupkan intVer
intVer = toNum(Ganti(strVer, ".", ""), 0)
Rem ## Jika versi yang diperbarui lebih kecil dari versi saat ini, keluar dari pembaruan
Jika intVer <= sintLocalVersion Lalu
Fungsi keluar
Akhiri Jika
Redupkan strFileListContent, arrFileList, strUrlUpdate
strUrlUpdate = sstrUrlUpdate & intVer & Tipe File
strFileListContent = DapatkanKonten(strUrlUpdate)
Jika strFileListContent = "" Lalu
Fungsi keluar
Akhiri Jika
Rem ## Perbarui nomor versi saat ini
sintLocalVersion = intVer
sstrLocalVersion = strVer
Redupkan aku, arrTmp
Rem ## Dapatkan daftar file pembaruan
arrFileList = Pisahkan(strFileListContent, vbCrLf)
Rem ## Perbarui log
sstrLogKonten = ""
sstrLogContent = sstrLogContent & strVer & ":" & vbCrLf
Rem ## Mulai memperbarui
Untuk i = 0 hingga UBound(arrFileList)
Rem ## Format pembaruan: nomor versi/file.htm|file tujuan
arrTmp = Pisahkan(arrFileList(i), "|")
sstrLogContent = sstrLogContent & vbTab & arrTmp(1)
Panggil doUpdateFile(intVer & "/" & arrTmp(0), arrTmp(1))
Berikutnya
Rem ## Tulis ke file log
sstrLogContent = sstrLogContent & Sekarang() & vbCrLf
respon.Write("<pre>" & sstrLogContent & "</pre>")
Panggil sDoCreateFile(Server.MapPath(sstrUrlLocal & "Log" & intVer & ".htm"), _
"<pre>" & sstrLogContent & "</pre>")
Panggil sDoAppendFile(Server.MapPath(sstrUrlLocal & UrlHistory), "<pre>" & _
strVer & "_______" & Sekarang() & "</pre>" & vbCrLf)
Fungsi akhir
Rem ################################################# ## ##############
Rem ## perbarui file
Rem ################################################# ## ##############
Fungsi pribadi doUpdateFile(strSourceFile, strTargetFile)
Redupkan strContent
strContent = DapatkanKonten(sstrUrlUpdate & strSourceFile)
Rem ## Perbarui dan tulis ke log
Jika sDoCreateFile(Server.MapPath(sstrUrlLocal & strTargetFile), strContent) Lalu
sstrLogContent = sstrLogContent & "Sukses" & vbCrLf
Kalau tidak
sstrLogContent = sstrLogContent & "Gagal" & vbCrLf
Akhiri Jika
Fungsi akhir
Rem ################################################# ## ##############
Rem ## Dapatkan konten dari jarak jauh
Rem ################################################# ## ##############
Fungsi pribadi GetContent(strUrl)
Dapatkan Konten = ""
Redupkan oXhttp, strContent
Setel oXhttp = Server.CreateObject("Microsoft.XMLHTTP")
'Pada Kesalahan Lanjutkan Berikutnya
Dengan oXhttp
.Buka "GET", strUrl, False, "", ""
.Mengirim
Jika .readystate <> 4 Kemudian Keluar dari fungsi
strContent = .Responsebody
strKonten = sBytesToBstr(strKonten)
Akhiri Dengan
Setel oXhttp = Tidak Ada
Jika Err.Number <> 0 Lalu
respon.Tulis(Err.Deskripsi)
Err. Jelas
Fungsi keluar
Akhiri Jika
DapatkanKonten = strKonten
Fungsi akhir
Rem ################################################# ## ##############
Rem ################################################# ## ##############
Rem ## Pengkodean biner konversi => string
Fungsi pribadi sBytesToBstr(vIn)
dimobjStream
setel objStream = Server.CreateObject("adodb.stream")
objStream.Jenis = 1
objStream.Mode = 3
objStream.Buka
objStream.Tulis vIn
objStream.Posisi = 0
objStream.Jenis = 2
objStream.Charset = "GB2312"
sBytesToBstr = objStream.ReadText
objStream.Tutup
setel objStream = tidak ada
Fungsi akhir
Rem ################################################# ## ##############
Rem ################################################# ## ##############
Rem ## Pengkodean biner konversi => string
Fungsi pribadi sDoCreateFile(strFileName, ByRef strContent)
sDoCreateFile = Salah
Redupkan strPath
strPath = Kiri(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Periksa validitas jalur dan nama file
Jika Tidak(CreateDir(strPath)) Kemudian Keluar dari fungsi
'Jika Tidak(CheckFileName(strFileName)) Kemudian Keluar dari fungsi
'respons.Tulis(strFileName)
Const UntukMembaca = 1, UntukMenulis = 2, UntukMenambahkan = 8
Redupkan fso, f
Setel fso = CreateObject("Scripting.FileSystemObject")
Setel f = fso.OpenTextFile(strFileName, ForWriting, True)
f.Tulis strKonten
f.Tutup
Tetapkan fso = tidak ada
Tetapkan f = tidak ada
sDoCreateFile = Benar
Fungsi akhir
Rem ################################################# ## ##############
Rem ################################################# ## ##############
Rem ## Pengkodean biner konversi => string
Fungsi pribadi sDoAppendFile(strFileName, ByRef strContent)
sDoAppendFile = Salah
Redupkan strPath
strPath = Kiri(strFileName, InstrRev(strFileName, "", -1, 1))
Rem ## Periksa validitas jalur dan nama file
Jika Tidak(CreateDir(strPath)) Kemudian Keluar dari fungsi
'Jika Tidak(CheckFileName(strFileName)) Kemudian Keluar dari fungsi
'respons.Tulis(strFileName)
Const UntukMembaca = 1, UntukMenulis = 2, UntukMenambahkan = 8
Redupkan fso, f
Setel fso = CreateObject("Scripting.FileSystemObject")
Setel f = fso.OpenTextFile(strFileName, ForAppending, True)
f.Tulis strKonten
f.Tutup
Tetapkan fso = tidak ada
Tetapkan f = tidak ada
sDoAppendFile = Benar
Fungsi akhir
Rem ################################################# ## ##############
Rem ## Program untuk membuat direktori. Jika ada beberapa tingkat direktori, buatlah satu per satu.
Rem ################################################# ## ##############
Fungsi pribadi CreateDir(ByVal strLocalPath)
Redupkan saya, strPath, objFolder, tmpPath, tmptPath
Redupkan arrPathList, intLevel
'Pada Kesalahan Lanjutkan Berikutnya
strPath = Ganti(strLocalPath, "", "/")
Setel objFolder = server.CreateObject("Scripting.FileSystemObject")
arrPathList = Pisahkan(strPath, "/")
intLevel = UBound(arrPathList)
Untuk I = 0 Ke intLevel
Jika saya = 0 Maka
tmptPath = arrPathList(0) & "/"
Kalau tidak
tmptPath = tmptPath & arrPathList(I) & "/"
Akhiri Jika
tmpPath = Kiri(tmptPath, Len(tmptPath) - 1)
Jika Bukan objFolder.FolderExists(tmpPath) Kemudian objFolder.CreateFolder tmpPath
Berikutnya
Setel objFolder = Tidak Ada
Jika Err.Number <> 0 Lalu
CreateDir = Salah
Err. Jelas
Kalau tidak
CreateDir = Benar
Akhiri Jika
Fungsi akhir
Rem ################################################# ## ##############
Rem ## konversi bilangan bulat panjang
Rem ################################################# ## ##############
Fungsi pribadi toNum(s, default)
Jika IsNumeric(s) dan s <> "" maka
toNum = CLng(s)
Kalau tidak
toNum = bawaan
Akhiri Jika
Fungsi akhir
Rem ################################################# ## ##############
Kelas Akhir
Rem ################################################# ## ####################################
%>