每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐用VB实现应用程序在局域网络上自动更新,赶紧看过来吧!
【 tulaoshi.com - 编程语言 】
我们在用VB开发大型应用程序时遇到如下问题,进入调试、维护阶段开发小组进驻用户单位,软件交用户试用会经常修改程序并重新编译。然后再由程序员给用户复制更新,或者通知用户自行复制更新。对于少量用户可以做到及时更新。而我们的一个用户在一座十层的大厦中办公,有十几个部门(即有管理部门又有生产车间分布在不同的楼层),每个部门少则有2~3台工作站,多则有数十台工作站,与四台服务器组成局域网络.且每个部门应用程序各不相同,应用程序修改编译后经常不能同步更新,从而造成部门内数据或者部门间的数据不一致。程序员每天都要跑上跑下检查版本更新程序浪费了很多宝贵时间,即使通知部门主管自行更新,某些工作站也会出现遗漏现象。鉴于以上问题我们考虑使用程序自动更新技术,即自动检查新版本,将新版本复制到本地,重新执行本地应用程序。
在应用程序工程MyApp中的部分代码如下:
OptionExplicit
PrivateConstApp_Name="MyApp"
PrivateConstExePath="NtServer01Refresh"
PrivateConstMidExeName="FastCopy"
PrivateSubForm_Load()
IfUCase(Trim(App.EXEName))UCase(Trim(App_Name))Then
MsgBox"必须将订单管理系统的名称更改为:" App_Name
End
EndIf
CallExeRefresh
EndSub
PrivateSubExeRefresh()
Dims1AsString
Dims2AsString
Dims3AsString
Dims4AsString
OnErrorResumeNext
'将本地中介程序FastCopy.exe的全路径名存入s3
s1="TNT"
IfLen(App.Path)3Then
s1=App.Path "" Trim(App_Name) ".exe"
s3=App.Path "" MidExeName ".EXE"
Else
s1=App.Path Trim(App_Name) ".exe"
s3=App.Path MidExeName ".EXE"
EndIf
s4="TNT"
s4=FileDateTime(s1)
s2="TNT"
s2=FileDateTime(ExePath App_Name ".EXE")
Ifs2="TNT"Then
MsgBox"没有找到最新的可执行文件:" ExePath App_Name ".EXE"_
vbCrLf vbCrLf "原因1:存放最新EXE的服务器或者工作站没有打开;"_
vbCrLf "原因2:存放最新EXE的路径错误或者EXE文件不存在;"_
vbCrLf "请将此情况通知程序员." vbCrLf vbCrLf_
vbCrLf "按确定按钮后,将继续运行本地EXE文件.",vbCritical,"提示"
EndIf
Ifs2="TNT"Ors4="TNT"ThenExitSub
'然后再运行本地MyApp.EXE,中介程序退出后,整个更新过程结束.
IfCDate(s2)CDate(s4)Then
FileCopyExePath MidExeName ".EXE",s3
s1=Shell(s3 "" ExePath "," App_Name ".EXE",vbNormalFocus)
End
EndIf
EndSub
将以上程序编译为:MyApp.exe存储在共享目录中.
向工程中增加一个窗体Form1,向Form1中添加一个定时器Timer1,增加一个标签控件Label1,其Caption为"应用程序正在更新",并调整窗体大小.
OptionExplicit
PrivatesPathAsString
PrivatesNameAsString
PrivateSubForm_Load()
DimsAsString
s=Trim(Command())
DimpAsInteger
p=InStr(1,s,",")
Ifp0Then
sPath=Mid(s,1,p-1)
sName=Mid(s,p 1,Len(s)-p)
Timer1.Interval=6000
Else
MsgBox"Error",vbCritical,""
UnloadMe
End
EndIf
EndSub
PrivateSubTimer1_Timer()
Timer1.Interval=0
Dims1AsString
IfLen(App.Path)3Then
s1=App.Path "" sName
Else
s1=App.Path sName
EndIf
OnErrorResumeNext
FileCopysPath sName,s1
DimaAsLong
a=Shell(s1,vbNormalFocus)
UnloadForm1
End
EndSub
将工程FastCopy编译为FastCopy.exe并存储于服务器的共享目录。
1、将服务器共享目录中的:MyApp.exe复制到本地硬盘的某个目录中;
2、重新编译MyApp工程,将MyApp.exe复制到服务器的共享目录中,注意一定不要覆盖本地的MyExe.app;
3、这样服务器上MyApp.exe的修改时间肯定大于本地MyApp.exe的修改时间;
4、运行本地MyApp.exe,几秒钟后屏幕上会出现"应用程序正在更新"的窗体,随后更新后应用程序再次被运行。则自动更新成功。
5、程序的修改时间可通过在文件上用鼠标按右键的属性或内容的菜单观察。
本程序在Windows98和VB6.0,NT局域网络下测试通过。
本文内容也适用于其它语言参考。->
来源:http://www.tulaoshi.com/n/20160219/1616938.html
看过《用VB实现应用程序在局域网络上自动更新》的人还看了以下文章 更多>>