以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于远程升级不成功的求救。。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50476)

--  作者:wealthwind
--  发布时间:2014/5/7 12:06:00
--  关于远程升级不成功的求救。。

升级按钮代码:

\'需要更改的内容:--------------------
\'定义变量:ename
\'定义变量:FTP设置Host\\Account\\Password\\RootDir,注意RootDir属性
\'升级过程中有多个 MessageBox.Show 提示,应用时可根据实际情况保留关键提示.
\'其他:无


\'主要DOS命令说明--------------------
\' cls 清除屏幕.
\' 无参数.

\' xcopy 复制文件和目录树.
\' 参数
\' /s 复制目录和子目录,不包括空目录.
\' /e 复制目录和子目录,包括空目录.与 /s /e 相同.
\' /q 复制时不显示文件名.
\' /y 取消提示以确认要覆盖现有目标文件.

\' rd 删除一个目录.(请谨慎操作!!)
\' 参数
\' /s 除目录本身外,还将删除指定目录下的所有子目录和文件.用于删除目录树.
\' /q 安静模式,带 /s 删除目录树时不要求确认.

\'----------------------------------------


\'定义变量--------------------
Dim ename As String = "行销部日常管理系统.exe" \'管理系统运行文件名
Dim utmp As String = "D:\\UpdateTemporary" \'存放升级文件的临时文件夹.【千万不要设置成磁盘的根目录!!因为升级后会删除临时文件夹!!】
Dim utmp1 As String = utmp & "\\1" \'存放解压Publish.zip或update.zip文件的临时文件夹
Dim upath As String \'需要升级的路径,待用
Dim upathPub As String = ProjectPath & ".." \'需要升级的项目Publish路径,".."表示上一级目录
Dim upathPro As String = ProjectPath \'需要升级的项目Project路径
Dim dfile As String \'需要下载的zip文件,待用
Dim dpath As String \'需要下载的zip文件保存路径,待用

Dim vtxt As String = "Version.txt"
Dim pzip As String = "Publish.zip"
Dim utxt As String = "update.txt"
Dim uzip As String = "update.zip"

Dim uvtxt As String = utmp & "\\Version.txt"
Dim upzip As String = utmp & "\\Publish.zip"
Dim uutxt As String = utmp & "\\update.txt"
Dim uuzip As String = utmp & "\\update.zip"

Dim ftp As New FTPClient
ftp.Host = "120.198.124.195"
ftp.Account = "und8042"
ftp.Password = "und8042ssa"
ftp.RootDir = "\\Update" \'如果升级所需文件刚好放置在FTP的根目录下,可以不用设置此属性;否则需要设置目录路径.
\'ftp.RootDir = "\\升级文件所在目录"

Dim zip As New ZipFile

\'连接FTP服务器--------------------
If ftp.Connected = False \'如果FTP没有连接
    If ftp.Connect Then \'连接FTP
        MessageBox.Show("FTP服务器连接成功!")
    Else
        MessageBox.Show("FTP服务器连接失败!")
        Return
    End If
End If

\'检测升级所需的4个文件--------------------
If ftp.FileExists(vtxt) = False OrElse ftp.FileExists(pzip) = False OrElse ftp.FileExists(utxt) = False OrElse ftp.FileExists(uzip) = False Then
    MessageBox.Show("服务器缺少升级所需文件!" & vbcrlf & vtxt & "  " & pzip & "  " & utxt & "  " & uzip,"提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
    Return
End If

\'校验目录--------------------
If FileSys.DirectoryExists(utmp) = False Then
    FileSys.CreateDirectory(utmp)
End If
If FileSys.DirectoryExists(utmp1) = False Then
    FileSys.CreateDirectory(utmp1)
End If

\'升级判断--------------------
If ftp.Download(vtxt,uvtxt) And ftp.Download(utxt,uutxt) Then
    MessageBox.Show(vtxt & "  " & utxt & "下载完成!")
    Dim sver As Date = FileSys.ReadAllText(uvtxt) \'服务器Version.txt
    Dim cver As Date = FileSys.ReadAllText(ProjectPath & "\\Catch\\Version.txt") \'客户端Version.txt
    Dim spub As Date = FileSys.ReadAllText(uutxt) \'服务器update.txt
    Dim cpub As Date = PublishDate \'客户端发布日期
    MessageBox.Show("服务器Foxtable版本:" & sver & "  项目发布日期:" & spub & vbcrlf & "客户端Foxtable版本:" & cver & "  项目发布日期:" & cpub)
    If sver > cver Then \'如果服务器Foxtable版本大于客户端版本
        MessageBox.Show("程序版本需要升级!")
        upath = upathPub \'项目Publish路径,项目跨版本完全升级
        dfile = pzip
        dpath = upzip
    Else
        MessageBox.Show("程序已经是最新版本!" & vbcrlf & "将检查文件版本……")
        If spub > cpub Then \'如果服务器项目发布日期大于客户端发布日期
            MessageBox.Show("文件版本需要升级!")
            upath = upathPro \'项目Project路径,项目同版本升级
            dfile = uzip
            dpath = uuzip
        Else
            MessageBox.Show("您正在使用的已经是最新版本!")
            FileSys.DeleteDirectory(utmp,2,2) \'删除临时文件夹
            Return \'终止执行后续代码,直接退出
        End If
    End If
Else
    MessageBox.Show(vtxt & "  " & utxt & "下载失败!")
    Return
End If


\'升级处理--------------------
\'下载文件&解压文件&升级文件--------------------
If ftp.Download(dfile,dpath) Then
    MessageBox.Show(dfile & "下载完成!")
    zip.Open(dpath)
    zip.ExtractAll(utmp1)
    zip.Close
    MessageBox.Show(dfile & "解压完成!")
   
    \'建立升级批处理命令文件--------------------
    Dim s As String = utmp & "\\update.bat"
    If FileSys.FileExists(s) Then
        FileSys.DeleteFile(s)
    End If
    FileSys.WriteAllText(s,"@echo off" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"@title 自动升级..." & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"taskkill /f /im foxtable.exe" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) \'清除屏幕.清除删除 foxtable.exe 进程后屏幕反馈的信息.
    FileSys.WriteAllText(s,"echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"Delay.vbs 3" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"del Delay.vbs" & vbcrlf,True,Encoding.Default)
    FileSys.WriteAllText(s,"xcopy /s /e /q /y " & utmp1 & "\\*.* " & upath & vbcrlf,True,Encoding.Default) \'复制升级文件,采用upath变量自动判断升级路径
    FileSys.WriteAllText(s,"@cls" & vbcrlf,True,Encoding.Default) \'清除屏幕.清除升级文件后屏幕反馈的信息.
    FileSys.WriteAllText(s,"start " & ProjectPath & "..\\" & ename & vbcrlf,True,Encoding.Default) \'重启,"..\\"表示上一级目录
    FileSys.WriteAllText(s,"rd /s /q " & utmp & vbcrlf,True,Encoding.Default) \'删除临时文件夹
    MessageBox.Show("update.bat文件制作完成!")
   
    Dim Proc As New Process \'定义一个新的Process
    Proc.File = s \'指定要打开的文件
    Proc.Verb = "Open" \'指定动作
    Proc.Start()
    proc.WaitForExit
Else
    MessageBox.Show(dfile & "下载失败!")
    Return
End If

 

 

 

请问老师,以上代码我哪里没有设置好,的情况是,能发现新版本,并下载,但是完成后,我在打开发布后的项目,项目是没有更新的,还是老项目,,请问我哪里设置错误了~~~

 

 


此主题相关图片如下:360截图20140507120558875.jpg
按此在新窗口浏览图片

此主题相关图片如下:360截图20140507120540843.jpg
按此在新窗口浏览图片

此主题相关图片如下:360截图20140507120527125.jpg
按此在新窗口浏览图片

--  作者:wealthwind
--  发布时间:2014/5/7 12:07:00
--  
发布后的项目,我放在D:/TASTE
--  作者:Bin
--  发布时间:2014/5/7 12:08:00
--  
使用系统自带的跨版本升级http://www.foxtable.com/help/index.html?n=2934.htm
--  作者:wealthwind
--  发布时间:2014/5/7 12:10:00
--  

按以上代码,已经能够显示,你的版本需要升级,并下载了UPDATE.zip,并解压,并退出项目进入DOC安装过程,然后重新启动项目,但启动项目后,项目还是老项目。。。。不是新版本项目。。。。也就是说,升级失败???怎么样处理??


--  作者:有点甜
--  发布时间:2014/5/7 12:44:00
--  

 代码是通用的,目测没有错误。

 

 你项目打包错了,文件夹下不要套文件夹。

 

 实在不行,就看3楼的帮助,很简单。


--  作者:wealthwind
--  发布时间:2014/5/7 13:27:00
--  
我检查了文件夹没有套文件夹额~~你看看截图~~~
图片点击可在新窗口打开查看此主题相关图片如下:360截图20140507132601687.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:360截图20140507132610484.jpg
图片点击可在新窗口打开查看

--  作者:wealthwind
--  发布时间:2014/5/7 13:43:00
--  

update .ZIP现在压缩包我用的,项目里面全部文件压缩吧,而不是PROJECTA里面的文件???

 

究竟UPdate,用的是项目里面全部文件,还是PROJECTA里面的文件???


--  作者:狐狸爸爸
--  发布时间:2014/5/7 14:05:00
--  
自带的已经可以跨版本升级了,不需要自己写,自己写的话,就只能自己琢磨了。
--  作者:有点甜
--  发布时间:2014/5/7 14:11:00
--  
以下是引用wealthwind在2014-5-7 13:43:00的发言:

update .ZIP现在压缩包我用的,项目里面全部文件压缩吧,而不是PROJECTA里面的文件???

 

究竟UPdate,用的是项目里面全部文件,还是PROJECTA里面的文件???

 

理应是 project 这个文件夹 或者 是 project 里面的文件夹。

 

你都测试一下,第一种可能性大。


--  作者:wealthwind
--  发布时间:2014/5/7 17:15:00
--  
谢谢,已经OK啦~~