找回密码
 加入
搜索
查看: 22148|回复: 47

[原创] 无须下载文件即可检测是否需要更新的脚本

 火... [复制链接]
发表于 2009-11-10 00:37:38 | 显示全部楼层 |阅读模式
很多人做自动更新程序,发现不是很好,http文件就两个命令,InetGet,InetGetSize,
前面一个要下载,后面一个不用下载.大多数人是用InetGet来做的,我今天用InetGetSize做一个.
开源大作,支持的就下载.没钱的就拷代码.高手就飞过,谢谢!
;代码名称:无须下载文件即可检测是否需要更新的脚本
;3.2.13.7.1版本下编译通过
;优势:不用到服务器下载任何文件就可以判断程序是否需要更新。
;高手请飞过。。。。。。。
;作者:wangwen916
;email:wangwen916@21cn.com不推荐发邮件,已经专门用来对付垃圾邮件。但是我还是会用OUTLOOK刷下来处理的。
;时间:2009.11.9.23:59
;地点:深圳
;声明:本代码为本人原创,你可以随意复制或者修改而不需要通知本人。建议保留版权信息,文中提到的地址只是起说明描述作用,
;对软件不做明示的或暗示的任何担保,
#include <GUIConstants.au3>
;#NoTrayIcon;不显示图标,后台运行
Local $n0,$i,$n6,$n7,$n8,$size1,$size2,$up,$msg                        ;变量声明
$n8=10000                                                                                                ;下载超时时间设置,程序大设置长一点。考虑网速。
;此为控制程序,主程序通过这个程序调用。
;http://down.360safe.com/inst.exe把下面这个地址替换成你的软件地址。这个是360的。文件小供测试,不保证连接一定可以用。
;你的软件安装后需要释放"控制程序"与”update.txt“这两个文件到主程序目录
;服务器单独存放一个”update.txt“供升级程序检测
;*************************************************************************************************************
;*************************************************************************************************************
;”update.txt“写法:每次更新程序时加上日志,那么这个文件会增大。增大就会使文件不一样。        $$$$程序精髓$$$$$
;*************************************************************************************************************
;*************************************************************************************************************

;****************************************************************
;您需要修改文中以下位置才可以运行。
;(您的版本文件地址)
;(您的升级包地址)
; (您的主程序)
;调试信息,正常注释掉
;****************************************************************
;把下面的加到控制程序后
$n0=GuiCreate("控制台", 260, 200,0,0)                        ;创建控制台
GUISetState()
call("up")                                                                                ;调检测函数
run("notepad.exe")                                                                ;(您的主程序)
Opt('MustDeclareVars', 1)                                                ;匹配模式
Func up()                                                                                ;自动更新检测函数
                $size1=InetGetSize("http://www.abc.com/soft/update.txt")        ;服务器文件大小(您的版本文件地址)
                If $size1=0 Then                                                                                        ;无法获取服务器文件大小
                        MsgBox(64, "错误", "程序将退出!无法连接到服务器")                ;调试信息,正常注释掉
                        WinClose("无标题 - 记事本","")                                                        ;(您的主程序)
                        Exit
                EndIf
                MsgBox(0, "服务器文件大小:"& $size1&"字节","调试信息")        ;调试信息,正常注释掉
                $size2=FileGetSize("update.txt")                                                        ;本机当前目录文件大小
                MsgBox(0, "本机文件大小:"& $size2&"字节","调试信息")                ;调试信息,正常注释掉
                $up=StringCompare($size1,$size2)                                                        ;比较升级文件大小
                If         $up=0 Then                                                                                                 ;如果本机文件跟服务器文件不一致
                MsgBox(64, "您的软件是最新", "不需要升级")                                ;不需要更新提示
                Else                                                                                                                ;否则
                call("n3")                                                                                                        ;转更新进度函数        
                EndIf
        EndFunc
        
Func n3()                                                                                                                        ;更新进度函数
                $n6=InetGetSize ( "http://down.360safe.com/inst.exe" )        ;获取文件大小(您的升级包地址)
                If $n6=0 Then
                        MsgBox(64, "无法连接到服务器", "尝试下载离线升级包再安装!")
                        MsgBox(0, "提示", "地址将自动保存到剪贴板,粘贴到浏览器下载!")
                        ClipPut ( "http://down.360safe.com/inst.exe" )                ;(您的升级包地址)
                        WinClose("无标题 - 记事本","")                                                                                        ;(您的主程序)
                        Exit
                EndIf
                InetGet("http://down.360safe.com/inst.exe",@DesktopDir&"/update.exe",1,1)
                                                                                                                                                                        ;下载到当前用户桌面(您的升级包地址)
                ProgressOn("正在下载升级包", "文件大小"&$n6*0.000001&"MB")                                        ;创建进度条
                While @InetGetActive                                                                                                                ;是否还在下载
                        $n7=@InetGetBytesRead/$n6*100
                                For $i = 10 to 100 step 10
                                        ProgressSet($n7, "已下载"&@InetGetBytesRead*0.000001& "MB")                ;进度条设置
                                Next
                                        sleep(5)                                                                                                                ;防止字符太闪烁,超时时间跟这个有关
                                        $n8=$n8-1
                                        if $n8<0 Then
                                                MsgBox(64, "下载超时", "请换时间升级或者手动下载升级包再安装!")
                                                WinClose("无标题 - 记事本","")                                                                ;(您的主程序)
                                                Exit                                                                                                                ;关闭控制程序
                                        EndIf
                Wend
                ProgressSet(100, "完成", "完成")
                ProgressOff()                                                                                                                                ;关闭进度条
                WinClose("无标题 - 记事本","")                                                                                                ;(您的主程序)
                MsgBox(64, "下载完毕!", "您可以在桌面找到升级包,复制到其他电脑升级或安装,点击“确定”将在本机启动升级向导!")
                ;run(@DesktopDir&"/update.exe")                                                                                         ;运行升级程序,要运行取消注释
                Exit                                                                                                                                                ;关闭控制程序
        EndFunc
While 1
    $msg = GUIGetMsg()    
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2024-4-7 21:08:15 | 显示全部楼层
看到15年前的自己,感概良多,年轻的时候就那么的勤奋
 楼主| 发表于 2009-11-10 00:40:52 | 显示全部楼层
复制代码乱乱的,建议还是下吧,顺便给我5块钱...呵呵,现在没人抢沙发,自己坐坐!
发表于 2009-11-10 10:48:23 | 显示全部楼层
看看,效果怎么样!支持原创!
 楼主| 发表于 2009-11-10 22:48:32 | 显示全部楼层
有人看有人下,我的努力没有白费啊...实际我已经应用到我的程序中去了......断网等条件已经测试过了,没有发现什么BUG,如有BUG请报告,谢谢!
发表于 2009-11-30 23:38:56 | 显示全部楼层
很 不错

下载了
支持下
发表于 2009-12-7 13:44:53 | 显示全部楼层
楼主强悍
谢谢分梦想
发表于 2010-1-4 05:21:25 | 显示全部楼层
收藏 学习一下,感谢楼主
发表于 2010-1-4 23:30:14 | 显示全部楼层
看看和其他的有什么不同
发表于 2010-1-5 00:24:43 | 显示全部楼层
正在测试 ,,谢谢
发表于 2010-4-9 13:51:00 | 显示全部楼层
感谢楼主,学习了
发表于 2010-5-8 22:34:13 | 显示全部楼层
冒是不错。
发表于 2010-5-8 22:38:38 | 显示全部楼层
很不错  支持胃
发表于 2010-5-10 16:38:20 | 显示全部楼层
喜欢楼主的共享精神 虽然现在用不上 支持下收藏备用
发表于 2010-5-26 01:10:59 | 显示全部楼层
很不错  支
发表于 2010-7-23 16:44:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 13:22 , Processed in 0.084274 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表