source: smplayer/trunk/setup/smplayer-installer.nsi@ 112

Last change on this file since 112 was 94, checked in by Silvan Scherrer, 15 years ago

smplayer: 0.6.9 part2

File size: 31.9 KB
Line 
1; Installer script for win32 SMPlayer
2; Written by redxii (redxii@users.sourceforge.net)
3
4;--------------------------------
5;Compressor
6
7 SetCompressor /SOLID lzma
8 SetCompressorDictSize 32
9
10;--------------------------------
11;Additional plugin folders
12
13 !addplugindir .
14
15;--------------------------------
16;Defines
17
18!ifdef VER_REVISION
19 !define SMPLAYER_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.${VER_REVISION}"
20 !define SMPLAYER_PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.${VER_REVISION}"
21!else ifndef VER_REVISION
22 !define SMPLAYER_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
23 !define SMPLAYER_PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}.0"
24!endif
25
26 !define SMPLAYER_APP_PATHS_KEY "Software\Microsoft\Windows\CurrentVersion\App Paths\smplayer.exe"
27 !define SMPLAYER_DEFPROGRAMS_KEY "Software\Clients\Media\SMPlayer\Capabilities"
28 !define SMPLAYER_REG_KEY "Software\SMPlayer"
29
30 !define SMPLAYER_UNINST_EXE "uninst.exe"
31 !define SMPLAYER_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\SMPlayer"
32
33 ;Fallback versions
34 ;These can be changed in the compiler, otherwise
35 ;if not defined the values shown here will be used.
36!ifndef DEFAULT_CODECS_VERSION
37 !define DEFAULT_CODECS_VERSION "windows-essential-20071007"
38!endif
39!ifndef WITH_MPLAYER
40!ifndef DEFAULT_MPLAYER_VERSION
41 !define DEFAULT_MPLAYER_VERSION "mplayer-svn-28311-2"
42!endif
43!endif
44
45;--------------------------------
46;General
47
48 ;Name and file
49 Name "SMPlayer ${SMPLAYER_VERSION}"
50 BrandingText "SMPlayer for Windows v${SMPLAYER_VERSION}"
51!ifdef WITH_MPLAYER
52 OutFile "smplayer-${SMPLAYER_VERSION}-win32.exe"
53!else ifndef WITH_MPLAYER
54 OutFile "smplayer-${SMPLAYER_VERSION}-win32-webdl.exe"
55!endif
56
57 ;Version tab properties
58 VIProductVersion "${SMPLAYER_PRODUCT_VERSION}"
59 VIAddVersionKey "ProductName" "SMPlayer"
60 VIAddVersionKey "ProductVersion" "${SMPLAYER_VERSION}"
61 VIAddVersionKey "FileVersion" "${SMPLAYER_VERSION}"
62 VIAddVersionKey "LegalCopyright" ""
63!ifdef WITH_MPLAYER
64 VIAddVersionKey "FileDescription" "SMPlayer Installer (w/ MPlayer)"
65!else ifndef WITH_MPLAYER
66 VIAddVersionKey "FileDescription" "SMPlayer Installer (MPlayer Web Downloader)"
67!endif
68
69 ;Default installation folder
70 InstallDir "$PROGRAMFILES\SMPlayer"
71
72 ;Get installation folder from registry if available
73 InstallDirRegKey HKLM "${SMPLAYER_REG_KEY}" "Path"
74
75 ;Vista+ XML manifest, does not affect older OSes
76 RequestExecutionLevel admin
77
78 ShowInstDetails show
79 ShowUnInstDetails show
80
81;--------------------------------
82;Variables
83
84 Var CODEC_VERSION
85 Var IS_ADMIN
86!ifndef WITH_MPLAYER
87 Var MPLAYER_VERSION
88!endif
89 Var PREVIOUS_VERSION
90 Var PREVIOUS_VERSION_STATE
91 Var REINSTALL_UNINSTALL
92 Var REINSTALL_UNINSTALLBUTTON
93 Var USERNAME
94
95;--------------------------------
96;Interface Settings
97
98 ; License page
99 !define MUI_LICENSEPAGE_RADIOBUTTONS
100
101 ; Components page
102 !define MUI_COMPONENTSPAGE_SMALLDESC
103
104 ; Finish page
105 !define MUI_FINISHPAGE_NOREBOOTSUPPORT
106 !define MUI_FINISHPAGE_RUN $INSTDIR\smplayer.exe
107 !define MUI_FINISHPAGE_RUN_NOTCHECKED
108 ;!define MUI_FINISHPAGE_RUN_PARAMETERS http://88.191.30.130:8050
109 !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\Release_notes.txt
110 !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
111 !define MUI_FINISHPAGE_SHOWREADME_TEXT "View Release Notes"
112
113 ; Misc
114 !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
115 !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
116 !define MUI_ABORTWARNING
117
118 ;Installer/Uninstaller icons
119 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
120 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
121
122 ;Language Selection Dialog Settings
123 !define MUI_LANGDLL_REGISTRY_ROOT HKLM
124 !define MUI_LANGDLL_REGISTRY_KEY "${SMPLAYER_UNINST_KEY}"
125 !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
126
127 ;Memento Settings
128 !define MEMENTO_REGISTRY_ROOT HKLM
129 !define MEMENTO_REGISTRY_KEY "${SMPLAYER_REG_KEY}"
130
131;--------------------------------
132;Include Modern UI and functions
133
134 !include MUI2.nsh
135 !include FileFunc.nsh
136 !include Memento.nsh
137 !include nsDialogs.nsh
138 !include Sections.nsh
139 !include WinVer.nsh
140 !include WordFunc.nsh
141
142;--------------------------------
143;Pages
144
145 ;Install pages
146 !insertmacro MUI_PAGE_WELCOME
147 !insertmacro MUI_PAGE_LICENSE "smplayer-build\Copying.txt"
148 Page custom PageReinstall PageLeaveReinstall
149 !define MUI_PAGE_CUSTOMFUNCTION_PRE PageComponentsPre
150 !insertmacro MUI_PAGE_COMPONENTS
151 !define MUI_PAGE_CUSTOMFUNCTION_PRE PageDirectoryPre
152 !insertmacro MUI_PAGE_DIRECTORY
153 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageInstfilesShow
154 !insertmacro MUI_PAGE_INSTFILES
155 !insertmacro MUI_PAGE_FINISH
156
157 ;Uninstall pages
158 !define MUI_PAGE_CUSTOMFUNCTION_PRE un.ConfirmPagePre
159 !insertmacro MUI_UNPAGE_CONFIRM
160 !insertmacro MUI_UNPAGE_INSTFILES
161 !define MUI_PAGE_CUSTOMFUNCTION_PRE un.FinishPagePre
162 !insertmacro MUI_UNPAGE_FINISH
163
164;--------------------------------
165;Languages
166
167 !insertmacro MUI_LANGUAGE "Basque"
168 !insertmacro MUI_LANGUAGE "Catalan"
169 !insertmacro MUI_LANGUAGE "Czech"
170 !insertmacro MUI_LANGUAGE "Danish"
171 !insertmacro MUI_LANGUAGE "Dutch"
172 !insertmacro MUI_LANGUAGE "English"
173 !insertmacro MUI_LANGUAGE "Finnish"
174 !insertmacro MUI_LANGUAGE "French"
175 !insertmacro MUI_LANGUAGE "German"
176 !insertmacro MUI_LANGUAGE "Hebrew"
177 !insertmacro MUI_LANGUAGE "Hungarian"
178 !insertmacro MUI_LANGUAGE "Italian"
179 !insertmacro MUI_LANGUAGE "Norwegian"
180 !insertmacro MUI_LANGUAGE "Polish"
181 !insertmacro MUI_LANGUAGE "Portuguese"
182 !insertmacro MUI_LANGUAGE "Russian"
183 !insertmacro MUI_LANGUAGE "Slovak"
184 !insertmacro MUI_LANGUAGE "Slovenian"
185 !insertmacro MUI_LANGUAGE "Spanish"
186
187; Custom translations for setup
188
189 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\basque.nsh"
190 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\catalan.nsh"
191 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\czech.nsh"
192 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\danish.nsh"
193 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\dutch.nsh"
194 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\english.nsh"
195 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\finnish.nsh"
196 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\french.nsh"
197 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\german.nsh"
198 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\hebrew.nsh"
199 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\hungarian.nsh"
200 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\italian.nsh"
201 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\norwegian.nsh"
202 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\polish.nsh"
203 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\portuguese.nsh"
204 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\russian.nsh"
205 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\slovak.nsh"
206 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\slovenian.nsh"
207 !insertmacro LANGFILE_INCLUDE "svn\smplayer\setup\translations\spanish.nsh"
208
209;--------------------------------
210;Reserve Files
211
212 ;These files should be inserted before other files in the data block
213 ;Keep these lines before any File command
214 ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
215
216 !insertmacro MUI_RESERVEFILE_LANGDLL
217 ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
218
219;--------------------------------
220;Installer Types
221
222 InstType "Typical"
223 InstType "Compact"
224 InstType "Full"
225
226;--------------------------------
227;Installer Sections
228
229;--------------------------------
230;Main SMPlayer files
231Section SMPlayer SMPlayer
232
233 SectionIn 1 2 3 RO
234 SetOutPath "$INSTDIR"
235 File "smplayer-build\*"
236
237 ;SMPlayer docs
238 SetOutPath "$INSTDIR\docs"
239 File /r "smplayer-build\docs\*.*"
240
241 ;Qt imageformats
242 SetOutPath "$INSTDIR\imageformats"
243 File /r "smplayer-build\imageformats\*.*"
244
245 ;SMPlayer key shortcuts
246 SetOutPath "$INSTDIR\shortcuts"
247 File /r "smplayer-build\shortcuts\*.*"
248
249 SetOutPath "$PLUGINSDIR"
250 File 7za.exe
251
252 ;Initialize to 0 if don't exist (based on error flag)
253 ClearErrors
254 ReadRegDWORD $R0 HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer
255 ${If} ${Errors}
256 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x0
257 ${EndIf}
258 ClearErrors
259 ReadRegDWORD $R0 HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs
260 ${If} ${Errors}
261 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x0
262 ${EndIf}
263
264SectionEnd
265
266;--------------------------------
267;Desktop shortcut
268${MementoSection} "Desktop Shortcut" DesktopIcon
269 SectionIn 1 3
270
271 SetOutPath "$INSTDIR"
272 SetShellVarContext all
273 CreateShortCut "$DESKTOP\SMPlayer.lnk" "$INSTDIR\smplayer.exe"
274
275${MementoSectionEnd}
276
277;--------------------------------
278;Start menu shortcuts
279${MementoSection} "Start Menu Shortcut" StartMenuIcon
280 SectionIn 1 3
281
282 SetOutPath "$INSTDIR"
283 SetShellVarContext all
284 CreateDirectory "$SMPROGRAMS\SMPlayer"
285 CreateShortCut "$SMPROGRAMS\SMPlayer\SMPlayer.lnk" "$INSTDIR\smplayer.exe"
286 WriteINIStr "$SMPROGRAMS\SMPlayer\SMPlayer on the Web.url" "InternetShortcut" "URL" "http://smplayer.sf.net"
287 CreateShortCut "$SMPROGRAMS\SMPlayer\Uninstall SMPlayer.lnk" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
288
289${MementoSectionEnd}
290
291;--------------------------------
292;MPlayer & MPlayer Codecs
293SectionGroup /e "MPlayer Components"
294
295!ifdef WITH_MPLAYER
296 Section MPlayer MPlayer
297 SectionIn 1 2 3 RO
298
299 SetOutPath "$INSTDIR\mplayer"
300 File /r "smplayer-build\mplayer\*.*"
301
302 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x1
303
304 SectionEnd
305!else ifndef WITH_MPLAYER
306 Section MPlayer MPlayer
307 SectionIn 1 2 3 RO
308 AddSize 16800
309
310 Call GetVerInfo
311
312 ;Read from version-info
313 ;If it was unable to download, set version to that defined in DEFAULT_MPLAYER_VERSION
314 ${If} ${FileExists} "$PLUGINSDIR\version-info"
315 ReadINIStr $MPLAYER_VERSION "$PLUGINSDIR\version-info" smplayer mplayer
316 ${Else}
317 StrCpy $MPLAYER_VERSION ${DEFAULT_MPLAYER_VERSION}
318 ${EndIf}
319
320 retry_mplayer:
321
322 DetailPrint $(MPLAYER_IS_DOWNLOADING)
323 inetc::get /timeout 30000 /resume "" /caption $(MPLAYER_IS_DOWNLOADING) /banner "Downloading $MPLAYER_VERSION.7z" \
324 "http://downloads.sourceforge.net/smplayer/$MPLAYER_VERSION.7z?big_mirror=0" \
325 "$PLUGINSDIR\$MPLAYER_VERSION.7z"
326 Pop $R0
327 StrCmp $R0 OK 0 check_mplayer
328
329 ;Extract
330 nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$MPLAYER_VERSION.7z" -y -o"$PLUGINSDIR"'
331
332 ;Copy
333 CreateDirectory "$INSTDIR\mplayer"
334 CopyFiles /SILENT "$PLUGINSDIR\$MPLAYER_VERSION\*" "$INSTDIR\mplayer"
335
336 check_mplayer:
337 ;This label does not necessarily mean there was a download error, so check first
338 ${If} $R0 != "OK"
339 DetailPrint $(MPLAYER_DL_FAILED)
340 ${EndIf}
341
342 IfFileExists "$INSTDIR\mplayer\mplayer.exe" mplayerInstSuccess mplayerInstFailed
343 mplayerInstSuccess:
344 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_MPlayer 0x1
345 Goto done
346 mplayerInstFailed:
347 MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(MPLAYER_DL_RETRY) /SD IDCANCEL IDRETRY retry_mplayer
348 Abort $(MPLAYER_INST_FAILED)
349
350 done:
351
352 SectionEnd
353!endif
354
355;--------------------------------
356;MPlayer codecs
357 Section /o "Binary Codecs" Codecs
358 SectionIn 3
359 AddSize 22300
360
361 Call GetVerInfo
362
363 ;Read from version-info
364 ;If it was unable to download, set version to that defined in DEFAULT_CODECS_VERSION
365 ${If} ${FileExists} "$PLUGINSDIR\version-info"
366 ReadINIStr $CODEC_VERSION "$PLUGINSDIR\version-info" smplayer mplayercodecs
367 ${Else}
368 StrCpy $CODEC_VERSION ${DEFAULT_CODECS_VERSION}
369 ${EndIf}
370
371 retry_codecs:
372
373 DetailPrint $(CODECS_IS_DOWNLOADING)
374 inetc::get /timeout 30000 /resume "" /caption $(CODECS_IS_DOWNLOADING) /banner "Downloading $CODEC_VERSION.zip" \
375 "http://www.mplayerhq.hu/MPlayer/releases/codecs/$CODEC_VERSION.zip" \
376 "$PLUGINSDIR\$CODEC_VERSION.zip"
377 Pop $R0
378 StrCmp $R0 OK 0 check_codecs
379
380 ;Extract
381 nsExec::Exec '"$PLUGINSDIR\7za.exe" x "$PLUGINSDIR\$CODEC_VERSION.zip" -y -o"$PLUGINSDIR"'
382
383 ;Copy
384 CreateDirectory "$INSTDIR\mplayer\codecs"
385 CopyFiles /SILENT "$PLUGINSDIR\$CODEC_VERSION\*" "$INSTDIR\mplayer\codecs"
386
387 check_codecs:
388 ;This label does not necessarily mean there was a download error, so check first
389 ${If} $R0 != "OK"
390 DetailPrint $(CODECS_DL_FAILED)
391 ${EndIf}
392
393 IfFileExists "$INSTDIR\mplayer\codecs\*.dll" codecsInstSuccess codecsInstFailed
394 codecsInstSuccess:
395 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x1
396 Goto done
397 codecsInstFailed:
398 MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(CODECS_DL_RETRY) /SD IDCANCEL IDRETRY retry_codecs
399 DetailPrint $(CODECS_INST_FAILED)
400 WriteRegDWORD HKLM "${SMPLAYER_REG_KEY}" Installed_Codecs 0x0
401 Sleep 5000
402
403 done:
404
405 SectionEnd
406
407SectionGroupEnd
408
409;--------------------------------
410;Icon themes
411${MementoSection} "Icon Themes" Themes
412
413 SectionIn 1 3
414 SetOutPath "$INSTDIR\themes"
415 File /r "smplayer-build\themes\*.*"
416
417${MementoSectionEnd}
418
419;--------------------------------
420;Translations
421${MementoSection} Translations Translations
422
423 SectionIn 1 3
424 SetOutPath "$INSTDIR\translations"
425 File /r "smplayer-build\translations\*.*"
426
427${MementoSectionEnd}
428
429;--------------------------------
430;Install/Uninstall information
431Section -Post
432
433 ;Uninstall file
434 WriteUninstaller "$INSTDIR\${SMPLAYER_UNINST_EXE}"
435
436 ;Store installed path & version
437 WriteRegStr HKLM "${SMPLAYER_REG_KEY}" "Path" "$INSTDIR"
438 WriteRegStr HKLM "${SMPLAYER_REG_KEY}" "Version" "${SMPLAYER_VERSION}"
439
440 ;Allows user to use 'start smplayer.exe'
441 WriteRegStr HKLM "${SMPLAYER_APP_PATHS_KEY}" "" "$INSTDIR\smplayer.exe"
442
443 ;Registry entries needed for Default Programs in Vista & later
444 ${If} ${AtLeastWinVista}
445 Call DefaultProgramsReg
446 ${EndIf}
447
448 ;Registry Uninstall information
449 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayName" "$(^Name)"
450 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayIcon" "$INSTDIR\smplayer.exe"
451 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "DisplayVersion" "${SMPLAYER_VERSION}"
452 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "HelpLink" "http://smplayer.berlios.de/forum"
453 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "Publisher" "RVM"
454 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString" "$INSTDIR\${SMPLAYER_UNINST_EXE}"
455 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLInfoAbout" "http://smplayer.sf.net"
456 WriteRegStr HKLM "${SMPLAYER_UNINST_KEY}" "URLUpdateInfo" "http://smplayer.sf.net"
457 WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoModify" "1"
458 WriteRegDWORD HKLM "${SMPLAYER_UNINST_KEY}" "NoRepair" "1"
459
460SectionEnd
461
462${MementoSectionDone}
463
464;--------------------------------
465;Section descriptions
466!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
467 !insertmacro MUI_DESCRIPTION_TEXT ${SMPlayer} "SMPlayer, shared libraries, and documentation."
468 !insertmacro MUI_DESCRIPTION_TEXT ${DesktopIcon} "Creates a shortcut on the desktop."
469 !insertmacro MUI_DESCRIPTION_TEXT ${StartMenuIcon} "Creates start menu shortcuts."
470!ifdef WITH_MPLAYER
471 !insertmacro MUI_DESCRIPTION_TEXT ${MPlayer} "The engine behind SMPlayer, required for playback."
472!else ifndef WITH_MPLAYER
473 !insertmacro MUI_DESCRIPTION_TEXT ${MPlayer} "Downloads/installs MPlayer; requires an active internet connection. Required for playback."
474!endif
475 !insertmacro MUI_DESCRIPTION_TEXT ${Codecs} "Downloads/installs optional binary codecs for MPlayer; requires an active internet connection."
476 !insertmacro MUI_DESCRIPTION_TEXT ${Themes} "Additional icon themes for SMPlayer."
477 !insertmacro MUI_DESCRIPTION_TEXT ${Translations} "Translations for the SMPlayer interface && help into 30+ additional languages."
478!insertmacro MUI_FUNCTION_DESCRIPTION_END
479
480;--------------------------------
481;Installer functions
482
483Function .onInit
484
485 /* Check if setup is already running */
486 System::Call 'kernel32::CreateMutexW(i 0, i 0, t "MPlayerSMPlayer") i .r1 ?e'
487 Pop $R0
488
489 StrCmp $R0 0 +3
490 MessageBox MB_OK|MB_ICONEXCLAMATION $(SMPLAYER_INSTALLER_IS_RUNNING)
491 Abort
492
493 /* Privileges Check */
494 Call CheckUserRights
495
496 ;Check for admin (mimic old Inno Setup behavior)
497 ${If} $IS_ADMIN == 0
498 MessageBox MB_OK|MB_ICONSTOP $(SMPLAYER_INSTALLER_NO_ADMIN)
499 Abort
500 ${EndIf}
501
502 /* Ask for setup language */
503 !insertmacro MUI_LANGDLL_DISPLAY
504
505 Call CheckPreviousVersion
506
507 Call LoadPreviousSettings
508
509FunctionEnd
510
511Function .onInstSuccess
512
513 ${MementoSectionSave}
514
515FunctionEnd
516
517Function .onInstFailed
518
519 Call UninstallSMPlayer
520
521 Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
522 RMDir "$INSTDIR"
523
524FunctionEnd
525
526Function .onSelChange
527
528 SectionGetFlags ${Codecs} $R0
529 ${If} $R0 != $R1
530 StrCpy $R1 $R0
531 IntOp $R0 $R0 & ${SF_SELECTED}
532 ${If} $R0 == ${SF_SELECTED}
533 MessageBox MB_OK $(MPLAYER_CODEC_INFORMATION)
534 ${EndIf}
535 ${EndIf}
536
537FunctionEnd
538
539Function CheckPreviousVersion
540
541 ReadRegStr $PREVIOUS_VERSION HKLM "${SMPLAYER_REG_KEY}" "Version"
542
543 ${VersionCompare} $PREVIOUS_VERSION ${SMPLAYER_VERSION} $PREVIOUS_VERSION_STATE
544 ;$PREVIOUS_VERSION_STATE=0 This installer is the same version as the installed copy
545 ;$PREVIOUS_VERSION_STATE=1 A newer version than this installer is already installed
546 ;$PREVIOUS_VERSION_STATE=2 An older version than this installer is already installed
547
548FunctionEnd
549
550Function CheckUserRights
551
552 ClearErrors
553 UserInfo::GetName
554 ${If} ${Errors}
555 StrCpy $IS_ADMIN 1
556 Return
557 ${EndIf}
558
559 Pop $USERNAME
560 UserInfo::GetAccountType
561 Pop $R0
562 ${Switch} $R0
563 ${Case} "Admin"
564 ${Case} "Power"
565 StrCpy $IS_ADMIN 1
566 ${Break}
567 ${Default}
568 StrCpy $IS_ADMIN 0
569 ${Break}
570 ${EndSwitch}
571
572FunctionEnd
573
574Function DefaultProgramsReg
575
576 ;HKEY_CLASSES_ROOT ProgId registration
577 WriteRegStr HKCR "MPlayerFileVideo\DefaultIcon" "" '"$INSTDIR\smplayer.exe",1'
578 WriteRegStr HKCR "MPlayerFileVideo\shell\enqueue" "" "Enqueue in SMPlayer"
579 WriteRegStr HKCR "MPlayerFileVideo\shell\enqueue\command" "" '"$INSTDIR\smplayer.exe" -add-to-playlist "%1"'
580 WriteRegStr HKCR "MPlayerFileVideo\shell\open" "FriendlyAppName" "SMPlayer Media Player"
581 WriteRegStr HKCR "MPlayerFileVideo\shell\open\command" "" '"$INSTDIR\smplayer.exe" "%1"'
582
583 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}" "ApplicationDescription" $(APPLICATION_DESCRIPTION)
584 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}" "ApplicationName" "SMPlayer"
585 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".3gp" "MPlayerFileVideo"
586 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ac3" "MPlayerFileVideo"
587 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ape" "MPlayerFileVideo"
588 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".asf" "MPlayerFileVideo"
589 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".avi" "MPlayerFileVideo"
590 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".bin" "MPlayerFileVideo"
591 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dat" "MPlayerFileVideo"
592 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".divx" "MPlayerFileVideo"
593 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dv" "MPlayerFileVideo"
594 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".dvr-ms" "MPlayerFileVideo"
595 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".flac" "MPlayerFileVideo"
596 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".flv" "MPlayerFileVideo"
597 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".iso" "MPlayerFileVideo"
598 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m1v" "MPlayerFileVideo"
599 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2t" "MPlayerFileVideo"
600 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2ts" "MPlayerFileVideo"
601 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m2v" "MPlayerFileVideo"
602 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m3u" "MPlayerFileVideo"
603 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m3u8" "MPlayerFileVideo"
604 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".m4v" "MPlayerFileVideo"
605 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mkv" "MPlayerFileVideo"
606 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mov" "MPlayerFileVideo"
607 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mp3" "MPlayerFileVideo"
608 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mp4" "MPlayerFileVideo"
609 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpeg" "MPlayerFileVideo"
610 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpg" "MPlayerFileVideo"
611 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mpv" "MPlayerFileVideo"
612 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".mqv" "MPlayerFileVideo"
613 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".nsv" "MPlayerFileVideo"
614 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogg" "MPlayerFileVideo"
615 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogm" "MPlayerFileVideo"
616 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ogv" "MPlayerFileVideo"
617 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".pls" "MPlayerFileVideo"
618 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ra" "MPlayerFileVideo"
619 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ram" "MPlayerFileVideo"
620 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rec" "MPlayerFileVideo"
621 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rm" "MPlayerFileVideo"
622 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".rmvb" "MPlayerFileVideo"
623 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".swf" "MPlayerFileVideo"
624 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".ts" "MPlayerFileVideo"
625 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vcd" "MPlayerFileVideo"
626 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vfw" "MPlayerFileVideo"
627 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".vob" "MPlayerFileVideo"
628 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wav" "MPlayerFileVideo"
629 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wma" "MPlayerFileVideo"
630 WriteRegStr HKLM "${SMPLAYER_DEFPROGRAMS_KEY}\FileAssociations" ".wmv" "MPlayerFileVideo"
631 WriteRegStr HKLM "Software\RegisteredApplications" "SMPlayer" "${SMPLAYER_DEFPROGRAMS_KEY}"
632
633FunctionEnd
634
635Function GetVerInfo
636
637 IfFileExists "$PLUGINSDIR\version-info" end_dl_ver_info 0
638 DetailPrint $(VERINFO_IS_DOWNLOADING)
639 inetc::get /timeout 30000 /resume "" /silent "http://smplayer.sourceforge.net/mplayer-version-info" \
640 "$PLUGINSDIR\version-info"
641 Pop $R0
642 StrCmp $R0 OK +2
643 DetailPrint $(VERINFO_DL_FAILED)
644
645 end_dl_ver_info:
646
647FunctionEnd
648
649Function LoadPreviousSettings
650
651 ;MPlayer codecs section doesn't use Memento so we need to restore it manually
652 ReadRegStr $R0 HKLM "${SMPLAYER_REG_KEY}" "Installed_Codecs"
653 ${If} $R0 == 1
654 !insertmacro SelectSection ${Codecs}
655 ${EndIf}
656
657 ${MementoSectionRestore}
658
659FunctionEnd
660
661Function PageReinstall
662
663 ${If} $PREVIOUS_VERSION == ""
664 Abort
665 ${EndIf}
666
667 nsDialogs::Create /NOUNLOAD 1018
668 Pop $0
669
670 ${If} $PREVIOUS_VERSION_STATE == 2
671
672 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install SMPlayer."
673 nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "An older version of SMPlayer is installed on your system. Select the operation you want to perform and click Next to continue."
674 Pop $R0
675 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Upgrade SMPlayer using previous settings (recommended)"
676 Pop $REINSTALL_UNINSTALLBUTTON
677 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Change settings (advanced)"
678 Pop $R0
679
680 ${If} $REINSTALL_UNINSTALL == ""
681 StrCpy $REINSTALL_UNINSTALL 1
682 ${EndIf}
683
684 ${ElseIf} $PREVIOUS_VERSION_STATE == 1
685
686 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install SMPlayer."
687 nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "A newer version of SMPlayer is already installed! It is not recommended that you downgrade to an older version. Select the operation you want to perform and click Next to continue."
688 Pop $R0
689 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Downgrade SMPlayer using previous settings (recommended)"
690 Pop $REINSTALL_UNINSTALLBUTTON
691 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Change settings (advanced)"
692 Pop $R0
693
694 ${If} $REINSTALL_UNINSTALL == ""
695 StrCpy $REINSTALL_UNINSTALL 1
696 ${EndIf}
697
698 ${ElseIf} $PREVIOUS_VERSION_STATE == 0
699
700 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
701 nsDialogs::CreateItem /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 0 0 100% 40 "SMPlayer ${SMPLAYER_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
702 Pop $R0
703 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_VCENTER}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${WS_GROUP}|${WS_TABSTOP} 0 10 55 100% 30 "Add/Remove/Reinstall components"
704 Pop $R0
705 nsDialogs::CreateItem /NOUNLOAD BUTTON ${BS_AUTORADIOBUTTON}|${BS_TOP}|${BS_MULTILINE}|${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 10 85 100% 50 "Uninstall SMPlayer"
706 Pop $REINSTALL_UNINSTALLBUTTON
707
708 ${If} $REINSTALL_UNINSTALL == ""
709 StrCpy $REINSTALL_UNINSTALL 2
710 ${EndIf}
711
712 ${Else}
713
714 MessageBox MB_ICONSTOP "Unknown value of PREVIOUS_VERSION_STATE, aborting" /SD IDOK
715 Abort
716
717 ${EndIf}
718
719 ${If} $REINSTALL_UNINSTALL == 1
720 SendMessage $REINSTALL_UNINSTALLBUTTON ${BM_SETCHECK} 1 0
721 ${Else}
722 SendMessage $R0 ${BM_SETCHECK} 1 0
723 ${EndIf}
724
725 nsDialogs::Show
726
727FunctionEnd
728
729Function PageComponentsPre
730
731 ${If} $REINSTALL_UNINSTALL == 1
732 Abort
733 ${EndIf}
734
735FunctionEnd
736
737Function PageDirectoryPre
738
739 ${If} $REINSTALL_UNINSTALL == 1
740 Abort
741 ${EndIf}
742
743FunctionEnd
744
745Function PageInstfilesShow
746
747 ${If} $REINSTALL_UNINSTALL != ""
748 Call RunUninstaller
749 BringToFront
750 ${EndIf}
751
752FunctionEnd
753
754Function PageLeaveReinstall
755
756 SendMessage $REINSTALL_UNINSTALLBUTTON ${BM_GETCHECK} 0 0 $R0
757 ${If} $R0 == 1
758 ; Option to uninstall old version selected
759 StrCpy $REINSTALL_UNINSTALL 1
760 ${Else}
761 ; Custom up/downgrade or add/remove/reinstall
762 StrCpy $REINSTALL_UNINSTALL 2
763 ${EndIf}
764
765 ${If} $REINSTALL_UNINSTALL == 1
766 ${If} $PREVIOUS_VERSION_STATE == 0
767 Call RunUninstaller
768 Quit
769 ${Else}
770 ${EndIf}
771
772 ${EndIf}
773
774FunctionEnd
775
776Function RunUninstaller
777
778 ReadRegStr $R1 HKLM "${SMPLAYER_UNINST_KEY}" "UninstallString"
779
780 ${If} $R1 == ""
781 Return
782 ${EndIf}
783
784 ;Run uninstaller
785 HideWindow
786
787 ClearErrors
788
789 ${If} $PREVIOUS_VERSION_STATE == 0
790 ${AndIf} $REINSTALL_UNINSTALL == 1
791 ExecWait '$R1 _?=$INSTDIR'
792 ${Else}
793 ExecWait '$R1 /frominstall _?=$INSTDIR'
794 ${EndIf}
795
796 IfErrors no_remove_uninstaller
797
798 IfFileExists "$INSTDIR\${SMPLAYER_UNINST_EXE}" 0 no_remove_uninstaller
799
800 Delete "$R1"
801 RMDir $INSTDIR
802
803 no_remove_uninstaller:
804
805FunctionEnd
806
807;--------------------------------
808;Shared functions
809
810!macro UninstallSMPlayerMacro un
811Function ${un}UninstallSMPlayer
812
813 ;Delete desktop and start menu shortcuts
814 SetDetailsPrint textonly
815 DetailPrint "Deleting Shortcuts..."
816 SetDetailsPrint listonly
817
818 SetShellVarContext all
819 Delete "$DESKTOP\SMPlayer.lnk"
820 Delete "$SMPROGRAMS\SMPlayer\SMPlayer.lnk"
821 Delete "$SMPROGRAMS\SMPlayer\SMPlayer on the Web.url"
822 Delete "$SMPROGRAMS\SMPlayer\Uninstall SMPlayer.lnk"
823 RMDir "$SMPROGRAMS\SMPlayer"
824
825 ;Delete directories recursively except for main directory
826 ;Do not recursively delete $INSTDIR
827 SetDetailsPrint textonly
828 DetailPrint "Deleting Files..."
829 SetDetailsPrint listonly
830
831 RMDir /r "$INSTDIR\docs"
832 RMDir /r "$INSTDIR\imageformats"
833 RMDir /r "$INSTDIR\mplayer"
834 RMDir /r "$INSTDIR\shortcuts"
835 RMDir /r "$INSTDIR\themes"
836 RMDir /r "$INSTDIR\translations"
837 Delete "$INSTDIR\*.txt"
838 Delete "$INSTDIR\mingwm10.dll"
839 Delete "$INSTDIR\Q*.dll"
840 Delete "$INSTDIR\smplayer.exe"
841 Delete "$INSTDIR\dxlist.exe"
842
843 ;Delete registry keys
844 SetDetailsPrint textonly
845 DetailPrint "Deleting Registry Keys..."
846 SetDetailsPrint listonly
847
848 DeleteRegKey HKLM "${SMPLAYER_REG_KEY}"
849 DeleteRegKey HKLM "${SMPLAYER_APP_PATHS_KEY}"
850 DeleteRegKey HKLM "${SMPLAYER_UNINST_KEY}"
851 DeleteRegKey HKCR "MPlayerFileVideo"
852 DeleteRegKey HKLM "Software\Clients\Media\SMPlayer"
853 DeleteRegValue HKLM "Software\RegisteredApplications" "SMPlayer"
854
855 SetDetailsPrint both
856
857FunctionEnd
858!macroend
859!insertmacro UninstallSMPlayerMacro ""
860!insertmacro UninstallSMPlayerMacro "un."
861
862/*************************************** Uninstaller *******************************************/
863
864Section Uninstall
865
866 ;Make sure SMPlayer is installed from where the uninstaller is being executed.
867 IfFileExists $INSTDIR\smplayer.exe smplayer_installed
868 MessageBox MB_YESNO $(SMPLAYER_NOT_INSTALLED) /SD IDNO IDYES smplayer_installed
869 Abort $(UNINSTALL_ABORTED)
870
871 smplayer_installed:
872
873 SetDetailsPrint textonly
874 DetailPrint "Restoring file associations..."
875 SetDetailsPrint listonly
876
877 ;Don't restore file associations if reinstalling
878 ${un.GetParameters} $R0
879 ${un.GetOptions} $R0 "/frominstall" $R1
880
881 IfErrors 0 +2
882 ExecWait '"$INSTDIR\smplayer.exe" -uninstall'
883
884 Call un.UninstallSMPlayer
885
886 Delete "$INSTDIR\${SMPLAYER_UNINST_EXE}"
887 RMDir "$INSTDIR"
888
889SectionEnd
890
891;--------------------------------
892;Required functions
893
894!insertmacro un.GetParameters
895!insertmacro un.GetOptions
896
897;--------------------------------
898;Uninstaller functions
899
900Function un.onInit
901
902 Call un.CheckUserRights
903
904 ;Check for admin (mimic old Inno Setup behavior)
905 ${If} $IS_ADMIN == 0
906 MessageBox MB_OK|MB_ICONSTOP $(UNINSTALL_NO_ADMIN)
907 Abort
908 ${EndIf}
909
910 ;Get the stored language preference
911 !insertmacro MUI_UNGETLANGUAGE
912
913FunctionEnd
914
915Function un.CheckUserRights
916
917 ClearErrors
918 UserInfo::GetName
919 ${If} ${Errors}
920 StrCpy $IS_ADMIN 1
921 Return
922 ${EndIf}
923
924 Pop $USERNAME
925 UserInfo::GetAccountType
926 Pop $R0
927 ${Switch} $R0
928 ${Case} "Admin"
929 ${Case} "Power"
930 StrCpy $IS_ADMIN 1
931 ${Break}
932 ${Default}
933 StrCpy $IS_ADMIN 0
934 ${Break}
935 ${EndSwitch}
936
937FunctionEnd
938
939Function un.ConfirmPagePre
940
941 ${un.GetParameters} $R0
942
943 ${un.GetOptions} $R0 "/frominstall" $R1
944 ${Unless} ${Errors}
945 Abort
946 ${EndUnless}
947
948FunctionEnd
949
950Function un.FinishPagePre
951
952 ${un.GetParameters} $R0
953
954 ${un.GetOptions} $R0 "/frominstall" $R1
955 ${Unless} ${Errors}
956 Abort
957 ${EndUnless}
958
959FunctionEnd
Note: See TracBrowser for help on using the repository browser.