Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共20 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[分享]项目内部更新-解决方案

1楼
qtcks 发表于:2010/10/17 22:07:00

中心思想为,建立远程文件数据库(updates),记录需要升级的文件。

2、根据当前客户端版本,对比updates文件。

3、下载并验证

4、切换项目

S:新文件更新上次,并记录入数据库中。

[此贴子已经被作者于2010-10-19 14:30:17编辑过]
2楼
qtcks 发表于:2010/10/17 22:08:00

1、创建updates 表

Dim Builder As New ADOXBuilder("") '要指定数据源名称
Dim tbl As ADOXTable
Builder.Open()
tbl = Builder.NewTable("updates") '创建表
With tbl
    .AddColumn("版本号" ,ADOXType.DateTime)
    .AddColumn("文件路径" ,ADOXType.Text)
    .AddColumn("文件校验码" ,ADOXType.nvarchar,16)
End With

Builder.AddTable(tbl) '增加表
Builder.Close()
Syscmd.Project.Open(ProjectFile)

[此贴子已经被作者于2010-10-19 20:45:42编辑过]
3楼
qtcks 发表于:2010/10/17 22:08:00

开发者:新文件上传服务器

Dim bbh As Date = Date.Now '设置本次上传版本号
'------------------------设置ftp服务器信息
Dim ftp1 As new ftpclient
ftp1.host=""
ftp1.Account = ""
ftp1.password = ""
'---------------------获取远程服务器历史文件校验码
Dim dt As datatable
Dim cmd As New SQLCommand
cmd.CSelect 文件路径,文件校验码 from updates"
dt = cmd.ExecuteReader()
Dim ftp_jym As String = dt.GetComboListString("文件校验码")
'output.show(ftp_jym) '获取服务器文件校验码
'==========================
For Each dir As String In FileSys.GetDirectories(ProjectPath & "\Publish") '遍历发布项目文件夹
    Dim x As String = dir.Replace(ProjectPath & "\Publish\","") '获取目录名称
    Output.Show(x)
    If ftp1.DirectoryExists("/远程ftp更新目录/" & x) = False Then '如果不存在目录
        ftp1.MakeDir("/远程ftp更新目录/" & x) '则创建目录
    End If
   
    For Each File As String In FileSys.GetFiles(dir) '遍历项目\ dir 目录下所有文件
        Dim xy As String = File.Replace(dir ,"") '获取文件名称
        Dim jym As String = CRCCheckFile(File)  '获取文件校验码
        If ftp_jym.Contains(jym) = False Then   '对比服务器是否存在本校验码记录.
            ftp1.Upload(file,"远程ftp更新目录/" & x & xy,True) '上传文件
            cmd.CommandText = "INSERT INTO updates(版本号,文件路径,文件校验码) VALUES('" & bbh & "','" & x & xy & "','" & jym & "')" '向 updates 记录本次上传文件信息
            cmd.ExecuteNonQuery
        End If
    Next
Next
For Each File As String In FileSys.GetFiles(ProjectPath & "\Publish") '遍历目录下所有文件
    Dim xy As String = File.Replace(ProjectPath & "\Publish\","") '获取文件名称
    Dim jym As String = CRCCheckFile(File) '获取文件校验码
    If ftp_jym.Contains(jym) = False Then  '对比服务器是否存在本校验码记录.
        ftp1.Upload(file,"远程ftp更新目录/" & xy,True) '先上传文件
        cmd.CommandText = "INSERT INTO updates(版本号,文件路径,文件校验码) VALUES('" & bbh & "','" & xy & "','" & jym & "')"
        cmd.ExecuteNonQuery
    End If
Next
output.show((Date.now - bbh).Totalseconds) '记录本次上传时间

[此贴子已经被作者于2010-10-17 22:21:06编辑过]
4楼
qtcks 发表于:2010/10/17 22:08:00
精华帖子,目前你无权浏览!
5楼
小狐 发表于:2010/10/17 22:26:00

顶你啊

6楼
qtcks 发表于:2010/10/17 22:29:00

图片点击可在新窗口打开查看争取弄个精华。

通过文件比对的方式,利弊都有。通过综合考虑,我还是选择这种方法来实现

优点:不存在隔代升级障碍。

缺点:远程文件未经打包,下载速度过慢。

嘿嘿。单个文件压缩,不知可行否

7楼
狐狸爸爸 发表于:2010/10/18 7:45:00

呵呵,设精

 

图片点击可在新窗口打开查看

8楼
pyh6918 发表于:2010/10/18 11:07:00
学习
9楼
lihe60 发表于:2010/10/18 11:09:00
这个实用吗?
10楼
yankunhao 发表于:2010/10/18 16:09:00
呵呵,希望狐狸爸爸能用这个贴的设计思想,给大家一个更好更完善的项目内部更新的方法。
共20 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.