怎么制作自己的驱动包

1.使用NSIS的InstDrv控件:

下载地址:/InstDrv_plug-in

下载来的安装包里有例子,本人成功用此方法做出了一个安装包,可惜有如下缺点。

缺点:不能做64位系统的驱动安装包

2.用PnPUtil:

使用较难一下,略过?

3.在section或函数中添加一行:

ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 $INSTDIR\<myinf>.inf'

其中的“DefaultInstall”为inf中写出的默认节。

缺点:相当一部分的inf中是没写DefaultInstall的。

4.在section或函数中添加:

${If} ${RunningX64}

ExecWait '"$INSTDIR\drivers\dpinst64.exe" /c /q /sa /sw /PATH "$INSTDIR\drivers"'

${Else}

ExecWait '"$INSTDIR\drivers\dpinst32.exe" /c /q /sa /sw /PATH "$INSTDIR\drivers"'

${EndIf}

dpinst.exe在微软的WDK中有,在WinDDK\7600.16385.1\redist\DIFx\dpinst。网上应该也下得到吧。

缺点:可惜只能在安装设备管理器中显示有未知硬件的驱动,而不能安装虚拟设备驱动。而且貌似不能安装无数字签名的驱动。

5.在section或函数中添加:

${If} ${RunningX64}

ExecWait '"$INSTDIR\devcon\devcon64.exe" install "$INSTDIR\xxx.inf" xxxID'

${Else}

ExecWait '"$INSTDIR\devcon\devcon32.exe" install "$INSTDIR\xxx.inf"?xxxID‘

${EndIf}

devcon.exe也是在微软的WDK中有,在WinDDK\7600.16385.1\tools\devcon。上网也下得到

输入inf路径和硬件ID就行了。硬件ID不知道?先手动安装一次,在设备管理器中就能查到。

本人最后就是用这种方法的。其他几种或多或少都有缺点,唯独这种方便可行。

要卸载的话,在Uninstall节中加上:

Section Uninstall

${If} ${RunningX64}

ExecWait '"$INSTDIR\devcon\devcon64.exe" remove xxxID'

${Else}

ExecWait '"$INSTDIR\devcon\devcon32.exe" remove xxxID'

${EndIf}