Foxtable(狐表)用户栏目专家坐堂 → 版本自动在线升级,出现部分项目无限升级,原因是update_Fox_Path不覆盖(已解决,结尾有答案)


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

主题:版本自动在线升级,出现部分项目无限升级,原因是update_Fox_Path不覆盖(已解决,结尾有答案)

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
版本自动在线升级,出现部分项目无限升级,原因是update_Fox_Path不覆盖(已解决,结尾有答案)  发帖心情 Post By:2019/8/28 12:46:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/10/4 9:07:05编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 12:53:00 [显示全部帖子]

4.0不是很稳定的吗?怎么这么多bug。我2天就发现3个bug了,而且都很浅显容易发现

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 14:48:00 [显示全部帖子]


此主题相关图片如下:4.png
按此在新窗口浏览图片


出现这个目录应该已经解压了,需要重启项目才会更新,目录里面有没有文件?有文件
1、有没有手工改过update.txt文件?没有,全自动
2、有没有改过项目名称?没有。就跟以前
3、是否使用可执行文件.exe启动程序的?

整套升级就是跟以前升级一样,没加任何新功能,只是让我的客户从2.0的版本升级到4.0

升级的部署。我已经做过上千次。系统超过2000人使用过了。
[此贴子已经被作者于2019/8/28 14:50:37编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 15:34:00 [显示全部帖子]

我发现关闭360以后可以顺利升级,测试几个项目也正常了。估计是因为这回事

 


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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 18:42:00 [显示全部帖子]

糟糕了,有客户直接电话叼我更新了失败。这次问题很大,无限升级啊。压根不是360的问题,没有360,也一样出现无限升级
[此贴子已经被作者于2019/8/28 18:48:07编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 19:00:00 [显示全部帖子]

我发现是Application.ReStart  的问题。这个东西,在更新小版本没问题。更新大版本,会导致update_fox_path不提取覆盖!

 

                If Syscmd.Project.Update(False,False) =True Then
                    Application.ReStart  '升级成功后重启项目
                End If

 

这个用法来自这个官方帖子,太坑了

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=129576&skin=0

[此贴子已经被作者于2019/8/28 19:08:06编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 19:48:00 [显示全部帖子]

有没办法判断是大版本升级还是小版本升级?来区分使用?

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/28 20:31:00 [显示全部帖子]

'联网检测更新---
If User.Type <> UserTypeEnum.Developer Then'根据是否开发者,再检查升级
    Try
        Dim req = System.Net.WebRequest.Create(UpdatePath & "/update.txt")
        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
                '备份一下Attachments文件夹--
                Dim now As String = Format(Date.now, "yyyyMMddHHmmss")
                If FileSys.DirectoryExists(ProjectPath & "Attachments") Then
                    FileSys.CopyDirectory (ProjectPath & "Attachments",ProjectPath & "Attachments备份_" & now, True)
                End If
                '备份一下Attachments文件夹--
               
                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
'联网检测更新---

 

 

 

总算解决了,最终完美升级方案,放在AfterOpenProject的最开头,然后你自己的其他代码

[此贴子已经被作者于2019/8/28 20:33:33编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/8/29 10:49:00 [显示全部帖子]

其实核心的原因,在Application.Restart的使用时,会占用根目录下的   狐表启动程序.exe。
当你小升级的时候,由于只覆盖Project文件夹里的东西,这个文件被占用也无所谓。
但是大升级的时候,它需要连这个文件也覆盖,你占用了它,就无法覆盖了,于是就无法完成升级,下次打开又升级,无限升级
 
 
狐表的升级机制解释:
1下载文件压缩包
2解压到狐表目录下,生成一个Update_Fox_Path临时文件夹,升级的文件都在这里
3在启动狐表程序的瞬间,如果检测到有Update_Fox_Path文件夹,就自动把里面的东西,提取出来覆盖狐表,再启动狐表
 
如果只是小升级,文件夹里的内容提取出来时,覆盖project文件夹,没有文件被占用,升级就顺利
但是大升级,你如果此时还在运行代码(如现在的Application.Restart),就会占用根目录下的 狐表程序.exe,导致提取失败,无法覆盖
而手动重新打开程序,由于代码已经没有执行,文件的占用彻底释放,就顺利完成第三步

[此贴子已经被作者于2019/10/4 9:05:35编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1275 积分:7922 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2019/10/4 9:05:00 [显示全部帖子]

1、Return ""
是因为我这些代码,全部都写在内部函数里,如果要中止内部函数执行,就要Return ""。我把AfterOpenProject的代码,放在了内部函数维护,因为每次打开项目属性,很卡,而且确定后会触发一次事件,非常不利于维护 

2、'继续执行Try组合后的代码
这只是一句注释,让我自己代码走到这个条件内,会做什么,下次记得

整套代码,适合于原来没有做自动升级的人。他们只需要在AfterOpenProject的事件的开头插入这段代码即可,非常傻瓜式,不需要根据代码再想办法如何把自己的事件融合进去

 回到顶部
总数 11 1 2 下一页