以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义升级问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115624)

--  作者:fubblyc
--  发布时间:2018/3/10 15:34:00
--  自定义升级问题
老师,自己做的自定义升级,出现了这样的错误:
error extracting entry from zip file
error inflating:invalid stored block lengths

另外,要升级第二次才会把下载下来升级包解压出来
解压后也并没有删除升级包


Dim IP2 As String = "106.XXX" \'外网
Dim IPa As String = IP2 \'采用值
Dim ftpAccount As String = "ft" \'设置ftp登录用户名
Dim ftppassword As String = "a" \'设置ftp登录密码
Dim Exit0 As String = "0" \'是否正常退出标识.0-非正常退出,指点屏幕右上角的X退出
Dim pname As String = "智慧工场"
Dim dpath As String = ProjectPath
Dim upath As String = "\\XXX\\sjb\\" \'服务器上的项目文件路径和升级路径
Dim datafile As String = pname & ".zip" \'包含最新升级数据的文件名

Dim ftp1 As new ftpclient
ftp1.TimeOut = 20000 \'用于设置尝试操作的毫秒数
ftp1.host = ipa
ftp1.Account = ftpAccount \'设置ftp登录用户名
ftp1.password = ftppassword \'设置ftp登录密码
ftp1.UTF8 = False

Dim s3 As String = upath & datafile \'服务器上升级文件中包含升级内容的文件
Dim s4 As String = dpath & "\\" & datafile \'准备保存在客户端的包含升级内容的文件
If FileSys.DirectoryExists(dpath) = False Then
    FileSys.CreateDirectory(dpath)
End If
ftp1.download(s3,s4,True) \'非静默下载并另存
Dim zip As New zipFile
zip.Open(s4) \'打开升级文件
zip.Extractall(dpath) \'全部解压到客户端运行文件夹,要升级两次
zip.Close() \'关闭升级文件
If FileSys.FileExists(s4) Then \'如果指定的文件存在
    FileSys.deleteFile(s4,2,2) \'删除升级文件
End If  解压后也并没有删除升级包
Exit0 = "1"
Syscmd.Project.Open(ProjectFile) \'重新打开项目

--  作者:fubblyc
--  发布时间:2018/3/10 15:41:00
--  
升级包没问题,手动解压到目录是OK的。

这样测试没问题:
Dim pname As String = "智慧工场"
Dim dpath As String = "D:\\智慧工场\\project"
Dim datafile As String = pname & ".zip" \'包含最新升级数据的文件名

Dim s4 As String = dpath & "\\" & datafile \'准备保存在客户端的包含升级内容的文件
If FileSys.DirectoryExists(dpath) = False Then
    FileSys.CreateDirectory(dpath)
End If
Dim zip As New zipFile
zip.Open(s4) \'打开升级文件
zip.Extractall(dpath) \'全部解压到客户端运行文件夹
zip.Close() \'关闭升级文件
If FileSys.FileExists(s4) Then \'如果指定的文件存在
    FileSys.deleteFile(s4,2,2) \'删除升级文件
End If


--  作者:有点蓝
--  发布时间:2018/3/10 15:41:00
--  
试试


ftp1.download(s3,s4,True) \'非静默下载并另存
Application.Doevents
System.Threading.Thread.Sleep(2000)
Dim zip As New zipFile
zip.Open(s4) \'打开升级文件
zip.Extractall(dpath) \'全部解压到客户端运行文件夹,要升级两次
zip.Close() \'关闭升级文件
Application.Doevents
System.Threading.Thread.Sleep(2000)
If FileSys.FileExists(s4) Then \'如果指定的文件存在
    FileSys.deleteFile(s4,2,2) \'删除升级文件
End If  解压后也并没有删除升级包
Exit0 = "1"
Syscmd.Project.Open(ProjectFile) \'重新打开项目

--  作者:fubblyc
--  发布时间:2018/3/10 16:16:00
--  
蓝老师,这样就可以了。
这是什么原因呢?要缓冲一下哈?

--  作者:有点蓝
--  发布时间:2018/3/10 16:29:00
--  
等一下前面做完事,其次等一下杀毒软件检测完