Foxtable(狐表)用户栏目专家坐堂 → 每次大版本升级总是会出点状况


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

主题:每次大版本升级总是会出点状况

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
每次大版本升级总是会出点状况  发帖心情 Post By:2017/10/17 21:03:00 [只看该作者]

升级文件是放在ftp服务器上的,下载都没有问题这次大版本升级后程序不能自动重启
'---先下载ftp服务器上的日期文件----------
If ftp.Download("\Update\Update.Txt",Path & "\Update.Txt") = True Then '如果下载升级日期文件成功
    Dim ud() As String = FileSys.ReadAllText(Path & "\Update.Txt").Split("|")
    Dim Sdate1 As Date = Cdate(ud(0)) '服务器update.txt发布日期
    Dim Sdate2 As Date = Cdate(ud(1)) '服务器Version.txt发布日期
    Dim Cdate1 As Date = PublishDate '客户端发布日期
    Dim Cdate2 As Date = FileSys.ReadAllText(ProjectPath & "Bin\Version.txt") '客户端Version.txt大版本发布日期
    
    If Sdate2 > Cdate2 Then '如果服务器程序发布日期大于客户端发布日期(大升级)
        If MessageBox.Show("发现新的版本更新,发布日期:" & Sdate2 & ",是否升级?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            If ftp.Download("\Update\Update2.Zip",Path & "\Update2.Zip",True) = True Then '如果下载程序文件成功
                UpdatePath = Path
                RemoteUpdate = False
                If Syscmd.Project.Update(False,False) = True Then
                    Application.restart  '重新启动
                End If
            Else
                MessageBox.Show("由于网络原因下载升级文件失败,请稍后再试!")
            End If
        End If
    ElseIf Sdate1 > Cdate1 Then '如果服务器程序发布日期大于客户端发布日期(小升级)
        If MessageBox.Show("发现新的更新,发布日期:" & Sdate1 & ",是否升级?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            If ftp.Download("\Update\Update1.Zip",Path & "\Update1.Zip",True) = True Then '如果下载程序文件成功
                UpdatePath =  Path
                RemoteUpdate = False
                If Syscmd.Project.Update(False,False) = True Then
                    Application.restart  '重新启动
                End If
            Else
                MessageBox.Show("ftp下载升级文件失败,请稍后再试!")
            End If
        End If
    End If
End If

一模一样的代码,大版本提示升级完成后重启到一半又出现原来默认那个"在线升级完成,请重新启动程序",但小升级就不会,是哪里出了问题?
还不知道明天其他客户端升级会不会有其他问题.
谢谢!

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/17 22:19:00 [只看该作者]

测试了一下,大版本更新的时候不能使用Application.restart ,因为Application.restart 直接在内存域中重启本身的,而不是重启更新后的exe文件。大版本升级是要更新exe文件的,并且大版本更新必须在重启后才会真正的更新解压后的文件的。

所以大版本更新必须退出项目,然后重新打开项目。

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


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

 尝试一下改成这样的代码,直接启动exe

 

Dim proc As new Process
proc.File = ApplicationPath & "foxtable.exe"
proc.start


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/10/18 17:07:00 [只看该作者]

有的客户端升级会出现这种错误提示,

图片点击可在新窗口打开查看此主题相关图片如下:升级问题.jpg
图片点击可在新窗口打开查看

出错后强行关闭重新打开又可以了,是什么原因呢?


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


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

 回复4楼,出现这个问题,是因为某个文件是打开状态,但又用另一个文件覆盖替换它的时候,就报错。

 

 


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


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

 具体原因不明,有可能是某个dll被引用了,导致无法替换。

 回到顶部