Cómo crear su propio paquete de controladores
1. Utilice el control InstDrv de NSIS:
Dirección de descarga: /InstDrv_plug-in
Hay ejemplos en el paquete de instalación descargado. He utilizado este método con éxito. Se creó un paquete de instalación, pero desafortunadamente tiene las siguientes deficiencias.
Desventaja: No se puede crear un paquete de instalación de controladores para sistemas de 64 bits 2. Utilice PnPUtil:
Es difícil de usar, ¿omitirlo?
3. sección o Agregue una línea a la función:
ExecWait '$SYSDIR\RUNDLL32.EXE SETUPAPI.DLL, InstallHinfSection DefaultInstall 132 $INSTDIR\lt;myinfgt;.inf'
El " DefaultInstall" es la sección predeterminada escrita en inf.
Desventajas: DefaultInstall no está escrito en bastantes infs.
4. Agregue la sección o función:
${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 está incluido en el WDK de Microsoft, ubicado en WinDDK\7600.16385.1\redist\DIFx\dpinst. También debería estar disponible en línea.
Desventajas: Desafortunadamente, los controladores para hardware desconocido solo se pueden mostrar en el administrador de dispositivos de instalación, pero los controladores de dispositivos virtuales no se pueden instalar. Y parece que no se pueden instalar controladores sin firmas digitales.
5. Agregue la sección o función: ${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 también está disponible en WDK de Microsoft y en WinDDK\ 7600.16385. 1\herramientas\devcon. También puede obtenerlo en línea
Simplemente ingrese la ruta de información y el ID del hardware. ¿No conoces el ID del hardware? Primero instálelo manualmente y podrá encontrarlo en el administrador de dispositivos.
Terminé usando este método. Los demás métodos tienen más o menos deficiencias, pero éste es el único conveniente y viable.
Para desinstalar, agregue:
Sección Desinstalar ${If} ${RunningX64} ExecWait '"$INSTDIR\devcon\devcon64.exe" remove xxxID' ${Else} ExecWait ' "$INSTDIR\devcon\devcon32.exe" elimina xxxID' ${EndIf}