我想问下,狐表自带的系统升级功能,那个触发Update1.zip下载是通过什么底层方法?我在网络严格的国企服务器里,部署了一个Nginx网站,开通好tcp端口,可以通过浏览器访问update.txt,可以下载update1.zip
用狐表检查升级,WebRequest请求可以打开update.txt
但是Syscmd.Project.Update()是没效果,没看到下载update1.zip或者update2.zip的进度条
我在感觉Syscmd.Project.Update()并不是通过Http协议去访问下载的,但也绝对不是FTP。难道是狐表自己写原生的socket协议?
想问下有人重写过自己的升级方法的代码吗?分享下帖子
====================================================
以下是我用的升级代码,这些代码在普通阿里云服务器都正常,已经用过60多个项目了
'联网检测更新---
If User.Type <> UserTypeEnum.Developer Then'根据是否开发者,再检查升级
Try
Dim req = System.Net.WebRequest.Create(PublicUpdatePath & "/update.txt") 'PublicUpdatePath是自己定义的升级网址
Dim pos = req.GetResponse
Dim stm As System.IO.Stream = pos.GetResponseStream()
Dim reader As New System.IO.StreamReader(stm)
Dim str As String = reader.ReadToEnd
pos.Close
stm.Close
reader.close
Dim ary() As String = str.split("|")
Dim d As Date = ary(0)
Dim dv As Date = ary(1)
If PublishDate < d Then
If MessageBox.show("发现新版本{" & d & "},是否升级?","在线升级提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
'备份一下Config文件夹--
Dim now As String = Format(Date.now, "yyyyMMddHHmmss")
If FileSys.DirectoryExists(ProjectPath & "Config") Then
FileSys.CopyDirectory (ProjectPath & "Config",ProjectPath & "Config备份_" & now, True)
End If
'备份一下Config文件夹--
If dv > ApplicationVertion Then
MessageBox.show("本次升级内容较多,请耐心等待" & vbcrlf & vbcrlf & "升级后需要【手动启动软件】!","升级重要提醒",MessageBoxButtons.OK,MessageBoxIcon.Warning)
End If
If Syscmd.Project.Update(False,False) =True Then
If dv <= ApplicationVertion Then '小版本更新,可以用自动重启,大版本绝对不能用,会无限升级!
Application.ReStart '升级成功后重启项目
End If
End If
Return ""
Else
MessageBox.show("旧版程序运行过程中,可能会有报错,请尽快升级","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
End If
Else '无需升级,正常启动
'继续执行Try组合后的代码
End If
Catch ex As exception
'MessageBox.Show("联网检测更新失败,将以当前版本运行")
End Try
End If
'联网检测更新---
[此贴子已经被作者于2022/4/2 17:21:34编辑过]