Foxtable(狐表)用户栏目专家坐堂 → [分享]项目内部更新-解决方案


  共有18231人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
小狐
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:734 积分:5645 威望:0 精华:0 注册:2008/9/6 11:22:00
  发帖心情 Post By:2010/10/18 22:16:00 [只看该作者]

以下是引用yankunhao在2010-10-18 16:09:00的发言:
呵呵,希望狐狸爸爸能用这个贴的设计思想,给大家一个更好更完善的项目内部更新的方法。

我顶你


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/19 19:38:00 [只看该作者]

不错,顶一个!

 

好象有些细节还需改进,比如,如果没有可更新的文件,MoveDirectory肯定会有问题。

好象要全部外部数据源(而且要屏蔽压缩项目)才行,或虽有内部表,但不能在内部表中增删除数据,否则对项目文件校码肯定不会一致,如果不一致就意味着每次都要更新项目文件。

 

没有经过测试,只是从楼主的代码中似乎看出有这些问题,说错勿怪。


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 19:53:00 [只看该作者]

嘿嘿,谢谢CZY的建议,受益良多。

貌似movedirectory没报错。

 


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 19:57:00 [只看该作者]

我现在的应用是:添加2条内部函数。

为文件上传、文件下载

项目:Initialize事件设置文件更新代码:

 

Connections.Add("Conn_Source", GetConfigValue("Conn", "Error")) 'conn保存外部数据源连接字符串;
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Select max(版本号) from updates"
Dim Ser_bbh As Date = cmd.ExecuteScalar
SaveConfigValue("S_bbh", Ser_bbh)
Dim Chi_bbh As Date = GetConfigValue("C_bbh","#0001-01-01 0:00:00#")
If Ser_bbh > Chi_bbh Then
    Functions.Execute("文件下载")
End If
 

文件正常下载后,更新客户端版本号;C_bbh

[此贴子已经被作者于2010-10-19 19:57:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 20:00:00 [只看该作者]

我的项目,所有内容都在服务器sql中,没有对内部表进行应用,

内部表只存在一个表,保存着自定义登陆窗口、网络设置窗口。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/19 20:02:00 [只看该作者]

我刚才测试了一下,如果不存在来源指定文件夹会报错,操作系统Win 7

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 21:46:00 [只看该作者]

本地目录与服务器目录的遍历代码还有缺陷。

 


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 21:47:00 [只看该作者]

项目发布后,在本地运行项目后,在上传项目,dll动态链接库没有关闭。上传文件出错。

 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/10/19 23:48:00 [只看该作者]

上传代码:第二版

If Connections.Contains("Conn_Source") Then
    Connections.Delete("Conn_Source")         '删除数据源
End If
Connections.Add("Conn_Source", GetConfigValue("Conn", "Error"))     '新增外部数据源
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.C
cmd.CommandText = "Select 文件路径,文件校验码 from updates"
dt = cmd.ExecuteReader()
Dim ftp_jym As String = dt.GetComboListString("文件校验码")

'==========================
Dim i As Integer = 1
Dim dirs,dirys As New List(Of String)  '目录树-数组
Dim gml As String = "\Publish"
dirs.Add(gml) '根目录
Do
    For Each dirx As String In dirs    '遍历获取目录-数组
        For Each dir2 As String In FileSys.GetDirectories(dirx)  '当前目录下所有目录
            If dirs.Contains(dir2) = False Then
                dirys.Add(dir2)   '遍历当前目录,将目录列表添加至临时数组
            End If
        Next
    Next
    For Each b As String In dirys
        If dirs.Contains(b) = False Then
            dirs.add(b)    '将目录临时数组,添加至dirs数组中.
        End If
    Next
    dirys.Clear
    i += i
Loop While i <= 1000

For Each dir As String In dirs
    Dim dirname As String = dir
    dirname = dirname.Replace(gml,"")
    dirname = dirname.Replace("\","/")
    If ftp1.DirectoryExists("../kangc" & dirname) = False Then '如果不存在目录,创建目录
        ftp1.MakeDir("kangc" & dirname) '则创建目录
    End If
    For Each File As String In FileSys.GetFiles(dir)
        Dim xy As String = File.Replace(gml,"")
        xy = xy.Replace("\","/")
        Dim jym As String = CRCCheckFile(File) '校验码
        If ftp_jym.Contains(jym) = False Then
            ftp1.Upload(file,"../kangc" & xy,True) '先上传文件
            cmd.CommandText = "INSERT INTO updates(版本号,文件路径,文件校验码) VALUES('" & bbh & "','" & xy & "','" & jym & "')"
            cmd.ExecuteNonQuery
        End If
    Next
Next
Output.Show((Date.now - bbh).Totalseconds)

 

[此贴子已经被作者于2010-10-19 23:49:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3030 积分:19188 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2010/10/20 8:01:00 [只看该作者]

以下是引用yankunhao在2010-10-18 16:09:00的发言:
呵呵,希望狐狸爸爸能用这个贴的设计思想,给大家一个更好更完善的项目内部更新的方法。

支持!

同时感谢楼主!


 回到顶部
总数 20 上一页 1 2