用installshield制作驱动安装包
用installshield制作对于即插即用的驱动安装包简单地说要对付2种情况
1、在你的设备未安装前,安装驱动程序这叫预先安装。
最简单的方法就是使用SetupCopyOEMInf函数。具体做法是:
- 将SetupCopyOEMInf封装在一个动态库里。
- 用installshield将所有文件copy到一个临时目录。
- 调用动态库使用SetupCopyOEMInf函数copy临时目录下的inf文件(路径)。
- installshield让计算机重启。
- 插上设备,自动识别。
2、你的设备已安装,弹出安装向导。
很简单,让用户搜索你的安装盘,即可完成安装。
devcon dp_add调用SetupCopyOEMInf做了预安装
wdk文档中关于预安装的一段话
我刚开始以为预安装就是直接把驱动安上,白痴似的把驱动直接安上了,然后我机子上面之前的驱动没卸干净,添上设备后直接能用,偶就把安装程序当成一个版本交了,囧。。。
安装时直接把inf文件拷windows\inf下,卸载时删除,防止被命名成oem*.inf,在某种情况下发生重复预注册,同时也便于卸载时删除inf文件。
注:驱动预安装
最近实现驱动预安装的脚本,即在安装软件时候,将驱动文件安装一起安装上,从而达到安装后,插入设备可以直接使用的目的,以下是具体脚本,共享给需要的人参考
注:
- XP系统下,当插入设备,会提示发现新硬件,只要点击自动搜索,即可
- Windows 7下直接插入设备即可
1.声明一个prototype
prototype BOOL Setupapi.SetupCopyOEMInfA(POINTER, POINTER, POINTER, POINTER, POINTER, POINTER, POINTER, POINTER);
2.使用SetupCopyOEMInfA实现驱动预安装
SourceUSB2InfFileName = WINDIR^"inf\\Motic Drivers\\USB2 Camera\\MoticUSB2Camera.inf";
UseDLL("Setupapi.dll");
SetupCopyOEMInfA(&SourceUSB2InfFileName, NULL, 1, NULL, NULL, 0, NULL, NULL);
UnUseDLL("Setupapi.dll");
3.遗留问题:
以上这个方法,已经可以实现驱动预安装,但安装过程会弹出数字签名认证窗口,每次都要点“继续安装”,还没找到屏蔽掉这个窗口的方法,不知道是否有人知道如何屏蔽或隐藏掉这个窗口?
版权声明:
作者:驱动外包
链接:http://www.51qudong.net/120.html
来源:算法优化_驱动外包_直播算法优化_MAC驱动开发_Linux驱动开发_usb驱动移植外包
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论