●描述: ASP 在线升级类
●版本: 1.0.0
●作者: [url=http://blog.csdn.net/xiaoyuehen][url=http://blog.csdn.net/xiaoyuehen][url=http://blog.csdn.net/xiaoyuehen][url=http://blog.csdn.net/xiaoyuehen]萧月痕(xiaoyuehen)
●MSN: xiaoyuehen(at)msn.com
●请将(at)以 @ 替换
●版权: 既然共享, 就无所谓版权了. 但必须限于网络传播, 不得用于传统媒体!
●如果您能保留这些说明信息, 本人更加感谢!
●如果您有更好的代码优化, 相关改进, 请记得告诉我, 非常感谢!
●思路:
1. 查询版本列表 => 2. 比较版本差异 => 3. 获取高一版本更新列表, 若没有更高版本则跳到步骤 5 => 4. 更新 => 返回 步骤 3
5. 退出更新
●其他说明: 增量升级.
●题外话: 总共花了大概 7 个小时, 有点匆促, 代码还不够精细. 在本地测试时, 更新两个版本, 共 4 个文件, 花了将近 1 秒的时间.
以前也没有做过类似的东西, 所以谈不上什么算法, 有做过的朋友请多多提意见, 谢谢!
●本代码旨在互相交流●
●在开始之前, 请细读如下说明.
●服务器端要求:
1. 站点管理器, 能通过URL地址访问到版本及相关升级信息即可.
2. 版本信息文件, 如Version.asp
3. 各版本目录 必须在 UrlUpdate(描述见下面) 指定的目录之下, 例: UrlUpdate 为 http://Localhost/__Jxc/Update/,
Version 为 1.0.8 则 此版本的升级文件必须位于 http://Localhost/__Jxc/Update/108/ 下.
4. 版本信息返回的信息为一列表, 每行代表一个版本信息(不能有空行), 高版本在上.如下格式:
1.1.0
1.0.8
1.0.0
5. 某一版本的文件更新信息格式为去除.号后的数字 + FileType(描述见下), 放在 UrlUpdate 下
如: http://Localhost/__Jxc/Update/110.asp, 其内容格式如下:
3.htm|Test/Test/3.asp
4.htm|Test/Test/4.asp
5.htm|Test/5.asp
6.htm|Test/6.asp
以|分隔源文件和目的文件. 源文件将从对应的版本目录读取, 如上 3.htm 对应的地址应为
http://Localhost/__Jxc/Update/110/3.htm
若 UpdateLocalPath = "/" 则 Test/Test/3.asp 对应的更新目的为 /Test/Test/3.asp, 在更新过程中程序会自动创建不存在的目录,
并覆盖目标文件
●客户端要求:
IIS 5.0 以上
FSO 支持(用于生成文件)
Adodb.Stream 支持(用于编码转换)
Microsoft.XMLHTTP 支持(用于远程获取信息)
●属性:
Info 获得升级过程中最后信息
●参数描述:
UrlVersion ●必须● 版本信息完整URL, 以 http:// 起头
UrlUpdate ●必须● 升级URL, 以 http:// 起头, /结尾
UpdateLocalPath ●必须● 本地更新目录, 以 / 起头, /结尾. 以 / 起头是为当前站点更新.防止写到其他目录. ●默认值● /
UrlHistory ●必须● 生成的软件历史文件文件名
LocalVersion ●必须● 当前版本信息 ●默认值● 1.0.0
FileType ●必须● 版本信息后缀名 ●默认值● .asp
●方法描述:
doUpdate 升级
相关参数都设定好了之后, 即可以此方法开始长级
●其他说明: 版本号必须为0-9的数字和.组成, 且第一位不能小于1, 各版本号长度必须一致.如1.0.0和1.2.2 或者 1.2.04和1.2.78
●例:
<!--#include file="../__Inc/Cls_OnlineUpdate.asp"-->
<%
Dim objUpdate
Set objUpdate = New Cls_oUpdate
With objUpdate
.UrlVersion = "http://Localhost/__Jxc/Update/Version.asp"
.UrlUpdate = "http://Localhost/__Jxc/Update/"
.UpdateLocalPath = "/"
.LocalVersion = "1.0.0"
.doUpdate
response.Write(.Info)
End With
Set objUpdate = Nothing
%>