Foxtable(狐表)用户栏目专家坐堂 → 项目发布后,如何自动检测当前版本并在后台升级


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

主题:项目发布后,如何自动检测当前版本并在后台升级

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/10/14 9:49:00 [只看该作者]

以下是引用lihe60在2010-10-14 8:42:00的发言:

图片点击可在新窗口打开查看此主题相关图片如下:未命名.bmp
图片点击可在新窗口打开查看

出现这个,应该检查你下载文件的地址,你的地址是:192.168.1.1,后面的端口应该不用80吧,我做的是用文件共享方式,所以没80端口的。大家在用的时候要看帮助里的“Network.DownloadFile”相关用法。

[此贴子已经被作者于2010-10-14 9:52:33编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/10/14 10:35:00 [只看该作者]

老兄,你的版本号,

是狐表发布窗口中的程序版本号?文件版本号?还是自已编辑定义的版本号?

 


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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2010/10/14 11:57:00 [只看该作者]

yankunhao兄,您好,对你的代码有一些疑问

Dim szdj As String =e.Form.Controls("TextBox1").Value '下载地址对吗?
Dim bcdj As String =e.Form.Controls("TextBox2").value '保存地址对吗?
Dim yfm As String =e.Form.Controls("TextBox3").value '好像没用
Dim mm As String =e.Form.Controls("TextBox4").value '好像没用
Network.DownloadFile(szdj,bcdj,"","",True,1000,True) ' 下载并覆盖原文件
Dim s As String =e.Form.Controls("TextBox6").value
Dim c As String =s & "\" & e.Form.Controls("TextBox5").value
If FileSys.DirectoryExists(c) Then '如果目录C:\MyFolder存在
    FileSys.DeleteDirectory(c,3,2)'则删除之                       为什么还要删除文件
End If

Dim Proc As New Process
Proc.File = bcdj
Proc.Verb = "open"
Proc.Start()
Proc.WaitForInputIdle()                  
Sendkeys.SendWait(s) '发送按键信息
Sendkeys.SendWait("{ENTER}")
Sendkeys.sendwait("{RIGHT 1}")
Sendkeys.Sendwait("{ENTER}")      这一段代码起什么作用
Dim Result As DialogResult
Result = MessageBox.Show("升级完成,请重新打开本系统!","提示")
If Result = DialogResult.OK Then
    Syscmd.Project.Exit()
End If

还有:

下载并覆盖的是发布项目后的文件夹中的执行文件,并且发布的项目只下载这个好像不行,

怎么又要删除文件夹呢?

谢谢


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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/10/14 13:56:00 [只看该作者]

以下是引用卟离卟弃在2010-10-14 10:35:00的发言:

老兄,你的版本号,

是狐表发布窗口中的程序版本号?文件版本号?还是自已编辑定义的版本号?

 

 版本号是你定义的,比如你做了个软件,在发布时用‘20101001’这个做版本号,而在你做这个软件时用内部表做登录窗口,这个内部表有用一列(客户端版本号)的第一行保存,这样客户端的版本号就一直在用户的电脑上保存着,以后需要升级的话,就会从服务器的一个共享文件里下载打包了的新客户端软件包,然后将原来的客户端软件目录一次性删除,再将打包的新客户端自动解压到原客户的地方。这个新的客户端软件在你做修改时记得在上所说的内部表里设定一个新的客户端版本号及新的服务器版本号(这个版本号要用外部表,因为你可以更改外部表而不可能去到用户电脑里改,这就是为什么客户产端版本号和服务器的版本要分开设定的原因了)。


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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/10/14 14:14:00 [只看该作者]

以下是引用wqc360在2010-10-14 11:57:00的发言:

yankunhao兄,您好,对你的代码有一些疑问

Dim szdj As String =e.Form.Controls("TextBox1").Value '下载地址对吗?对。
Dim bcdj As String =e.Form.Controls("TextBox2").value '保存地址对吗?对。
Dim yfm As String =e.Form.Controls("TextBox3").value '好像没用   这是网上邻居里打开共享文件的用户名,根据你的需要而设定的,如果你没设密码,就用不到了。
Dim mm As String =e.Form.Controls("TextBox4").value '好像没用 这个是上面所说的用户密码。
Network.DownloadFile(szdj,bcdj,"","",True,1000,True) ' 下载并覆盖原文件  对
Dim s As String =e.Form.Controls("TextBox6").value
Dim c As String =s & "\" & e.Form.Controls("TextBox5").value
If FileSys.DirectoryExists(c) Then '如果目录C:\MyFolder存在
    FileSys.DeleteDirectory(c,3,2)'则删除之                       为什么还要删除文件   因为要将旧的客户端删除。然后将新的客户端下载安装。记得这个升级工具要专门做一个项目并生成一个程序,在你第一次去用户那里安装时要根据你的需要和你所做的软件分开目录来安装,否则就这个连升级工具都删除是删除不了的,因为你的升级工具正在运行。
End If

Dim Proc As New Process
Proc.File = bcdj
Proc.Verb = "open"
Proc.Start()
Proc.WaitForInputIdle()                  
Sendkeys.SendWait(s) '发送按键信息
Sendkeys.SendWait("{ENTER}")
Sendkeys.sendwait("{RIGHT 1}")
Sendkeys.Sendwait("{ENTER}")      这一段代码起什么作用  在自动解压时发送一个回车确定一下。
Dim Result As DialogResult
Result = MessageBox.Show("升级完成,请重新打开本系统!","提示")
If Result = DialogResult.OK Then
    Syscmd.Project.Exit()
End If

还有:

下载并覆盖的是发布项目后的文件夹中的执行文件,并且发布的项目只下载这个好像不行,

怎么又要删除文件夹呢?

谢谢

                                         你发布的项目要打包放在共享文件上,如名字为“Publish.exe”这样的,这个是一个自动解压软件包,用压缩工具打包的,所以下载并覆盖的是从新解压后的整个文件夹。总之我的升级就是将用户的整个原用的目录一起删的(除了升级工具目录外)。

[此贴子已经被作者于2010-10-14 15:02:13编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/10/14 14:27:00 [只看该作者]

以下是引用狐狸爸爸在2010-9-18 18:09:00的发言:

呵呵,这种东西没有办法通用的,只有自己设计。

 

 

[此贴子已经被作者于2010-9-18 18:09:10编辑过]

其实老六可以考虑一下的,我相信是可行的,因为我发现好多用户都会有用到这个。我的想法是:比如老六在狐表的项目里专门有个给用户设定版本号的地方,如用户端版本号,服务端版号(或变量),然后服务器的IP等一些相关的参数......

  只要老六想做,我相信是不难的。

[此贴子已经被作者于2010-10-14 14:27:29编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/10/14 14:33:00 [只看该作者]

升级工具?????????????

 

 不懂,,,,

    是什么软件?能分享一下吗?


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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2010/10/14 14:44:00 [只看该作者]

以下是引用卟离卟弃在2010-10-14 14:33:00的发言:

升级工具?????????????

 

 不懂,,,,

    是什么软件?能分享一下吗?

就是我们用狐表专门做的这个升级项目发布生成的一个专用来升级的小程序,当你做的其他管理项目要升级的时候就调用这个工具,这个工具可以和你的管理项目发布的软件一起放在同一个目录中,这个目录下有两个文件夹,一个是这个升级小工具,而另一个就是你做的其他管理项目如我的就是**计件工资管理....

[此贴子已经被作者于2010-10-14 14:44:25编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/14 15:30:00 [只看该作者]

以下是引用yankunhao在2010-10-14 14:27:00的发言:

其实老六可以考虑一下的,我相信是可行的,因为我发现好多用户都会有用到这个。我的想法是:比如老六在狐表的项目里专门有个给用户设定版本号的地方,如用户端版本号,服务端版号(或变量),然后服务器的IP等一些相关的参数......

  只要老六想做,我相信是不难的。

[此贴子已经被作者于2010-10-14 14:27:29编辑过]

 

这个早已经有了。

 

SaveConfigValue保存设置信息。

GetConfigValue,读取设置信息。


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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2010/10/14 17:12:00 [只看该作者]

我还是只能用复制整个Publish(服务器上要共享)文件夹来解决的。老兄这个我还没搞懂

 

在一新项目(看命名更新程序等等),做一个窗口和按钮,按钮代码如下:

FileSys.CopyDirectory ("\\192.168.3.100\wqc共享文件夹\Publish", "E:\车间数据库\Publish", True) '复制服务器发布的文件夹到客户端指定文件夹并覆盖原文件夹。
Dim Proc As New Process '定义一个新的Process
Proc.File = "E:\车间数据库\Publish\佶龙机加二车间数据管理系统" '指定文件路径
Proc.Start()'打开文件
Syscmd.Project.Exit(False)

或者直接在一新项目(看命名更新程序等等)的AfterOpenProject事件加入以上代码,就变成隐形更新了,根本看不到更新项目的执行。

 


 回到顶部
总数 31 上一页 1 2 3 4 下一页