最近在开发单位信息系统,体会到Access快速开发平台的便利,特别是大系统的整体部署,可以和专业系统媲美。由于单位针对不同用户群体,研发不同的信息系统版本,大一统的版本升级解决不了实现需要,而且开发初期可能会频繁升级程序,启动主程序升级的方式让用户感觉不智能。考虑上述情况,可以转换一个思路:1、使用批处理,自动降低宏安全为低,根据不同程序自动从服务器FTP(不同文件夹)下载升级包;2、自定义系统版本,不同程序有不同的版本号;3、设置系统1小时无操作将自动退出,在Main窗体卸载程序上增加版本号比对;4、如果版本号不同将启动升级程序,自动下载升级包到客户端进行解压。考虑升级程序运行的隐密和安全,可将批处理转换成EXE程序,再用系统自带的iexpress进行包装,确保系统不拦截。
点击下载此附件
'‘在系统增加版本对比程序,在SysLocalParameters(本机) 和Sys_ServerParameters(服务器)增加 LgcVersion 函数
Function
Upcx()
On Error Resume Next
Dim fwqbb As String
Dim yhdbb As String
fwqbb = GetParameter("LgcVersion", dbText, False, , ,
True) '服务器版本
yhdbb = GetParameter("LgcVersion", dbText, False, , , False) '用户端版本
If
fwqbb <> yhdbb Then
ShellExecute CurrentProject.Path & "\Update.EXE"
End If
End Function
‘在Main窗体关闭卸载程序加上版本比对程序
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Dim intResult As Long
Call Upcx
End Sub
批处理程序
批处理程序原理:退出主程序时延迟5秒启动升级程序,步骤:1、关闭ACCESS程序;2、设置宏安全为低;3、从服务器下载升级包;4、下载完毕后删除升级包。为提升客户体验,这些程序都是隐藏运行的,由于升级包采用自解压方式,客户端无需安装压缩软件。
@echo off
color9F
title [离退休系统升级程序]
if "%1" == "h" goto
begin
: begin
ping 127.0.0.1 -n 5
taskkill /f /t /im MSACCESS.EXE
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Access\Security"
/v "Level" /t REG_DWORD /d "1" /f
REG ADD
"HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security" /v
"Level" /t REG_DWORD /d "1" /f
REG ADD
"HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security"
/vvbawarnings" /t REG_DWORD /d "1" /f
REG ADD
"HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security" /v
"vbawarnings" /t REG_DWORD /d "1" /f
REG ADD
"HKEY_CURRENT_USER\Software\Microsoft\Shared Tools\Graphics
Filters\Import\JPEG\Options" /v "ShowProgressDialog" /t REG_SZ
/d "No" /f
REG ADD
"HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Graphics
Filters\Import\JPEG\Options" /v "ShowProgressDialog" /t REG_SZ
/d "No" /f
REG ADD HKEY_CLASSES_ROOT\MSPaper.Document
/v EditFlags /t REG_DWORD /d 65536 /f
REGSVR32.EXE /s MSCOMCTL.OCX
REGSVR32.EXE /s MSCOMCT2.OCX
ping 127.0.0.1 -n 1
set
ftpUser=lgc (服务器用户名)
set
ftpPass=8311**** (登陆密码)
set
ftpIP=192.168.2.2 (IP地址)
set
ftpFolder=/lgc/ (服务器FTP文件夹)
set
LocalFolder=C:/ (下载升级包至客户端电脑位置)
set
ftpFile=%temp%/TempFTP.txt
>"%ftpFile%" (
echo,%ftpUser%
echo,%ftpPass%
echo cd "%ftpFolder%"
echo lcd "%LocalFolder%"
echo bin
echo mget *.*
echo bye
)
start /min ftp -v -i
-s:"%ftpFile%" %ftpIP%
ping /n 5 127.0.0.1>nul
:jiancha
dir /a-d C:\lgcsj.exe >nul 2>nul
if %errorlevel%==0 (goto :yunxin) else ping
/n 2 127.0.0.1>nul & goto :jiancha
:yunxin
start/wait "" "C:\lgcsj.exe"
ping /n 3 127.0.0.1>nul
:jiancha1
dir /a-d C:\lgcsj.exe >nul 2>nul
if %errorlevel%==0 (goto :try) else ping /n
1 127.0.0.1>nul & goto :jiancha1
:try
del /a /f /q "C:\lgcsj.exe"
echo 完成新程序安装,感谢你的大力支持!
Exit