无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: chenall
打印 上一主题 下一主题

[分享] PE自动检测安装驱动 外置组件[01-17更新]

  [复制链接]
121#
发表于 2006-12-13 11:09:34 | 只看该作者
原帖由 chenall 于 2006-12-13 10:57 AM 发表
请再看一下顶楼的说明,
新版本的INF文件不需经过任何处理.


我看到顶楼的说明也是糊涂了,因为上面写着
“2.INF文件不可不经过处理.”
是双重否定哦。
回复

使用道具 举报

122#
 楼主| 发表于 2006-12-13 11:25:10 | 只看该作者
对不起!
手误...

新版的由于加入了InfCacheBuild.exe自动对INF文件进行处理,所以INF文件用原文件也可以.

[ 本帖最后由 chenall 于 2006-12-13 11:27 AM 编辑 ]
回复

使用道具 举报

123#
发表于 2006-12-13 11:28:12 | 只看该作者
原帖由 chenall 于 2006-12-13 11:25 AM 发表
对不起!
手误...

新版的由于加入了InfCacheBuild.exe自动对INF文件进行处理,所以INF文件用原文件也可以.

是可经过处理,还是可不经过处理,我也没看懂
回复

使用道具 举报

124#
 楼主| 发表于 2006-12-13 11:32:09 | 只看该作者
原帖由 l1982012800 于 2006-12-13 11:28 AM 发表

是可经过处理,还是可不经过处理,我也没看懂


都可以.
为了方便添加驱动,添加了自动使用InfCacheBuild.exe处理过程.
回复

使用道具 举报

125#
发表于 2006-12-13 15:23:24 | 只看该作者
刻盘测试成功,7Z的压缩比率最高!!!又节省了不少空间!!
回复

使用道具 举报

126#
发表于 2006-12-13 17:57:07 | 只看该作者
我看不懂,但是支持一下
回复

使用道具 举报

127#
发表于 2006-12-13 23:25:50 | 只看该作者
执行完scandrive.cmd,垃圾文件几乎占满了B盘,能不能再加一行清理B盘的命令
回复

使用道具 举报

128#
发表于 2006-12-14 08:19:35 | 只看该作者
真的可以考滤支持不用压缩包,这样B盘才不会有很大的限制。

驱动文件过大(可能使用者不断增大),而B盘太小。(内存可能些机器太小)

所以楼主望支持文件夹存储方式。
回复

使用道具 举报

129#
 楼主| 发表于 2006-12-14 09:46:32 | 只看该作者
原帖由 l1982012800 于 2006-12-13 11:25 PM 发表
执行完scandrive.cmd,垃圾文件几乎占满了B盘,能不能再加一行清理B盘的命令

执行完本来就有自动清除的命令啊.
垃圾文件,你确定是执行SCANDRIVE后才有的吗?能否报几个文件名上来.我方便查一下.
而且只是解压出INF文件,不过几MB左右,一般是没有什么影响的.
回复

使用道具 举报

130#
 楼主| 发表于 2006-12-14 10:01:04 | 只看该作者
原帖由 zts59 于 2006-12-14 08:19 AM 发表
真的可以考滤支持不用压缩包,这样B盘才不会有很大的限制。

驱动文件过大(可能使用者不断增大),而B盘太小。(内存可能些机器太小)

所以楼主望支持文件夹存储方式。

如果使用第一版本的方式制作的压缩包,应该是没有什么问题的,因为,只是解压出.INF文件.
占用的空用不多.
而且驱动加多了检测解压过程就会慢一点,一般情况下也是不可能加入那么多的驱动的.
第二种方式的压缩包,除了解压INF文件外,还要压缩驱动文件到%TEMP%目录.所以如果某个驱动的驱动文件很多(像显卡)就有可能超过B盘的空间限制,而造成驱动安装失败.

文件夹存储方式虽然可以实现,但是使用时还是需要将所有INF文件放到某个地方(目前是%TEMP%\INF)
使用效果一样,只不过不用压缩解压.

我想还是将临时文件放到其它地方才可以解决.
回复

使用道具 举报

131#
发表于 2006-12-14 10:20:10 | 只看该作者
呵呵,所有INF全都放在一起就没有意义了,不能让BAT自动搜索文件夹内的所有INF,创建一个INF文件列表,然后在利用这个列表对各个INF查找吗?

没有弄懂你BAT的过程,可能不行,见笑了
回复

使用道具 举报

132#
 楼主| 发表于 2006-12-14 10:27:04 | 只看该作者
这个恐怕不行,因为使用的是系统安装驱动的方式,
只是增加了一个自动搜索驱动的目录.并将驱动包的INF文件解压到这里,再进行安装的.
如果不将INF全都放在一起那需要在注册表中添加许多的驱动搜索目录.那样也不太好.
回复

使用道具 举报

133#
发表于 2006-12-14 11:00:13 | 只看该作者
原帖由 chenall 于 2006-12-14 09:46 AM 发表

执行完本来就有自动清除的命令啊.
垃圾文件,你确定是执行SCANDRIVE后才有的吗?能否报几个文件名上来.我方便查一下.
而且只是解压出INF文件,不过几MB左右,一般是没有什么影响的.

B盘下面有~inf文件夹
回复

使用道具 举报

134#
 楼主| 发表于 2006-12-14 11:12:39 | 只看该作者
原帖由 l1982012800 于 2006-12-14 11:00 AM 发表

B盘下面有~inf文件夹
:解压驱动_1
setlocal EnableDelayedExpansion
for %%i in ("%temp%.\~inf\") do set tmpdir=%%~dpi
for %%i in (drivers_*.*) do (7z x -y -o"%tmpdir%.\%%i\" %%i -r *.inf>nul)
dir /s/a-d/b "%tmpdir%%*.inf">"%temp%.\~getfile.txt"
for /f "usebackq delims=*" %%i in ("%temp%.\~getfile.txt") do (
set get_1=%%i
set get_1=!get_1:%tmpdir%=!
set get_1=!get_1:\%*.inf=!
for /f "tokens=1,* delims=\" %%x in ("!get_1!") do (set rar_file=%%x&&set rar_path=%%y)
)
7z e -y %rar_file% -o"%temp%.\%*.file\" -r "%rar_path%" >nul
if not exist "%temp%.\%*.file" goto :eof
cd /d "%temp%.\%*.file\"
if exist %**.cmd call %**.cmd
del /f /q %**.cmd *.inf *.cat *.txt
move /y *.sys %systemroot%\system32\drivers
move /y *.* %systemroot%\system32
endlocal
rd /s /q "%temp%.\%*.file"
rd /s /q "%temp%.\~inf\"
del /f /q "%temp%.\~getfile.txt"
goto :eof

后面有rd /s /q "%temp%.\~inf\"
要不然你试着在endlocal前再加一句
rd /s /q "%tmpdir%"
回复

使用道具 举报

135#
发表于 2006-12-14 11:22:52 | 只看该作者
楼主,请教几个问题,这方面你在行。本人机子启动后执行BartPE -PnP得到下面的表列:
Found Device: PCI\VEN_10DE&DEV_0064&SUBSYS_1C02147B&REV_A2\3&13C0B0C5&0&09
No DriverNodes found for device.

Found Device: PCI\VEN_10DE&DEV_006A&SUBSYS_1C02147B&REV_A1\3&13C0B0C5&0&30
No DriverNodes found for device.

Found Device: ROOT\SYSTEM\0000
Plug and Play Software Device Enumerator

第1行是不是发现了设备,第2行是不是指没有第1行设备的驱动?
第3行的设备与第1行的有何不同?
第6行是不是表明第5行的设备已安装了驱动?

再,要从外置的驱动文件包中安装第1行的驱动,是不是要查找所有外置INF文件中含PCI\VEN_10DE&DEV_0064&SUBSYS_1C02147B&REV_A2\3&13C0B0C5&0&09字符的INF文件,找到后再将它复制到INF目录,并将其对应的驱动文件复制入系统中?

[ 本帖最后由 lxl1638 于 2006-12-14 11:37 AM 编辑 ]
回复

使用道具 举报

136#
发表于 2006-12-14 13:26:59 | 只看该作者
楼主:
注册表中的路径可以用批处理批量自动加入,但是我加入后,好像PE也不从我加的路径上面找。

能不能举例,比如在d:\drivers\vga\i845有显卡驱动。硬件也匹配
如何用里面的工具还安装这一驱动?
回复

使用道具 举报

137#
 楼主| 发表于 2006-12-14 14:20:36 | 只看该作者
原帖由 lxl1638 于 2006-12-14 11:22 AM 发表
楼主,请教几个问题,这方面你在行。本人机子启动后执行BartPE -PnP得到下面的表列:

第1行是不是发现了设备,第2行是不是指没有第1行设备的驱动?
第3行的设备与第1行的有何不同?
第6行是不是表明第5行的设 ...


你这个是没有找到驱动的例子.
你可以试试可以找到驱动的例子
如果找到了驱动.那就会有一行INF文件的信息.
我批处理所做的就是让它自已找到相应的驱动.再复制相关文件到系统.(所以需要将所有的INF文件放到一个临时目录,为了就是它BARTPE -PNP能够从该目录中找到需要的东西)
最后再更新一下驱动就可以了.

你上面的例子都是没有找到驱动的,如果有找到了,有一行指定了该驱动使用的是哪一个INF文件.
再,要从外置的驱动文件包中安装第1行的驱动,是不是要查找所有外置INF文件中含PCI\VEN_10DE&DEV_0064&SUBSYS_1C02147B&REV_A2\3&13C0B0C5&0&09字符的INF文件,找到后再将它复制到INF目录,并将其对应的驱动文件复制入系统中?


我是根据它的INF文件确实需要复制的文件.
更新驱动的时候才用到这个硬件ID信息.

[ 本帖最后由 chenall 于 2006-12-14 02:29 PM 编辑 ]
回复

使用道具 举报

138#
 楼主| 发表于 2006-12-14 14:24:38 | 只看该作者
原帖由 zts59 于 2006-12-14 01:26 PM 发表
楼主:
注册表中的路径可以用批处理批量自动加入,但是我加入后,好像PE也不从我加的路径上面找。

能不能举例,比如在d:\drivers\vga\i845有显卡驱动。硬件也匹配
如何用里面的工具还安装这一驱动?


reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" /v DevicePath /t REG_EXPAND_SZ /d "d:\drivers\vga\i845f" /f >nul
在PE中好像只能找到驱动信息,但并没有复制文件的操作,所以你还是需要手工复制丰相应文件到对应的目录的.
回复

使用道具 举报

139#
发表于 2006-12-14 15:55:09 | 只看该作者
原来还要复制文件的操作,谢谢了
回复

使用道具 举报

140#
发表于 2006-12-15 15:01:22 | 只看该作者
原帖由 chenall 于 2006-12-4 10:25 AM 发表
http://bbs.wuyou.net/forum.php?m ... page%3D1&page=7
70楼,12.08版.
PE外置驱动组件包简单说明

12.12
1.使用7Z做为解压缩程序.支持更多的压缩格式(7z,zip,rar,cab)需要其它的格式 ...

楼主,你的两种方法好像不能一起使用,我按照你的第一种方法把显卡、声卡等驱动单独打包,按照第二种方法把网卡驱动合并打包,刻盘启动后只成功安装显卡及声卡驱动,网卡驱动未能安装。另外“~getfile.txt”这个文件没有删除。

Snap1.jpg (29.14 KB, 下载次数: 163)

Snap1.jpg
回复

使用道具 举报

141#
发表于 2006-12-15 16:58:43 | 只看该作者
太感谢了,支持楼主的研究!
回复

使用道具 举报

142#
 楼主| 发表于 2006-12-15 17:05:45 | 只看该作者
原帖由 zhfzl2006 于 2006-12-15 03:01 PM 发表

楼主,你的两种方法好像不能一起使用,我按照你的第一种方法把显卡、声卡等驱动单独打包,按照第二种方法把网卡驱动合并打包,刻盘启动后只成功安装显卡及声卡驱动,网卡驱动未能安装。另外“~getfile.txt”这个 ...


可以同时使用的.之前的方法优先(因为速度比较快).如果使用第一种方法找不到驱动文件就使用第二种.
你可以将里面的DEL 语句注释掉.再试一下,然后看看~pnpdrive.log里面的内容是不是有找到你的网卡驱动.
回复

使用道具 举报

143#
发表于 2006-12-15 21:12:50 | 只看该作者
原帖由 chenall 于 2006-12-15 05:05 PM 发表


可以同时使用的.之前的方法优先(因为速度比较快).如果使用第一种方法找不到驱动文件就使用第二种.
你可以将里面的DEL 语句注释掉.再试一下,然后看看~pnpdrive.log里面的内容是不是有找到你的网卡驱动.

我试了一下还是不行,能够找到网卡ID,但提示找不到网卡驱动文件,临时文件夹里面只有*.INF文件;其找不到驱动就退出了,再运行第二次,才能找到显卡驱动,声卡驱动好像也不能正常加载了。
回复

使用道具 举报

144#
 楼主| 发表于 2006-12-15 21:57:51 | 只看该作者
如果~pnpdrive.log里面有你的驱动的INF信息那就说明这个驱动已经被找到了,否则就不行了.
还有一点,如果你的内存比较低,可能会在解压大驱动包时出错.所以有可能跳过了那个驱动包.
这一点,我是在128MB的内存是测试发现的.感觉7Z解压所需的内存比UNRAR还有多.
鱼与熊掌不可兼得啊!
回复

使用道具 举报

145#
发表于 2006-12-15 22:01:34 | 只看该作者
原帖由 chenall 于 2006-12-15 09:57 PM 发表
如果~pnpdrive.log里面有你的驱动的INF信息那就说明这个驱动已经被找到了,否则就不行了.
还有一点,如果你的内存比较低,可能会在解压大驱动包时出错.所以有可能跳过了那个驱动包.
这一点,我是在128MB的内存是测试 ...


7z 一般压缩,解压需要 6M 内存。

需要的内存跟选择的压缩率有关。而需要多小内存解压,7z会在压缩的时候告诉你,这一点比rar好。
回复

使用道具 举报

146#
 楼主| 发表于 2006-12-15 22:13:56 | 只看该作者
12.15
1.修复了一个造成解压两次INF文件的错误,谢谢strongchen兄的提醒
2.修改了删除临时文件的命令的位置.

7z 一般压缩,解压需要 6M 内存。

需要的内存跟选择的压缩率有关。而需要多小内存解压,7z会在压缩的时候告诉你,这一点比rar好。

我使用最高压缩率,压缩你的网卡驱动包,提示需要7MB能解压.压缩后大小2988MB.
在128MB的内存下启动PE查看可用内存有20几MB,但是使用7Z命令行解压却提示内存不足.
回复

使用道具 举报

147#
发表于 2006-12-15 22:23:57 | 只看该作者
原帖由 chenall 于 2006-12-15 10:13 PM 发表
12.15
1.修复了一个造成解压两次INF文件的错误,谢谢strongchen兄的提醒
2.修改了删除临时文件的命令的位置.


我使用最高压缩率,压缩你的网卡驱动包,提示需要7MB能解压.压缩后大小2988MB.
在128MB的内存下启 ...


:L最高压缩率要64M内存解压!。。。。

我比较过,只要你选择“创建固实压缩档案”用一般的压缩率就很不错了。

psw:我把那些驱动的inf文件优化过了,现在只占 2。92 M 的空间(6M内存可以解压)

到我的网盘下载 网络外置组件(12.15).7z 里面包含了。
回复

使用道具 举报

148#
发表于 2006-12-15 22:52:22 | 只看该作者
给楼主一点建议,驱动外置,不必考虑不多的压缩格式,对解压速度、占用内存和常用格式三方面作综合考虑选择一种格式就可以了。往往高压缩比的解压时慢,占用内存也大。
回复

使用道具 举报

149#
发表于 2006-12-15 22:54:39 | 只看该作者
原帖由 lxl1638 于 2006-12-15 10:52 PM 发表
给楼主一点建议,驱动外置,不必考虑不多的压缩格式,对解压速度、占用内存和常用格式三方面作综合考虑选择一种格式就可以了。往往高压缩比的解压时慢,占用内存也大。

RAR不二之选
回复

使用道具 举报

150#
 楼主| 发表于 2006-12-15 23:32:59 | 只看该作者
下次升级还是改一下,
加一个参数.
多一些选择好了,可以使用之前的UNRAR或EXTRACT解压,还是使用7Z命令行解压.
我觉得使用EXTRACT解压CAB所需的内存最低.
当然默认如果存在UNRAR就用UNRAR解压RAR包.
有存在EXTRACT就用EXTRACT解压CAB包.
自由选择搭配应该比较适合.

我也是推荐使用RAR格式比较方便.

下载了 网络外置组件(12.15).7z
明天再测试一下.谢了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-24 22:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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