Foxtable(狐表)用户栏目专家坐堂 → 关于远程升级不成功的求救。。


  共有5001人关注过本帖树形打印复制链接

主题:关于远程升级不成功的求救。。

帅哥哟,离线,有人找我吗?
wealthwind
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
关于远程升级不成功的求救。。  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/5/7 12:07:00 [只看该作者]

发布后的项目,我放在D:/TASTE

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/7 12:08:00 [只看该作者]

使用系统自带的跨版本升级http://www.foxtable.com/help/index.html?n=2934.htm

 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/5/7 12:10:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/7 12:44:00 [只看该作者]

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/5/7 13:27:00 [只看该作者]

我检查了文件夹没有套文件夹额~~你看看截图~~~
图片点击可在新窗口打开查看此主题相关图片如下:360截图20140507132601687.jpg
图片点击可在新窗口打开查看

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

 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/5/7 13:43:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/5/7 14:05:00 [只看该作者]

自带的已经可以跨版本升级了,不需要自己写,自己写的话,就只能自己琢磨了。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/7 14:11:00 [只看该作者]

以下是引用wealthwind在2014-5-7 13:43:00的发言:

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

 

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/5/7 17:15:00 [只看该作者]

谢谢,已经OK啦~~

 回到顶部