敬请狐爸根据我的测试结果改进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编辑过]