;libCEC installer ;Copyright (C) 2011-2020 Pulse-Eight Ltd. ;http://www.pulse-eight.com/ Var StartMenuFolder Var VSRedistSetupError Var VSRedistInstalledX64 Var VSRedistInstalledX86 Var EventGhostLocation !include "MUI2.nsh" !include "nsDialogs.nsh" !include "LogicLib.nsh" !include "x64.nsh" !include "nsis\libcec-version.nsh" !include "nsis\functions.nsh" XPStyle on RequestExecutionLevel admin Name "Pulse-Eight libCEC v${LIBCEC_VERSION_STRING}" !ifdef INNER ; only generate a temporary installer so we can sign the uninstaller if INNER is defined OutFile "$%TEMP%\libcec_temp_installer.exe" SetCompress off !else ; create the uninstaller first !makensis '/V1 /DINNER "${__FILE__}"' = 0 !system 'set __COMPAT_LAYER=RunAsInvoker&"$%TEMP%\libcec_temp_installer.exe"' = 2 ; sign the uninstaller if the signtool is present ${!defineifexist} SIGNTOOL_EXISTS ..\support\private\sign-binary.cmd !ifdef SIGNTOOL_EXISTS !echo "Signing uninstaller binary" !system "..\support\private\sign-binary.cmd $%TEMP%\uninstall_libcec.exe" = 0 !undef SIGNTOOL_EXISTS !endif ; generate a separate installer if pdb files are included, because it more than twice the size !ifdef NSISINCLUDEPDB OutFile "..\build\libcec-dbg-${LIBCEC_VERSION_STRING}.exe" !else OutFile "..\build\libcec-${LIBCEC_VERSION_STRING}.exe" !endif SetCompressor /SOLID lzma !endif InstallDir "$PROGRAMFILES\Pulse-Eight\USB-CEC Adapter" InstallDirRegKey HKLM "Software\Pulse-Eight\USB-CEC Adapter software" "" !define MUI_FINISHPAGE_LINK "Visit http://libcec.pulse-eight.com/ for more information." !define MUI_FINISHPAGE_LINK_LOCATION "http://libcec.pulse-eight.com/" !define MUI_ABORTWARNING !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "..\COPYING" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Pulse-Eight\USB-CEC Adapter sofware" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_LANGUAGE "English" InstType "Full installation" InstType "USB-CEC Driver & libCEC" InstType "USB-CEC Driver Only" ; installer sections, separate file to declutter a bit !include "nsis\sections.nsh" Function .onInit !ifdef INNER ; just write the uninstaller and exit SetSilent silent WriteUninstaller "$%TEMP%\uninstall_libcec.exe" Quit !else ; the actual onInit function ; check for vc x86 redist ReadRegDword $1 HKLM "SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" "Version" ${If} $1 != "" StrCpy $VSRedistInstalledX86 "Yes" ${Endif} ${If} $VSRedistInstalledX86 == "Yes" !insertMacro UnSelectSection ${SecVCRedistX86} SectionSetText ${SecVCRedistX86} "" ${Else} !insertMacro SelectSection ${SecVCRedistX86} SectionSetText ${SecVCRedistX86} "${REDISTRIBUTABLE_X86_SECTIONNAME}" ${Endif} ${If} ${RunningX64} ; check for vc x64 redist ReadRegDword $1 HKLM "SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version" ${If} $1 != "" StrCpy $VSRedistInstalledX64 "Yes" ${Endif} ${If} $VSRedistInstalledX64 == "Yes" !insertMacro UnSelectSection ${SecVCRedistX64} SectionSetText ${SecVCRedistX64} "" ${Else} !insertMacro SelectSection ${SecVCRedistX64} SectionSetText ${SecVCRedistX64} "${REDISTRIBUTABLE_X64_SECTIONNAME}" ${Endif} ${Else} !insertMacro UnSelectSection ${SecVCRedistX64} SectionSetText ${SecVCRedistX64} "" ${Endif} ; check for EventGhost ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\EventGhost_is1" "InstallLocation" ${If} $1 != "" StrCpy $EventGhostLocation "$1" !insertMacro SelectSection ${SecEvGhostCec} SectionSetText ${SecEvGhostCec} "${EVENTGHOST_SECTIONNAME}" ${Else} !insertMacro UnSelectSection ${SecEvGhostCec} ${Endif} ; check for Kodi IfFileExists "$PROGRAMFILES32\Kodi\cec.dll" 0 +2 SectionSetText ${SecLibCecKodi86} "${KODI_X86_SECTIONNAME}" ${If} ${RunningX64} IfFileExists "$PROGRAMFILES64\Kodi\cec.dll" 0 +2 SectionSetText ${SecLibCecKodi64} "${KODI_X64_SECTIONNAME}" ${Endif} !insertMacro UnSelectSection ${SecLibCecKodi86} !insertMacro UnSelectSection ${SecLibCecKodi64} !endif FunctionEnd !ifdef INNER !include "nsis\uninstall.nsh" !endif