易语言自动更新源码
A. 易语言在线更新源码
自动更新要解决的就是要有一个固定的可编辑的网页文本,来读取更新信息另外就是自动下载读取更新信息熟练用到两个子程序 一个是 http读文本 ,还有一个就是分割文本(我自己做的自动升级是这样弄得)说个方法:找个社区发个帖子,把更新信息用个特殊的东西包围起来,,比如!@# 更新信息 !@#这样就http读文本(“这篇帖子的地址”),再把读出来的 分割文本(读到的网页,“!@#”,)这样就可以读到更新信息了至于下载,引用超级模块就行了 比如我发一篇帖子,写上 !@# 2.0|更新说明|下载网址!@# ↑ 这是版本号设置个变量a、b、c、d,都是文本型,b、d的数组写0那就 a=到文本(http读文件(“那篇帖子的网址”))b=分割文本(a,“!@#”,)c=b[2] '这里就得到了更新信息,相当于上面的 2.0|更新说明|下载网址再次分割d=分割文本(c,“|”,)说明:到这里 d[1] 就是上面的2.0,所谓的版本号,得到这个就可以让程序跟现有的版本号对比d[2]就是更新说明。这个要不要无所谓,只是可以弄在标签上让使用者知道更新的内容。d[3]就是下载地址了 那接着写(比如现在程序的版本号是1.0)如果真(到整数(d[1])>1.0)下载(“保存路径”,d[3])其中下载引用超级模块就有,保存路径可以设置 不懂可以加我Q~咱们一起学习~
B. 易语言制作的软件怎么实现自动更新最好把源码发下。
你好,这个问题很好解决的。
首先需要一个FTP虚拟空间,或者一台外网远程服务器,用来判断当前版本是否为最新。
类似这样的源码网上有很多。
请直接网络搜索“易语言自动更新源码” 即可找到许多例程,PS:搜索出来的第二个、第三个都是你想要的源码哦。
希望我的回答对你有所帮助!Kiss灬小猪
C. 易语言怎么实现自动更新
我为了演示清除,就新建一个windos窗口程序。
在这个程序上画:一个按钮,这个按钮到时候用来自动更新
四个标签,用来说明版本。如图
我们现在进入到网络空间,点击“写文字”
文字内容便照图中排版,记得换行哦!
发布该文字成功后,进入到该文字的界面,复制该文字的地址
回到编程软件中,我们新建一个叫文本型的“源码”全局变量
我们在启动窗口上双击,自动生成一个叫“__启动窗口_创建完毕”的子程序,我这里是为了演示效果才创建的这个程序,你实际运用中可以不这样编写!
在该程序下面编写代码:
源码=编码_utf8到gb2312 (到文本 (HTTP读文件 (“之前复制的地址”)))
意思是,把之前在空间复制的那个地址的网站源码赋值给文本型“源码”变量。
我们回到发布的文字网页上,在网页的空白处单击鼠标右键---->查看网页源码。
在源码文件中找到“最新版本”那几个字,我们来取“最新版本”后面的2.0。
然后找到最新版本号后面那代码“</p>”。
因为精易模块取出中间文本这个命令需要得到要取出内容的前后文本,所以我们找到2.0前后的文本。
我们把最新的版本号获取到之后输出到标签4的标题中来,
找到后,在易语言中编写以下代码:
标签4.标题 = 文本_取出中间文本 (源码, “最新版本:”, “</p>”)
以上代码就会取出“最新版本:”和“</p>”之间的“2.0”啦!
调试一下,查看是否能正常获取到网站的源码并取出想要得到内容。
获取到版本号之后,接下来我们编写自动更新。
D. 帮写易语言自动更新源码
主程序
改后缀名为.dll
写个启动程序(也就是检查更新的。)加入一个本软件版本标识常量,
方法:
http读文件(“版本文本地址”)
如果(到文本(获得的版本)=常量的版本)
就
运行(”主程序.dll“)
否则就
http读文件(新版本地址)
也可用
URLDownloadToFileA
函数下载
'下载完成后才会返回
删除文件(以前文件)
如果更新的文件多
你最好打包成压缩文件
删除也用批处理文件。
执行(”批处理文件全局目录+文件名“)
写到文件(替换的目录,数据就是下载的数据)
如果是打包的多个文件,直接zip解压
到这个目录。
Q452327180
E. 跪求易语言检查更新或自动更新源码!
更新源码没有,不过有原理。
1、在自己做的软件做一个标记,现版本是多少。
2、有信息服务器。
3、在主程序每次启动的时,连接服务器获得信息。(注意:服务器端的路由器一定要留端口,需要在路由器上设置。)
4、获得信息,判断是否为最新版本,如果否,启动更新程序,更新程序启动秒后延迟几结束主程序。
5、下载指定服务器的更新文件,并且覆盖原主程序及系统文件。
以后的都很简单了,希望能给你带来帮助,然后,说一句。少看别人的源码,别人的东西始终是别人的东西。对于新手来说,少看别人的源码,不然你写出来的东西都是别人写过东西。如果是那样你觉得还有意义么?
F. 要易语言自动更新源码
要易语言自,动更新源码?(这个,你去找吴涛要要看,不知道他给你不……)
要自动更新,易语言源码?(这个……进度下载模块,写成DLL更新的时候调用你自己研究去吧)
———————————————我是分割线《念青&卓越》———————————————
.版本2
.程序集程序集1
.子程序_启动子程序,整数型,,请在本子程序中放置易模块初始化代码
_临时子程序() '在初始化代码执行完毕后调用测试代码
返回(0) '可以根据您的需要返回任意数值
.子程序_临时子程序
'本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。***注意不要修改本子程序的名称、参数及返回值类型。
.子程序下载进度事件模板,,公开
.参数下载文件名,文本型
.参数文件尺寸,整数型,,Bit
.参数下载速度,整数型,,KB/S
.参数下载进度,整数型
.子程序下载状态事件模板,,公开
.参数欲读入网址,文本型
.参数错误代码,整数型
.参数状态文本,文本型
.参数下载进度,整数型
———————————————我是分割线《念青&卓越》———————————————
.版本2
.程序集HTTP进度下载类,,公开
.程序集变量XML对象,对象
.程序集变量已初始化,逻辑型
.程序集变量集_欲读入网址,文本型
.程序集变量集_引用页,文本型
.程序集变量集_数据块超时,整数型
.程序集变量集_错误信息,文本型
.程序集变量集_保存文件名,文本型
.程序集变量状态_开始下载,逻辑型
.程序集变量集_已下载尺寸,整数型
.程序集变量集_下载进度事件指针,整数型
.程序集变量集_下载状态事件指针,整数型
.程序集变量集_文件总尺寸,整数型
.程序集变量集_停止,逻辑型
.程序集变量集_数据块尺寸,整数型
.子程序_销毁,,,当基于本类的对象被销毁前,此方法会被自动调用
清除()
.子程序清除,,公开,清空HTTP下载类
停止下载()
XML对象.清除()
连续赋值(假,已初始化,状态_开始下载,集_停止)
连续赋值(0,集_数据块超时,集_已下载尺寸,集_下载进度事件指针,集_下载状态事件指针,集_文件总尺寸,集_数据块尺寸)
连续赋值(“”,集_保存文件名,集_错误信息,集_引用页,集_欲读入网址)
.子程序初始化,逻辑型,公开,当基于本类的对象被创建后,此方法会被自动调用
.参数下载进度事件指针,子程序指针,可空
.参数下载状态事件指针,子程序指针,可空
.判断开始(已初始化=假且状态_开始下载=假)
XML对象.创建(“MSXML2.ServerXMLHTTP”,)
.判断开始(XML对象.是否为空())
返回(假)
.默认
已初始化=真
状态_开始下载=假
集_下载进度事件指针=到数值(下载进度事件指针)
集_下载状态事件指针=到数值(下载状态事件指针)
集_文件总尺寸=0
集_停止=假
集_数据块尺寸=#数据块尺寸
集_数据块超时=集_数据块尺寸÷#最低网速
返回(真)
.判断结束
.默认
返回(假)
.判断结束
.子程序置缓冲区尺寸,,公开,如果不用本方法设置缓冲区大小,将默认为10KB。不要过小,太小了会因读写次数增多而影响速度;过大了则等待数据的时间会过长;应根据网络状态合理设置。
.参数缓冲区尺寸,字节型,,单位为KB
.如果真(已初始化且状态_开始下载=假)
.如果真(缓冲区尺寸=0)
缓冲区尺寸=4
.如果真结束
集_数据块尺寸=缓冲区尺寸×1024
集_数据块超时=集_数据块尺寸÷#最低网速
.如果真结束
.子程序Http网址,,公开
.参数欲读入网址,文本型
.参数引用页,文本型,可空
.如果真(已初始化且状态_开始下载=假)
集_欲读入网址=欲读入网址
集_引用页=引用页
.如果真结束
.子程序置保存文件名,逻辑型,公开
.参数文件名,文本型
.如果真(已初始化且状态_开始下载=假)
集_保存文件名=文件名
返回(真)
.如果真结束
返回(假)
.子程序开始下载,逻辑型,公开
.局部变量字节集数据,字节集
.局部变量数据块开始下载时间,整数型
.局部变量文件号,整数型
.局部变量网页文件读写及尺寸信息,文本型
.局部变量temp,整数型
.局部变量当前读写位置,整数型
.局部变量下载速度,整数型
.局部变量已下载的百分比,整数型
.局部变量集_下载起点,整数型
.局部变量status,整数型
.如果真(已初始化=假)
集_错误信息=“没有初始化”
发送状态事件()
返回(假)
.如果真结束
.如果真(状态_开始下载)
集_错误信息=“正在下载中……”
发送状态事件()
返回(假)
.如果真结束
文件号=打开文件(集_保存文件名,#改写,#禁止读写)
.如果真(文件号=0)
集_错误信息=“本地文件无法打开”
发送状态事件()
返回(假)
.如果真结束
集_下载起点=取文件长度(文件号)
集_已下载尺寸=集_下载起点
移到文件尾(文件号)
状态_开始下载=真
集_错误信息=“”
集_停止=假
.循环判断首()
XML对象.方法(“open”,“GET”,集_欲读入网址,真)
XML对象.方法(“setRequestHeader”,“Referer”,集_引用页)
XML对象.方法(“setRequestHeader”,“Accept”,“*/*”)
XML对象.方法(“setRequestHeader”,“User-Agent”,“Mozilla/4.0(compatible;MSIE5.00;Windows98)”)
XML对象.方法(“setRequestHeader”,“Range”,“bytes=”+到文本(集_下载起点)+“-”+到文本(集_下载起点+集_数据块尺寸-1))
XML对象.方法(“setRequestHeader”,“Content-Type”,“application/octet-stream”)
XML对象.方法(“setRequestHeader”,“Pragma”,“no-cache”)
XML对象.方法(“setRequestHeader”,“Cache-Control”,“no-cache”)
XML对象.方法(“send”,)
数据块开始下载时间=取启动时间()
.判断循环首(XML对象.读数值属性(“readyState”,)≠4)
.如果真(取启动时间()-数据块开始下载时间>集_数据块超时)
XML对象.方法(“abort”,)
集_错误信息=“数据下载超时,建议重试。”
关闭文件(文件号)
发送状态事件()
清除下载信息()
返回(假)
.如果真结束
.如果真(集_停止)
集_错误信息=“用户中止了下载”
关闭文件(文件号)
发送状态事件()
清除下载信息()
返回(假)
.如果真结束
XML对象.逻辑方法(“waitForResponse”,1000)
.判断循环尾()
'检测状态
status=XML对象.读数值属性(“status”,)
.如果真(status>299且status≠416) 'http出错
集_错误信息=XML对象.读文本属性(“statusText”,)
跳出循环()
.如果真结束
.如果真(status≠206且status≠416) '服务器不支持断点续传
集_错误信息=“服务器不支持断点续传!”
跳出循环()
.如果真结束
写出字节集(文件号,XML对象.读属性(“responseBody”,).取字节集())
网页文件读写及尺寸信息=XML对象.文本方法(“getResponseHeader”,“Content-Range”)
.判断开始(网页文件读写及尺寸信息=“”)
集_错误信息=“文件长度未知!”
.默认
.如果真(集_文件总尺寸=0)
集_文件总尺寸=到数值(取文本右边(网页文件读写及尺寸信息,取文本长度(网页文件读写及尺寸信息)-倒找文本(网页文件读写及尺寸信息,“/”,,假)))
.如果真结束
当前读写位置=到数值(取文本右边(网页文件读写及尺寸信息,取文本长度(网页文件读写及尺寸信息)-倒找文本(网页文件读写及尺寸信息,“-”,,假)))
集_已下载尺寸=集_已下载尺寸+当前读写位置-集_下载起点
.如果真(集_已下载尺寸>集_文件总尺寸)
集_已下载尺寸=集_文件总尺寸
.如果真结束
集_下载起点=当前读写位置+1
已下载的百分比=集_已下载尺寸×100÷集_文件总尺寸
.判断结束
temp=取启动时间()-数据块开始下载时间
下载速度=集_数据块尺寸÷1.024÷temp
.如果真(集_下载进度事件指针≠0)
CallWindowProc(集_下载进度事件指针,集_保存文件名,集_文件总尺寸,下载速度,已下载的百分比)
.如果真结束
.如果真(集_文件总尺寸=集_已下载尺寸)
集_错误信息=“下载完毕”
跳出循环()
.如果真结束
.如果真(status=416)
集_错误信息=“下载完毕”
跳出循环()
.如果真结束
.循环判断尾(集_停止=假)
关闭文件(文件号)
发送状态事件()
清除下载信息()
返回(集_错误信息=“下载完毕”)
.子程序清除下载信息
连续赋值(假,状态_开始下载,集_停止)
连续赋值(0,集_已下载尺寸,集_文件总尺寸)
.子程序发送状态事件
.如果真(集_下载状态事件指针≠0)
CallWindowProc2(集_下载状态事件指针,集_欲读入网址,XML对象.读数值属性(“status”,),集_错误信息,集_已下载尺寸×100÷集_文件总尺寸)
.如果真结束
.子程序停止下载,,公开
.如果真(状态_开始下载)
集_停止=真
XML对象.方法(“abort”,)
.如果真结束
———————————————我是分割线《念青&卓越》调用系统API—————————
.版本2
.DLL命令CallWindowProc,整数型,"user32.dll","CallWindowProcA"
.参数程序指针,整数型
.参数下载文件名,文本型,传址
.参数文件尺寸,整数型
.参数下载速度,整数型
.参数下载进度,整数型
.DLL命令CallWindowProc2,整数型,"user32.dll","CallWindowProcA"
.参数程序指针,整数型
.参数欲读入网址,文本型,传址
.参数状态代码,整数型
.参数状态文本,文本型
.参数下载进度,整数型
———————————————我是分割线《念青&卓越》常量—————————————
.版本2
.常量数据块尺寸,"10240",,10K/块
.常量最低网速,"0.1",,KB/S
实例效果:
效果不是很好。也可以直接替换源文件。不使用窗口后台静默下载等等等等……楼主自由发挥吧!<念青&卓越>
G. 易语言自动更新问题,源码上传,HTTP读取的字节只有80,我是要下载文件的。只有10分了- -
你那个http读的是源码,而不是你的文件,要找到你文件所在网址才行,另外,网络网盘你作为更新文件存放地,应该不妥,因为你有更新文件上去你的新文件网址会变化的哟,不可能是你原来的那个更新前文件的网址了!