阅读:5470回复:16
在INSTALLSHIELD12中用devcon方法制作驱动程序的安装程序步骤
devcon.rar 小弟前面一段时间被老板叫来做驱动的打包,刚开始做的时候无从下手,不知道IS是啥子东东,匆匆忙忙看了一下,在BBS上乱搜了一阵,请教了N多个大虾,在此过程中却遭尽歧视,大多数大虾都不鸟我,可能觉得我的问题太低级了,唉,我也是无可奈何啊,其中还是有一些大虾给予了小弟一些帮助,在此小弟深表感激。但是在此过程中似乎没有一个帖子,一个人能给予一个完整的答案。小弟前几天刚刚搞定老板交代的任务,在此写一下,希望有我以前困惑的XDJM们能够从中获益。
PS:小弟是个菜鸟,写的东东拿不上什么台面,只是自己做的一点点东西,希望那些大虾不要鄙视。 如果有什么高见可以畅所欲言。谢谢!!! 言规正传,小弟打包的是PCI驱动程序,之前老板要求,写了个PCI驱动程序,时候要求我打包。 有两个文件,一个是.inf安装文件,一个是.sys驱动文件,要求是制作一个setup文件,实现驱动程序的自动安装。 之前阅读过qigongwei大虾在03年发的一篇帖子上面介绍了两种方法: 1. 通过在脚本中调用rundll32来实现安装 2. 通过InstallShield在安装过程中通过脚本来调用Devcon来实现安装 刚开始我用第一种方法来做的,主要就是下面3行代码: Windows 9x szProgram = \"rundll.exe\"; szCmdLine = \"setupx.dll,InstallHinfSection DefaultInstall 132 \" + SUPPORTDIR + \"test.inf\"; LaunchAppAndWait(szProgram, szCmdLine, WAIT); Windows NT / 2000 szProgram = \"rundll32.exe\"; szCmdLine = \"setupapi.dll,InstallHinfSection DefaultInstall 132 \" + SUPPORTDIR + \"test.inf\"; LaunchAppAndWait(szProgram, szCmdLine, WAIT); 但是我用这个方法一直没有成功,后来在IS的社区里面看到一个老外发帖说这种方法有时候不起作用,具体好像是由于不是所有INF文件都有defaultinstall安装节的原因,所以我就放弃了这种做法(在这个过程中耗了我将近一个月的时间)。 因此,我就选用了第二种方法,介绍如下: 在网上下载一个DEVCON.EXE文件,小弟在这里提供了,大家可以下载,或者到网站:http://support.microsoft.com/default.aspx?scid=http://support.microsoft..com:80/support/kb/articles/q311/2/72.asp&NoWebContent=1 上面下载,上面还介绍了DEVCON的作用,大家可以参考。 整个过程很简单,就是 1. 在IS12中用向导先生成一些基本的对话框,到最后一步的时候进入脚本编辑界面 (在使用向导的过程中,利用向导将devcon.exe文件和你的.inf文件添加到一个指定的目录,比如system32目录下) 2. 在脚本编辑界面中的脚本结构是: function OnFirstUIBefore() ...... begin ... ... ... return 0; end; 3.在其后面再添加: function OnFirstUIAfter() begin LaunchAppAndWait(WINSYSDIR^"\\devcon.exe", "install C:\\WINDOWS\\system32\\×××.inf PCI\\VEN_FFFF&DEV_FFFF&SUBSYS_00000000&REV_00", WAIT); return 0; end; 其中第一项WINSYSDIR^"\\devcon.exe"是你DEVCON文件所在位置,可以在向导的Application Files页中将devcon.exe文件和你的INF文件放到一个目录下,然后在这里指出这个路径就可以了(我是将其放到向导Application Files页中的windows\Windows System\下面(这就是WINSYSDIR,也就是system32目录)); 第二项中的"install C:\\WINDOWS\\system32\\×××.inf 是你的INF文件的目录,也是用向导事先放到一个指定目录下,我是将其和devcon一起放到了system32目录下(WINSYSDIR); PCI\\VEN_FFFF&DEV_FFFF&SUBSYS_00000000&REV_00"是你的硬件ID,在INF文件中可以找到,这个ID是在小弟的Manufacturer and Models Sections节中,应该比较好找。 就OK了,再编译生成一个安装文件就可以使用了 由于时间仓卒,其中可能会有些错误,希望各位大虾多多指正。东西很简单,NB的大虾不要鄙视小弟写的浅显,不会的XDJM可借以参考一下,希望能对各位有所帮助。 谢谢!!! |
|
沙发#
发布于:2007-12-04 16:37
开头那个devcon.rar点击可以下载
|
|
板凳#
发布于:2007-12-05 17:45
哥们,先谢了。
|
|
地板#
发布于:2007-12-25 11:54
可以用install shield的Device Driver Wizard安装inf文件
ps: szProgram = \"rundll32.exe\"; szCmdLine = \"setupapi.dll,InstallHinfSection DefaultInstall 132 \" + SUPPORTDIR + \"test.inf\"; LaunchAppAndWait(szProgram, szCmdLine, WAIT); 把DefaultInstall换成inf的安装小节名称,应该就可以安装了 |
|
驱动牛犊
![]() |
地下室#
发布于:2008-01-03 16:59
楼主能加我吗
|
驱动牛犊
![]() |
5楼#
发布于:2008-01-04 15:59
szProgram = \"rundll32.exe\";
szCmdLine = \"setupapi.dll,InstallHinfSection DefaultInstall 132 \" + SUPPORTDIR + \"test.inf\"; LaunchAppAndWait(szProgram, szCmdLine, WAIT); 这几行加在什么地方啊??? |
6楼#
发布于:2008-01-05 09:57
学习拉!!!!!!!!!!!
|
|
7楼#
发布于:2008-01-07 14:38
多谢了
|
|
8楼#
发布于:2008-01-15 16:30
请教一下楼主,这个程序能不能用来安装USB驱动,我应用了你的方法结果没出来。*.inf;*.sys文件复制到WINDOWS\LastGood自动创建的新文件夹下,谢谢!
|
|
|
9楼#
发布于:2008-03-08 16:24
usb的我倒是没试过,不好意思哈
如果有哪位知道可可以分享一下 |
|
10楼#
发布于:2008-03-25 08:17
谢谢,学习中.
|
|
11楼#
发布于:2008-04-16 18:54
太谢谢了,正在弄这个,好人呀!
可以加我么 QQ:513939273 |
|
12楼#
发布于:2008-07-18 15:00
这个方法我仔细测试过了,PCI设备我没装上,ISA的还可以 ,我想USB也不行
我猜测一般情况PNP设备都不行,非PNP设备可以 具体原因,是因为,PCI设备中需要PNP管理器分配资源,如(中断,IO,内存)。直接调用Install命令是得不到的 在WDK文档里我找到了下面的话,证实了我的猜测 DevCon Install Creates a new, root-enumerated devnode for a non-Plug and Play device and installs its supporting software. Valid only on the local computer. devcon [/r] install INFfile HardwareID 请问楼主的PCI设备是怎么装上的? |
|
13楼#
发布于:2008-12-26 16:09
希望多一些这样关注细节的帖子,谢谢啦~~
|
|
14楼#
发布于:2009-04-20 14:30
学习一下
、我跟你是同样的任务,但我不想用Install shield来做第二种方法、 用Setup factory7.0可不可以呢 恳请赐教。 |
|
15楼#
发布于:2009-07-08 21:24
太好了,去试一下。
|
|
16楼#
发布于:2009-09-09 16:50
![]() |
|