阅读:5213回复:8
实现驱动自动安装的方法
本人想用installshiel实现驱动的自动安装,看了论坛上其他大虾发表的文章,归纳了一下,一共有以下几种:
1.通过调用SetupCopyOEMInf函数实现,该函数installshield脚本不 支持,不知道该如何实现?哪位大虾说一下 2。利用devcon或ddk下的install实现。具体实现是不是通过LaunchAppAndWait("F:\i386\devcon.exe ", "install c:\program files\qcmdm2k.inf Vid_05c6&Pid_3197", WAIT);但本人在应用过程中出现问题,不知道是什么原因 3.szCmdLine = "setupapi.dll,InstallHinfSection Models 132 "+ProgramFilesFolder+"qcmdm2k.inf"; if(LaunchAppAndWait("rundll32.exe", szCmdLine, WAIT)<0) then MessageBox ("Unable to launch" ,SEVERE); return -1; endif;其中Models指inf中的安装节,132不知道是什么意思。本人对inf不是很熟悉,根据inf的信息,不知道哪个是安装节,哪位大虾能告诉我安装节的相关信息吗?有什么特征? 以上三种方法,不管哪种方法,哪位大虾知道不妨告诉我一声,小弟不胜感激。 |
|
沙发#
发布于:2005-01-27 10:12
用SetupCopyOEMInf需要包含什么头文件?我没有装msdn,所以不知道这个函数在那个文件里定义。
|
|
板凳#
发布于:2005-01-27 14:53
---------------------------------------------
2。利用devcon或ddk下的install实现。具体实现是不是通过LaunchAppAndWait("F:i386devcon.exe ", "install c:program filesqcmdm2k.inf Vid_05c6&Pid_3197", WAIT);但本人在应用过程中出现问题,不知道是什么原因 ----------------------------------------------------- 这种方法INSTALL.EXE,不许要INSTALL 例如: LaunchAppAndWait(WINSYSDIR^"log\\install.exe",WINSYSDIR^"log\\XX.inf PCI\\VEN_10B5&DEV_9050&SUBSYS_33334291",WAIT) ; 第一个参数 INF路径,第二个设备ID ---------------------------------------------------------- 这种方法 3.szCmdLine = "setupapi.dll,InstallHinfSection Models 132 "+ProgramFilesFolder+"qcmdm2k.inf"; if(LaunchAppAndWait("rundll32.exe", szCmdLine, WAIT)<0) then MessageBox ("Unable to launch" ,SEVERE); return -1; endif ----------------------------------------------------- 这种方法 szProgram = "rundll32.exe"; szCmdLine = "setupapi.dll,InstallHinfSection DefaultInstall 132" + SUPPORTDIR + "netsf.inf"; LaunchAppAndWait(szProgram, szCmdLine, WAIT); 注意: 1、其中DefaultInstll是指INF文件中的安装节,必须替换为自己INF中的INSTALL节名,例如节名是USBCamera.Dev,则代码要要改为: szCmdLine = "setupapi.dll,InstallHinfSection USBCamera.Dev 132" + SUPPORTDIR + "netsf.inf"; 2、SUPPORTDIR是指inf及sys等所有Driver文件所在的路径.你要先把所有Driver文件copy到硬盘,例如你的文件在C:YourDriver, 则SUPPORTDIR在程序中要替换为 "C:\\YourDriver\\". 例如: szCmdLine = "setupapi.dll,InstallHinfSection Manufacturer 132 "+"c:\\temp\\"+"qcmdm2k.inf"; if(LaunchAppAndWait("rundll32.exe", szCmdLine, WAIT)<0) then ---------------------------------------------------------------- |
|
地板#
发布于:2005-02-02 17:14
用SetupCopyOEMInf需要包含<Setupapi.h>头文件
|
|
地下室#
发布于:2005-06-11 21:04
我也不知道132是什么意思,照着拷不行,执行后屏幕闪了一下,一切都是老样子。
|
|
5楼#
发布于:2005-06-28 16:49
用SetupCopyOEMInf需要包含头文件hid.h人,但是要Link Setupapi.lib hid.lib就可以,不过本人用过好像不行!
|
|
6楼#
发布于:2005-08-09 13:20
132是需要重起时通知用户.
这种方法我实验了一下不行,在98下装不成功.我用它装raspppoe098b的驱动程序 |
|
7楼#
发布于:2005-08-11 09:12
在Install shield 脚本中可以使用 SetupCopyOEMInf 函数
只需加上函数声明:prototype BOOL SetupAPI.SetupCopyOEMInfA (STRING, STRING, LONG, LONG, STRING, LONG, LONG, STRING); 就可以直接调用:UpdateFlag = SetupCopyOEMInfA (InfPath, "", SPOST_PATH, NULL, InfName,255, NULL, ""); |
|
8楼#
发布于:2007-05-30 10:39
thank you~
|
|