功能和特点:
1、一个服务器文件夹(端口)可以包含多套管理系统;
2、即使单位的IP地址被网络运营商更改了,也只需要更改全局代码中的IP地址,不必更改其它内容;
3、便于开发多套管理系统;
4、省略了<update.txt>文件,保证了多套系统可以共享服务器上的升级、运行文件夹;
5、狐表版本修改后,更新的开发文件在<项目管理.bat>中反映,无需修改软件;
6、用2个按钮分别完成<一般升级>和<版本升级>,无需修改软件;
7、用一个按钮快速生成用于分发的项目文件,便于首次安装的分发和共享下载;
8、项目文件都放在D盘的固定文件夹,一是安全,二是便于交流,三是便于维护;
9、系统启动时首先ping内网5次,然后ping外网,自动选择IP地址;
10、兼顾了软件开发和软件交付使用。
不妥之处敬请高手斧正!
全局代码内容:
'院内通用-以下设置服务器地址
Public IP1 As String ="10.22.1.40" '内网
Public IP2 As String ="111.111.111.111" '外网
Public IPa As String = IP1 '采用值
Public ftpAccount As String = "******" '设置ftp登录用户名
Public ftppassword As String = "******" '设置ftp登录密码
'根据项目而定--以下定义项目参数
Public sfile As String="项目管理系统" '数据源名称,即Sql数据库文件名
Public pname As String="项目管理系统" '项目名称,一个项目可以有多个数据源(可以切换)
Public bname As String="项目管理.bat" '开发版本升级后用到的
Public ename As String="项目管理.exe" '项目运行文件名,不含路径
Public rfile As String ="d:\" & pname & "\数据文件\" & ename '项目运行文件名,含路径
Public pfile As String=pname & ".foxdb" '开发项目文件名
Public dpath As String="d:\" & pname & "\设计资料\" '项目文件开发路径
Public bpath As String="d:\" & pname & "\备份文件\" '本地项目文件备份路径,仅开发时用,交付后用upath
Public rpath As String="d:\" & pname & "\数据文件\project" '项目文件运行路径
Public upath As String="\项目管理系统\数据文件\" '服务器上的项目文件升级路径和备份路径
Public datafile As String = pname & ".zip" '包含最新升级数据的文件名
项目管理.bat内容:
taskkill /f /im foxtable.exe '强行终止
move /y d:\项目管理系统\数据文件\project\foxtable.lib.dll d:\项目管理系统\数据文件
move /y d:\项目管理系统\数据文件\project\foxtable.exe d:\项目管理系统\数据文件
move /y d:\项目管理系统\数据文件\project\config.dat d:\项目管理系统\数据文件
move /y d:\项目管理系统\数据文件\project\项目管理.exe d:\项目管理系统\数据文件
start /d d:\项目管理系统\数据文件 /max 项目管理.exe
del d:\项目管理系统\数据文件\project\项目管理.bat
BeforeConnectOuterDataSource事件:
'通用-根据是否开发状态以及内网和外网登录时服务器地址IP的不同,选择不同的连接字符串
Dim i As Integer=1 '外部数据源
If i=1 Or e.ProjectFile<> dpath & pfile Then '这是开发时项目文件名
Dim a As Boolean
For i =1 To 5 'ping5次
a=Network.Ping(IP1,500) 'ping内网,每次500毫秒
If a Then '如果ping通就退出for循环
Exit For
End If
Next
If a Then '如果内网Ping通,则用内网地址
IPa=IP1
Else '否则用外网地址
IPa=IP2
End If
本句自己完善,原文贴不上:连接字符串 e.C & IPa
End If
发布项目按钮:
'通用-发布项目,上传升级文件
Syscmd.Project.PublishProject()'发布项目
Dim zip As New zipFile'以下创建升级文件
Dim zFile As String = dpath & datafile
If FileSys.FileExists(zfile) Then '如果升级文件已经存在
FileSys.deletefile(zfile,2,2) '则删除
End If
zip.Create(zFile) '创建空文件
'zip.AddFolder(dpath & "publish\project") '添加project目录下的全部文件
'zip.AddFolder(dpath & "publish\project\Attachments") '添加Attachments目录下的全部模板文件
'zip.AddFolder(dpath & "publish\project\Images") '添加Images目录下的全部图标文件
zip.AddFile(dpath & "publish\project\" & pname & ".FoxEx",pname & ".FoxEx") '或只更新项目主文件
zip.AddFile(dpath & "publish\project\" & pname & ".chm",pname & ".chm") '帮助文件没变可以不更新
zip.Close()
Dim ftp1 As new ftpclient
ftp1.TimeOut=20000 '用于设置尝试操作的毫秒数
ftp1.host=ipa '设置单位ftp服务器地址
ftp1.Account = ftpaccount '设置ftp登录用户名
ftp1.password = ftppassword '设置ftp登录密码
ftp1.upload(dpath & datafile,upath & datafile,True) '上传升级文件
FileSys.CopyDirectory(dpath & "Publish", "e:\" & pname & "\数据文件",True)'拷贝项目文件到E盘
生成下发文件按钮:
Dim zfile As String = "e:\" & pname & ".rar" '将要生成的压缩文件
If FileSys.FileExists(zfile) Then '如果压缩文件已经存在
FileSys.deletefile(zfile,2,2) '则删除
End If
Dim Proc As New Process
Proc.File = "winrar.exe"
Proc.Arguments = " a -ibck " & zfile & " E:\" & pname
Proc.Start
Proc.WaitForexit
Proc.Arguments = " a -ibck " & zfile & " E:\系统安装和登录说明.doc"
Proc.Start
开发系统版本升级后发布项目按钮:
'通用-发布项目,上传升级文件
Syscmd.Project.PublishProject()'发布项目
Dim zip As New zipFile'以下创建升级文件
Dim zFile As String = dpath & datafile '以下创建升级文件
If FileSys.FileExists(zfile) Then '如果升级文件已经存在
FileSys.deletefile(zfile,2,2) '则删除
End If
zip.Create(zFile) '创建空文件
zip.addfile(dpath & bname)
Dim Multi As String = FileSys.ReadAllText(dpath & bname, Encoding.Default)
Dim Values(),name As String
Dim m,n As Integer
Values = Multi.split(vbcr)
For Index As Integer = 1 To Values.Length - 3
m=Instrrev(Values(Index)," ")
n=Instrrev(Values(Index),"\project\")
name=mid(Values(Index),n+9,m-n-9)
zip.addfile(dpath & "publish\" & name)
Next
zip.addfile(dpath & "publish\project\" & pname & ".foxex") '或只更新项目主文件
'zip.addfile(dpath & "publish\project\" & pname & ".chm") '帮助文件没变可以不更新
zip.Close()
Dim ftp1 As new ftpclient
ftp1.TimeOut=20000 '用于设置尝试操作的毫秒数
ftp1.host=ipa '设置单位ftp服务器地址
ftp1.Account = ftpaccount '设置ftp登录用户名
ftp1.password = ftppassword '设置ftp登录密码
ftp1.upload(dpath & datafile,upath & datafile,True) '上传升级文件
FileSys.CopyDirectory(dpath & "Publish", "e:\" & pname & "\数据文件",True)'拷贝项目文件到E盘
AfterOpenProject事件:
If ProjectFile<>dpath & pfile Then '这是项目开发文件名
Dim ftp1 As new ftpclient
ftp1.TimeOut=20000 '用于设置尝试操作的毫秒数
ftp1.host=ipa '设置单位ftp服务器地址
ftp1.Account = ftpAccount '设置ftp登录用户名
ftp1.password = ftppassword '设置ftp登录密码
Dim s1 As Date=ftp1.GetFileDate(upath & datafile) '服务器上升级文件的日期时间
Dim s2 As Integer=ftp1.GetFilesize(upath & datafile) '服务器上升级文件的大小
If s1>publishdate Then '如果较现在版本的日期时间新则下载并升级
Dim s3 As String = upath & datafile '服务器上升级文件中包含升级内容的文件
Dim s4 As String = rpath & "\" & datafile '准备保存在客户端的包含升级内容的文件
ftp1.download(s3,s4,False) '静默下载并另存
Dim zip As New zipFile
zip.Open(s4) '打开升级文件
zip.Extractall(rpath) '全部解压到客户端运行文件夹
zip.Close() '关闭升级文件
FileSys.deleteFile(s4,2,2) '删除升级文件
If s2<2000000 then'升级文件小于2Mb,属于一般性版本升级
Syscmd.Project.Open(ProjectFile) '重新打开项目
Else
Dim s As String = rpath & "\" & bname
Dim Proc As New Process '定义一个新的Process
Proc.File = s '指定要打开的文件
Proc.Verb = "Open" '指定动作
Proc.Start()
proc.WaitForExit
End If
Else
Forms("用户登录").Open()
End If
Else
Forms("用户登录").Open()
End If
[此贴子已经被作者于2013-1-8 15:30:00编辑过]