press & hold
[deb_libcec.git] / project / libCEC.nsi
1 ;libCEC installer
2 ;Copyright (C) 2012 Pulse-Eight Ltd.
3 ;http://www.pulse-eight.com/
4
5 !include "MUI2.nsh"
6 !include "nsDialogs.nsh"
7 !include "LogicLib.nsh"
8 !include "x64.nsh"
9
10 Name "Pulse-Eight libCEC version 2.0.4"
11 OutFile "..\build\libCEC-installer.exe"
12
13 XPStyle on
14 InstallDir "$PROGRAMFILES\Pulse-Eight\USB-CEC Adapter"
15 InstallDirRegKey HKLM "Software\Pulse-Eight\USB-CEC Adapter software" ""
16 RequestExecutionLevel admin
17 Var StartMenuFolder
18 Var VSRedistSetupError
19 Var VSRedistInstalled
20
21 !define MUI_FINISHPAGE_LINK "Visit http://libcec.pulse-eight.com/ for more information."
22 !define MUI_FINISHPAGE_LINK_LOCATION "http://libcec.pulse-eight.com/"
23 !define MUI_ABORTWARNING
24
25 !insertmacro MUI_PAGE_WELCOME
26 !insertmacro MUI_PAGE_LICENSE "..\COPYING"
27 !insertmacro MUI_PAGE_COMPONENTS
28 !insertmacro MUI_PAGE_DIRECTORY
29
30 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
31 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Pulse-Eight\USB-CEC Adapter sofware"
32 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
33 !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
34
35 !insertmacro MUI_PAGE_INSTFILES
36 !insertmacro MUI_PAGE_FINISH
37
38 !insertmacro MUI_UNPAGE_WELCOME
39 !insertmacro MUI_UNPAGE_CONFIRM
40 !insertmacro MUI_UNPAGE_INSTFILES
41 !insertmacro MUI_UNPAGE_FINISH
42
43 !insertmacro MUI_LANGUAGE "English"
44
45 InstType "USB-CEC Driver & libCEC"
46 InstType "USB-CEC Driver Only"
47 InstType "Full installation"
48
49 Section "USB-CEC Driver" SecDriver
50 SetShellVarContext current
51 SectionIn RO
52 SectionIn 1 2 3
53
54 ; Uninstall the old unsigned software if it's found
55 ReadRegStr $1 HKCU "Software\libCEC" ""
56 ${If} $1 != ""
57 MessageBox MB_OK \
58 "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."
59 ExecWait '"$1\Uninstall.exe" /S _?=$1'
60 Delete "$1\Uninstall.exe"
61 RMDir "$1"
62 ${EndIf}
63
64 ; Delete libcec.dll and libcec.x64.dll from the system directory
65 ; Let a seperate installer do this, when we need it
66 Delete "$SYSDIR\libcec.dll"
67 ${If} ${RunningX64}
68 Delete "$SYSDIR\libcec.x64.dll"
69 ${EndIf}
70
71 ; Copy to the installation directory
72 SetOutPath "$INSTDIR"
73 File "..\AUTHORS"
74 File "..\COPYING"
75
76 ; Copy the driver installer
77 SetOutPath "$INSTDIR\driver"
78 File "..\build\p8-usbcec-driver-installer.exe"
79
80 ;Store installation folder
81 WriteRegStr HKLM "Software\Pulse-Eight\USB-CEC Adapter software" "" $INSTDIR
82
83 ;Create uninstaller
84 WriteUninstaller "$INSTDIR\Uninstall.exe"
85
86 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
87 SetOutPath "$INSTDIR"
88
89 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
90 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Pulse-Eight USB-CEC Adapter software.lnk" "$INSTDIR\Uninstall.exe" \
91 "" "$INSTDIR\Uninstall.exe" 0 SW_SHOWNORMAL \
92 "" "Uninstall Pulse-Eight USB-CEC Adapter software."
93
94 WriteINIStr "$SMPROGRAMS\$StartMenuFolder\Visit Pulse-Eight.url" "InternetShortcut" "URL" "http://www.pulse-eight.com/"
95 !insertmacro MUI_STARTMENU_WRITE_END
96
97 ;add entry to add/remove programs
98 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
99 "DisplayName" "Pulse-Eight USB-CEC Adapter software"
100 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
101 "UninstallString" "$INSTDIR\uninstall.exe"
102 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
103 "NoModify" 1
104 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
105 "NoRepair" 1
106 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
107 "InstallLocation" "$INSTDIR"
108 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
109 "DisplayIcon" "$INSTDIR\cec-client.exe,0"
110 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
111 "Publisher" "Pulse-Eight Limited"
112 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
113 "HelpLink" "http://www.pulse-eight.com/"
114 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter sofware" \
115 "URLInfoAbout" "http://www.pulse-eight.com"
116
117 ;install driver
118 ExecWait '"$INSTDIR\driver\p8-usbcec-driver-installer.exe" /S'
119 Delete "$INSTDIR\driver\p8-usbcec-driver-installer.exe"
120 SectionEnd
121
122 Section "libCEC" SecLibCec
123 SetShellVarContext current
124 SectionIn 1 3
125
126 ; Copy to the installation directory
127 SetOutPath "$INSTDIR"
128 File "..\ChangeLog"
129 File "..\README"
130 File "..\build\*.dll"
131 File "..\build\*.xml"
132 SetOutPath "$INSTDIR\x64"
133 File /nonfatal "..\build\x64\*.dll"
134 File /nonfatal "..\build\x64\*.xml"
135
136 ; Copy to XBMC\system
137 ReadRegStr $1 HKCU "Software\XBMC" ""
138 ${If} $1 != ""
139 SetOutPath "$1\system"
140 File "..\build\libcec.dll"
141 ${EndIf}
142
143 ; Copy the headers
144 SetOutPath "$INSTDIR\include"
145 File /r /x *.so "..\include\cec*.*"
146 SectionEnd
147
148 Section "CEC Debug Client" SecCecClient
149 SetShellVarContext current
150 SectionIn 3
151
152 ; Copy to the installation directory
153 SetOutPath "$INSTDIR"
154 File /x p8-usbcec-driver-installer.exe /x cec-tray.exe "..\build\*.exe"
155 SetOutPath "$INSTDIR\x64"
156 File /nonfatal /x cec-tray.exe "..\build\x64\*.exe"
157
158 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
159 SetOutPath "$INSTDIR"
160
161 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
162 ${If} ${RunningX64}
163 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk" "$INSTDIR\x64\cec-client.x64.exe" \
164 "" "$INSTDIR\cec-client.x64.exe" 0 SW_SHOWNORMAL \
165 "" "Start the CEC Test client (x64)."
166 ${Else}
167 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk" "$INSTDIR\cec-client.exe" \
168 "" "$INSTDIR\cec-client.exe" 0 SW_SHOWNORMAL \
169 "" "Start the CEC Test client."
170 ${EndIf}
171 !insertmacro MUI_STARTMENU_WRITE_END
172
173 SectionEnd
174
175 Section "libCEC Tray Application" SecCecTray
176 SetShellVarContext current
177 SectionIn 1 3
178
179 ; Uninstall previous beta builds of the tray application
180 ReadRegStr $1 HKLM "Software\Pulse-Eight\libCECTray" ""
181 ${If} $1 != ""
182 MessageBox MB_OK \
183 "A previous beta build of the libCEC Tray Application was found. Press OK to uninstall the old version. Do not uninstall the driver when asked to. Thank you for participating in the beta test."
184 ExecWait '"$1\Uninstall.exe" /S _?=$1'
185 Delete "$1\Uninstall.exe"
186 ${EndIf}
187
188 ; Replace cec-config-gui.exe
189 Delete "$INSTDIR\cec-config-gui.exe"
190 ${If} ${RunningX64}
191 Delete "$INSTDIR\x64\cec-config-gui.exe"
192 ${EndIf}
193 Delete "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration.lnk"
194 ${If} ${RunningX64}
195 Delete "$SMPROGRAMS\$StartMenuFolder\CEC Adapter Configuration (x64).lnk"
196 ${EndIf}
197
198 ; Copy to the installation directory
199 SetOutPath "$INSTDIR"
200 File "..\build\cec-tray.exe"
201 SetOutPath "$INSTDIR\x64"
202 File /nonfatal "..\build\x64\cec-tray.exe"
203
204 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
205 SetOutPath "$INSTDIR"
206
207 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
208 ${If} ${RunningX64}
209 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\libCEC Tray (x64).lnk" "$INSTDIR\x64\cec-tray.exe" \
210 "" "$INSTDIR\x64\cec-tray.exe" 0 SW_SHOWNORMAL \
211 "" "Start the libCEC Tray (x64)."
212 ${Else}
213 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\libCEC Tray.lnk" "$INSTDIR\cec-tray.exe" \
214 "" "$INSTDIR\cec-tray.exe" 0 SW_SHOWNORMAL \
215 "" "Start the libCEC Tray."
216 ${EndIf}
217 !insertmacro MUI_STARTMENU_WRITE_END
218
219 SectionEnd
220
221 !define REDISTRIBUTABLE_SECTIONNAME "Microsoft Visual C++ 2010 Redistributable Package"
222 Section "" SecVCRedist
223 SetShellVarContext current
224 SectionIn 1 3
225
226
227 ${If} $VSRedistInstalled != "Yes"
228 ; Download redistributable
229 SetOutPath "$TEMP\vc20XX"
230 ${If} ${RunningX64}
231 NSISdl::download http://packages.pulse-eight.net/windows/vcredist_x64.exe vcredist_x64.exe
232 ExecWait '"$TEMP\vc20XX\vcredist_x64.exe" /q' $VSRedistSetupError
233 ${Else}
234 NSISdl::download http://packages.pulse-eight.net/windows/vcredist_x86.exe vcredist_x86.exe
235 ExecWait '"$TEMP\vc20XX\vcredist_x86.exe" /q' $VSRedistSetupError
236 ${Endif}
237 RMDIR /r "$TEMP\vc20XX"
238 ${Endif}
239
240 SectionEnd
241
242 Function .onInit
243
244 ; SP0 x86
245 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196BB40D-1578-3D01-B289-BEFC77A11A1E}" "Version"
246 ${If} $1 != ""
247 StrCpy $VSRedistInstalled "Yes"
248 ${Endif}
249
250 ; SP0 x64
251 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}" "Version"
252 ${If} $1 != ""
253 StrCpy $VSRedistInstalled "Yes"
254 ${Endif}
255
256 ; SP0 ia64
257 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C1A35166-4301-38E9-BA67-02823AD72A1B}" "Version"
258 ${If} $1 != ""
259 StrCpy $VSRedistInstalled "Yes"
260 ${Endif}
261
262 ; SP1 x86
263 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}" "Version"
264 ${If} $1 != ""
265 StrCpy $VSRedistInstalled "Yes"
266 ${Endif}
267
268 ; SP1 x64
269 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1D8E6291-B0D5-35EC-8441-6616F567A0F7}" "Version"
270 ${If} $1 != ""
271 StrCpy $VSRedistInstalled "Yes"
272 ${Endif}
273
274 ; SP1 ia64
275 ReadRegDword $1 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}" "Version"
276 ${If} $1 != ""
277 StrCpy $VSRedistInstalled "Yes"
278 ${Endif}
279
280 ${If} $VSRedistInstalled == "Yes"
281 !insertMacro UnSelectSection ${SecVCRedist}
282 SectionSetText ${SecVCRedist} ""
283 ${Else}
284 !insertMacro SelectSection ${SecVCRedist}
285 SectionSetText ${SecVCRedist} "${REDISTRIBUTABLE_SECTIONNAME}"
286 ${Endif}
287
288 FunctionEnd
289
290 ;--------------------------------
291 ;Uninstaller Section
292
293 Section "Uninstall"
294
295 SetShellVarContext current
296
297 Delete "$INSTDIR\AUTHORS"
298 Delete "$INSTDIR\*.exe"
299 Delete "$INSTDIR\ChangeLog"
300 Delete "$INSTDIR\COPYING"
301 Delete "$INSTDIR\*.dll"
302 Delete "$INSTDIR\*.lib"
303 Delete "$INSTDIR\*.xml"
304 Delete "$INSTDIR\x64\*.dll"
305 Delete "$INSTDIR\x64\*.lib"
306 Delete "$INSTDIR\x64\*.exe"
307 Delete "$INSTDIR\x64\*.xml"
308 Delete "$INSTDIR\README"
309 Delete "$SYSDIR\libcec.dll"
310 ${If} ${RunningX64}
311 Delete "$SYSDIR\libcec.x64.dll"
312 ${EndIf}
313
314 ; Uninstall the driver
315 ReadRegStr $1 HKLM "Software\Pulse-Eight\USB-CEC Adapter driver" ""
316 ${If} $1 != ""
317 ExecWait '"$1\Uninstall.exe" /S _?=$1'
318 ${EndIf}
319
320 RMDir /r "$INSTDIR\include"
321 Delete "$INSTDIR\Uninstall.exe"
322 RMDir /r "$INSTDIR"
323 RMDir "$PROGRAMFILES\Pulse-Eight"
324
325 !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
326 Delete "$SMPROGRAMS\$StartMenuFolder\libCEC Tray.lnk"
327 ${If} ${RunningX64}
328 Delete "$SMPROGRAMS\$StartMenuFolder\libCEC Tray (x64).lnk"
329 ${EndIf}
330 Delete "$SMPROGRAMS\$StartMenuFolder\CEC Test client.lnk"
331 ${If} ${RunningX64}
332 Delete "$SMPROGRAMS\$StartMenuFolder\CEC Test client (x64).lnk"
333 ${EndIf}
334 Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Pulse-Eight USB-CEC Adapter software.lnk"
335 Delete "$SMPROGRAMS\$StartMenuFolder\Visit Pulse-Eight.url"
336 RMDir "$SMPROGRAMS\$StartMenuFolder"
337
338 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter software"
339 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Pulse-Eight USB-CEC Adapter driver"
340 DeleteRegKey /ifempty HKLM "Software\Pulse-Eight\USB-CEC Adapter software"
341 DeleteRegKey /ifempty HKLM "Software\Pulse-Eight"
342 SectionEnd