以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [分享]狐表开发版本升级后客户端的全自动升级-补遗  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37839)

--  作者:shenyl0211
--  发布时间:2013/7/12 16:30:00
--  [分享]狐表开发版本升级后客户端的全自动升级-补遗
原文见http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=27687&replyID=&skin=1
因超时不能更正,特在此补充说明。

狐表是管理系统开发的好工具,但辛辛苦苦开发的软件不能因为升级问题而挨用户的骂,所以,我写了,分享了,今天发现问题后也完善了基本升级代码(其余的自己扩充,如发布项目时顺便压缩项目、备份项目),希望对大家有所帮助。

由于系统进程foxtable.exe终止需要时间,所以,需更改项目管理.bat内容(否则,放在最前面的文件可能不能更新,出现“无效配置文件”错误),
即在 taskkill /f /im foxtable.exe 后添加3行延时命令:
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs ‘用vbs脚本中的sleep实现延时
Delay.vbs 3 \'延时3秒
del Delay.vbs
顺便在第一行插一句:@echo off

上述操作在bat文件中增加了4行。故需要更改开发系统版本升级后发布项目按钮内容
即将 For Index As Integer = 1 To Values.Length - 3 中的1改为5。

另外,在bat文件的延时命令后、在最后一句前可以插入任意多行的命令,主要由新版本更新的文件数决定(只需看publish文件夹中的修改日期)。

最后,AfterOpenProject事件
If s2<2000000 then\'升级文件小于2Mb,属于一般性版本升级
2000000是可变的,取决于一般性升级的内容多少。

[此贴子已经被作者于2013-7-12 16:46:47编辑过]

--  作者:Bin
--  发布时间:2013/7/12 16:32:00
--  
感谢楼主无私奉献,好帖子必须要顶啊.
--  作者:狐狸爸爸
--  发布时间:2013/7/12 16:43:00
--  
呵呵,虽然不懂,我也顶。
--  作者:lsy
--  发布时间:2013/7/12 16:45:00
--  
何方大神?受凡身一拜!
--  作者:zerov
--  发布时间:2013/7/12 22:10:00
--  
能不能请教大师给大家科普科普?图片点击可在新窗口打开查看
--  作者:rjh4078
--  发布时间:2013/7/13 7:24:00
--  

现在新版本出的这么勤  老版本开发的程序用自动更新升级以后却提示版本不对  这个问题才是最头疼的  说是说自动更新好  这还不如没有  搞得我们老大很不爽  看来还得转平台


--  作者:blackzhu
--  发布时间:2013/7/13 8:43:00
--  
本地用户还不如用个U盘拷贝覆盖下.简单.远程的用用还行.
--  作者:shenyl0211
--  发布时间:2013/7/14 20:44:00
--  
本帖和原帖已经彻底解决了自动升级问题,并提供了所有相关的源代码,大家只需根据自己项目的实际情况更改变量名而已。
--  作者:shenyl0211
--  发布时间:2013/7/14 20:48:00
--  
以下是引用rjh4078在2013-7-13 7:24:00的发言:

现在新版本出的这么勤  老版本开发的程序用自动更新升级以后却提示版本不对  这个问题才是最头疼的  说是说自动更新好  这还不如没有  搞得我们老大很不爽  看来还得转平台


请参照我的帖子更改,完全能够实现全自动升级,不要因噎废食。


--  作者:shenyl0211
--  发布时间:2013/7/14 20:56:00
--  
以下是引用zerov在2013-7-12 22:10:00的发言:
能不能请教大师给大家科普科普?图片点击可在新窗口打开查看
主要原理是下载升级文件后运行批处理命令,依靠批处理命令强行终止foxtable进程,然后将下载的、已经更新了的foxtable升级文件(具体升级了哪些文件,要看publish文件夹中的文件修改日期,点修改日期会自动按修改日期的升序或降序排序)拷贝到安装文件夹,如果不终止foxtable,是无法将下载的新文件覆盖正在运行的旧文件的。其它的详见代码注释,我认为已经注释得非常详细了。