Foxtable(狐表)用户栏目专家坐堂 → [分享]项目自动升级的代码优化


  共有2596人关注过本帖平板打印复制链接

主题:[分享]项目自动升级的代码优化

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[分享]项目自动升级的代码优化  发帖心情 Post By:2016/11/17 19:52:00 [只看该作者]

敬请狐爸根据我的测试结果改进Syscmd.Project.Update命令。

帮助中的自动升级代码是这样的:
If Syscmd.Project.Update(False,False) = False Then '如果没有升级
Forms("窗口1").open()
'后续其它代码
End
If
在某种外网情况下,执行 Syscmd.Project.Update(False,False) 需要用时23秒(见下文)。

而我早期是自己编写自动升级代码的,直接用下列代码进行判断:
Dim s1 As Date = ftp1.GetFiletime(upath & datafile) '服务器上升级文件的日期时间
'在全局代码中定义: public ftp1 as FTPClient
upath & datafile为服务器上的升级路径和update.txt
在同样的外网情况下用时仅1秒。

下面是测试代码:
Output.show( Date.Now)
ftp1 = new FTPClient '全局代码中定义ftp1
ftp1.Host = IPa '全局代码中定义IPa
ftp1.Account = ftpaccount '全局代码中定义ftpaccount
ftp1.password = ftppassword '全局代码中定义ftppassword
ftp1.UTF8 = True '我的服务器需要设为true
Dim s1 As Date = ftp1.GetFiletime(upath & datafile) 
Output.show(s1)
Output.show(Date.Now)
Syscmd.Project.Update(False,False)
Output.show(Date.Now)

下面是项目刚启动时的第一次测试结果,我的方法用时1秒,而帮助中的方法用时23秒
2016-11-17 19:09:19
2016-11-17 16:29:09
2016-11-17 19:09:20
2016-11-17 19:09:43

下面是项目启动后的第二次测试结果,我的方法用时1秒,帮助中的方法用时竟大大缩短为1-2秒!!!
说明Syscmd.Project.Update第一次执行有问题。
2016-11-17 19:11:38
2016-11-17 16:29:09
2016-11-17 19:11:39
2016-11-17 19:11:41

下面是我改进后的全套代码,供参考:
'自动静默下载升级文件并更新
If ProjectFile <> dpath & pfile Then '非开发状态,dpath为开发文件所有路径,pfile为项目名称
    RemoteUpdate = True
    Dim s1 As Date = ftp1.GetFiletime(upath & datafile) '服务器上升级文件的日期时间
    If s1 > publishdate Then '如果较现在版本的日期时间新则下载并升级
        UpdatePath = "ftp://" & ftpAccount & ":" & ftppassword & "@" & IPa & upath
        Syscmd.Project.Update(False,False)
        Syscmd.Project.Exit(False)
        Return
    Else
        Forms("用户登录").Open()
    End If
Else
    Forms("用户登录").Open()
End If
[此贴子已经被作者于2016/11/17 19:53:24编辑过]

 回到顶部
总数 11 1 2 下一页