]> git.sesse.net Git - vlc/blob - vlc.win32.nsi.in
The Debian packaging data have been moved to svn.v.o/pkg-multimedia
[vlc] / vlc.win32.nsi.in
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
2 ; NSIS installer script for vlc ;\r
3 ; (http://nsis.sourceforge.net) ;\r
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
5 \r
6 !define PRODUCT_NAME "VLC media player"\r
7 !define PRODUCT_VERSION '${VERSION}'\r
8 !define PRODUCT_GROUP "VideoLAN"\r
9 !define PRODUCT_PUBLISHER "VideoLAN Team"\r
10 !define PRODUCT_WEB_SITE "http://www.videolan.org"\r
11 !define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"\r
12 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
13 !define PRODUCT_UNINST_ROOT_KEY "HKLM"\r
14 !define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}"\r
15 \r
16 @FILE_LIBVLC_DLL@\r
17 \r
18 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
19 ; General configuration ;\r
20 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
21 \r
22 Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
23 OutFile ..\vlc-${VERSION}-win32.exe\r
24 InstallDir "$PROGRAMFILES\VideoLAN\VLC"\r
25 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""\r
26 !ifdef NSIS_LZMA_COMPRESS_WHOLE\r
27 SetCompressor lzma\r
28 !else\r
29 SetCompressor /SOLID lzma\r
30 !endif\r
31 ;ShowInstDetails show\r
32 ;ShowUnInstDetails show\r
33 SetOverwrite ifnewer\r
34 CRCCheck on\r
35 \r
36 InstType "Normal"\r
37 InstType "Full"\r
38 \r
39 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
40 ; NSIS Modern User Interface configuration ;\r
41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
42 \r
43 ; MUI 1.67 compatible ------\r
44   !include "MUI.nsh"\r
45 \r
46 ; MUI Settings\r
47   !define MUI_ABORTWARNING\r
48   !define MUI_ICON "vlc48x48.ico"\r
49   !define MUI_UNICON "vlc48x48.ico"\r
50   !define MUI_COMPONENTSPAGE_SMALLDESC\r
51 \r
52 ; Installer pages\r
53   ; Welcome page\r
54     !define MUI_WELCOMEPAGE_TITLE_3LINES\r
55     !insertmacro MUI_PAGE_WELCOME\r
56   ; License page\r
57     !insertmacro MUI_PAGE_LICENSE "COPYING.txt"\r
58   ; Components page\r
59     !insertmacro MUI_PAGE_COMPONENTS\r
60   ; Directory page\r
61     !insertmacro MUI_PAGE_DIRECTORY\r
62   ; Instfiles page\r
63     !insertmacro MUI_PAGE_INSTFILES\r
64   ; Finish page\r
65     !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"\r
66     !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"\r
67     !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED\r
68     !define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website"\r
69     !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"\r
70     !define MUI_FINISHPAGE_NOREBOOTSUPPORT\r
71     !insertmacro MUI_PAGE_FINISH\r
72 \r
73 ; Uninstaller pages\r
74     !insertmacro MUI_UNPAGE_CONFIRM\r
75     !insertmacro MUI_UNPAGE_COMPONENTS\r
76     !insertmacro MUI_UNPAGE_INSTFILES\r
77     !insertmacro MUI_UNPAGE_FINISH\r
78 \r
79 ; Language files\r
80   !insertmacro MUI_LANGUAGE "English" # first language is the default language\r
81   !insertmacro MUI_LANGUAGE "French"\r
82   !insertmacro MUI_LANGUAGE "German"\r
83   !insertmacro MUI_LANGUAGE "Spanish"\r
84   !insertmacro MUI_LANGUAGE "SimpChinese"\r
85   !insertmacro MUI_LANGUAGE "TradChinese"\r
86   !insertmacro MUI_LANGUAGE "Japanese"\r
87   !insertmacro MUI_LANGUAGE "Korean"\r
88   !insertmacro MUI_LANGUAGE "Italian"\r
89   !insertmacro MUI_LANGUAGE "Dutch"\r
90   !insertmacro MUI_LANGUAGE "Danish"\r
91   !insertmacro MUI_LANGUAGE "Swedish"\r
92   !insertmacro MUI_LANGUAGE "Norwegian"\r
93   !insertmacro MUI_LANGUAGE "Finnish"\r
94   !insertmacro MUI_LANGUAGE "Greek"\r
95   !insertmacro MUI_LANGUAGE "Russian"\r
96   !insertmacro MUI_LANGUAGE "Portuguese"\r
97   !insertmacro MUI_LANGUAGE "Arabic"\r
98 \r
99 !insertmacro MUI_RESERVEFILE_LANGDLL\r
100 \r
101 ; Reserve files\r
102   !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
103 \r
104 ; MUI end ------\r
105 \r
106 ;;;;;;;;;;;;;;;;;;;\r
107 ; Extension lists ;\r
108 ;;;;;;;;;;;;;;;;;;;\r
109 \r
110 !macro MacroAudioExtensions _action\r
111   !insertmacro ${_action} ".a52"\r
112   !insertmacro ${_action} ".aac"\r
113   !insertmacro ${_action} ".ac3"\r
114   !insertmacro ${_action} ".dts"\r
115   !insertmacro ${_action} ".flac"\r
116   !insertmacro ${_action} ".mka"\r
117   !insertmacro ${_action} ".mp1"\r
118   !insertmacro ${_action} ".mp2"\r
119   !insertmacro ${_action} ".mp3"\r
120   !insertmacro ${_action} ".ogg"\r
121   !insertmacro ${_action} ".spx"\r
122   !insertmacro ${_action} ".wav"\r
123   !insertmacro ${_action} ".wma"\r
124 !macroend\r
125 \r
126 !macro MacroVideoExtensions _action\r
127   !insertmacro ${_action} ".asf"\r
128   !insertmacro ${_action} ".avi"\r
129   !insertmacro ${_action} ".divx"\r
130   !insertmacro ${_action} ".dv"\r
131   !insertmacro ${_action} ".m1v"\r
132   !insertmacro ${_action} ".m2v"\r
133   !insertmacro ${_action} ".mkv"\r
134   !insertmacro ${_action} ".mov"\r
135   !insertmacro ${_action} ".mp4"\r
136   !insertmacro ${_action} ".mpeg"\r
137   !insertmacro ${_action} ".mpeg1"\r
138   !insertmacro ${_action} ".mpeg2"\r
139   !insertmacro ${_action} ".mpeg4"\r
140   !insertmacro ${_action} ".mpg"\r
141   !insertmacro ${_action} ".ps"\r
142   !insertmacro ${_action} ".ts"\r
143   !insertmacro ${_action} ".ogm"\r
144   !insertmacro ${_action} ".vob"\r
145   !insertmacro ${_action} ".wmv"\r
146 !macroend\r
147 \r
148 !macro MacroOtherExtensions _action\r
149   !insertmacro ${_action} ".asx"\r
150   !insertmacro ${_action} ".bin"\r
151   !insertmacro ${_action} ".cue"\r
152   !insertmacro ${_action} ".m3u"\r
153   !insertmacro ${_action} ".pls"\r
154   !insertmacro ${_action} ".vlc"\r
155 !macroend\r
156 \r
157 !macro MacroAllExtensions _action\r
158   !insertmacro MacroAudioExtensions ${_action}\r
159   !insertmacro MacroVideoExtensions ${_action}\r
160   !insertmacro MacroOtherExtensions ${_action}\r
161 !macroend\r
162 \r
163 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
164 ; File type associations ;\r
165 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
166 \r
167 Function RegisterExtension\r
168   ; back up old value for extension $R0 (eg. ".opt")\r
169   ReadRegStr $1 HKCR "$R0" ""\r
170   StrCmp $1 "" NoBackup\r
171     StrCmp $1 "VLC$R0" "NoBackup"\r
172     WriteRegStr HKCR "$R0" "VLC.backup" $1\r
173 NoBackup:\r
174   WriteRegStr HKCR "$R0" "" "VLC$R0"\r
175   ReadRegStr $0 HKCR "VLC$R0" ""\r
176   WriteRegStr HKCR "VLC$R0" "" "VLC media file"\r
177   WriteRegStr HKCR "VLC$R0\shell" "" "Play"\r
178   WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --one-instance-when-started-from-file "%1"'\r
179   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'\r
180 FunctionEnd\r
181 \r
182 Function un.RegisterExtension\r
183   ;start of restore script\r
184   ReadRegStr $1 HKCR "$R0" ""\r
185   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it\r
186     ReadRegStr $1 HKCR "$R0" "VLC.backup"\r
187     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key\r
188       DeleteRegKey HKCR "$R0"\r
189     Goto NoOwn\r
190 Restore:\r
191       WriteRegStr HKCR "$R0" "" $1\r
192       DeleteRegValue HKCR "$R0" "VLC.backup"\r
193 NoOwn:\r
194     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings\r
195 FunctionEnd\r
196 \r
197 !macro RegisterExtensionSection EXT\r
198   Section /o ${EXT}\r
199     SectionIn 2 3\r
200     Push $R0\r
201     StrCpy $R0 ${EXT}\r
202     Call RegisterExtension\r
203     Pop $R0\r
204   SectionEnd\r
205 !macroend\r
206 \r
207 !macro UnRegisterExtensionSection EXT\r
208   Push $R0\r
209   StrCpy $R0 ${EXT}\r
210   Call un.RegisterExtension\r
211   Pop $R0\r
212 !macroend\r
213 \r
214 !macro WriteRegStrSupportedTypes EXT\r
215   WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""\r
216 !macroend\r
217 \r
218 ;;;;;;;;;;;;;;;;;;;;;;;;\r
219 ; Context menu entries ;\r
220 ;;;;;;;;;;;;;;;;;;;;;;;;\r
221 \r
222 !macro AddContextMenu EXT\r
223   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player"\r
224   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --one-instance-when-started-from-file --no-playlist-enqueue "%1"'\r
225 \r
226   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist"\r
227   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --one-instance-when-started-from-file --playlist-enqueue "%1"'\r
228 !macroend\r
229 \r
230 !macro DeleteContextMenu EXT\r
231   DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC\r
232   DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC\r
233 !macroend\r
234 \r
235 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
236 ; Delete prefs and cache ;\r
237 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
238 \r
239 !macro delprefs\r
240   SectionIn 2 3\r
241   StrCpy $0 0\r
242   !define Index 'Line${__LINE__}'\r
243   "${Index}-Loop:"\r
244   ; FIXME\r
245   ; this will loop through all the logged users and "virtual" windows users\r
246   ; (it looks like users are only present in HKEY_USERS when they are logged in)\r
247     ClearErrors\r
248     EnumRegKey $1 HKU "" $0\r
249     StrCmp $1 "" "${Index}-End"\r
250     IntOp $0 $0 + 1\r
251     ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData\r
252     StrCmp $2 "" "${Index}-Loop"\r
253     RMDir /r "$2\vlc"\r
254     Goto "${Index}-Loop"\r
255   "${Index}-End:"\r
256   !undef Index\r
257 !macroend\r
258 \r
259 Var UninstallLog\r
260 \r
261 !macro OpenUninstallLog\r
262   FileOpen $UninstallLog "$INSTDIR\uninstall.log" w\r
263   FileSeek $UninstallLog 0 END\r
264 !macroend\r
265 \r
266 !macro CloseUninstallLog\r
267   FileClose $UninstallLog\r
268   SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN\r
269 !macroend\r
270 \r
271 !macro InstallFile FILEREGEX\r
272   File "${FILEREGEX}"\r
273   !define Index 'Line${__LINE__}'\r
274   FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"\r
275   StrCmp $0 "" "${Index}-End"\r
276   "${Index}-Loop:"\r
277     StrCmp $1 "" "${Index}-End"\r
278     FileWrite $UninstallLog "$1$\r$\n"\r
279     FindNext $0 $1\r
280     Goto "${Index}-Loop"\r
281   "${Index}-End:"\r
282   !undef Index\r
283 !macroend\r
284 \r
285 !macro InstallFolder FOLDER\r
286   File /r "${FOLDER}"\r
287   Push "${FOLDER}"\r
288   Call InstallFolderInternal\r
289 !macroend\r
290 \r
291 Function InstallFolderInternal\r
292   Pop $9\r
293   !define Index 'Line${__LINE__}'\r
294   FindFirst $0 $1 "$INSTDIR\$9\*"\r
295   StrCmp $0 "" "${Index}-End"\r
296   "${Index}-Loop:"\r
297     StrCmp $1 "" "${Index}-End"\r
298     StrCmp $1 "." "${Index}-Next"\r
299     StrCmp $1 ".." "${Index}-Next"\r
300     IfFileExists "$9\$1\*" 0 "${Index}-Write"\r
301       Push $0\r
302       Push $9\r
303       Push "$9\$1"\r
304       Call InstallFolderInternal\r
305       Pop $9\r
306       Pop $0\r
307       Goto "${Index}-Next"\r
308     "${Index}-Write:"\r
309     FileWrite $UninstallLog "$9\$1$\r$\n"\r
310     "${Index}-Next:"\r
311     FindNext $0 $1\r
312     Goto "${Index}-Loop"\r
313   "${Index}-End:"\r
314   !undef Index\r
315 FunctionEnd\r
316 \r
317 \r
318 ;;;;;;;;;;;;;;;;;;;;;;\r
319 ; Installer sections ;\r
320 ;;;;;;;;;;;;;;;;;;;;;;\r
321 \r
322 Section "Media player (required)" SEC01\r
323   SectionIn 1 2 3 RO\r
324   SetShellVarContext all\r
325   SetOutPath "$INSTDIR"\r
326 \r
327   !insertmacro OpenUninstallLog\r
328 \r
329   !insertmacro InstallFile vlc.exe\r
330   !insertmacro InstallFile vlc.exe.manifest\r
331   !ifdef LIBVLC_DLL\r
332   !insertmacro InstallFile ${LIBVLC_DLL}\r
333   !endif\r
334   !insertmacro InstallFile *.txt\r
335 \r
336   !insertmacro InstallFolder plugins\r
337   !insertmacro InstallFolder locale\r
338   !insertmacro InstallFolder osdmenu\r
339   !insertmacro InstallFolder skins\r
340   !insertmacro InstallFolder http\r
341 \r
342   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \\r
343     "${PRODUCT_WEB_SITE}"\r
344   FileWrite $UninstallLog "${PRODUCT_NAME}.url$\r$\n"\r
345   WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \\r
346     "${PRODUCT_WEB_SITE}/doc/"\r
347   FileWrite $UninstallLog "Documentation.url$\r$\n"\r
348 \r
349   !insertmacro CloseUninstallLog\r
350 \r
351   ; Add VLC to "recomended programs" for the following extensions\r
352   WriteRegStr HKCR Applications\vlc.exe "" ""\r
353   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"\r
354   WriteRegStr HKCR Applications\vlc.exe\shell\Play "" "Play with VLC"\r
355   WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \\r
356     '$INSTDIR\vlc.exe --one-instance-when-started-from-file "%1"'\r
357   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes\r
358 \r
359   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player"\r
360   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \\r
361     "$INSTDIR\vlc.exe --one-instance-when-started-from-file cdda:%1"\r
362   WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "Play with VLC media player"\r
363   WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \\r
364     "$INSTDIR\vlc.exe --one-instance-when-started-from-file dvd:%1"\r
365 \r
366   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""\r
367   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" "Play DVD movie"\r
368   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe",0'\r
369   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeProgID" "VLC.DVDMovie"\r
370   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "play"\r
371   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"\r
372 \r
373   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""\r
374   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "Play CD audio"\r
375   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" '"$INSTDIR\vlc.exe --one-instance-when-started-from-file",0'\r
376   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeProgID" "VLC.CDAudio"\r
377   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "play"\r
378   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"\r
379   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"\r
380   WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Play"\r
381   WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \\r
382     '$INSTDIR\vlc.exe --one-instance-when-started-from-file dvd:%1'\r
383   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'\r
384   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"\r
385   WriteRegStr HKCR "VLC.CDAudio\shell" "" "Play"\r
386   WriteRegStr HKCR "VLC.CDAudio\shell\Play\command" "" \\r
387     '$INSTDIR\vlc.exe --one-instance-when-started-from-file cdda:%1'\r
388   WriteRegStr HKCR "VLC.CDAudio\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'\r
389 \r
390 SectionEnd\r
391 \r
392 Section "Start Menu Shortcut" SEC02a\r
393   SectionIn 1 2 3\r
394   CreateDirectory "$SMPROGRAMS\VideoLAN"\r
395   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \\r
396     "$INSTDIR\vlc.exe" "--intf wx --wx-embed"\r
397   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (alt).lnk" \\r
398     "$INSTDIR\vlc.exe" "--intf wx --no-wx-embed"\r
399   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \\r
400     "$INSTDIR\vlc.exe" "--intf skins"\r
401   CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC defaults and quit.lnk" \\r
402     "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit "\r
403   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_NAME} Website.lnk" \\r
404     "$INSTDIR\${PRODUCT_NAME}.url"\r
405   CreateShortCut "$SMPROGRAMS\VideoLAN\Documentation.lnk" \\r
406     "$INSTDIR\Documentation.url"\r
407 SectionEnd\r
408 \r
409 Section "Desktop Shortcut" SEC02b\r
410   SectionIn 1 2 3\r
411   CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
412     "$INSTDIR\vlc.exe" ""\r
413 SectionEnd\r
414 \r
415 Section /o "Mozilla plugin" SEC03\r
416   SectionIn 2 3\r
417 \r
418   !insertmacro OpenUninstallLog\r
419   !insertmacro InstallFolder mozilla\r
420   !insertmacro CloseUninstallLog\r
421 \r
422   ; doesn't work. bug in mozilla/mozilla firefox or moz documentation (xpt file isn't loaded)\r
423   ; see mozilla bugs 184506 and 159445\r
424   ;!define Moz "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"\r
425   ;WriteRegStr HKLM ${Moz} "Description" "VideoLAN VLC plugin for Mozilla"\r
426   ;WriteRegStr HKLM ${Moz} "Path" "$INSTDIR\mozilla\npvlc.dll"\r
427   ;WriteRegStr HKLM ${Moz} "Product" "VLC media player"\r
428   ;WriteRegStr HKLM ${Moz} "Vendor" "VideoLAN"\r
429   ;WriteRegStr HKLM ${Moz} "Version" "${VERSION}"\r
430   ;WriteRegStr HKLM ${Moz} "XPTPath" "$INSTDIR\mozilla\vlcintf.xpt"\r
431 \r
432   Push $R0\r
433   Push $R1\r
434   Push $R2\r
435 \r
436   !define Index 'Line${__LINE__}'\r
437   StrCpy $R1 "0"\r
438 \r
439   "${Index}-Loop:"\r
440 \r
441     ; Check for Key\r
442     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"\r
443     StrCmp $R0 "" "${Index}-End"\r
444     IntOp $R1 $R1 + 1\r
445     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"\r
446     StrCmp $R2 "" "${Index}-Loop" ""\r
447 \r
448     CopyFiles "$INSTDIR\mozilla\*" "$R2"\r
449     !ifdef LIBVLC_DLL\r
450     CopyFiles ${LIBVLC_DLL} "$R2"\r
451     !endif\r
452     Goto "${Index}-Loop"\r
453 \r
454   "${Index}-End:"\r
455   !undef Index\r
456 \r
457 SectionEnd\r
458 \r
459 Section "ActiveX plugin" SEC04\r
460   SectionIn 2 3\r
461   SetOutPath "$INSTDIR"\r
462   !insertmacro OpenUninstallLog\r
463   !insertmacro InstallFile activex\axvlc.dll\r
464   !insertmacro CloseUninstallLog\r
465   RegDLL "$INSTDIR\axvlc.dll"\r
466 SectionEnd\r
467 \r
468 Section "Context Menus" SEC05\r
469   SectionIn 2\r
470   !insertmacro MacroAllExtensions AddContextMenu\r
471   !insertmacro AddContextMenu "Directory"\r
472 SectionEnd\r
473 \r
474 SectionGroup "File type associations" SEC06\r
475   SectionGroup "Audio Files"\r
476     !insertmacro MacroAudioExtensions RegisterExtensionSection\r
477   SectionGroupEnd\r
478   SectionGroup "Video Files"\r
479     !insertmacro MacroVideoExtensions RegisterExtensionSection\r
480   SectionGroupEnd\r
481   SectionGroup "Other"\r
482     !insertmacro MacroOtherExtensions RegisterExtensionSection\r
483   SectionGroupEnd\r
484 SectionGroupEnd\r
485 \r
486 Section /o "Delete preferences and cache" SEC07\r
487   !insertmacro delprefs\r
488 SectionEnd\r
489 \r
490 ; Installer section descriptions\r
491 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
492   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
493     "The media player itself"\r
494   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \\r
495     "Adds icons to your start menu for easy access"\r
496   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \\r
497     "Adds icon to your desktop for easy access"\r
498   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
499     "The VLC Mozilla and Mozilla Firefox plugin"\r
500   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
501     "The VLC ActiveX plugin"\r
502   !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \\r
503     "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')"\r
504   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \\r
505     "Sets VLC media player as the default application for the specified file type"\r
506   !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \\r
507     "Deletes VLC media player preferences and cache files leftover from previous installations"\r
508 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
509 \r
510 Function .onInit\r
511   ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
512   "UninstallString"\r
513   StrCmp $R0 "" done\r
514  \r
515   MessageBox MB_YESNO|MB_ICONEXCLAMATION \\r
516   "VLC media player has already been installed. $\nDo you want to remove \\r
517   the previous version before installing $(^Name) ?" \\r
518   IDNO done\r
519   \r
520   ;Run the uninstaller\r
521   ;uninst:\r
522     ClearErrors\r
523     ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file\r
524   done:\r
525   !insertmacro MUI_LANGDLL_DISPLAY\r
526 FunctionEnd\r
527 \r
528 Section -Post\r
529   WriteUninstaller "$INSTDIR\uninstall.exe"\r
530   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR\r
531   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"\r
532   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"\r
533 \r
534   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
535     "DisplayName" "$(^Name)"\r
536   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
537     "UninstallString" "$INSTDIR\uninstall.exe"\r
538   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
539     "DisplayIcon" "$INSTDIR\vlc.exe"\r
540   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
541     "DisplayVersion" "${PRODUCT_VERSION}"\r
542   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
543     "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
544   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
545     "Publisher" "${PRODUCT_PUBLISHER}"\r
546 SectionEnd\r
547 \r
548 ;;;;;;;;;;;;;;;;;;;;;;;;\r
549 ; Uninstaller sections ;\r
550 ;;;;;;;;;;;;;;;;;;;;;;;;\r
551 \r
552 ; TrimNewlines (copied from NSIS documentation)\r
553 ; input, top of stack  (e.g. whatever$\r$\n)\r
554 ; output, top of stack (replaces, with e.g. whatever)\r
555 ; modifies no other variables.\r
556 \r
557 Function un.TrimNewlines\r
558  Exch $R0\r
559  Push $R1\r
560  Push $R2\r
561  StrCpy $R1 0\r
562  \r
563  loop:\r
564    IntOp $R1 $R1 - 1\r
565    StrCpy $R2 $R0 1 $R1\r
566    StrCmp $R2 "$\r" loop\r
567    StrCmp $R2 "$\n" loop\r
568    IntOp $R1 $R1 + 1\r
569    IntCmp $R1 0 no_trim_needed\r
570    StrCpy $R0 $R0 $R1\r
571  \r
572  no_trim_needed:\r
573    Pop $R2\r
574    Pop $R1\r
575    Exch $R0\r
576 FunctionEnd\r
577 \r
578 Function un.RemoveEmptyDirs\r
579   Pop $9\r
580   !define Index 'Line${__LINE__}'\r
581   FindFirst $0 $1 "$INSTDIR$9*"\r
582   StrCmp $0 "" "${Index}-End"\r
583   "${Index}-Loop:"\r
584     StrCmp $1 "" "${Index}-End"\r
585     StrCmp $1 "." "${Index}-Next"\r
586     StrCmp $1 ".." "${Index}-Next"\r
587       Push $0\r
588       Push $1\r
589       Push $9\r
590       Push "$9$1\"\r
591       Call un.RemoveEmptyDirs\r
592       Pop $9\r
593       Pop $1\r
594       Pop $0\r
595     "${Index}-Remove:"\r
596     RMDir "$INSTDIR$9$1"\r
597     "${Index}-Next:"\r
598     FindNext $0 $1\r
599     Goto "${Index}-Loop"\r
600   "${Index}-End:"\r
601   FindClose $0\r
602   !undef Index\r
603 FunctionEnd\r
604 \r
605 Section "Uninstall" SEC91\r
606   SectionIn 1 2 3 RO\r
607   SetShellVarContext all\r
608 \r
609   !insertmacro MacroAllExtensions DeleteContextMenu\r
610   !insertmacro MacroAllExtensions UnRegisterExtensionSection\r
611   !insertmacro DeleteContextMenu "Directory"\r
612 \r
613   UnRegDLL "$INSTDIR\axvlc.dll"\r
614   Delete /REBOOTOK "$INSTDIR\axvlc.dll"\r
615 \r
616   ;remove mozilla plugin\r
617   Push $R0\r
618   Push $R1\r
619   Push $R2\r
620 \r
621   !define Index 'Line${__LINE__}'\r
622   StrCpy $R1 "0"\r
623 \r
624   "${Index}-Loop:"\r
625 \r
626     ; Check for Key\r
627     EnumRegKey $R0 HKLM "SOFTWARE\Mozilla" "$R1"\r
628     StrCmp $R0 "" "${Index}-End"\r
629     IntOp $R1 $R1 + 1\r
630     ReadRegStr $R2 HKLM "SOFTWARE\Mozilla\$R0\Extensions" "Plugins"\r
631     StrCmp $R2 "" "${Index}-Loop" ""\r
632 \r
633     Delete "$R2\vlcintf.xpt"\r
634     Delete "$R2\npvlc.dll"\r
635     Goto "${Index}-Loop"\r
636 \r
637   "${Index}-End:"\r
638   !undef Index\r
639 \r
640   RMDir "$SMPROGRAMS\VideoLAN"\r
641   RMDir /r $SMPROGRAMS\VideoLAN\r
642 \r
643   FileOpen $UninstallLog "$INSTDIR\uninstall.log" r\r
644   UninstallLoop:\r
645     ClearErrors\r
646     FileRead $UninstallLog $R0\r
647     IfErrors UninstallEnd\r
648     Push $R0\r
649     Call un.TrimNewLines\r
650     Pop $R0\r
651     Delete "$INSTDIR\$R0"\r
652     Goto UninstallLoop\r
653   UninstallEnd:\r
654   FileClose $UninstallLog\r
655   Delete "$INSTDIR\uninstall.log"\r
656   Delete "$INSTDIR\uninstall.exe"\r
657   Push "\"\r
658   Call un.RemoveEmptyDirs\r
659   RMDir "$INSTDIR"\r
660 \r
661   DeleteRegKey HKLM Software\VideoLAN\r
662 \r
663   DeleteRegKey HKCR Applications\vlc.exe\r
664   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC\r
665   DeleteRegKey HKCR DVD\shell\PlayWithVLC\r
666   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"\r
667   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival\r
668   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"\r
669   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival\r
670   DeleteRegKey HKCR "VLC.MediaFile"\r
671 \r
672   DeleteRegKey HKLM \\r
673     "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"\r
674 \r
675   DeleteRegKey HKLM \\r
676     "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
677 \r
678   Delete "$DESKTOP\VLC media player.lnk"\r
679 \r
680   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
681   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
682   SetAutoClose true\r
683 SectionEnd\r
684 \r
685 Section /o "un.Delete preferences and cache" SEC92\r
686   SectionIn 2 3 RO\r
687   !insertmacro delprefs\r
688 SectionEnd\r
689 \r
690 ; Uninstaller section descriptions\r
691 !insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN\r
692   !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \\r
693     "Uninstall VLC media player and all its components"\r
694   !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \\r
695     "Deletes VLC media player preferences and cache files"\r
696 !insertmacro MUI_UNFUNCTION_DESCRIPTION_END\r
697 \r
698 ;Function un.onUninstSuccess\r
699 ;  HideWindow\r
700 ;  MessageBox MB_ICONINFORMATION|MB_OK \\r
701 ;    "$(^Name) was successfully removed from your computer."\r
702 ;FunctionEnd\r
703 \r
704 Function un.onInit\r
705   !insertmacro MUI_LANGDLL_DISPLAY\r
706 FunctionEnd\r