以文本方式查看主题 - 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 |
-- 作者:HappyFt -- 发布时间:2017/10/18 17:07:00 -- 有的客户端升级会出现这种错误提示, 出错后强行关闭重新打开又可以了,是什么原因呢?
|
-- 作者:有点甜 -- 发布时间:2017/10/18 18:02:00 -- 回复4楼,出现这个问题,是因为某个文件是打开状态,但又用另一个文件覆盖替换它的时候,就报错。
|
-- 作者:有点甜 -- 发布时间:2017/10/18 18:02:00 -- 具体原因不明,有可能是某个dll被引用了,导致无法替换。 |