2013年11月18日 星期一

自己寫Driver Installer

1. 要先有Driver的inf, cat, sys檔案

2. 可以使用很多付費工具像是Advanced Installer, installshield, Wise Package Studio之類的
     或者可以使用Wix, Visual Studio等等

3. 大部分的人都喜歡使用Wix,而且有官方教學Wix Tutorial

4. 或者使用visual studio建立setup project產生msi檔案
再利用Orca去做修改Install usb device

但我自己是使用Visual Studio 2005寫一個安裝driver程式產生exe 设计驱动安装程序
最後再讓msi去執行

5. 很多人說可以使用Driver Install Frameworks (DIFx), Device Console (devcon), SetupAPI等等
但都是說說沒有例子

最後,
1)
我決定寫一個安裝driver的執行程式exe檔案

使用的是setupapi 但要注意 setupapi.h和setupapi.lib該如何使用

首先在程式裡面使用SetupCopyOEMInf,這個程式會安裝inf檔案到windows系統內

第二,需要安裝device,使用UpdateDriverForPlugAndPlayDevices

2)
解除安裝一樣要分inf與device

所以要先使用SetupUninstallOEMInf

再來使用SetupDiRemoveDevice去解除安裝device 可以參考如何自動移除驅動程式

另外,可以使用CM_Locate_DevNode, CM_Reenumerate_DevNode去掃描安裝完成的Driver

3)
使用visual studio建立setup project

建立custom action去執行exe檔
可參考
Custom Action in Visual Studio setup projects
Launching Your Application After Install using Visual Studio 2005

但我的執行程式再安裝的時候怎麼都執行不起來

所以我在msi安裝完成後才執行程式 可參考Run exe after msi installation

最後,我需要判斷我的電腦是64bit或32bit可參考Getting Processor architecture in x86 and x64 bit platform.