USB驱动安装程序-开发过程

时间:2021-09-29 16:17:54

刚刚完成一个任务,开发一款USB驱动的安装程序,这样插入USB设备后,可以自动识别,不必再插入安装盘,查找安装。

.inf和.sys文件是开发好了的,只需要打包发布就可以。搜索了一遍打包工具,然后选了一个最有名的install shield 2009来制作,先是直接拷贝到inf和system32/drivers目录下,结果根本不行。需要执行inf的安装过程才可以。于是,又写了一个script来执行:

 

  1. function  OnEnd()
  2.     string szCmdLine;  
  3.     string szProgram;
  4. begin                          
  5.     szProgram = "rundll32.exe"
  6.     szCmdLine = "setupapi.dll,InstallHinfSection DefaultInstall 132 "+"%AppFloder"+"//BulkUsb.inf"
  7.  if (LaunchAppAndWait(szProgram,szCmdLine,WAIT) < 0) then 
  8.       MessageBox ("自动安装失败,请手工安装",WARNING); 
  9.   return -1;
  10.  endif;
  11. end;

end;

结果发现,行是行,但是安装程序太华美了,中间的很多dialog又去不掉。于是转而采用setup factory 7.0来作,结果发现,没有办法执行C:/WINDOWS/System32/rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1这个windows程序,看来SF7只适合为应用程序打包,不适合打包驱动。

然后又换了INFtool,这个小工具确实看上去比较地道,但是人家要卖钱的,不花钱购买就用不了。

之后又试了几个工具,象windows installer,结果也是要钱,否则就要显示trial字样,晕。而且,也不太适合打包驱动程序。

实在没有办法,只得用VC++6.0来自行开发一款安装程序,专门安装USB类驱动,调用了DDK 2003中提供的setupapi类中的函数。看起来问题才得到较为完满的解决。

总结:本来以为靠打包工具,应该半天时间就可以解决的,结果花了1个星期才搞掂。技术的事情,如果没有做过,是难以准确估量其工作量大小的。