Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
这个我做到了,思路是在项目里有两个参数,一个是客户端的版本号,一个是服务器的版本号,当用户启动项目时,有一专用代码来分析这两个号码是否一样,如果不一样就运行升级的项目程序
在什么位置,具体怎么操作?
这个我做到了,思路是在项目里有两个参数,一个是客户端的版本号,一个是服务器的版本号,当用户启动项目时,有一专用代码来分析这两个号码是否一样,如果不一样就运行升级的项目程序
我觉得最好将版本号保存在服务器上,判断服务器版本和客户端版本是否一致再进行升级。
我觉得最好将版本号保存在服务器上,判断服务器版本和客户端版本是否一致再进行升级。
恕本人笨,可否做个例子?
以下代码是在项目的登陆窗口中AfterLoad事件中的,大家可以参考这个来做。以下代码中最主要是“客户端版本”和“服务器版本”的设计,我的做法是在项目里设计一个“登陆”表,这个表是内部表来的,正因为是内部表,所以其中的“客户端版本”内容在用户那里是不变的,在“提示”表里可以设定“服务器版本”是可以保存在服务器里的,所以更新的时候就利用它进行比较,如果不同就到指定的目录里下载新的项目,然后自动解压及安装,当升级完后,用户那里的版本号就和服务器的版本号一致了。
e.Form.Controls("ComboBox1").Value=Tables("登陆")(0)("用户名") '默认用户名为登陆表用户名列第一行
e.Form.Controls("TextBox2").Value=Tables("登陆")(0)("会计期间")
Forms("登陆").Controls("TextBox1").Select()
Dim b1 As String =Tables("登陆")(0)("客户端版本")
Dim b2 As String =Tables("提示")(0)("服务器版本")
Dim s As String =FileSys.GetParentPath(ProjectPath)
s=FileSys.GetParentPath(s)
s = s & "\update\" & "update.exe"
If b1<>b2 Then
Dim Proc As New Process
Proc.File = s
Proc.Start()
Syscmd.Project.Exit()
End If
升级程序的“确定升级”代码:此主题相关图片如下:升级窗口.jpg
Dim szdj As String =e.Form.Controls("TextBox1").Value
Dim bcdj As String =e.Form.Controls("TextBox2").value
Dim yfm As String =e.Form.Controls("TextBox3").value
Dim mm As String =e.Form.Controls("TextBox4").value
Network.DownloadFile(szdj,bcdj,"","",True,1000,True)
Dim s As String =e.Form.Controls("TextBox6").value
Dim c As String =s & "\" & e.Form.Controls("TextBox5").value
If FileSys.DirectoryExists(c) Then '如果目录C:\MyFolder存在
FileSys.DeleteDirectory(c,3,2)'则删除之
End If
Dim Proc As New Process
Proc.File = bcdj
Proc.Verb = "open"
Proc.Start()
Proc.WaitForInputIdle()
Sendkeys.SendWait(s) '发送按键信息
Sendkeys.SendWait("{ENTER}")
Sendkeys.sendwait("{RIGHT 1}")
Sendkeys.Sendwait("{ENTER}")
Dim Result As DialogResult
Result = MessageBox.Show("升级完成,请重新打开本系统!","提示")
If Result = DialogResult.OK Then
Syscmd.Project.Exit()
End If
呵呵,这种东西没有办法通用的,只有自己设计。