Merge branch 'master' into release
[deb_libcec.git] / project / libCEC.nsi
index 2d73500192f3a4366719e09eed4205f79d1ffe5a..f4b2cfb275b454827debaefddd01917d3d7aca4a 100644 (file)
@@ -15,6 +15,8 @@ InstallDir "$PROGRAMFILES\Pulse-Eight\USB-CEC Adapter"
 InstallDirRegKey HKLM "Software\Pulse-Eight\USB-CEC Adapter software" ""
 RequestExecutionLevel admin
 Var StartMenuFolder
+Var VSRedistSetupError
+Var VSRedistInstalled
 
 !define MUI_FINISHPAGE_LINK "Visit http://www.pulse-eight.com/ for more information."
 !define MUI_FINISHPAGE_LINK_LOCATION "http://www.pulse-eight.com/"
@@ -59,6 +61,13 @@ Section "USB-CEC driver" SecDriver
        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"
@@ -132,13 +141,6 @@ Section "libCEC" SecLibCec
   ; Copy the headers
   SetOutPath "$INSTDIR\include"
   File /r /x *.so "..\include\cec*.*"
-
-  ; Copy libcec.dll and libcec.x64.dll to the system directory
-  SetOutPath "$SYSDIR"
-  File "..\build\libcec.dll"
-  ${If} ${RunningX64}
-    File /nonfatal "..\build\x64\libcec.x64.dll"
-  ${EndIf}
 SectionEnd
 
 Section "CEC debug client" SecCecClient
@@ -147,26 +149,123 @@ Section "CEC debug client" SecCecClient
 
   ; Copy to the installation directory
   SetOutPath "$INSTDIR"
-  File /x p8-usbcec-driver-installer.exe "..\build\*.exe"
+  File /x p8-usbcec-driver-installer.exe /x cec-config-gui.exe "..\build\*.exe"
   SetOutPath "$INSTDIR\x64"
-  File /nonfatal "..\build\x64\*.exe"
+  File /nonfatal /x cec-config-gui.exe "..\build\x64\*.exe"
 
   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
   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."
   ${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}
+    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}
+    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
+
+!define REDISTRIBUTABLE_SECTIONNAME "Microsoft Visual C++ 2010 Redistributable Package"
+Section "" SecVCRedist
+  SetShellVarContext current
+  SectionIn 1 3
+
+
+  ${If} $VSRedistInstalled != "Yes"
+    ; Download redistributable
+    SetOutPath "$TEMP\vc20XX"
+    ${If} ${RunningX64}
+      NSISdl::download http://packages.pulse-eight.net/windows/vcredist_x64.exe vcredist_x64.exe
+      ExecWait '"$TEMP\vc20XX\vcredist_x64.exe" /q' $VSRedistSetupError
+    ${Else}
+      NSISdl::download http://packages.pulse-eight.net/windows/vcredist_x86.exe vcredist_x86.exe
+      ExecWait '"$TEMP\vc20XX\vcredist_x86.exe" /q' $VSRedistSetupError
+    ${Endif}
+    RMDIR /r "$TEMP\vc20XX"
+  ${Endif}
+
+SectionEnd
+
+Function .onInit
+
+  ; SP0 x86
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ; SP0 x64
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ; SP0 ia64
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C1A35166-4301-38E9-BA67-02823AD72A1B}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ; SP1 x86
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ; SP1 x64
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1D8E6291-B0D5-35EC-8441-6616F567A0F7}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ; SP1 ia64
+  ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}" "Version"
+  ${If} $1 != ""
+    StrCpy $VSRedistInstalled "Yes"
+  ${Endif}
+
+  ${If} $VSRedistInstalled == "Yes"
+    !insertMacro UnSelectSection ${SecVCRedist}
+    SectionSetText ${SecVCRedist} ""
+  ${Else}
+    !insertMacro SelectSection ${SecVCRedist}
+    SectionSetText ${SecVCRedist} "${REDISTRIBUTABLE_SECTIONNAME}"
+  ${Endif}
+
+FunctionEnd
+
 ;--------------------------------
 ;Uninstaller Section
 
@@ -175,14 +274,19 @@ Section "Uninstall"
   SetShellVarContext current
 
   Delete "$INSTDIR\AUTHORS"
-  Delete "$INSTDIR\cec*.exe"
+  Delete "$INSTDIR\*.exe"
   Delete "$INSTDIR\ChangeLog"
   Delete "$INSTDIR\COPYING"
   Delete "$INSTDIR\*.dll"
   Delete "$INSTDIR\*.lib"
   Delete "$INSTDIR\x64\*.dll"
   Delete "$INSTDIR\x64\*.lib"
+  Delete "$INSTDIR\x64\*.exe"
   Delete "$INSTDIR\README"
+  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" ""
@@ -196,6 +300,10 @@ Section "Uninstall"
   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"
   ${If} ${RunningX64}
     Delete "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk"