| 
			 
					阅读:5311回复: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~				 
							 | 
	|