社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 3442阅读
  • 5回复

如何实现在T39调用"驱动选择工具"

楼层直达
级别: 管理员
发帖
3549
飞翔币
5005
威望
64392
飞扬币
51613
信誉值
815
这个界面是如何实现的啊?怎么调用ylmf的驱动选择工具?

一个网友帮我解决了!分享一下阿!


首先,倒数39分钟是在WINNT.SIF文件的[GuiUnattended]段的DetachedProgram 设置项实现的,如:DetachedProgram = "%SystemDrive%\TEMP\DRIVERS.EXE"
但是39分钟执行的程序是同步执行的,也就是说你执行的时候系统安装进程还在前进,这样是不行的,等你解压完驱动就晚了,所以我们需要下载下面几个文件:
NirCmd.exe 一种增强的DOS命令行工具
Process.exe 一种很强的进程管理程序,其中一个功能就是暂停某进程执行(相信知道在这里的用处了吧)
WatchDriverSigningPolicy.exe 关闭微软安装未通过验证的驱动时的提示
SetupCopyOEMInf.exe 扫描指定的驱动目录,并处理所有的.inf文件(复制指定的.inf文件到%windir%\Inf中),这样,Windows在检查硬件设备后将会找到所有的即插即用硬件的
驱动程序。
这几个有了以后就用一个批处理编写一段命令,过程就是先停止XP安装进程setup.exe,然后执行驱动选择、解压驱动,完毕后继续setup.exe安装进程就行了。

我用的au3脚本没用批处理,下面是上面几个程序和批处理的下载地址,不过你得修改一下在用,这个是调用光盘上的驱动用的。
http://www.msfn.org/staff/Alanoll/DriverFiles.zip

下面是我写的au3脚本:
Driver.exe是驱动选择工具,这段代码编译后的程序和驱动选择放在一个文件夹下就行,各位用的上就改改试试吧。
#NoTrayIcon
$file = FileOpen(@HomeDrive & "\Ticker.ncl", 2)
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -r setup.exe")
FileWriteLine ( $file, ".wait 10000 ")
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -p SetupCopyOEMInf.exe high")
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -s setup.exe")
FileWriteLine ( $file, ".wait 50000 ")
FileWriteLine ( $file, ".script " & @HomeDrive & "\Ticker.ncl")
FileClose($file)
runwait(@ScriptDir & "\Process.exe -s setup.exe","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -p setup.exe low","",@SW_HIDE)
run(@ScriptDir & "\WatchDriverSigningPolicy.exe","",@SW_HIDE)
runwait(@ScriptDir & "\Driver.exe")
run(@ScriptDir & "\NirCmd.exe script " & @HomeDrive & "\Ticker.ncl")
runwait(@ScriptDir & "\SetupCopyOEMInf.exe C:\Driver","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -k NirCmd.exe","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -p setup.exe normal","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -r setup.exe","",@SW_HIDE)
FileDelete(@HomeDrive & "\Ticker.ncl")



如果调用ylmf的驱动,还在在批处理或者au3代码里增加几行,下面是我的完整的调用ylmf驱动的au3代码:

#NoTrayIcon
$file = FileOpen(@HomeDrive & "\Ticker.ncl", 2)
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -r setup.exe")
FileWriteLine ( $file, ".wait 10000 ")
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -p SetupCopyOEMInf.exe high")
FileWriteLine ( $file, "exec hide " & @ScriptDir & "\Process.exe -s setup.exe")
FileWriteLine ( $file, ".wait 50000 ")
FileWriteLine ( $file, ".script " & @HomeDrive & "\Ticker.ncl")
FileClose($file)
runwait(@ScriptDir & "\Process.exe -s setup.exe","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -p setup.exe low","",@SW_HIDE)
run(@ScriptDir & "\WatchDriverSigningPolicy.exe","",@SW_HIDE)
$file = FileOpen(@SystemDir & "\oeminfo.ini", 2)
FileWriteLine ( $file,"Manufacturer=YLMF GHOSTXP_SP2")
FileClose($file)
runwait(@ScriptDir & "\Driver.exe")
run(@ScriptDir & "\NirCmd.exe script " & @HomeDrive & "\Ticker.ncl")
runwait(@ScriptDir & "\SetupCopyOEMInf.exe C:\Driver","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -k NirCmd.exe","",@SW_HIDE)

runwait(@ScriptDir & "\Process.exe -p setup.exe normal","",@SW_HIDE)
runwait(@ScriptDir & "\Process.exe -r setup.exe","",@SW_HIDE)
FileDelete(@HomeDrive & "\Ticker.ncl")
FileDelete(@SystemDir & "\oeminfo.ini")

[ 此贴被无缘无份在2008-08-05 16:08重新编辑 ]
 
我们一直在努力!
级别: 光盘中级
发帖
4275
飞翔币
746
威望
286
飞扬币
20534
信誉值
44
只看该作者 1 发表于: 2008-07-17
集成安装版就在就这个就好了
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 2 发表于: 2008-09-12
如我等菜鸟不懂AU3也不会编程,目前想通过调节器用现成程序运行它。

多谢楼主的见解,马上试下。

把驱动识别程序放到$oem$的$1下面

[GuiUnattended]
AdminPassword=*
TimeZone=210
OEMSkipRegional=1
OemSkipWelcome=1
DetachedProgram="%windir%\xx某某驱动.exe"

至于配置文件,自已摸石头试试,搞了几天还未能做出这个效果,惭愧.
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 3 发表于: 2008-09-12
怪不得我那位做编程的死党转行了,做程序员可不是闹着玩的哦。很累人的事.
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 4 发表于: 2008-09-12
希望有达人指点,让我等菜人少走弯路。当然自已努力去试也重要的。搞咗几晚,还算有点明进步。加油~
级别: 光盘见习
发帖
23
飞翔币
335
威望
13
飞扬币
1350
信誉值
0
只看该作者 5 发表于: 2008-09-23
这个确实是学习了一招!谢谢!