找回密码
 加入
搜索
查看: 7759|回复: 19

[AU3基础] 用AU3制作打补丁的工具

 火.. [复制链接]
发表于 2011-3-28 17:14:52 | 显示全部楼层 |阅读模式
在网上找了一个打补丁的工具,如图。

这个工具会把当前的文件夹里所有的补丁都安装一遍
请问用AU3,如何实现这样的功能?

本帖子中包含更多资源

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

×
发表于 2011-3-28 17:22:22 | 显示全部楼层
是不是用_FileListToArray得到目录下所有文件的路径,然后一个一个run
 楼主| 发表于 2011-3-28 17:24:44 | 显示全部楼层
我没写过哦,没什么思路,不知道怎么写
发表于 2011-3-28 20:43:44 | 显示全部楼层
在论坛里搜一下,楼主会吧?
发表于 2011-3-28 20:50:10 | 显示全部楼层
FileFindFirstFile.FileFindNextFile.
然后一行行run吧
 楼主| 发表于 2011-3-29 10:24:40 | 显示全部楼层
谢谢大家,已经可以了
 楼主| 发表于 2011-3-29 11:03:00 | 显示全部楼层
; 显示当前目录中所有文件的文件名
; 显示当前目录中所有文件的文件名
$search = FileFindFirstFile("*.*")  

; 检查搜索是否成功
If $search = -1 Then
        MsgBox(0, "错误", "没有文件/目录 匹配搜索")
        Exit
EndIf

While 1
        $file = FileFindNextFile($search) 
        If @error Then ExitLoop
        Sleep(1000)
        Run($file)
WEnd
; 关闭搜索句柄
FileClose($search)
以上代码可以了,
但是多个的时候,会一起运行
需要的是一个一个的运行,
我在中间加了一个延迟,也不可以哦
不知道用什么方法可以解决
发表于 2011-3-29 11:32:54 | 显示全部楼层
用runwait($file)
发表于 2011-3-29 11:42:17 | 显示全部楼层
While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop
        ShellExecute($file)
我之前有写过一个,如上所述。
 楼主| 发表于 2011-3-29 14:29:20 | 显示全部楼层
谢谢了,但是还是不太好用
发表于 2011-3-29 15:35:54 | 显示全部楼层
本帖最后由 shenrenba 于 2011-3-29 15:38 编辑

_filereadtoarray

另外系统补丁可以参数运行  一个for 就可以了
发表于 2011-3-29 16:53:09 | 显示全部楼层
补丁会一口气全部开始执行是因为,没有条件让它停止,所以就自动执行下一个

如果所有补丁档案的运行方式都相同,那么就照我下面这样写就行了
但是安装步骤不一致时,就会出错。

另外补丁可以用 /passtive 跟 /quiet 来设定自动安装,不过这参数我不会加
期待高手帮忙

我这边是繁体环境,虽然转成简体字,但视窗内的字肯定不同,楼主自己改吧
$search = FileFindFirstFile("*.exe")
If $search = -1 Then
    MsgBox(0, "Warning!", "No File ")
    Exit
EndIf
$i = 0
While 1    
        $file = FileFindNextFile($search)         
        If @error Then ExitLoop
        ShellExecute($file)
        WinWaitActive("软件更新安装精灵","使用这个精灵安装下列软件更新")        
        ControlClick("软件更新安装精灵","使用这个精灵安装下列软件更新","Button3")        
        WinWaitActive("软件更新安装精灵","请阅读下列的授权合约")        
        ControlCommand("软件更新安装精灵","请阅读下列的授权合约","Button2","check")        
        ControlClick("软件更新安装精灵","请阅读下列的授权合约","Button8")        
        WinWaitActive("软件更新安装精灵","若要关闭这个精灵")
        ControlClick("软件更新安装精灵","若要关闭这个精灵","Button17")
        $i = $i + 1
        WEnd
        MsgBox(0, "Auto Install Script", "Total " & $i & " Files")
FileClose($search)
 楼主| 发表于 2011-3-29 18:03:52 | 显示全部楼层
本帖最后由 bingxing8000 于 2011-3-29 18:05 编辑

谢谢各位。我在网上找了一个别人写的源码。我觉得挺不错,还可以不用安装重复的。
附上代码
别人写的没问题,别人的代码
;程序名称    系统补丁静默安装器
;程序作者    一同
;版权所属    无忧天空
;支持网站    http://bbs.sky808.com/
;---------------------------------------
#Include <File.au3>
Local Const $hklm="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
;判断hotfix目录是否存在
If Not FileExists(@ScriptDir&"\hotfix") Then
DirCreate(@ScriptDir&"\hotfix")
MsgBox(64,"Error","未发现补丁程序,请将所有补丁程序拷贝至hotfix目录后在试!")
Exit
EndIf
ToolTip(@CR&"正在安装系统补丁,请稍后!"&@CR,@DesktopWidth-260,@DesktopHeight-120)
;读取已安装补丁
Local $i=1,$Exists=""
While 1
$Exists&=RegEnumKey($hklm,$i)
If @Error Then ExitLoop
$i+=1
WEnd
;打印列表并安装所有补丁
$i=1
Local $List=_FileListToArray(@ScriptDir&"\hotfix","*",1)
While $i<=$List[0]
$FixName=StringSplit($List[$i],"-")
$FixName=$FixName[2]
If Not StringInStr($Exists,$FixName) Then
RunWait(@ScriptDir&"\hotfix"&$List[$i]&" /quiet /passive /norestart")
EndIf
$i+=1
WEnd
msgbox(64,"ok","Finish.")
我修改后的
#Include <File.au3>
Local Const $hklm="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
ToolTip(@CR&"正在安装系统补丁,请稍后!")
Local $i=1,$Exists
While 1
$Exists=RegEnumKey($hklm,$i)          ;RegEnumKey读取指定子键的名称.
If @Error Then ExitLoop
$i+=1
WEnd
$i=1
Local $List=_FileListToArray(@ScriptDir&"\hotfix","*",1)
While $i<=$List[0]                                        ;该表达式的值为true(真)则重复执行循环体语句(以WEnd为结束标志),否则循环结束.
$FixName=StringSplit($List[$i],"-")                       ;StringSplit以指定分隔符把字符串拆分成若干子串.
$FixN=$FixName[2]
If Not StringInStr($Exists,$FixN) Then
RunWait(@ScriptDir&"\hotfix"&$List[$i]&" /quiet /passive /norestart")
EndIf
$i+=1
WEnd
msgbox(64,"ok","安装完毕")
不过出了一个问题

望高手解答

本帖子中包含更多资源

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

×
发表于 2011-3-30 10:22:18 | 显示全部楼层
刚刚搜寻论坛,找到两行指令,更精简,楼主做个BAT档就行了....

@FOR %%A IN (*.exe) DO %%A /NOBACKUP /NORESTART /PASSIVE
@ECHO Finish! &&PAUSE
 楼主| 发表于 2011-3-30 11:13:26 | 显示全部楼层
谢谢了,是非常的不错。
CCM,可以加你QQ不?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 08:20 , Processed in 0.085524 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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