|
小马的WINPE做的不错,但是我觉得还是值得改进,下面我对小马WINPE提出个人观点以及提出改进方法,包含了原代码,转贴请著名出处
一.对光盘中MAKEISO批处理的改进:
修改内容:一是精简优化部分代码;二是修正一些错误,如选择提示;三是对版面进行了微调;四是如果提取110M迷你网络,增加一个用户自定义的MAKEISO.LST文件以便用户自己定义提取那些东东
代码如下:二.对驱动安装包进行了分离,而且对代码进行了大量优化处理
驱动更改(驱动更新到http://bbs.wuyou.net/forum.php?mod=viewthread&tid=134718&;extra=page%3D2)
1.采用分离设计,把驱动支持WIM(放system目录)和CAB驱动程序(放drivers目录)分离并把CAB驱动程序单独提取出来,这样方便驱动更新。我对驱动支持批处理和驱动安装批处理的代码进行了重新编写,所有驱动安装在一个批处理中完成。
2.删除3D音效这个无用而庞大的文件sound\DSOUND3D.DLL
3.在网络WIM中增加TEAMVIEWER需要的sensapi.dll和SOUGUO浏览器需要的t2embed.dll核心文件;增加QQLIVE多媒体QUARTZ.DLL(无该文件缓冲90%不动)/jscript.dll,MSHTML.DLL,MSHTML.TLB,MSHTMLED.DLL,MSLS31.DLL网络相关文件(无这些文件则无法显示媒体库)到对应的SOUND.WIM和SYSTEM.WIM中并注册,注意的是IE和wmp10中已经包含这些文件,如果存在这些包则可不用包含这些文件
4.网卡相关的网络工具NETTOOLS、INTERNET EXPLORER、opera.wim、tm2008.wim和声卡相关多媒体程序multimedia、wmp10.wim等并单独封包WIM,安装网卡和声卡时才创建对应的快捷方式(main.ini改为hysoft.ini以便被自动执行安装,如果没有hysoft.ini则自动创建以便在不改变当前路径的情况对批处理进行处理)
5.关于浏览器选择:建议首先选用不依赖IE内核的浏览器,如谷歌/OPERA/FIREFOX浏览器/SOGOU双核浏览器。
驱动目录中HYSOFT.INI用于创建快捷方式,代码如下- `驱动更新到http://bbs.wuyou.net/forum.php?mod=viewthread&tid=134718&extra=page%3D2
- LINK !%Desktop%\安装我的驱动,%CurDir%\START_DRV.CMD,DRV,%SystemRoot%\system\HANGUP.ICO
- LINK !%Desktop%\安装所有驱动,%CurDir%\START_DRV.CMD,ALL,%CurDir%\InfCacheBuild.exe
- LINK %Programs%\驱动支持\安装所有驱动,%CurDir%\START_DRV.CMD,ALL,%CurDir%\InfCacheBuild.exe
- LINK %Programs%\驱动支持\安装声卡驱动,%CurDir%\START_DRV.CMD,SOUND,%SystemRoot%\sound\SOUND_PART.ICO
- LINK %Programs%\驱动支持\安装网卡驱动,%CurDir%\START_DRV.CMD,NET,%SystemRoot%\system\NET_PART.ICO
- LINK %Programs%\驱动支持\安装我的驱动,%CurDir%\START_DRV.CMD,DRV,%SystemRoot%\system\HANGUP.ICO
- LINK %Programs%\驱动支持\安装显卡驱动,%CurDir%\START_DRV.CMD,VGA,%CurDir%\AutoSC.exe
- LINK %Programs%\驱动支持\万能显卡驱动1,%CurDir%\万能显卡驱动1.EXE
- LINK %Programs%\驱动支持\万能显卡驱动2,%CurDir%\万能显卡驱动2.EXE
- LINK %Programs%\驱动支持\万能显卡驱动说明,%CurDir%\万能显卡驱动说明.TXT
- `IFEX %CurDir%\START_DRV.CMD,EXEC !%CurDir%\START_DRV.CMD
- EXIT
复制代码 所有驱动安装只用一个批处理START_DRV.CMD,代码如下:- @ECHO OFF
- :: 本WINPE德常用驱动更新地址http://bbs.wuyou.net/forum.php?mod=viewthread&tid=134718&extra=page%3D2
- :: 如果内置驱动无法找到,可以使用XCAB或PECAB把自己或收集的驱动打包为CAB或者直接把INF驱动放本目录使用本工具加载即可,另外本程序也试图从本地硬盘的WINDOWS目录搜索相关驱动程序并安装
- mode con cols=70 lines=25
- COLOR 02
- CLS
- ECHO.
- ECHO ╔──────────────────────────────╗
- ECHO │ │
- ECHO │ 鸿越WINPE驱动支持工具 │
- ECHO │ 本程序由鸿越软件小布点编写制作 │
- ECHO │ 你可把自己的驱动用PECAB打包后用本工具加载 │
- ECHO │ 本程序可以自由复制,使用和发布,版权归作者本人所有 │
- ECHO │ QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com │
- ECHO │ │
- ECHO ╚──────────────────────────2010─㊣╝
- ECHO.
- ECHO.
- REG ADD "HKCU\SOFTWARE\Microsoft\Driver Signing" /f /v "Policy" /t REG_BINARY /d 00>NUL
- REG ADD "HKCU\SOFTWARE\Microsoft\Driver Signing" /f /v "Policy" /t REG_BINARY /d 00>NUL
- IF /I "%1"=="SOUND" GOTO:SOUND
- IF /I "%1"=="NET" GOTO:NET
- IF /I "%1"=="VGA" GOTO:VGA
- IF /I "%1"=="DRV" GOTO:DRV
- IF /I "%1"=="ALL" (TITLE 一键安装所有驱动&&GOTO:ALL)
- GOTO:ALL
- :INFCACHE
- START /Wait .\InfCacheBuild.exe %SystemRoot%
- PECMD UPNP -pnp
- GOTO:EOF
- :NETLINK
- SET K=HKLM\SYSTEM\CurrentControlSet\Services&&SET W=AutoShareServer&&SET S=AutoShareWks
- REG ADD %K%\Lanmanserver\parameters /v %S% /t REG_DWORD /d 0 /f>nul
- REG ADD %K%\Lanmanserver\parameters /v %W% /t REG_DWORD /d 0 /f>nul
- REG ADD %K%\lanmanworkstation\parameters /v %S% /t REG_DWORD /d 0 /f>nul
- REG ADD %K%\lanmanworkstation\parameters /v %W% /t REG_DWORD /d 0 /f>nul
- REGSVR32 /s %windir%\system32\stobject.dll
- FOR /F %%i IN ('@reg query "HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" /s^|find /i "\Connection"') DO >nul REG ADD %%i /v ShowIcon /t REG_DWORD /d 1 /f>nul
- ::安装和启动无线网络(由于驱动支持中安装会跳出对话框所以转移到这里)
- PECMD UPNP -v -c s -i MS_WZCSVC
- PECMD SERV WZCSVC
- If Exist "%USERPROFILE%\桌面\安装网卡驱动.LNK" DEL "%USERPROFILE%\桌面\安装网卡驱动.LNK"
- PECMD IFEX %ProgramFiles%\nettools\hysoft.ini,load %ProgramFiles%\nettools\hysoft.ini
- IF EXIST "%ProgramFiles%\INTERNET EXPLORER\IEXPLORE.EXE" (
- DEL /Q/F "%ProgramFiles%\INTERNET EXPLORER\MSHTML*" >NUL
- ECHO EXEC !%%CurDir%%\INSIE6.CMD>"%ProgramFiles%\INTERNET EXPLORER\hysoft.ini"
- PECMD load %ProgramFiles%\INTERNET EXPLORER\hysoft.ini
- )
- GOTO:EOF
- :SOUNDLINK
- :: 不能在INI中使用PECMD EXEC来执行批处理,除非在批处理中PUSHD %~dp0转到当前路径处理,否则路径有问题,这里不对WMP10.WIM进行修改而添加HYSOFT.INI以便使用PECMD LOAD进行处理
- If Exist "%USERPROFILE%\桌面\安装声卡驱动.LNK" DEL "%USERPROFILE%\桌面\安装声卡驱动.LNK"
- PECMD IFEX %ProgramFiles%\multimedia\hysoft.ini,load %ProgramFiles%\multimedia\hysoft.ini
- IF EXIST %ProgramFiles%\WMP10\INSWMP.CMD (
- DEL /Q/F %ProgramFiles%\WMP10\QUARTZ.DLL>NUL
- ECHO EXEC !%%CurDir%%\INSWMP.CMD>"%ProgramFiles%\WMP10\hysoft.ini"
- PECMD load %ProgramFiles%\WMP10\hysoft.ini
- )
- GOTO:EOF
- :SOUND
- ECHO 正在安声卡驱动...
- PECMD.EXE DEVI ".\DRIVERS_SOUND.CAB"
- CALL:INFCACHE
- CALL:SOUNDLINK
- GOTO:END
- :NET
- ECHO 正在安网卡驱动...
- FOR /F %%i IN ('Dir /B /A-D ^".\DRIVERS_NET*.CAB^"') DO PECMD DEVI ".\%%i"
- CALL:INFCACHE
- CALL:NETLINK
- GOTO:END
- :VGA
- ECHO 正在安显卡驱动...
- PECMD.EXE DEVI ".\DRIVERS_VGA.CAB"
- CALL:INFCACHE
- If Exist "%USERPROFILE%\桌面\安装显卡驱动.LNK" DEL "%USERPROFILE%\桌面\安装显卡驱动.LNK"
- ::START /Wait .\AutoSC.exe
- GOTO:END
- :DRV
- ECHO 正在安装用户自定义驱动...
- :: 搜索MYDRIVERS下的驱动文件和系统目录的驱动文件,如果还找不到就使用当前内置驱动程序,为了减小体积,建议使用SMARTDRIVERS提取驱动并用PECAB打包(不打包发现不能直接加载INF文件)MYDRV.CAB文件,其他驱动包则可省略
- ::FOR /R %%I IN (*.INF) DO CALL PECMD.EXE DEVI %%I
- ::FOR /R %%I IN (.) DO CALL PECMD.EXE DEVI "%%I\*.INF"
- PECMD.EXE DEVI ".\DRIVERS_MY*.CAB"
- PECMD.EXE DEVI ".\MY*.CAB"
- If Exist "%USERPROFILE%\桌面\安装显卡驱动.LNK" DEL "%USERPROFILE%\桌面\安装显卡驱动.LNK"
- If Exist "%USERPROFILE%\桌面\安装我的驱动.LNK" DEL "%USERPROFILE%\桌面\安装我的驱动.LNK"
- If Exist "%USERPROFILE%\桌面\安装所有驱动.LNK" DEL "%USERPROFILE%\桌面\安装所有驱动.LNK"
- :: ECHO 正在搜索系统目录下的驱动...
- ::PECMD.EXE DEVI \Windows\Inf\*.inf
- ::PECMD.EXE DEVI \WINNT\Inf\*.inf
- CALL:INFCACHE
- CALL:SOUNDLINK
- CALL:NETLINK
- GOTO:END
- :ALL
- :: 安装所有驱动包含了用户驱动包
- ECHO 正在安装声显网驱动...
- PECMD.EXE DEVI ".\*.CAB"
- If Exist "%USERPROFILE%\桌面\安装所有驱动.LNK" DEL "%USERPROFILE%\桌面\安装所有驱动.LNK"
- If Exist "%USERPROFILE%\桌面\安装我的驱动.LNK" DEL "%USERPROFILE%\桌面\安装我的驱动.LNK"
- CALL:INFCACHE
- CALL:SOUNDLINK
- CALL:NETLINK
- GOTO:END
- :END
- ECHO 完成安装,正在进行后期处理...
- DEL /Q/F %SystemRoot%\INF\*.PNF %SystemRoot%\INF\INFCACHE.1
- REG ADD "HKCU\SOFTWARE\Microsoft\Driver Signing" /f /v "Policy" /t REG_BINARY /d 00>NUL
- REG ADD "HKCU\SOFTWARE\Microsoft\Driver Signing" /f /v "Policy" /t REG_BINARY /d 00>NUL
- PECMD FIND EXPLORER.EXE,KILL EXPLORER.EXE
- IF EXIST %SystemRoot%\system\PENetCfg.exe Start "" "%SystemRoot%\system\PENetCfg.exe "
- EXIT
- [code]
- 三.虽然PETOOLS的外置程序没有多大问题,但是我也对其进行了改良,原来文件比较多,现在只需要一个批处理即可,而且代码非常智能,在自动创建外置PETOOLS的创建快捷方式的同时,能自动导入注册表或者执行INF安装,还可以指定批处理参数1用于整合到原始菜单中.代码如下:
- [code]
- @ECHO OFF
- :: 鸿越软件原创工具,在自动创建外置PETOOLS的创建快捷方式的同时,能自动导入注册表或者执行INF安装,还可以指定批处理参数1用于整合到原始菜单中
- :: 使用方法:如果要自动加载则在WINPE.INI中添加一行FORX !\PETOOLS\PETOOLS.INI,MYPETOOLS,1,LOAD %MYPETOOLS%
- :: MAIN.INI中的代码只是加载本批处理EXEC !%CurDir%\PETOOLS.CMD
- mode con cols=70 lines=25
- COLOR 02
- CLS
- ECHO.
- ECHO ╔──────────────────────────────╗
- ECHO │ │
- ECHO │ 鸿越PETOOLS自动搜索工具 │
- ECHO │ 本程序由鸿越软件小布点编写制作 │
- ECHO │ 你可把自己的驱动用PECAB打包后用本工具加载 │
- ECHO │ 本程序可以自由复制,使用和发布,版权归作者本人所有 │
- ECHO │ QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com │
- ECHO │ │
- ECHO ╚──────────────────────────2010─㊣╝
- ECHO.
- ECHO.
- SET WGZY=外挂资源
- FOR /F "TOKENS=2*" %%I IN ('REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Programs" ^|find "Programs"') DO SET myprg=%%J
- IF EXIST "%myprg%\PETOOLS" RD /Q/S "%myprg%\PETOOLS"
- for /r %%i in (*.exe *.wim *.reg *.inf *.txt) do (
- if not exist "%myprg%%%~pi" md "%myprg%%%~pi"
- if /i "%%~xi"==".reg" regedit /s "%%i"
- if /i "%%~xi"==".inf" (
- ECHO %%~xi|FIND "%WGZY%"
- IF "%ERRORLEVEL%"=="1" RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 "%%i"
- ) else (
- echo 正在创建%%i的快捷方式
- pecmd link %myprg%%%~pi%%~ni,%%i
- )
- )
- :: 对外挂XP资源进行处理,使用原来的菜单
- IF EXIST "%myprg%\PETOOLS\%WGZY%" RD /Q/S "%myprg%\PETOOLS\%WGZY%"
- CALL .\%WGZY%\XP资源快捷方式.CMD
- :: 如果用户想把现在的菜单和原来的菜单整合则可以使用批处理参数1
- if /i "%1"=="1" xcopy /y /s "%myprg%\PETOOLS\*.*" "%myprg%">NUL
- if /i "%1"=="1" RD /Q/S "%myprg%\PETOOLS"
- exit
复制代码
最后,由于更改了很多东西,所以WINPE.INI需要变更以下,代码如下- _sub mountwimfile
- name wimname=%swim%
- moun %swim%,%mountpath%\%wimname%\,1
- load %mountpath%\%wimname%\main.ini
- _end
- team envi soft=%curdrv%\minipe|envi bsc=%soft%\programs|envi sys=%soft%\system|envi drv=%soft%\drivers|envi pf=pagefile.sys
- `forx \%pf%,lastpf,0,file %lastpf%
- load %drv%\hysoft.ini `安装驱动,创建加载驱动的快捷方式,采用驱动支持和驱动包分离形式以便随时更新驱动
- envi mountpath=%systemroot%
- forx %sys%\*.wim,swim,0,call mountwimfile `安装system目录下的声卡和网卡驱动支持,其中也包括了DX和MMC工具
- envi mountpath=x:\program files
- forx %bsc%\*.wim,swim,0,call mountwimfile `安装基础应用程序,其中部分没有使用main.ini的表示纯绿色,如果包含hysoft.ini表示我的专用包,在安装驱动时自动安装
- FORX !\PETOOLS\PETOOLS.INI,MYPETOOLS,1,LOAD %MYPETOOLS% `安装PETOOLS中的非WIM包外置程序,如果没有本命令也可以在进入WINPE使用另外一个PETOOLS加载工具加载
- ifex %curdrv%\startcd.exe,link %startmenu%\winpe安装程序,%curdrv%\startcd.exe `开始菜单建立光盘自动播放快捷方式
- find mem>168,wall %soft%\bliss.jpg `设置桌面背景
- ifex %bsc%\internet explorer.wim,envi $path=%path%;%programfiles%\internet explorer `添加IE环境变量
- exit
复制代码
[ 本帖最后由 HUNRYBECKY 于 2010-11-10 22:19 编辑 ] |
|