yiruirui 发表于 2010-6-8 10:12:46

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

本帖最后由 yiruirui 于 2010-7-12 11:30 编辑

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

        ;解压所需驱动
        ;MsgBox(4096, "所需解压的驱动", "路径为:" & $filepath_string & @CRLF)
        GUICtrlSetData($Progress1,0) ;滚动条归零
        $ext_tmp = StringSplit($filepath_string, ";") ;获得各文件路径数组
        For $i = 1 To $ext_tmp
                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)*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

3mile 发表于 2010-6-8 13:21:56

代码中未见“setup -newsetup”,驱动未安装。
加入代码:RunWait(@SystemDir"\setup -newsetup -mini")

yiruirui 发表于 2010-6-20 19:21:11

回复 2# 3mile
多谢你的回答,但是都是一些7Z格式的驱动压缩包,没有这个安装文件啊,请问驱动智能选择安装工具实现细节是则样的?我只有一些纯驱动包7Z格式的,直接用AU3解压缩到某个目录,这样不可以,请问为什么?该如何实现?

3mile 发表于 2010-6-20 21:31:21

你的代码中用UNZIP进行解压,难道不会改成7Z解压吗?

yiruirui 发表于 2010-6-21 13:09:45

回复 4# 3mile
有用7Z解压缩的,你的回答还没到点子上,我是想问,解压缩后的这些纯驱动如何安装,这个才是关键所在,不过仍然谢谢你的热情回答。

3mile 发表于 2010-6-21 21:10:55

我在2楼不是已经回答了吗?

yiruirui 发表于 2010-6-30 13:02:43

回复 6# 3mile
谢谢,我的纯驱动里面没有你在2楼说的那个文件啊?

afan 发表于 2010-6-30 13:13:47

LZ可以在网上搜索下 devcon.exe 或者 dpinst.exe 的应用例子

3mile 发表于 2010-6-30 14:54:45

"WINDOWS\SYSTEM32\SETUP.EXE -newsetup -mini"

yiruirui 发表于 2010-7-12 11:29:21

感谢大家回答,问题就如 afan所说那样解决的。

qq342252004 发表于 2010-7-23 21:58:25

RunWait('rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 inf的完整路径')
页: [1]
查看完整版本: 请问大家用AU3写智能显卡检测安装的问题?(已经解决)