panda/drivers/windows/panda_install.nsi

215 lines
7.8 KiB
Plaintext

!define J2534_Reg_Path "Software\PassThruSupport.04.04\comma.ai - panda"
!define Install_Name "panda J2534 driver"
;NOTE! The panda software requires a VC runtime to be installed in order to work.
;This installer must be bundled with the appropriate runtime installer, and have
;the installation registry key set so the installer can tell if the runtime is
;already installed. Copy vscruntimeinfo.nsh.sample to vscruntimeinfo.nsh and edit
;it for your version of Visual Studio.
!include "redist\vscruntimeinfo.nsh"
;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
!include "x64.nsh"
!define MUI_ICON "panda.ico"
;NSIS is ignoring the unicon unless it is the same as the normal icon
;!define MUI_UNICON "panda_remove.ico"
;Properly display all languages (Installer will not work on Windows 95, 98 or ME!)
Unicode true
# Set the installer display name
Name "${Install_Name}"
# set the name of the installer
Outfile "${Install_Name} install.exe"
; The default installation directory
InstallDir $PROGRAMFILES\comma.ai\panda
; Request application privileges for UAC
RequestExecutionLevel admin
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM "SOFTWARE\${Install_Name}" "Install_Dir"
;--------------------------------
; Pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "..\..\LICENSE"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
; -------------------------------------------------------------------------------------------------
; Additional info (will appear in the "details" tab of the properties window for the installer)
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "panda OBD-II adapter"
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" ""
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "comma.ai"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Application released under the MIT license"
;VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© ${PRODUCT_NAME} Team"
;VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Jessy Exum"
;VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}"
VIProductVersion "1.0.0.0"
;--------------------------------
; Install Sections
Section "prerequisites"
SectionIn RO
SetOutPath "$INSTDIR"
File "panda.ico"
;If the visual studio version this project is compiled with changes, this section
;must be revisited. The registry key must be changed, and the VS redistributable
;binary must be updated to the VS version used.
ClearErrors
ReadRegStr $0 HKCR ${VCRuntimeRegKey} "Version"
${If} ${Errors}
DetailPrint "Installing Visual Studio C Runtime..."
File "${VCRuntimeSetupPath}\${VCRuntimeSetupFile}"
ExecWait '"$INSTDIR\${VCRuntimeSetupFile}" /passive /norestart'
${Else}
DetailPrint "Visual Studio C Runtime already installed."
${EndIf}
;Remove the now unnecessary runtime installer.
Delete "$INSTDIR\${VCRuntimeSetupFile}"
;Do the rest of the install
; SetOutPath "$INSTDIR\driver"
; The inf file works for both 32 and 64 bit.
; File "Debug_x86\panda Driver Package\panda.inf"
; File "Debug_x86\panda Driver Package\panda.cat"
; ${DisableX64FSRedirection}
; nsExec::ExecToLog '"$SYSDIR\PnPutil.exe" /a "$INSTDIR\driver\panda.inf"'
; ${EnableX64FSRedirection}
; Write the installation path into the registry
WriteRegStr HKLM "SOFTWARE\${Install_Name}" "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "DisplayVersion" ""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "DisplayIcon" '"$INSTDIR\panda.ico",0'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "DisplayName" "${Install_Name}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "Publisher" "comma.ai"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "URLInfoAbout" "https://github.com/commaai/panda/"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}" "NoRepair" 1
SetOutPath $INSTDIR
WriteUninstaller "uninstall.exe"
SectionEnd
Section "J2534 Driver"
SetOutPath $INSTDIR
File Release_x86\pandaJ2534_0404_32.dll
SetRegView 32
WriteRegDWORD HKLM "${J2534_Reg_Path}" "CAN" 00000001
WriteRegStr HKLM "${J2534_Reg_Path}" "FunctionLibrary" "$INSTDIR\pandaJ2534_0404_32.dll"
WriteRegDWORD HKLM "${J2534_Reg_Path}" "ISO15765" 00000001
WriteRegDWORD HKLM "${J2534_Reg_Path}" "J1850VPW" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "SCI_A_ENGINE" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "SCI_A_TRANS" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "SCI_B_ENGINE" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "SCI_B_TRANS" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "J1850PWM" 00000000
WriteRegDWORD HKLM "${J2534_Reg_Path}" "ISO9141" 00000001
WriteRegDWORD HKLM "${J2534_Reg_Path}" "ISO14230" 00000001
WriteRegStr HKLM "${J2534_Reg_Path}" "Name" "panda"
WriteRegStr HKLM "${J2534_Reg_Path}" "Vendor" "comma.ai"
WriteRegStr HKLM "${J2534_Reg_Path}" "ConfigApplication" ""
DetailPrint "Registered J2534 Driver"
SectionEnd
Section /o "Development lib/header"
SetOutPath $SYSDIR
File Release_x86\panda.dll
${If} ${RunningX64}
${DisableX64FSRedirection}
;Note that the x64 VS redistributable is not installed to prevent bloat.
;If you are the rare person who uses the 64 bit raw panda driver, please
;install the correct x64 VS runtime manually.
File Release_x64\panda.dll
${EnableX64FSRedirection}
${EndIf}
SetOutPath "$INSTDIR\devel"
File panda_shared\panda.h
SetOutPath "$INSTDIR\devel\x86"
File Release_x86\panda.lib
SetOutPath "$INSTDIR\devel\x64"
File Release_x64\panda.lib
SectionEnd
;--------------------------------
; Uninstaller
Section "Uninstall"
; Removing the inf file for winusb is not easy to do.
; The best solution I can find is parsing the output
; of the pnputil.exe /e command to find the oem#.inf
; file that lists comma.ai as the provider. Not sure
; if Microsoft wants these inf files to be removed.
; Consider https://blog.sverrirs.com/2015/12/creating-windows-installer-and.html
; These lines just remove the inf backups.
; Delete "$INSTDIR\driver\panda.inf"
; Delete "$INSTDIR\driver\panda.cat"
; RMDir "$INSTDIR\driver"
; Remove WinUSB driver library
Delete $SYSDIR\panda.dll
${If} ${RunningX64}
${DisableX64FSRedirection}
Delete $SYSDIR\panda.dll
${EnableX64FSRedirection}
${EndIf}
; Remove devel files
Delete "$INSTDIR\devel\x86\panda.lib"
RMDir "$INSTDIR\devel\x86"
Delete "$INSTDIR\devel\x64\panda.lib"
RMDir "$INSTDIR\devel\x64"
Delete "$INSTDIR\devel\panda.h"
RMDir "$INSTDIR\devel"
; Remove registry keys
DeleteRegKey HKLM "${J2534_Reg_Path}"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Install_Name}"
DeleteRegKey HKLM "SOFTWARE\${Install_Name}"
; Remove files and uninstaller
Delete "$INSTDIR\uninstall.exe"
Delete "$INSTDIR\pandaJ2534_0404_32.dll"
Delete "$INSTDIR\panda.ico"
; Remove directories used
RMDir "$INSTDIR"
RMDir "$PROGRAMFILES\comma.ai"
SectionEnd