tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:9414回复:33

usb驱动自安装程序的制作

楼主#
更多 发布于:2004-11-30 23:27
这两天询问usb驱动安装程序制作的人很多,我有幸做成过一个这样的安装程序。虽然这两天测试也有人回复说还有问题,但我还是对我的安装程序充满信心。

我也曾在本论坛回答过一些朋友的帖子,但回复成功的似乎还没有。这也很正常,毕竟影响安装的因素太多。

我现在简单介绍一下usb驱动安装程序的制作过程,希望能给有这方面需求的朋友一点启示,也希望这方面的大拿能给与批评指正。


1,准备inf和sys
新建一个目录,比如d:\\DrvInstDir,把你写好的inf和sys都放在此目录下。

2,验证你的inf
把系统清理干净,就如同你从来没在这台机器上装过你的驱动程序一样。然后,手工安装你的设备,验证用你的inf是否能正确安装你的sys。注意,这儿有特殊要求,就是在安装过程中,指定了d:\\DrvInstDir为搜寻目录之后,系统就能自动找到sys文件并执行安装,而不会再要求你指定sys文件的位置。如果你的inf满足此要求,则第二步通过;否则请修改你的inf文件,直到它能满足要求为止。

3,编写安装程序
简单做的话,只需调用SetupCopyOEMInf即可。比如:
SetupCopyOEMInf("d:\\\\DrvInstDir\\\\xxxx.inf",NULL,SPOST_PATH,0,NULL,0,NULL,NULL);

4,再次将系统清理干净

5,运行安装程序
SetupCopyOEMInf会在%windir%\\inf目录下生成一个oem*.inf。找找看有没有跟你的inf内容完全一致的oem*.inf,如果有,则成功,可以继续往下走。否则,请退回到前面,察看哪儿出了问题。

6,插上usb设备,验证安装程序是否生效
注意,在2k下,插上usb设备后,如果设备硬件id和inf中的硬件id完全匹配(注意,如果是其他匹配形式,比如设备硬件id匹配inf中的兼容id或者设备兼容id匹配inf中的硬件id,那么我不保证上述方法有效),那么系统会自动将sys文件从d:\\DrvInstDir下复制到%windir%\\System32\\Drivers目录下,并对其进行安装。如果在xp下,且inf和sys没有经过数字签名,那么系统会弹出“发现新硬件”窗口,你只需连续点击窗口上的“下一步”按钮即可完成驱动程序的安装。至于在xp下,如何避免inf和sys未经数字签名时系统弹出“发现新硬件”窗口,并让系统自动完成设备驱动程序的安装,请参考我在本论坛发的“协作安装程序应用一例”一帖。

http://www.driverdevelop.com/forum/viewthread.php?tid=81228


[编辑 -  11/30/04 by  tigerL]

最新喜欢:

xl1533xl1533 viscarviscar
省元坊
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-31 16:30
楼上的,你能把CO-INSTALLER和inf文件发给我一份吗?xbzjackey@hotmail.com
回答好的不要忘了给分哦。。。
yierham
驱动牛犊
驱动牛犊
  • 注册日期2007-11-14
  • 最后登录2008-01-14
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-15 09:58
俺到是做成功了用的coninstaller,我主要是安装的时候可以在不同的USB口下添加一个键值(MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\pid_xxxx&vid_xxx)但是我卸载我的驱动程序后怎么去删除这些键值呢?用Setupapi倒是可以,但是用这种方法在VISTA下就行不通了,得不到权限啊,如果用INF文件来删除的话又必须插上设备才能删除,而且只能删除插上的那个USB口下添加的键值,其它USB口下添加的键值就没有办法删除了呀?有哪位高人知道怎么解决吗?????????????
Driver I Love You
yierham
驱动牛犊
驱动牛犊
  • 注册日期2007-11-14
  • 最后登录2008-01-14
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-15 09:54
俺到是做成功了用coinstaller,我主要是安装的时候可以在不同的USB口下添加一个键值(MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\pid_xxxx&vid_xxx)但是我卸载我的驱动程序后怎么去删除这些键值呢?用Setupapi倒是可以,但是用这种方法在VISTA下就行不通了,得不到权限啊,如果用INF文件来删除的话又必须插上设备才能删除,而且只能删除插上的那个USB口下添加的键值,其它USB口下添加的键值就没有办法删除了呀?有哪位高人知道怎么解决吗?????????????
Driver I Love You
wanted999
驱动牛犊
驱动牛犊
  • 注册日期2006-03-28
  • 最后登录2012-08-13
  • 粉丝0
  • 关注0
  • 积分519分
  • 威望429点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-29 10:47
佩服佩服!
qiuzhenqing
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2009-11-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望62点
  • 贡献值0点
  • 好评度61点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-09-11 14:36
数字签名关了系统属性->硬件->驱动程序签名也没法回避的
qiuzhenqing
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2009-11-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望62点
  • 贡献值0点
  • 好评度61点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-08-30 22:35
好铁!!!!!!!!
wasprui
驱动牛犊
驱动牛犊
  • 注册日期2004-04-12
  • 最后登录2005-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-11 20:50
数字签名问题可以在系统属性->硬件->驱动程序签名中设置为忽略,但插入时还是跳出找到新硬件向导,提示“Winodws可以连接到Windows Update以搜索软件吗?”选否,下一步,再选自动安装就好了,请问楼主,有什么办法可以不要跳出找到新硬件向导。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-11 23:07
我也使在做这东西,我觉得唯一可能的是在xp下,没有经过数字签名就不能自动安装。我试了很多方法,都没有成功。至少这里提及的方法我都式过。
附件中是俺翻译的DDK中关于设备安装的说明,从中也可以体会出这个意思。至少在xp下,即使调用了SetupCopyOEMInf也还会出现发现新硬件向导。
但设备已经插在系统中,如果已经调用了SetupCopyOEMInf,更新驱动程序却不会出现提示。


参看我在本论坛发的帖子――“协作安装程序应用一例”,看完麻烦顶一下。发现好多人问这个问题,大家都顶一下,注意它的人就多了。
省元坊
viscar
驱动牛犊
驱动牛犊
  • 注册日期2005-01-26
  • 最后登录2008-05-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-11 16:18
楼主啊,我按照你说的做了,并且保证前五步没有问题,但是接上硬件后还是跟新安装一个硬件一样跳出那个硬件安装向导啊?
是不是因为我的驱动没有经过微软的数字签名?
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-04-06 16:28
我也使在做这东西,我觉得唯一可能的是在xp下,没有经过数字签名就不能自动安装。我试了很多方法,都没有成功。至少这里提及的方法我都式过。
附件中是俺翻译的DDK中关于设备安装的说明,从中也可以体会出这个意思。至少在xp下,即使调用了SetupCopyOEMInf也还会出现发现新硬件向导。
但设备已经插在系统中,如果已经调用了SetupCopyOEMInf,更新驱动程序却不会出现提示。
附件名称/大小 下载次数 最后更新
2005-04-06_写备安装应用程序.doc (60KB)  176
jacksec163
驱动牛犊
驱动牛犊
  • 注册日期2005-03-29
  • 最后登录2008-06-06
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-03-29 11:20
转贴一篇文章:\"10分钟完成一个USB驱动程序\"
http://blog.csdn.net/upwaker/archive/2004/06/28/28195.aspx
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-24 21:33
关于xp下的安装,请认真看完我的帖子,你肯定会有收获。
省元坊
xl1533
驱动牛犊
驱动牛犊
  • 注册日期2005-03-09
  • 最后登录2006-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-03-24 09:28
大家好,我也卡在这儿。

我同事以前是用SetupCopyOEMInfwin2000安装驱动的,可以成功,但是在xp下 不行。我现在遇到一个大麻烦:

    使用windows向导来安装usb驱动成功,说明inf文件没错,但是用ddk带的devcon 和 install.c来安装却失败,经观察,两种安装方 式写入注册表的内容也不同,不知什么原因,以下是我这两天发的求助:

【求助】在xp下使用DDK附带带的devcon.exeinstall.c安装inf驱动后,usb设备不能使用,使用向导安装却正常(附inf)
 [url]http://www.driverdevelop.com/forum/viewthread.php?tid=88975 [/url]

(求助)在xp下分别使用devcon和向导安装inf驱动,结果却不同(附setupapi.log)
 http://www.driverdevelop.com/forum/html_89164.html?1111627024


我是新手,还没有入门,请多指教
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-03-22 22:51
win2K下可以,win98下好像不行。


你说的对,98下不行。本论坛有讲98的。
省元坊
szzhuo
驱动牛犊
驱动牛犊
  • 注册日期2005-01-30
  • 最后登录2008-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-03-13 20:22
win2K下可以,win98下好像不行。
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-13 23:02
jupitur兄,你的心情我很理解,但一口吃成胖子的事我到目前还从未听说过。Windows驱动程序开发大家基本都用DDK(Driver Development Kit)。安装完DDK后,src目录下有不少驱动实例代码,研究这些代码应该是初学者快速起步的一个方法。
省元坊
jupitur
驱动牛犊
驱动牛犊
  • 注册日期2002-10-02
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-13 10:10
tigerl兄弟:
   目前我遇到了一些比较基础的问题,请问你上述所说的开发工具是什么?我是驱动开发新手,项目比较急,没办法才问如此低级的问题,谢谢你能解答!!!
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-09 22:21
TigerL
能谈谈以下两个问题吗?
1. 98ddk,2000ddk,ntddk,xpddk各有什么区别?

2. SetupCopyOEMInf函数的功能是什么?如果仅仅是拷贝*.inf文件到.INF下,那么完全可以用其它方法实现呀。



[编辑 -  12/9/04 by  blackcourser]


很抱歉,以我目前的水平谈这两个问题,实在是困难!
省元坊
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-09 22:18
tigerL
  你好。我的INF文件在2K下可以,在WIN98下安装却出现一黄色感叹号,不知是什么原因?


这个可能是INF中AddReg的问题。
省元坊
上一页
游客

返回顶部