zoukankan      html  css  js  c++  java
  • 怎样用VB自动更新应用程序


    具体程序实现如下:
    在应用程序工程MyApp中的部分代码如下:
    Option Explicit
    '编译后的应用程序名称,注意没有后缀 .EXE,本例为MYAPP
    Private Const App_Name = "MyApp"
    '最新的应用程序存放的路径,本例为:服务器 NtServer01 共享目录 Refresh
    Private Const ExePath = "\NtServer01Refresh"
    '中介程序名称,注意没有后缀 .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
  • 相关阅读:
    各种视角了解数组Array以及案例展示
    js基础面试高频面点2:Javascript中undefined和not defined有什么区别,和null又有什么联系?
    一些好用的Linux命令工具
    Linux实用命令工具-dtrx根据需要自动解压
    J2EE--Hibernate基础笔记
    mysql用户与权限管理笔记
    找出字符串中出现频率最少的字符,并将其去除
    Linux常用命令--文件(夹)查找之find命令
    J2EE--Struts2基础开发笔记
    Java多线程基础知识总结笔记
  • 原文地址:https://www.cnblogs.com/wangxiaoyang/p/3604473.html
Copyright © 2011-2022 走看看