Foxtable(狐表)用户栏目专家坐堂 → 客户机根据服务机的变化升级如何设计呢?


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

主题:客户机根据服务机的变化升级如何设计呢?

帅哥哟,离线,有人找我吗?
baoxyang
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 13:44:00 [显示全部帖子]

这个可以在远程服务器上建立一个ftp服务器才行,然后通过一个文档记录下版本信息,通过版本信息来升级。


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 15:06:00 [显示全部帖子]

老大,在AfterOpenProject中不知是否可以进行升级应当可以吧?


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 15:30:00 [显示全部帖子]

但有一个问题,就是当远程复制时,突然网络掉线时,会造成客户机无法启动及再升级。为了避免此事件发生时,必须把复制的文件放在临时的目录下,进行判断文件是否与服务器文件个数相等时,才从临时目录下复制到当前的项目下。

 

dim file1,file2,file3,file4 as string
Dim path as string = "C:\data\" 'ApplicationPath
Dim lst As WinForm.ListBox
Lst = e.form.Controls("ListBox1")
if lst.Items.Count > 0 then
  For k as integer = 0 to lst.Items.Count -1
           lst.selectedIndex = k
           file1 = lst.Items(k)        
           file2 = "ftp://" & s2 & ":" & s3 & "@" & s1 & file1
           file3 = path & file1
           file4 = file3.Replace("/升级","")
           file4 = file4.trim()
           Network.downloadfile(file2,file4,"","",true,100000,true)     ‘请问老大出现复制异常时如何判断?

  Next
end if

messagebox.show("升级成功!需要重新启动项目!!")
Syscmd.Project.Exit(False)


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 15:49:00 [显示全部帖子]

哦,明白。

另外一个问题请教下:

如何得到目录下所有文件的个数?(目录下含子目录,子目录中又子目录)谢谢!!


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 15:57:00 [显示全部帖子]

比较文件名是否相同,是不合理的,大部分都是文件名相同,只是字节不同或修改日期不同罢了,如果要升级应当是整个项目的所有文件都需要,这个保险升级。或者是只拷需要的升级文件。

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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 16:13:00 [显示全部帖子]

一、建立一个ftp服务器

二、在项目属性中:(AfterOpenProject中从表中提取升级信息进行比较后,有需要升级,打开升级窗口)

三、建立一个新的升级窗口,在afterload事件代码如下:

    

    

'检查是否有升级文件存在
Dim cmd As New SQLCommand
cmd.C ’   数据源名称

cmd.CommandText = "Select * From {服务器设置} where [ID] > 0" ‘存放了版本信息及ftp服务器的信息。
Dim dt As DataTable = cmd.ExecuteReader()
dim s1 as string = dt.datarows(0)("ipadress")   ’服务器地址
dim s2 as string = dt.datarows(0)("ftpuser")    ‘用户名
dim s3 as string = dt.datarows(0)("ftppwd")    、密码
s1 = DecryptText(s1,"oxy","8b2a03x5y6")   ’解密
s2 = DecryptText(s2,"oxyang","b1a2o3x4y5a6n7g8")  ’解密
s3 = DecryptText(s3,"oxing","b82331382x")  ’解密

Dim ipFile As String = ProjectPath & "ip.txt"
dim ip as string
dim files1 as New List(of string)
dim files2(100) as string
dim files3(100) as string
dim files22 as New List(of string)
dim files33 as New List(of string)
dim p2 as integer = 0
dim p3 as integer = 0
dim paths1 as New List(of string)
dim paths2 as New List(of string)
dim file1,file2,file3,file4,t1,t2 as string

If Filesys.FileExists(ipFile) Then
   ip = FileSys.ReadAllText(ipFile)
End If
If ip IsNot nothing then
   If NetWork.Ping(ip) then
      Dim ftp1 As new ftpclient
      ftp1.host= s1
      ftp1.Account = s2
      ftp1.password = s3
      files1 = ftp1.GetFileList("/升级")  ‘存放升级文件的目录
      if files1.count > 0 then
         for f as integer = 0 to files1.count -1
             files1(f) = "/升级/" & files1(f)
         Next
      end if
      paths1 = ftp1.GetDirectoryList("/升级")
      if paths1.Count > 0 then
         for h1 as integer = 0 to paths1.count -1
            t1 = "/升级/" & paths1(h1)
             files22 = ftp1.GetFileList(t1)
            
            if files22.count > 0 then
               for f2 as integer = 0 to files22.count -1                
                  files2(p2) = t1 & "/" & files22(f2)
                  p2 = p2 + 1
               Next
             end if
            paths2 = ftp1.GetDirectoryList(t1)
            if paths2.Count > 0 then
               for h2 as integer = 0 to paths2.count -1
                   t2 = t1 & "/" & paths2(h2)  
                   files33 = ftp1.GetFileList(t2)
                   if files33.count > 0 then
                      for f3 as integer = 0 to files33.count -1                       
                         files3(p3) = t2 & "/" & files33(f3)
                         p3 = p3 +1
                      Next
                    end if
                 Next
             end if
          Next
      end if 
   End if
End if
dim ss as string
if files1.Count > 0 then
   for i1 as integer = 0 to files1.Count -1
    ss = ss & files1(i1) & "|"
   Next
   ss = ss.trim()
end if
if files2.length > 0 then
   for i2 as integer = 0 to files2.length -1
    ss = ss & files2(i2) & "|"
   Next
    ss = ss.trim()
end if
if files3.length > 0 then
   for i3 as integer = 0 to files3.length -1
      ss = ss & files3(i3) & "|"
   Next
    ss = ss.trim()
end if
ss = ss.trimEnd("|")
Dim lst As WinForm.ListBox
lst = e.Form.Controls("ListBox1")
lst.Combolist = ss


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 16:30:00 [显示全部帖子]

四、增加一个开始升级按钮代码如下:

   

'''
Dim cmd As New SQLCommand
cmd.C

cmd.CommandText = "Select * From {服务器设置} where [ID] > 0"
Dim dt As DataTable = cmd.ExecuteReader()
dim s1 as string = dt.datarows(0)("ipadress")
dim s2 as string = dt.datarows(0)("ftpuser")
dim s3 as string = dt.datarows(0)("ftppwd")
s1 = DecryptText(s1,"oxy","8b2a03x5y6")
s2 = DecryptText(s2,"oxyang","b1a2o3x4y5a6n7g8")
s3 = DecryptText(s3,"oxing","b82331382x")

 

If FileSys.DirectoryExists("E:\data") Then '如果临时目录存在
    FileSys.DeleteDirectory(
"E:\data",2,3) '则删除之

    FileSys.CreateDirectory("E:\data")  ‘再新建临时目录
End
If

 

dim file1,file2,file3,file4 as string
Dim path as string = "E:\data\" '临时存入的目录

Dim lst As WinForm.ListBox
Lst = e.form.Controls("ListBox1")
if lst.Items.Count > 0 then
  For k as integer = 0 to lst.Items.Count -1
           lst.selectedIndex = k
           file1 = lst.Items(k)        
           file2 = "ftp://" & s2 & ":" & s3 & "@" & s1 & file1
           file3 = path & file1
           file4 = file3.Replace("/升级","")
           file4 = file4.trim()
         '  Network.downloadfile(file2,file4,"","",true,100000,true)
  Next
end if
Dim f as string = ApplicationPath  ’项目目录名称
f = f.TrimEnd("\","")

if  lst.Items.Count = ‘临时目录’then
   FileSys.CopyDirectory ("E:\data","& f &", True)

   messagebox.show("升级成功!需要重新启动项目!!")
   Syscmd.Project.Exit(False)

else

   return

end if 


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


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2010/5/19 16:31:00 [显示全部帖子]

没有时间注明,你自己看

 回到顶部