;libCEC installer
-;Copyright (C) 2011 Pulse-Eight Ltd.
+;Copyright (C) 2012 Pulse-Eight Ltd.
;http://www.pulse-eight.com/
!include "MUI2.nsh"
!include "LogicLib.nsh"
!include "x64.nsh"
-Name "libCEC"
-OutFile "libCEC-installer.exe"
+Name "Pulse-Eight USB-CEC Adapter"
+OutFile "..\build\libCEC-installer.exe"
XPStyle on
-InstallDir "$PROGRAMFILES\libCEC"
-InstallDirRegKey HKCU "Software\libCEC" ""
+InstallDir "$PROGRAMFILES\Pulse-Eight\USB-CEC Adapter"
+InstallDirRegKey HKLM "Software\Pulse-Eight\USB-CEC Adapter software" ""
RequestExecutionLevel admin
Var StartMenuFolder
-!define MUI_FINISHPAGE_LINK "Please visit http://www.pulse-eight.com/ for more information."
+!define MUI_FINISHPAGE_LINK "Visit http://www.pulse-eight.com/ for more information."
!define MUI_FINISHPAGE_LINK_LOCATION "http://www.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 "HKCU"
-!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\libCEC"
+!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_LANGUAGE "English"
-InstType "Full"
+InstType "USB-CEC driver & libCEC"
+InstType "USB-CEC driver only"
+InstType "Full installation"
-Section "libCEC" SecLibCEC
+Section "USB-CEC driver" SecDriver
SetShellVarContext current
SectionIn RO
- SectionIn 1 #section is in installtype Full
+ SectionIn 1 2 3
+
+ ; Uninstall the old unsigned software if it's found
+ ReadRegStr $1 HKCU "Software\libCEC" ""
+ ${If} $1 != ""
+ MessageBox MB_OK \
+ "A previous libCEC and USB-CEC driver was found. This update requires the old version to be uninstalled. Press OK to uninstall the old version."
+ ExecWait '"$1\Uninstall.exe" /S _?=$1'
+ Delete "$1\Uninstall.exe"
+ RMDir "$1"
+ ${EndIf}
+
+ ; Delete libcec.dll and libcec.x64.dll from the system directory
+ ; Let a seperate installer do this, when we need it
+ Delete "$SYSDIR\libcec.dll"
+ ${If} ${RunningX64}
+ Delete "$SYSDIR\libcec.x64.dll"
+ ${EndIf}
+
+ ; Copy to the installation directory
SetOutPath "$INSTDIR"
File "..\AUTHORS"
- File "..\cec-client.exe"
- File "..\ChangeLog"
File "..\COPYING"
- File "..\libcec.dll"
- File "..\libcec.lib"
- File "..\pthreadVC2.dll"
- File "..\README"
+ ; Copy the driver installer
SetOutPath "$INSTDIR\driver"
- File "..\dpinst-amd64.exe"
- File "..\dpinst-x86.exe"
- File "..\OEM001.inf"
- SetOutPath "$INSTDIR\include"
- File /r /x *.so "..\include\cec*.*"
+ File "..\build\p8-usbcec-driver-installer.exe"
;Store installation folder
- WriteRegStr HKCU "Software\libCEC" "" $INSTDIR
+ WriteRegStr HKLM "Software\Pulse-Eight\USB-CEC Adapter software" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
- CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk" "$INSTDIR\cec-client.exe" \
- "" "$INSTDIR\cec-client.exe" 0 SW_SHOWNORMAL \
- "" "Start the CEC Test client."
- CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall libCEC.lnk" "$INSTDIR\Uninstall.exe" \
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Pulse-Eight USB-CEC Adapter software.lnk" "$INSTDIR\Uninstall.exe" \
"" "$INSTDIR\Uninstall.exe" 0 SW_SHOWNORMAL \
- "" "Uninstall libCEC."
+ "" "Uninstall Pulse-Eight USB-CEC Adapter software."
WriteINIStr "$SMPROGRAMS\$StartMenuFolder\Visit Pulse-Eight.url" "InternetShortcut" "URL" "http://www.pulse-eight.com/"
!insertmacro MUI_STARTMENU_WRITE_END
-
-
+
;add entry to add/remove programs
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
- "DisplayName" "libCEC"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
+ "DisplayName" "Pulse-Eight USB-CEC Adapter software"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"UninstallString" "$INSTDIR\uninstall.exe"
- WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"NoModify" 1
- WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"NoRepair" 1
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"InstallLocation" "$INSTDIR"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"DisplayIcon" "$INSTDIR\cec-client.exe,0"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
- "Publisher" "Pulse-Eight Ltd."
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
+ "Publisher" "Pulse-Eight Limited"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"HelpLink" "http://www.pulse-eight.com/"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC" \
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
"URLInfoAbout" "http://www.pulse-eight.com"
;install driver
+ ExecWait '"$INSTDIR\driver\p8-usbcec-driver-installer.exe" /S'
+ Delete "$INSTDIR\driver\p8-usbcec-driver-installer.exe"
+SectionEnd
+
+Section "libCEC" SecLibCec
+ SetShellVarContext current
+ SectionIn 1 3
+
+ ; Copy to the installation directory
+ SetOutPath "$INSTDIR"
+ File "..\ChangeLog"
+ File "..\README"
+ File "..\build\*.dll"
+ SetOutPath "$INSTDIR\x64"
+ File /nonfatal "..\build\x64\*.dll"
+
+ ; Copy to XBMC\system
+ ReadRegStr $1 HKCU "Software\XBMC" ""
+ ${If} $1 != ""
+ SetOutPath "$1\system"
+ File "..\build\libcec.dll"
+ ${EndIf}
+
+ ; Copy the headers
+ SetOutPath "$INSTDIR\include"
+ File /r /x *.so "..\include\cec*.*"
+SectionEnd
+
+Section "CEC debug client" SecCecClient
+ SetShellVarContext current
+ SectionIn 3
+
+ ; Copy to the installation directory
+ SetOutPath "$INSTDIR"
+ File /x p8-usbcec-driver-installer.exe /x cec-config-gui.exe "..\build\*.exe"
+ SetOutPath "$INSTDIR\x64"
+ File /nonfatal /x cec-config-gui.exe "..\build\x64\*.exe"
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+ SetOutPath "$INSTDIR"
+
+ CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
+ ${If} ${RunningX64}
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk" "$INSTDIR\x64\cec-client.x64.exe" \
+ "" "$INSTDIR\cec-client.x64.exe" 0 SW_SHOWNORMAL \
+ "" "Start the CEC Test client (x64)."
+ ${Else}
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk" "$INSTDIR\cec-client.exe" \
+ "" "$INSTDIR\cec-client.exe" 0 SW_SHOWNORMAL \
+ "" "Start the CEC Test client."
+ ${EndIf}
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+SectionEnd
+
+Section "CEC configuration tool" SecCecConfig
+ SetShellVarContext current
+ SectionIn 1 3
+
+ ; Copy to the installation directory
+ SetOutPath "$INSTDIR"
+ File "..\build\cec-config-gui.exe"
+ SetOutPath "$INSTDIR\x64"
+ File /nonfatal "..\build\x64\cec-config-gui.exe"
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+ SetOutPath "$INSTDIR"
+
+ CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
${If} ${RunningX64}
- ExecWait '"$INSTDIR\driver\dpinst-amd64.exe" /lm /sa /sw /PATH "$INSTDIR\driver"'
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration (x64).lnk" "$INSTDIR\x64\cec-config-gui.exe" \
+ "" "$INSTDIR\x64\cec-config-gui.exe" 0 SW_SHOWNORMAL \
+ "" "Start the CEC Adapter Configuration tool (x64)."
${Else}
- ExecWait '"$INSTDIR\driver\dpinst-x86.exe" /lm /sa /sw /PATH "$INSTDIR\driver"'
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration.lnk" "$INSTDIR\cec-config-gui.exe" \
+ "" "$INSTDIR\cec-config-gui.exe" 0 SW_SHOWNORMAL \
+ "" "Start the CEC Adapter Configuration tool."
${EndIf}
+ !insertmacro MUI_STARTMENU_WRITE_END
+
SectionEnd
;--------------------------------
SetShellVarContext current
- ${If} ${RunningX64}
- ExecWait '"$INSTDIR\driver\dpinst-amd64.exe" /u "$INSTDIR\driver\OEM001.inf"'
- ${Else}
- ExecWait '"$INSTDIR\driver\dpinst-x64.exe" /u "$INSTDIR\driver\OEM001.inf"'
- ${EndIf}
Delete "$INSTDIR\AUTHORS"
- Delete "$INSTDIR\cec-client.exe"
+ Delete "$INSTDIR\*.exe"
Delete "$INSTDIR\ChangeLog"
Delete "$INSTDIR\COPYING"
- Delete "$INSTDIR\libcec.dll"
- Delete "$INSTDIR\libcec.lib"
- Delete "$INSTDIR\libcec.pdb"
- Delete "$INSTDIR\pthreadVC2.dll"
+ Delete "$INSTDIR\*.dll"
+ Delete "$INSTDIR\*.lib"
+ Delete "$INSTDIR\x64\*.dll"
+ Delete "$INSTDIR\x64\*.lib"
+ Delete "$INSTDIR\x64\*.exe"
Delete "$INSTDIR\README"
- Delete "$INSTDIR\driver\OEM001.inf"
- Delete "$INSTDIR\driver\dpinst-amd64.exe"
- Delete "$INSTDIR\driver\dpinst-x86.exe"
+ Delete "$SYSDIR\libcec.dll"
+ ${If} ${RunningX64}
+ Delete "$SYSDIR\libcec.x64.dll"
+ ${EndIf}
+
+ ; Uninstall the driver
+ ReadRegStr $1 HKLM "Software\Pulse-Eight\USB-CEC Adapter driver" ""
+ ${If} $1 != ""
+ ExecWait '"$1\Uninstall.exe" /S _?=$1'
+ ${EndIf}
RMDir /r "$INSTDIR\include"
Delete "$INSTDIR\Uninstall.exe"
RMDir /r "$INSTDIR"
+ RMDir "$PROGRAMFILES\Pulse-Eight"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
+ Delete "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration.lnk"
+ ${If} ${RunningX64}
+ Delete "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration (x64).lnk"
+ ${EndIf}
Delete "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk"
- Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall libCEC.lnk"
+ ${If} ${RunningX64}
+ Delete "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk"
+ ${EndIf}
+ Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Pulse-Eight USB-CEC Adapter software.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Visit Pulse-Eight.url"
- RMDir "$SMPROGRAMS\$StartMenuFolder"
-
- DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\libCEC"
-
- DeleteRegKey /ifempty HKCU "Software\libCEC"
+ RMDir "$SMPROGRAMS\$StartMenuFolder"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter driver"
+ DeleteRegKey /ifempty HKLM "Software\Pulse-Eight\USB-CEC Adapter software"
+ DeleteRegKey /ifempty HKLM "Software\Pulse-Eight"
SectionEnd