kadingxiaodi 发表于 2011-4-4 21:46:36

学习一下,学习一下

zhhsh 发表于 2011-4-5 11:40:51

学习了。。。。

ggaking 发表于 2011-4-13 10:03:33

回复 13# bingxing8000
代码没有问题,少了一个判断目录是否为空的判断,所以,如果补丁目录为空时,数组就无法定义了。
所以程序就出错了。
添加一个判断目录是否为空的就OK了,为空就退出不处理就行了。

Local $List=_FileListToArray(@ScriptDir&"\hotfix","*",1)

If DirGetSize(@ScriptDir&"\hotfix") = 0 then
msgbox(0,"提示","未找到补丁")
Exit
EndIf

While $i<=$List

这样程序就不会报错了。

ggaking 发表于 2011-4-13 10:33:29

今天看了一下,程序有两个BUG,一个是空目录,一个是WindowsXP-WindowsMedia-KB954155-x86-CHS.exe之类的补丁问题,修正程序如下:

#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","*KB*.EXE",1) ;查找有KB的补丁文件,不是的不会加数组
If $list = "" Then ;判断是否空目录
msgbox(0,"提示","未找到补丁")
Exit
EndIf

While $i<=$List                                        ;该表达式的值为true(真)则重复执行循环体语句(以WEnd为结束标志),否则循环结束.
$FixName=StringSplit($List[$i],"-")                     ;StringSplit以指定分隔符把字符串拆分成若干子串.
$FixN=$FixName
If StringLeft($FixN, 2) <> "KB" Then ;解决WindowsXP-WindowsMedia-KB954155-x86-CHS.exe之类的补丁的KB判断问题
        $FixN=$FixName
EndIf
If Not StringInStr($Exists,$FixN) Then
RunWait(@ScriptDir&"\hotfix\"&$List[$i]&" /quiet /passive /norestart")
EndIf
$i+=1
WEnd
msgbox(64,"ok","安装完毕")

ggaking 发表于 2011-4-13 10:34:28

谢谢了,是非常的不错。
CCM,可以加你QQ不?
bingxing8000 发表于 2011-3-30 11:13 http://www.autoitx.com/images/common/back.gif

这个不会判断是不是已经安装过了,只会都装一遍!!
页: 1 [2]
查看完整版本: 用AU3制作打补丁的工具