怎样用VB自动更新应用程序
- 具体程序实现如下:
在应用程序工程MyApp中的部分代码如下:
Option Explicit
'编译后的应用程序名称,注意没有后缀 .EXE,本例为MYAPP
Private Const App_Name = "MyApp"
'最新的应用程序存放的路径,本例为:服务器 NtServer01 共享目录 Refresh
Private Const ExePath = "\\NtServer01\Refresh\"
'中介程序名称,注意没有后缀 .EXE,本例为 FastCopy
Private Const MidExeName = "FastCopy"- '应用程序入口
Private Sub Form_Load()
If UCase(Trim(App.EXEName)) <> UCase(Trim(App_Name)) Then
MsgBox "必须将订单管理系统的名称更改为: " + App_Name
End
End If
'判断是否有最新版本的应用程序,如有则自动更新
Call ExeRefresh- '下面为订单管理系统的正常操作 略 ... ....
End Sub- '版本检查及更新过程
Private Sub ExeRefresh()
'定义四个临时字符串变量
Dim s1 As String
Dim s2 As String
Dim s3 As String
Dim s4 As String
On Error Resume Next
'将本地应用程序MyApp.EXE的全路径名存入 s1
'将本地中介程序FastCopy.exe的全路径名存入 s3
s1 = "TNT"
If Len(App.Path) > 3 Then
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"
End If- s4 = "TNT"
'将本地应用程序MyApp.EXE文件的修改时间存入 s4
s4 = FileDateTime(s1)
s2 = "TNT"
'将网络上应用程序MyApp.EXE文件的修改时间存入 s2
s2 = FileDateTime(ExePath + App_Name + ".EXE")
If s2 = "TNT" Then
MsgBox "没有找到最新的可执行文件:" + ExePath + App_Name + ".EXE" _
+ vbCrLf + vbCrLf + "原因1:存放最新EXE的服务器或者工作站没有打开;" _
+ vbCrLf + "原因2:存放最新EXE的路径错误或者EXE文件不存在;" _
+ vbCrLf + "请将此情况通知程序员." + vbCrLf + vbCrLf _
+ vbCrLf + "按确定按钮后,将继续运行本地EXE文件.", vbCritical, "提示"
End If
If s2 = "TNT" Or s4 = "TNT" Then Exit Sub
'如果网络上应用程序MyApp.EXE文件的修改时间,大于本地MyApp.EXE文件的修改时间
'然后再运行本地MyApp.EXE ,中介程序退出后,整个更新过程结束.
If CDate(s2) > CDate(s4) Then
'将网络上的中介程序FastCopy.exe复制到本地,这样可防止本地无中介程序时无法进行更新
FileCopy ExePath + MidExeName + ".EXE", s3
'则运行中介程序FastCopy.exe ,将最新的MyApp.EXE 复制到本地
s1 = Shell(s3 + " " + ExePath + "," + App_Name + ".EXE", vbNormalFocus)
'本地应用程序MyApp.EXE 终止运行,否则已经更新的MyApp.EXE无法覆盖本地的MyApp.EXE .
End
End If
End Sub
将以上程序编译为:MyApp.exe 存储在共享目录中.
- 在中介程序工程 FastCopy 中的代码如下:
向工程中增加一个窗体Form1 ,向Form1中添加一个定时器 Timer1 , 增加一个标签控件 Label1 ,其 Caption 为 "应用程序正在更新",并调整窗体大小.
Option Explicit
Private sPath As String '用于存储服务器上的共享目录
Private sName As String '用于存储应用程序名
Private Sub Form_Load()
Dim s As String
'从应用程序的命令行参数中取得数据
s = Trim(Command())
Dim p As Integer
p = InStr(1, s, ",")
If p > 0 Then
'取得储服务器上的共享目录
sPath = Mid(s, 1, p - 1)
'取得应用程序名
sName = Mid(s, p + 1, Len(s) - p)
'定时器延时6秒,保证本地旧版应用程序退出运行
Timer1.Interval = 6000
Else
'参数错误则退出
MsgBox "Error", vbCritical, ""
Unload Me
End
End If
End Sub
怎样用VB自动更新应用程序的更多相关文章
- c#自动更新+安装程序的制作 (转)
c#自动更新+安装程序的制作 (转) http://blog.csdn.net/myhuli120/article/details/6927588 一.自动更新的实现 让客户端实现自动更新,通常做法 ...
- c#自动更新+安装程序的制作
一.自动更新的实现 让客户端实现自动更新,通常做法是在客户端部署一个单独的自动更新程序.主程序启动后,访问服务端,检查配置文件是否有更新版本,有更新版本就启动更新程序,由更新负责下载更新版本,并更新客 ...
- C#自动更新本地程序
关于系统的自动更新.近日有一情况是需要将java端后台最新版本的系统文件覆盖本地客户端,简称自动更新了. 本地会获取当前系统的版本号去请求后台java的接口数据.返回给我的是后台压缩包转的base64 ...
- WinForm应用程序中实现自动更新功能
WinForm应用程序中实现自动更新功能 编写人:左丘文 2015-4-20 近来在给一客户实施ECM系统,但他们使用功能并不是我们ECM制造版提供的标准功能,他们要求对系统作一些定制功能,为了避免因 ...
- Windows 程序自动更新方案: Squirrel.Windows
Windows 程序自动更新方案: Squirrel.Windows 1. Squirrel Squirrel 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装 ...
- Web APP自动更新
我们的手机软件每天都要经营,经常需要更新,比如程序的Bug,好的功能,好的洁面... ... 这就需要我们的用户打开web app时候自动更新客户端程序,而不是再去应用程序商店从新下载.今天的笔记就是 ...
- C#[WinForm]实现自动更新
C#[WinForm]实现自动更新 winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,面对这个实际问题,在最近的一个小项目中,本人设计了一个 ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
- C#之tcp自动更新程序
.NETTCP自动更新程序有如下几步骤: 第一步:服务端开启监听 ServiceHost host; private void button1_Click(object sender, EventAr ...
随机推荐
- C++ 我想这样用(六)
嗯,上一篇已经介绍了面向过程编程的语法知识,接下来是最后的也是最重要的一个部分: 第三部分:基于对象的编程风格 1.构造函数的两种写法 比如我们有如下的类定义: class Circle { publ ...
- 让sublime text 2更好地支持Python
SublimeCodeIntel: ~/.codeintel/config里加了python和pythonExtraPaths的路径(Mac): {"Python" : {&quo ...
- Android JNI之C/C++层调用JAVA
转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930032.html 从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 ...
- TreeMap实现原理
摘要 研究项目底层代码时,发现项目中的数据的缓存用的是TreeMap来实现对数据的缓存管理.本片博文就TreeMap的源码.原理以及用法做一个探究 在用TreeMap之前我们要对TreeMap有个整体 ...
- Web Service学习之五:WSDL详解
WSDL是Web Service定义文档,不同平台 不同语言实现Web Service遵循的共同协议 ,在解析XML时按照各自语言的特点解析成相应的具体类.方法.参数和数据类型. WSDL是一个XML ...
- Com进程通信(Delphi2007)
相关资料: 1.http://my.oschina.net/u/582827/blog/2847662.http://www.cnblogs.com/findumars/p/5277561.html3 ...
- Codeforces 602B Approximating a Constant Range(想法题)
B. Approximating a Constant Range When Xellos was doing a practice course in university, he once had ...
- JVM基础知识(1)-JVM内存区域与内存溢出
JVM基础知识(1)-JVM内存区域与内存溢出 0. 目录 什么是JVM 运行时数据区域 HotSpot虚拟机对象探秘 OutOfMemoryError异常 1. 什么是JVM 1.1. 什么是JVM ...
- javascript中数组的迭代等操作
- SQLite多线程写锁文件解决方案
在sqlite编程中多线程同时写时会出现异常,我写了个类来解决这个问题. 思路很简单,就是在开始写操作时,记下写操作的托管线程id,表示目前有线程正在做写操作:其他线程来写时,需要先检测是否有进程正在 ...