Re: Re: Installing your Driver

Home Forums Discussions Support Installing your Driver Re: Re: Installing your Driver

#7156
Vadim Smirnov
Keymaster

    That depends from the OS you installing on. The functions for NSIS installer are below:

    ######################################
    Function InstallNDISHookDriverNT2000XP
    ######################################
    SetOutPath $SYSDIRdrivers
    File ......Kernelbinhookdrvi386ndisrd.sys
    !insertmacro CreateRegKey ${HKEY_LOCAL_MACHINE} SystemCurrentControlSetServicesndisrd
    WriteRegDWORD HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesndisrd Start 1
    WriteRegDWORD HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesndisrd Type 1
    WriteRegDWORD HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesndisrd ErrorControl 1
    ${If} ${IsWinNT4}
    WriteRegStr HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesndisrd Group "Network"
    ${Else}
    WriteRegStr HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesndisrd Group "Streams Drivers"
    ${EndIf}
    SetRebootFlag true
    FunctionEnd
    ######################################

    ################################
    Function InstallNDISHookDriver9x
    ################################
    SetOutPath $WINDIRsystem
    File ......Kernelbinhookdrvwin9xndisrd.vxd
    !insertmacro CreateRegKey ${HKEY_LOCAL_MACHINE} SystemCurrentControlSetServicesVxDndisrd
    WriteRegStr HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesVxDndisrd StaticVxD "ndisrd.vxd"
    SetRebootFlag true
    FunctionEnd
    ################################

    ############################
    Function InstallNDISIMDriver
    ############################
    SetOutPath $INSTDIRinstimtmp
    ${If} ${RunningX64}
    File ......Setupbinamd64DriverSigning.exe
    File ......Setupbinamd64snetcfg.exe
    File ......KernelINFndisrd.inf
    File ......KernelINFndisrd_m.inf
    File ......Kernelbinimdrvamd64ndisrd.sys
    ${Else}
    File ......Setupbini386DriverSigning.exe
    File ......Setupbini386snetcfg.exe
    File ......KernelINFndisrd.inf
    File ......KernelINFndisrd_m.inf
    File ......Kernelbinimdrvi386ndisrd.sys
    ${EndIf}

    nsExec::ExecToLog /OEM '"$INSTDIRinstimtmpDriverSigning.exe" /verbose /off'
    nsExec::ExecToLog /OEM '"$INSTDIRinstimtmpsnetcfg.exe" -v -l ndisrd.inf -m ndisrd_m.inf -c s -i nt_ndisrd'
    nsExec::ExecToLog /OEM '"$INSTDIRinstimtmpDriverSigning.exe" /verbose /on'

    SetOutPath $INSTDIR
    RMDir /r /REBOOTOK $INSTDIRinstimtmp
    FunctionEnd
    ############################

    ########################
    Function InstallLWFVista
    ########################
    SetOutPath $INSTDIRinstlwftmp
    ${If} ${RunningX64}
    File ......Setupbinamd64snetcfg.exe
    File ......Setupbinamd64certinst.exe
    File ......Kernelbinlwfvistaamd64packagendisrd_lwf.inf
    File ......Kernelbinlwfvistaamd64packagendisrd.cat
    File ......Kernelbinlwfvistaamd64packagendisrd.sys
    ${Else}
    File ......Setupbini386snetcfg.exe
    File ......Setupbini386certinst.exe
    File ......Kernelbinlwfvistai386packagendisrd_lwf.inf
    File ......Kernelbinlwfvistai386packagendisrd.cat
    File ......Kernelbinlwfvistai386packagendisrd.sys
    ${EndIf}

    File ......Setupcertroot.cer
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpcertinst.exe" "$INSTDIRinstlwftmproot.cer"'
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpsnetcfg.exe" -v -l ndisrd_lwf.inf -c s -i nt_ndisrd'

    SetOutPath $INSTDIR
    RMDir /r /REBOOTOK $INSTDIRinstlwftmp
    FunctionEnd
    ########################

    ####################
    Function InstallLWF7
    ####################
    SetOutPath $INSTDIRinstlwftmp
    ${If} ${RunningX64}
    File ......Setupbinamd64snetcfg.exe
    File ......Setupbinamd64certinst.exe
    File ......Kernelbinlwfwin7amd64packagendisrd_lwf.inf
    File ......Kernelbinlwfwin7amd64packagendisrd.cat
    File ......Kernelbinlwfwin7amd64packagendisrd.sys
    ${Else}
    File ......Setupbini386snetcfg.exe
    File ......Setupbini386certinst.exe
    File ......Kernelbinlwfwin7i386packagendisrd_lwf.inf
    File ......Kernelbinlwfwin7i386packagendisrd.cat
    File ......Kernelbinlwfwin7i386packagendisrd.sys
    ${EndIf}

    File ......Setupcertroot.cer
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpcertinst.exe" "$INSTDIRinstlwftmproot.cer"'
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpsnetcfg.exe" -v -l ndisrd_lwf.inf -c s -i nt_ndisrd'

    SetOutPath $INSTDIR
    RMDir /r /REBOOTOK $INSTDIRinstlwftmp
    FunctionEnd
    ####################

    ####################
    Function InstallLWF8
    ####################
    SetOutPath $INSTDIRinstlwftmp
    ${If} ${RunningX64}
    File ......Setupbinamd64snetcfg.exe
    File ......Setupbinamd64certinst.exe
    File ......Kernelbinlwfwin8amd64packagendisrd_lwf.inf
    File ......Kernelbinlwfwin8amd64packagendisrd.cat
    File ......Kernelbinlwfwin8amd64packagendisrd.sys
    ${Else}
    File ......Setupbini386snetcfg.exe
    File ......Setupbini386certinst.exe
    File ......Kernelbinlwfwin8i386packagendisrd_lwf.inf
    File ......Kernelbinlwfwin8i386packagendisrd.cat
    File ......Kernelbinlwfwin8i386packagendisrd.sys
    ${EndIf}

    File ......Setupcertroot.cer
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpcertinst.exe" "$INSTDIRinstlwftmproot.cer"'
    nsExec::ExecToLog /OEM '"$INSTDIRinstlwftmpsnetcfg.exe" -v -l ndisrd_lwf.inf -c s -i nt_ndisrd'

    SetOutPath $INSTDIR
    RMDir /r /REBOOTOK $INSTDIRinstlwftmp
    FunctionEnd
    ####################

    #############################
    Function InstallNDISLWFDriver
    #############################
    SetOutPath $INSTDIRinstlwftmp

    ${If} ${IsWinVista}
    ${OrIf} ${IsWin2008}
    call InstallLWFVista
    Return
    ${EndIf}

    ${If} ${IsWin7}
    ${OrIf} ${IsWin2008R2}
    call InstallLWF7
    Return
    ${EndIf}

    call InstallLWF8
    FunctionEnd
    #############################

    #################################
    Function InstallWinpkFilterDriver
    #################################
    ${If} ${AtLeastWinVista}
    call InstallNDISLWFDriver
    GoTo post
    ${EndIf}

    StrCmp $bIMUsed "1" 0 +3
    call InstallNDISIMDriver
    GoTo post
    ${If} ${RunningX64}
    ${OrIf} ${AtLeastWinXP}
    call InstallNDISIMDriver
    ${ElseIf} ${IsNT}
    call InstallNDISHookDriverNT2000XP
    ${Else}
    call InstallNDISHookDriver9x
    ${EndIf}

    post:

    #Kernel components
    SetOutPath $INSTDIRKernelbindlli386
    File ......Kernelbindlli386ndisapi.dll
    File ......Kernelbindlli386ndisapi.lib

    SetOutPath $INSTDIRKernelbindllamd64
    File ......Kernelbindllamd64ndisapi.dll
    File ......Kernelbindllamd64ndisapi.lib

    WriteRegStr HKLM "${REGKEY}" NDISIMUsed $bIMUsed
    WriteRegStr HKLM "${REGKEY}Components" Main $availDrv

    Call EnableRouter

    FunctionEnd
    #################################