以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  每次大版本升级总是会出点状况  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108180)

--  作者:happyft
--  发布时间: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

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

--  作者:有点蓝
--  发布时间:2017/10/17 22:19:00
--  
测试了一下,大版本更新的时候不能使用Application.restart ,因为Application.restart 直接在内存域中重启本身的,而不是重启更新后的exe文件。大版本升级是要更新exe文件的,并且大版本更新必须在重启后才会真正的更新解压后的文件的。

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

--  作者:有点甜
--  发布时间:2017/10/18 9:35:00
--  

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

 

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


--  作者:HappyFt
--  发布时间:2017/10/18 17:07:00
--  
有的客户端升级会出现这种错误提示,

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

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


--  作者:有点甜
--  发布时间:2017/10/18 18:02:00
--  

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

 

 


--  作者:有点甜
--  发布时间:2017/10/18 18:02:00
--  
 具体原因不明,有可能是某个dll被引用了,导致无法替换。