Foxtable(狐表)用户栏目专家坐堂 → 这个发布后程序的远程更新都有什么作用吗,假设我现在发布了一个项目,安装在了其它电脑上,然后再把源项目添加了一些功能,比如,添加了一个窗口之类的,那么,这个已经安装的客户端能更新吗,求解!


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

主题:这个发布后程序的远程更新都有什么作用吗,假设我现在发布了一个项目,安装在了其它电脑上,然后再把源项目添加了一些功能,比如,添加了一个窗口之类的,那么,这个已经安装的客户端能更新吗,求解!

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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9045 威望:0 精华:0 注册:2017/10/24 15:24:00
这个发布后程序的远程更新都有什么作用吗,假设我现在发布了一个项目,安装在了其它电脑上,然后再把源项目添加了一些功能,比如,添加了一个窗口之类的,那么,这个已经安装的客户端能更新吗,求解!  发帖心情 Post By:2017/12/19 10:54:00 [只看该作者]

这个发布后程序的远程更新都有什么作用吗,假设我现在发布了一个项目,安装在了其它电脑上,然后再把源项目添加了一些功能,比如,添加了一个窗口之类的,那么,这个已经安装的客户端能更新吗,求解!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/19 10:56:00 [只看该作者]

只要你把升级包放在升级路径那里,那么只要你项目里面写有update的代码(afterOpenProject或者某个升级按钮click),就会读取升级路径的文件进行比较和更新。

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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9045 威望:0 精华:0 注册:2017/10/24 15:24:00
  发帖心情 Post By:2017/12/19 11:00:00 [只看该作者]

天哪,这个是不是很复杂的呢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/19 11:02:00 [只看该作者]

什么复杂?

 

3.在线升级

需要提醒一下,本节介绍的内容是针对发布后程序的远程自动升级,所以要测试的话,必须运行发布后的程序进行测试。

你可以在你的项目中加上一个在线升级的菜单命令或者按钮,代码很简单:

Syscmd.Project.Update()

执行上面的代码,系统首先检索远程升级路径中的update.txt文件,获得项目版本日期和Foxtable版本日期,和本机的项目版本日期和Foxtable版本日期进行比较,然后根据比较结果进行动作:

A、如果本机的项目版本日期大于等于update.txt中的项目版本日期,则不进行任何动作。

B、如果本机的项目版本日期小于update.txt中的项目版本日期,且本机的Foxtable版本日期等于update.txt中的Foxtable版本日期,则开始下载简化升级包update1.zip。

C、如果本机的项目版本日期小于update.txt中的项目版本日期,且本机的Foxtable版本日期不等于update.txt中的Foxtable版本日期,则开始下载完整升级包update2.zip。

升级包下载完成后,会自动解压并覆盖本机的文件,完成升级。

因为单单升级项目本身的频率会远远超过同时升级项目和运行环境的频率,所以提供两个升级包,可以让客户端的日常升级更加快捷。

至此我们的在线升级功能已经完成,即使你是一个初次接触编程的人,应该也能即时掌握。

Update的语法:

Syscmd.Project.Update(Prom1, Prom2)

Prom1: 可选参数,逻辑型,没有发现新版本时,是否提示用户。
Prom2: 可选参数,逻辑型,发现新版本时,是否提示用户升级。

例如希望自动升级能够完全"静默",发现新版本时不提示,自动开始升级,没有发现新版本时也不提示:

Syscmd.Project.Update(False,False)

如果我们在AfterOpenProject下面的代码:

Syscmd.Project.Update(False,False) 
Forms("窗口1").Open() '可能会出错
'后续其它代码

目的是希望打开项目的时候自动升级,然后打开窗口1。
但是上述代码肯定会在升级成功之后提示错误,因为一旦升级成功,Foxtable就会关闭,后面的打开窗口代码就会出错,当然后续其它的代码也一样会出错。
我们可以用下面的代码避免错误:

If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    Forms("窗口1").open()
    '后续其它代码
End If

也就是说Update执行后会返回一个逻辑值,如果升级成功,返回True,否则返回False。

总之,如果需要在AfterOpenPoject事件中实现自动升级,那么原有的AfterOpenProject事件代码必须包括在这个判断中,只有没有升级的情况下,才执行原来的代码:

If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    '原AfterOpenProject事件代码
End If


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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9045 威望:0 精华:0 注册:2017/10/24 15:24:00
  发帖心情 Post By:2017/12/19 11:11:00 [只看该作者]

一直按照这个步骤就行了吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/19 11:14:00 [只看该作者]

 1、你项目里面要写update代码,一两句代码而已。写到afterOpenProject事件;

 

 2、你修改项目后,重新发布,把发布后的升级包放在升级路径那里去;

 

 3、客户端旧项目打开后执行update代码,会自动完成程序的更新。


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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9045 威望:0 精华:0 注册:2017/10/24 15:24:00
  发帖心情 Post By:2017/12/19 11:41:00 [只看该作者]

好的,这个升级路径的话是指本地电脑的盘吗

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


加好友 发短信
等级:小狐 帖子:373 积分:4432 威望:0 精华:0 注册:2017/2/7 7:41:00
  发帖心情 Post By:2017/12/19 12:44:00 [只看该作者]

"升级路径"是指程序能读到的路径

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/19 12:51:00 [只看该作者]

以下是引用lzw001在2017/12/19 11:41:00的发言:
好的,这个升级路径的话是指本地电脑的盘吗

 

升级路径在你发布的时候指定。

 

如果是局域网使用,可以设置成共享文件夹,如 \\192.168.1.51\某个共享文件名

 

如果是互联网使用,你需要搭建一个ftp或者一个http,然后写这样的路径,如 http://foxtable.com/download/80222/

 


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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9045 威望:0 精华:0 注册:2017/10/24 15:24:00
  发帖心情 Post By:2017/12/19 14:16:00 [只看该作者]

好的

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