在公司做ERP系统开发时,由于客户端数量大多,软件经常需要修改,每次都去手动更新客户端太麻烦,为了不再去手工做这么烦锁的事情,客户端就可以自动更新程序为最新版本,同时还要通过系统防毒软件和防火墙。。。
需求分析:
1.客户端每次运行系统时有新版本需要更新,要提示更新
2.有多个DLL,OCX,EXE文件需要更新,需要打包
3.要跟据要求安装到指定目录并注册
程序设计方法:
1. 首先,需要安排一台FTP服务器用于提供更新包下载服务
2. 打包需要安装的程序,采用VB6.0自带的CAB打包工具 MAKECAB.EXE ,把需要安装的程序文件名字写入一个 *.DDF 里,例如我做的这个文件 cesupdate.DDF 内容如下:
.OPTION EXPLICIT
.Set Cabinet=off
.Set Compress=off
.Set MaxDiskSize=CDROM
.Set ReservePerCabinetSize=6144
.Set DiskDirectoryTemplate=".."
.Set CompressionType=MSZIP
.Set CompressionLevel=7
.Set CompressionMemory=21
.Set CabinetNameTemplate="update_CN.cab"
.Set Cabinet=on
.Set Compress=on
"prjTest.exe"
"CESUpgrade.exe"
"CESCommon.dll"
"CESToolLib.dll"
"CESTOOL.dll"
"CESQMLib.dll"
"CESQM.dll"
"CESPMLib.dll"
"CESPM.dll"
"CESPLANLib.dll"
"CESPLAN.dll"
"CESBMLib.dll"
"CESBM.dll"
"cesupdate.txt"
3. 运行一个这个命令 MAKECAB.EXE /f "cesupdate.DDF" 就可以打包成 update_CN.cab
4. 打包程序里面包含一个安装配置文件 cesupdate.txt 用于指定程序安装到什么位置,可以参考VB6.0的SETUP程序源码,此文件内容如下:
prjTest.exe,$(APPPATH)
CESUpgrade.exe,$(APPPATH)/Dlls/
CESCommon.dll,$(APPPATH)/Dlls/
CESPLAN.dll,$(APPPATH)/Dlls/
CESPLANLib.dll,$(APPPATH)/Dlls/
CESPM.dll,$(APPPATH)/Dlls/
CESPMLib.dll,$(APPPATH)/Dlls/
CESQM.dll,$(APPPATH)/Dlls/
CESQMLib.dll,$(APPPATH)/Dlls/
CESToolLib.dll,$(APPPATH)/Dlls/
CESTOOL.dll,$(APPPATH)/Dlls/
CESBM.dll,$(APPPATH)/Dlls/
CESBMLib.dll,$(APPPATH)/Dlls/
5. 在FTP服务器里面放上 update.txt , 此文件用于记录版本号和服务包,每次有程序需要更新时只需替换更新包,改动这面的版本号就行了,此文件内容如下:
VER=V1-0-0080 ' 版本号
URL=update_CN.cab ‘更新包
6. 在主程序里面加入如下代码用于比较程序版本号
Private Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As Strin