| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2669 人关注过本帖
标题:如何实现自动更新
只看楼主 加入收藏
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
结帖率:93.55%
收藏
 问题点数:0 回复次数:11 
如何实现自动更新
就是一个程序在运行,我点了更新之后,怎么能够从FTP服务器上下载同名文件,覆盖这个EXE文件本身?直接覆盖会提示文件正在使用!
搜索更多相关主题的帖子: 服务器 如何 
2016-07-06 15:21
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
我的思路是:整一个版本号,检测一下,如果服务器版本新,就下载新的EXE文件下来,问题是怎么能够下载覆盖现在正在运行的文件呢?

2016-07-06 15:32
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
实现了,呵呵,还得自己想!

2016-07-06 15:39
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
运行一个EXE关闭另一个EXE就可以吧
2016-07-06 15:57
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
能分享您的方法嘛?

只求每天有一丁点儿的进步就可以了
2016-07-06 17:23
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
分2个文件,主程序.EXE,update.exe
1、在主程序.EXE中检查文件是否最新的。如果不是最新的,调用更新程序,同时退出,主要代码为
if 需要更新=.t.
  *调用更新程序 update.exe,在更新程序中读取数据,更新完成后,复制到 主程序.exe去
  DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER , STRING , STRING , STRING , STRING ,INTEGER
  = SHELLEXECUTE(0,0,'update.exe',0,0,1)
  QUIT
endif

** 退出update.exe时,再调用 主程序.exe
*调用主程序,
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER , STRING , STRING , STRING , STRING ,INTEGER
= SHELLEXECUTE(0,0,'主程序.exe',0,0,1)
QUIT
2016-07-06 20:07
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
这是VFP很高级的用法了,哈哈。
2016-07-07 07:47
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用wengjl在2016-7-6 17:23:05的发言:

能分享您的方法嘛?


主程序设置一个判断文件,启动检查,如果服务器上的新,就退出,执行更新程序

做一个更新程序编译成.exe
wait timeout 2 &&这是等待主程序退出时间差!
ftpget (......)
messagebox("更新完成!")
run /N 主程序

2016-07-07 11:18
w6720w
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2015-5-3
收藏
得分:0 
用木瓜myfll,如服务器设"it1000.txt"和安装程序"IT1000setup.exe",程序下载地址设定
 http://xxx.xxx.xxx.xxx/it1000.txt
 http://xxx.xxx.xxx.xxx/IT1000setup.exe
其中:
(一)it1000.txt文件,内容包含:
[config]
Version=2.0.1.1
(二)主程序为:IT1000.exe ,本例程序放在D:\
1.内设版本量,常量标志: it1000ver="1.0.9.5"
2.内设升级程序段:
updateip="http://xxx.xxx.xxx.xxx"

*下载用于识别新版本
=DownFile(updateip+"/IT1000.txt","d:\it1000.txt")
NEWVER=iniRead("Version","0.0.0.0","config","d:\it1000.txt")
IF it1000Ver=NewVer .OR. it1000Ver>NewVer
   dele file "d:\it1000.txt"
   retu
ENDIF

*下载安装程序进行更新
=DownFile(updateip+"/IT1000setup.exe","d:\it1000setup.exe")
XXRAND=ALLTRIM(STR(INT(1000*RAND()),3,0))
vbat="d:\it"+XXRAND+'.BAT'

SET ALTE TO &vbat
SET ALTE ON
SET CONSOLE OFF
?[CMD /C taskkill /f /im it1000.exe]
?[start "d:\IT1000setup.exe"]
?[del "d:\it1000setup.exe"]
?[start "d:\IT1000.exe"]
?[del %0]
?[ ]
SET ALTE OFF
SET ALTE TO
SET CONSOLE on
Declare Long WinExec In kernel32 String,Long
=WinExec(vbat,0)

平时上传 http://xxx.xxx.xxx.xxx/it1000.txt 和  http://xxx.xxx.xxx.xxx/IT1000setup.exe 两个文件就行了

[此贴子已经被作者于2016-7-8 16:58编辑过]

2016-07-08 16:56
hyswcyh01
Rank: 2
等 级:论坛游民
帖 子:64
专家分:47
注 册:2016-7-17
收藏
得分:0 
方法不错。学习中...
2016-07-17 12:43
快速回复:如何实现自动更新
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023818 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved