• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

AutoIt3(AU3源码)AU3编写的软件自动更新工具

AutoIT3 奇跡の海 2年前 (2017-05-31) 737次浏览 已收录 0个评论 扫描二维码

AutoIt3(AU3源码)AU3编写的软件自动更新工具

简介

最大的优点就是通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是其它语言所无法做到或尚无可靠方法实现的.
最近我就用AU3编写了一款用于对比检查软件更新的脚本.
程序启动就自动连接网络并采用文件大小对比的方法检查本地文件与服务器文件的差异,
如大小不同则自动下载服务器上的文件来替换.下面附上代码,供喜欢AU3的网友研究.

源码

$g_szVersion = “YMTOOL_UPDATE”
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
#include 
$var = Ping(“www.163.com”,500) ;;;检查网络是否通畅
If $var Then; also possible: If @error = 0 Then
TrayTip(“L4EVER.cn软件更新检查示例”, “正在检查程序更新….”,2)
Else
$exit = MsgBox(52, “警告”, “网络连接错误,无法检查更新.”@CRLF&”是否打开本地程序?”)
IF $EXIT = 7 THEN
exit
ELSE
if FileExists(“D:\Program Files\XXXXXX\XXXX.exe”) then ;;;需要更新的程序路径
run(“D:\Program Files\XXXXXX\XXXX.exe”)
else
MsgBox(16, “警告”, “本地文件不存在,”@CRLF&”请等网络连接正常后再启动本程序!”)
EndIf
EndIf
exit
EndIfDim $under,$upon,$per,$res,$filesize,$Inetget,$setup;定义变量GUICREATE (“L4EVER.cn软件更新检查示例”,280,80)
$Filepath1 = (“http://L4EVER.cn/labs/XXXX.exe”) ;;;远程服务器上的文件地址
$Filepath2 = (“D:\Program Files\XXXXXX\XXXX.exe”) ;;;需要更新的程序路径$f1 = InetGetSize ($Filepath1) ;;;获取远程文件大小
If @error Then
$exit = MsgBox(52, “警告”, “获取服务器文件信息错误,”@CRLF&”可能是您的网络出现故障,”&@CRLF&”或者服务器出现故障,”&@CRLF&”是否打开本地程序?”)
IF $EXIT = 7 THEN
exit
ELSE
if FileExists($Filepath2) then
run($Filepath2)
else
MsgBox(16, “警告”, “本地文件不存在,”@CRLF&”请稍候再尝试启动本程序!”)
EndIf
EndIf
EndIf
$f2 = FileGetSize(“XXXX.exe”);;;获取本地文件大小,本程序必须可XXXX.exe放到同一目录,因为FileGetSize好像无法获取其他目录的文件大小.If $f1 = $F2 Then
run(“XXXX.exe”)
exit
ElseIf $f1 <> $F2 then
MsgBox(48, “提示”, “L4EVER.cn软件更新检查示例 已更新,”@CRLF&”请点击[开始更新]按钮下载更新!”)
EndIfGUICtrlCreateLabel (“更新进度:”,10,20)
$progres = GuiCtrlCreateProgress (70,15,200,20)
$ENSURE = GUICtrlCreateBUTTON (“开始更新”,70,50,60,20)$QUIT = GUICtrlCreateBUTTON (“退出程序”,150,50,60,20)
GuiSetState()WHILE 1
;;;;;;;;;;;;;;;;;;;;;如果点右上角”关闭”按钮或”退出”按钮则询用用户确定退出
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE OR $msg = $QUIT Then
$exit = MsgBox (36,”提示”,”XXXXXXXXXX不会运行,”@CRLF&”是否退出更新程序?”)
IF $EXIT = 7 THEN
ContinueLoop
ELSE
EXIT
ENDIF
ENDIFIf $msg = $ENSURE THEN NAME() ;;;如果点确定按钮则转到NAME()
WENDFunc NAME()$Inetget = StringStripWS ( ($Filepath1),4) ;;这两句是去掉字符串两边的空格,但实验发现处理后的字符串前后还会各有
$INETGET2 = StringStripWS ( ($Filepath2),4) ;;一个空格,不知为什么,所以下面我用了一句IF $Inetget2 = ” ” or “” then;;;;;;;;下面这段意思是:如果本地路径为空格则从远程路径中取出文件名存入$setupIF $Inetget2 = ” ” or $Inetget2 = “” then ;如果”本地文件路径”为空格或为空,那么从远程路径里面取文件名
$setup = “”
$InetgetCUT = $Inetget
while 1 ;;;这个循环就是从远程路径里面取文件名了,从最后一个字符一直向前循环,遇到”/”字符时跳出循环
$str = StringRight ($InetgetCUT,1)
Select
Case $str = “”
RETURN
Case $str = “/”
EXITLOOP
Case Else
$InetgetCUT = StringTrimRight ($InetgetCUT,1)
$setup = $str $setup
EndSelect
wend
ELSE
$SETUP = $Inetget2 ;;否则把”本地文件路径”中的内容放入$SETUP
ENDIFif $setup = “” or $setup = ” ” then return ;如果$setup为空格或空串则返回$under = InetGetSize ($Inetget)
InetGet ($Inetget,$setup,1,1)While @InetGetActive ;判定循环条件
TrayTip(“正在下载更新中”, “已下载 ” @InetGetBytesRead/1024/1024 &” M”,1);监视正在下载的文件大小
$upon = @InetGetBytesRead ;获取已下载大小
$per = $upon/$under*100 ;计算比值
$res = StringLeft ($per,3) ;计算百分值
GuiCtrlSetData($progres , $res) ;下载进度的值
;;;;;;;;;;;;;;;;;;;;; 如果点右上角关闭按钮或退出按钮则询用用户
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE OR $msg = $QUIT Then
$exit = MsgBox (36,”警告”,”更新过程中退出会造成程序无法运行,”@CRLF&”你确定退出本程序?”)
IF $EXIT = 7 THEN
ContinueLoop
ELSE
EXIT
ENDIF
ENDIF
WEnd
GuiCtrlSetData($progres , 0)
if FileGetSize ($setup) = 0 then
TrayTip(“下载失败”,”文件” $setup & “下载失败”,10)
else
IF $under = FileGetSize ($setup) Then TrayTip(“更新完成”, “下载文件” $setup & “大小为” & $under/1024/1024 &” M”,10) ;;这句是右下角的提示
run(“XXXX.exe”) ;;;运行已经更新的程序
exit
ENDIF
RETURN
ENDFUNC

版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->AutoIt3(AU3源码)AU3编写的软件自动更新工具!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址