找回密码
 加入
搜索
查看: 4543|回复: 10

[系统综合] 请问大家用AU3写智能显卡检测安装的问题?(已经解决)

  [复制链接]
发表于 2010-6-8 10:12:46 | 显示全部楼层 |阅读模式
本帖最后由 yiruirui 于 2010-7-12 11:30 编辑

我写了一个智能显卡检测安装工具,用的是Everest检测的,检测可以成功实现.
就是显卡驱动安装好了后没有反应,不知道是哪里出错了,我用的7Z压缩包,里面包含的是驱动内容,其实就是解压驱动到指定目录,然后向注册表写一句话,请问大家我这样哪里错了,贴出关键代码如下:
Func Button1Click()
        ;开始循环智能判断设备驱动
        Disable_all()
        Dim $filepath_string
        $tmp_path = ""
        For $i = 1 To $DrvList[0][0]
                If GUICtrlRead(Eval("Checkbox" & $i)) <> $GUI_CHECKED Then ContinueLoop ;如果未选择则进入下一个循环
                $AutoCheckDrv = StringSplit($DrvList[$i][1], ";")
                If $AutoCheckDrv[0] > 1 And StringInStr($All_keyname,$AutoCheckDrv[1])>0 Then ;如果需要智能判断且字段名没有错误则进入
                        $device_keyword = IniReadSection($Cfg_file, $AutoCheckDrv[1])
                        For $j = 3 To $AutoCheckDrv[0]
                                $Device_Drv = IniRead($EvePath & "\Reports\report.ini", $AutoCheckDrv[2], $AutoCheckDrv[$j], "") ;读取报告
                                $Device_Drv = CleanKeword($Device_Drv) ;清除无效关键字
                                If StringLen($Device_Drv) < 1 Then ContinueLoop ;如果硬件信息中无内容则继续判断下一个
                                For $k = 1 To $device_keyword[0][0]
                                        If $device_keyword[$k][0] = "other" Then ContinueLoop ;如果关键字是other则退出循环
                                        If StringInStr($Device_Drv, $device_keyword[$k][0]) <> 0 And Not (StringInStr($filepath_string, $device_keyword[$k][1])) Then
                                                $filepath_string = $filepath_string & ";" & $device_keyword[$k][1]
                                                $tmp_path = $tmp_path & ";" & $device_keyword[$k][1]
                                        EndIf
                                Next
                        Next
                        If StringLen($tmp_path) < 1 Then ;如果未搜索到相应的驱动;则加入other
                                $temp1 = IniRead($Cfg_file, $AutoCheckDrv[1], "other", "")
                                If FileExists(@ScriptDir & "\" & $temp1) Then $filepath_string &= ";" & $temp1
                                $temp1 = ""
                        EndIf
                Else ;如何不需要自动判断则加入解压列表
                        $filepath_string &= ";" & $AutoCheckDrv[1]
                EndIf
        Next

        ;解压所需驱动
        ;MsgBox(4096, "所需解压的驱动", "路径为:" & $filepath_string & @CRLF)
        GUICtrlSetData($Progress1,0) ;滚动条归零
        $ext_tmp = StringSplit($filepath_string, ";") ;获得各文件路径数组
        For $i = 1 To $ext_tmp[0]
                If StringLen($ext_tmp[$i]) > 0 Then
                        GUICtrlSetData($lab2, "正在解压:" & @ScriptDir&"\"&$ext_tmp[$i])
                        unzip(@ScriptDir&"\"&$ext_tmp[$i], $Ex_path) ;调用unzip函数进行解压缩
                        GUICtrlSetData($Progress1,Round(($i/$ext_tmp[0])*100)-5) ;滚动条前进
                EndIf
        Next
        GUICtrlSetData($Progress1,95) ;滚动条前进
        ;将驱动路径写入注册表
        If Stringlen($filepath_string) > 0 Then
                GUICtrlSetData($lab2, "正在将驱动路径写入注册表,请稍等...")
                $driver_path = '%SystemRoot%\Inf' & DevicePath($Ex_path)
                RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "DevicePath", "REG_EXPAND_SZ", $driver_path) ;加入新记录
        EndIf
        GUICtrlSetData($Progress1,100) ;滚动条前进
        GUICtrlSetData($lab2, "驱动已成功写入注册表,正在退出...")
        DirRemove($EvePath, 1)
        Sleep(1500)
        Exit ;退出程序,多余文件删除在 EndsSript() 中进行

EndFunc

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-6-8 13:21:56 | 显示全部楼层
代码中未见“setup -newsetup”,驱动未安装。
加入代码:
RunWait(@SystemDir"\setup -newsetup -mini")
 楼主| 发表于 2010-6-20 19:21:11 | 显示全部楼层
回复 2# 3mile
多谢你的回答,但是都是一些7Z格式的驱动压缩包,没有这个安装文件啊,请问驱动智能选择安装工具实现细节是则样的?我只有一些纯驱动包7Z格式的,直接用AU3解压缩到某个目录,这样不可以,请问为什么?该如何实现?
发表于 2010-6-20 21:31:21 | 显示全部楼层
你的代码中用UNZIP进行解压,难道不会改成7Z解压吗?
 楼主| 发表于 2010-6-21 13:09:45 | 显示全部楼层
回复 4# 3mile
有用7Z解压缩的,你的回答还没到点子上,我是想问,解压缩后的这些纯驱动如何安装,这个才是关键所在,不过仍然谢谢你的热情回答。
发表于 2010-6-21 21:10:55 | 显示全部楼层
我在2楼不是已经回答了吗?
 楼主| 发表于 2010-6-30 13:02:43 | 显示全部楼层
回复 6# 3mile
谢谢,我的纯驱动里面没有你在2楼说的那个文件啊?
发表于 2010-6-30 13:13:47 | 显示全部楼层
LZ可以在网上搜索下 devcon.exe 或者 dpinst.exe 的应用例子
发表于 2010-6-30 14:54:45 | 显示全部楼层
"WINDOWS\SYSTEM32\SETUP.EXE -newsetup -mini"
 楼主| 发表于 2010-7-12 11:29:21 | 显示全部楼层
感谢大家回答,问题就如 afan所说那样解决的。
发表于 2010-7-23 21:58:25 | 显示全部楼层
RunWait('rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 inf的完整路径')
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-11 21:49 , Processed in 0.083036 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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