找回密码
 加入
搜索
查看: 11780|回复: 15

[AU3基础] 把驱动解压到了指定位置,注册表中也写了驱动路径,最后该如何自动安装这些驱动?

  [复制链接]
发表于 2010-10-11 16:47:19 | 显示全部楼层 |阅读模式
;解压所需驱动
        ;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() 中进行
首先解压缩驱动到某个路径,然后将驱动路径写入注册表,最后一步就是安装驱动了吧?
请问大家这里该如何处理?由于驱动包中都是一些纯驱动文件,所以我没有好办法,只有借助了DPINST.EXE这个自动安装驱动的工具,但是这个工具在这里该如何添加?添加到什么位置比较合适?
请有此经历的大侠帮忙,谢谢了!这个DPINST.EXE好像还有点问题,驱动安装的时候经常卡主不会动,结束进程之后驱动已经安装上了!如果不用这个,请问这里还能有其他什么办法吗?先3KS!小弟万分感激!
发表于 2010-10-11 20:07:23 | 显示全部楼层
本帖最后由 ROUSTAR31 于 2010-10-11 20:08 编辑

请问,是部署环境安装还是桌面环境?

桌面环境貌似得用枚举inf文件的方法。

部署环境,windows自动搞定
 楼主| 发表于 2010-10-12 09:36:55 | 显示全部楼层
回复 2# ROUSTAR31


    请问如何自动搞定?
发表于 2010-10-12 11:33:28 | 显示全部楼层
好像要调用外部文件...
 楼主| 发表于 2010-10-12 11:37:34 | 显示全部楼层
回复 4# lxz


    Dpinst.exe?
发表于 2010-10-12 13:59:40 | 显示全部楼层
回复 5# yiruirui
在你的“请问大家用AU3写智能显卡检测安装的问题?(已经解决)”这个帖子中不是已经解决了吗?
难道不会举一反三?
 楼主| 发表于 2010-10-12 14:30:26 | 显示全部楼层
回复 6# 3mile


    首先感谢你的回答,
RunWait(@SystemDir"\setup -newsetup -mini")你上次的回答,我在“运行”里面输入了,发现是 XP的安装向导,请问这里如何用这个安装驱动呢?另外我运行别人的EXE发现了DPINST.EXE这个进程,所以我就一直想DPINST.EXE,但是这个进程使用完毕之后不会自动结束,而前面用的是RUNWAIT,所以这里 就出现了死循环,麻烦给点指点,3KS!
发表于 2010-10-12 15:51:41 | 显示全部楼层
部署环境的时候,你将驱动解压完毕,必须要把驱动文件所在路径全部写入注册表规定位置的键值下。
但是这个键值必须把所有的文件夹和子文件全部写入,这个是个很大的工程。

可以使用DPS自带的DevPath.exe命令行工具,使用方法:
RunWait(@SystemDir&"\DevPath.exe C:\Drivers","",@SW_HIDE)

这样,就把C:\Drivers文件夹下所有的子文件夹全部写入注册表规定的位置,系统在部署运行setup.exe的时候就能自动到那里寻找驱动并自动安装

评分

参与人数 1金钱 +30 收起 理由
afan + 30

查看全部评分

 楼主| 发表于 2010-10-12 16:09:59 | 显示全部楼层
回复 8# ROUSTAR31


    恩 ,是的,非常正确,问题描述如下:已经用DEVPATH.EXE把驱动文件所在的路径写入到注册表中了,接下来想自动安装驱动,问题出现了,不知道该如何自动安装此驱动?
用DPINST.EXE没实现,不知道有没有其他什么办法?就是想知道如何安装这些驱动?用AU3该则么实现,看到自由天空的EXE就是借助的DPINST.EXE实现的,但是我的没有实现?求指点!!!
 楼主| 发表于 2010-10-12 16:46:01 | 显示全部楼层
DPINST.EXE /PATH "驱动文件目录"/F/Q/LM/A 这个大家用过没?
发表于 2010-10-12 16:58:30 | 显示全部楼层
试下这个
#include<file.au3>
Install("d:\drivers")
Func Install($dir)
        If StringRight($dir, 1) <> "\" Then $dir = $dir& "\"
        $FileList = _FileListToArray($dir, "*", 2)
        If UBound($FileList) > 1 Then
                For $i = 1 To $FileList[0]
                        $FileList[$i] = $dir & $FileList[$i]
                        RunWait(@ComSpec ' /c DPInst.exe /LM /SH /SA /PATH ' & $FileList[$i] & ' /SE /SW', "", @SW_HIDE)                        
                        Install($FileList[$i])
                Next
        EndIf
EndFunc   ;==>install

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-10-13 09:20:36 | 显示全部楼层
回复 11# 3mile


    RunWait(@ComSpec & ' /c ' & 'DPInst.exe /LM /SH /SA /PATH ' & $FileList[$i] & ' /SE /SW', "", @SW_HIDE),马上去测试一下看看到底行不行,非常3Q!
 楼主| 发表于 2010-10-22 10:19:09 | 显示全部楼层
回复 11# 3mile


    3mile 你好!
首先感谢你 ,下面是我仿照你的写的测试程序。
$devicedir="c:\windows\drivers" ;已经把驱动包放到这个目录中了
RunWait(@ComSpec & ' /c ' & @WindowsDir & '\dpinst.exe /LM /SH /SA /PATH ' & '"' & $devicedir & '"' & " /SE /SW", '', @SW_HIDE)
运行没任何反应,驱动还是没装上,不知道哪里的问题?3Q!
运行时间非常快,一瞬间就没了,但是可以肯定的是驱动还是没装上。请问哪里出问题了?你看我需要贴出代码吗,有点小长的。
发表于 2010-10-22 10:47:52 | 显示全部楼层
用这个命令看下有没有动作
RunWait(@ComSpec & ' /c ' & @WindowsDir & '\dpinst.exe /PATH ' & '"' & $devicedir & '"' , '', @SW_SHOW)
 楼主| 发表于 2010-10-22 17:49:22 | 显示全部楼层
回复 14# 3mile


    这样试验了还是不行的。您看是神马原因造成的?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 07:34 , Processed in 0.092810 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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