以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  开发版Foxtable完整自动升级方案  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38494)

--  作者:飞
--  发布时间:2013/7/30 14:56:00
--  开发版Foxtable完整自动升级方案

升级整个publish目录的文件

xp系统需先按win+r运行一下 regsvr32.exe zipfldr.dll

需准备一下FTP服务器空间,然后在数据库中保存一下版本号以及升级规则,小升级的话用系统自带的升级,如果foxtable有版本更新,则可以用下面的升级方式

代码中的目录等可自行替换,我开发的系统要求用户都放在D盘下,大家不同目录的话可以在注册时将目录保存在注册表里面,然后在VBS脚本中读取目录

升级代码如下:


            SysFTPClient.DownLoad("\\WebSite\\SysUpdate\\进口商系统\\进口商系统.zip","D:\\进口商系统.zip",True)
            If FileSys.FileExists("D:\\进口商系统.zip") = False OrElse FileIO.FileSystem.GetFileInfo("D:\\进口商系统.zip").Length = 0 Then Msgbox("升级文件下载失败,请重试!",64,"提示") : Return Nothing
            Dim strCode As String = "\'结束进程" & vbcrlf _
                                  & "Set ws=createobject(""wscript.shell"")" & vbcrlf _
                                  & "ws.run ""taskkill /f /im foxtable.exe"",hide" & vbcrlf _
                                  & "Wscript.Sleep 1000" & vbCrlf _
                                  & "\'清理旧文件" & vbcrlf _
                                  & "Set fso = CreateObject(""scripting.filesystemobject"")" & vbcrlf _
                                  & "If fso.FolderExists(""d:\\进口商系统" ") Then ws.Run ""cmd /c rd /s /q d:\\进口商系统"",0" & vbCrlf _
                                  & "\'解压文件" & vbcrlf _
                                  & "UnZip ""d:\\进口商系统.zip"",""d:\\进口商系统""" & vbcrlf _
                                  & "fso.DeleteFile ""d:\\进口商系统.zip"" " & vbCrlf _
                                  & "Msgbox ""系统完整升级成功,点确定后将重新启动系统"",64,""提示"" " & vbCrlf _
                                  & "Wsh.Run ""d:\\进口商系统\\进口商系统.exe"",1,false" & vbCrlf & vbCrlf _
                                  & "Sub UnZip(ByVal ZipFile,ByVal TargetDir)" & vbcrlf _
                                  & "    Set fso = CreateObject(""Scripting.FileSystemObject"")" & vbcrlf _
                                  & "    If Not fso.FileExists(ZipFile) Then" & vbcrlf _
                                  & "        Exit Sub" & vbcrlf _
                                  & "    End If" & vbcrlf _
                                  & "    If Not fso.FolderExists(TargetDir) Then" & vbcrlf _
                                  & "        fso.CreateFolder(TargetDir)" & vbcrlf _
                                  & "    End If" & vbcrlf _
                                  & "    Set objShell = CreateObject(""Shell.Application"")" & vbcrlf _
                                  & "    Set objSource = objShell.NameSpace(ZipFile)" & vbcrlf _
                                  & "    Set objFolderItem = objSource.Items" & vbcrlf _
                                  & "    Set objTarget = objShell.NameSpace(TargetDir)" & vbcrlf _
                                  & "    objTarget.CopyHere objFolderItem,256" & vbcrlf _
                                  & "End Sub"
            FileSys.WriteAllText( environ("tmp") &  "\\UnZip.vbs" ,strCode,False,Encoding.Unicode)
           
            Dim Proc As New Process
            Proc.File = environ("tmp") &  "\\UnZip.vbs"
            Proc.Start


--  作者:jsq96jg
--  发布时间:2013/7/30 15:16:00
--  

请问楼主,这是在互联网还是在局域网上呢?


--  作者:jsq96jg
--  发布时间:2013/7/30 15:17:00
--  

要是能写个注释就更好了


--  作者:狐狸爸爸
--  发布时间:2013/7/30 15:41:00
--  
图片点击可在新窗口打开查看
--  作者:飞
--  发布时间:2013/7/30 15:43:00
--  
以下是引用jsq96jg在2013-7-30 15:16:00的发言:

请问楼主,这是在互联网还是在局域网上呢?

互联网局域网一样的,这个脚本只是调用windows的解压功能,在这只前只要把安装包弄成zip文件就可以了


--  作者:飞
--  发布时间:2013/7/30 15:44:00
--  
以下是引用jsq96jg在2013-7-30 15:17:00的发言:

要是能写个注释就更好了

自己生成一个脚本看一下就明白了,不懂的都能百度到


--  作者:lsy
--  发布时间:2013/7/30 15:57:00
--  
这个不顶,还顶啥呢?
--  作者:don
--  发布时间:2013/7/30 16:19:00
--  
顶啊
--  作者:jsq96jg
--  发布时间:2013/7/30 16:40:00
--  

唉,租的服务器,地址总变,怎么解决升级问题呢

 


--  作者:yankunhao
--  发布时间:2013/7/30 17:24:00
--  
不错,但运作起来还是比较复杂的,我做了个更简单的,根本不用什么VBS脚本,也不用先按win+r运行一下 regsvr32.exe zipfldr.dll. 但你的思路是值得参考的.
[此贴子已经被作者于2013-7-30 17:25:39编辑过]