]> git.sesse.net Git - vlc/blob - vlc.win32.nsi
Tolerate vcdimager < 0.7.21. Patch thanks to Arwed v. Merkatz.
[vlc] / vlc.win32.nsi
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 \r
15 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
16 ; General configuration ;\r
17 ;;;;;;;;;;;;;;;;;;;;;;;;;\r
18 \r
19 Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}"\r
20 OutFile ..\vlc-${VERSION}-win32.exe\r
21 InstallDir "$PROGRAMFILES\VideoLAN\VLC"\r
22 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "Install_Dir"\r
23 SetCompressor lzma\r
24 ShowInstDetails show\r
25 ShowUnInstDetails show\r
26 SetOverwrite ifnewer\r
27 CRCCheck on\r
28 \r
29 InstType "Normal"\r
30 InstType "Full"\r
31 \r
32 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
33 ; NSIS Modern User Interface configuration ;\r
34 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
35 \r
36 ; MUI 1.67 compatible ------\r
37 !include "MUI.nsh"\r
38 \r
39 ; MUI Settings\r
40 !define MUI_ABORTWARNING\r
41 !define MUI_ICON "vlc48x48.ico"\r
42 !define MUI_UNICON "vlc48x48.ico"\r
43 !define MUI_COMPONENTSPAGE_SMALLDESC\r
44 \r
45 ; Welcome page\r
46 !insertmacro MUI_PAGE_WELCOME\r
47 ; License page\r
48 !insertmacro MUI_PAGE_LICENSE "COPYING.txt"\r
49 ; Components page\r
50 !insertmacro MUI_PAGE_COMPONENTS\r
51 ; Directory page\r
52 !insertmacro MUI_PAGE_DIRECTORY\r
53 ; Instfiles page\r
54 !insertmacro MUI_PAGE_INSTFILES\r
55 ; Finish page\r
56 !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"\r
57 !define MUI_FINISHPAGE_NOREBOOTSUPPORT\r
58 !insertmacro MUI_PAGE_FINISH\r
59 \r
60 ; Uninstaller pages\r
61 !insertmacro MUI_UNPAGE_INSTFILES\r
62 \r
63 ; Language files\r
64 !insertmacro MUI_LANGUAGE "English"\r
65 \r
66 ; Reserve files\r
67 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
68 \r
69 ; MUI end ------\r
70 \r
71 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
72 ; File type associations ;\r
73 ;;;;;;;;;;;;;;;;;;;;;;;;;;\r
74 \r
75 Function RegisterExtension\r
76   ; back up old value for extension $R0 (eg. ".opt")\r
77   ReadRegStr $1 HKCR "$R0" ""\r
78   StrCmp $1 "" NoBackup\r
79     StrCmp $1 "VLC$R0" "NoBackup"\r
80     WriteRegStr HKCR "$R0" "VLC.backup" $1\r
81 NoBackup:\r
82   WriteRegStr HKCR "$R0" "" "VLC$R0"\r
83   ReadRegStr $0 HKCR "VLC$R0" ""\r
84   WriteRegStr HKCR "VLC$R0" "" "VLC media file"\r
85   WriteRegStr HKCR "VLC$R0\shell" "" "Play"\r
86   WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '$INSTDIR\vlc.exe "%1"'\r
87   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" "$INSTDIR\vlc.exe,0"\r
88 FunctionEnd\r
89 \r
90 Function un.RegisterExtension\r
91   ;start of restore script\r
92   ReadRegStr $1 HKCR "$R0" ""\r
93   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it\r
94     ReadRegStr $1 HKCR "$R0" "VLC.backup"\r
95     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key\r
96       DeleteRegKey HKCR "$R0"\r
97     Goto NoOwn\r
98 Restore:\r
99       WriteRegStr HKCR "$R0" "" $1\r
100       DeleteRegValue HKCR "$R0" "VLC.backup"\r
101 NoOwn:\r
102     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings\r
103 FunctionEnd\r
104 \r
105 !macro RegisterExtensionSection EXT\r
106   Section /o ${EXT}\r
107     Push $R0\r
108     StrCpy $R0 ${EXT}\r
109     Call RegisterExtension\r
110     Pop $R0\r
111   SectionEnd\r
112 !macroend\r
113 \r
114 !macro UnRegisterExtensionSection EXT\r
115   Push $R0\r
116   StrCpy $R0 ${EXT}\r
117   Call un.RegisterExtension\r
118   Pop $R0\r
119 !macroend\r
120 \r
121 ;;;;;;;;;;;;;;;;;;;;;;\r
122 ; Installer sections ;\r
123 ;;;;;;;;;;;;;;;;;;;;;;\r
124 \r
125 Section "Media player (required)" SEC01\r
126   SectionIn 1 2 3 RO\r
127   SetShellVarContext all\r
128   SetOutPath "$INSTDIR"\r
129 \r
130   File  vlc.exe\r
131   File  vlc.exe.manifest\r
132   File  *.txt\r
133 \r
134   File  /r plugins\r
135   File  /r locale\r
136   File  /r skins\r
137   File  /r skins2\r
138   File  /r http\r
139 \r
140   WriteRegStr HKCR Applications\vlc.exe "" ""\r
141   WriteRegStr HKCR Applications\vlc.exe\shell "" "Play"\r
142   WriteRegStr HKCR Applications\vlc.exe\shell\Play\command "" \\r
143     '$INSTDIR\vlc.exe "%1"'\r
144 \r
145   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC" "" "Play with VLC media player"\r
146   WriteRegStr HKCR "AudioCD\shell\PlayWithVLC\command" "" \\r
147     "$INSTDIR\vlc.exe cdda:%1"\r
148   WriteRegStr HKCR "DVD\shell\PlayWithVLC" "" "Play with VLC media player"\r
149   WriteRegStr HKCR "DVD\shell\PlayWithVLC\command" "" \\r
150     "$INSTDIR\vlc.exe dvd:%1"\r
151 \r
152   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival" ""\r
153   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Action" "Play DVD movie"\r
154   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "DefaultIcon" "$INSTDIR\vlc.exe,0"\r
155   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Invoke.ProgID" "VLC.MediaFile"\r
156   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "InvokeVerb" "play"\r
157   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival" "Provider" "VideoLAN VLC media player"\r
158 \r
159   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival" ""\r
160   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Action" "Play CD audio"\r
161   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "DefaultIcon" "$INSTDIR\vlc.exe,0"\r
162   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Invoke.ProgID" "VLC.MediaFile"\r
163   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "InvokeVerb" "play"\r
164   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival" "Provider" "VideoLAN VLC media player"\r
165   WriteRegStr HKCR "VLC.MediaFile" "" "VLC media file"\r
166   WriteRegStr HKCR "VLC.MediaFile\shell" "" "Play"\r
167   WriteRegStr HKCR "VLC.MediaFile\shell\Play\command" "" \\r
168     '$INSTDIR\vlc.exe "%1"'\r
169   WriteRegStr HKCR "VLC.MediaFile\DefaultIcon" "" "$INSTDIR\vlc.exe,0"\r
170 \r
171 SectionEnd\r
172 \r
173 Section "Start Menu + Desktop Shortcut" SEC02\r
174   SectionIn 1 2 3\r
175   CreateDirectory "$SMPROGRAMS\VideoLAN"\r
176   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \\r
177     "$INSTDIR\vlc.exe" "--intf wxwin"\r
178   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \\r
179     "$INSTDIR\vlc.exe" "--intf skins2"\r
180   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (old skins).lnk" \\r
181     "$INSTDIR\vlc.exe" "--intf skins"\r
182   CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
183     "$INSTDIR\vlc.exe" "--intf wxwin"\r
184   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \\r
185     "${PRODUCT_WEB_SITE}"\r
186   CreateShortCut "$SMPROGRAMS\VideoLAN\Website.lnk" \\r
187     "$INSTDIR\${PRODUCT_NAME}.url"\r
188 SectionEnd\r
189 \r
190 Section /o "Mozilla plugin" SEC03\r
191   SectionIn 2 3\r
192   File  /r mozilla\r
193 \r
194   WriteRegStr HKLM \\r
195     SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION} \\r
196     "Path" '"$INSTDIR\mozilla\npvlc.dll"'\r
197 SectionEnd\r
198 \r
199 SubSection "File type associations" SEC04\r
200   ; Make sure we have the same list in uninstall\r
201   !insertmacro RegisterExtensionSection ".a52"\r
202   !insertmacro RegisterExtensionSection ".aac"\r
203   !insertmacro RegisterExtensionSection ".ac3"\r
204   !insertmacro RegisterExtensionSection ".asf"\r
205   !insertmacro RegisterExtensionSection ".asx"\r
206   !insertmacro RegisterExtensionSection ".avi"\r
207   !insertmacro RegisterExtensionSection ".bin"\r
208   !insertmacro RegisterExtensionSection ".cue"\r
209   !insertmacro RegisterExtensionSection ".dat"\r
210   !insertmacro RegisterExtensionSection ".divx"\r
211   !insertmacro RegisterExtensionSection ".dts"\r
212   !insertmacro RegisterExtensionSection ".dv"\r
213   !insertmacro RegisterExtensionSection ".flac"\r
214   !insertmacro RegisterExtensionSection ".m1v"\r
215   !insertmacro RegisterExtensionSection ".m2v"\r
216   !insertmacro RegisterExtensionSection ".m3u"\r
217   !insertmacro RegisterExtensionSection ".mka"\r
218   !insertmacro RegisterExtensionSection ".mkv"\r
219   !insertmacro RegisterExtensionSection ".mov"\r
220   !insertmacro RegisterExtensionSection ".mp1"\r
221   !insertmacro RegisterExtensionSection ".mp2"\r
222   !insertmacro RegisterExtensionSection ".mp3"\r
223   !insertmacro RegisterExtensionSection ".mp4"\r
224   !insertmacro RegisterExtensionSection ".mpeg"\r
225   !insertmacro RegisterExtensionSection ".mpeg1"\r
226   !insertmacro RegisterExtensionSection ".mpeg2"\r
227   !insertmacro RegisterExtensionSection ".mpeg4"\r
228   !insertmacro RegisterExtensionSection ".mpg"\r
229   !insertmacro RegisterExtensionSection ".ogg"\r
230   !insertmacro RegisterExtensionSection ".ogm"\r
231   !insertmacro RegisterExtensionSection ".pls"\r
232   !insertmacro RegisterExtensionSection ".spx"\r
233   !insertmacro RegisterExtensionSection ".vob"\r
234   !insertmacro RegisterExtensionSection ".wav"\r
235   !insertmacro RegisterExtensionSection ".wma"\r
236   !insertmacro RegisterExtensionSection ".wmv"\r
237 SubSectionEnd\r
238 \r
239 Section -Post\r
240   WriteUninstaller "$INSTDIR\uninstall.exe"\r
241   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR\r
242   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}"\r
243   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe"\r
244 \r
245   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
246     "DisplayName" "$(^Name)"\r
247   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
248     "UninstallString" "$INSTDIR\uninstall.exe"\r
249   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
250     "DisplayIcon" "$INSTDIR\vlc.exe"\r
251   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
252     "DisplayVersion" "${PRODUCT_VERSION}"\r
253   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
254     "URLInfoAbout" "${PRODUCT_WEB_SITE}"\r
255   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
256     "Publisher" "${PRODUCT_PUBLISHER}"\r
257 SectionEnd\r
258 \r
259 ; Section descriptions\r
260 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
261   !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
262     "The media player itself"\r
263   !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} \\r
264     "Adds icons to your start menu and your desktop for easy access"\r
265   !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
266     "The VLC mozilla plugin"\r
267   !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
268     "Sets VLC media player as the default application for the specified file type"\r
269 !insertmacro MUI_FUNCTION_DESCRIPTION_END\r
270 \r
271 \r
272 Function un.onUninstSuccess\r
273   HideWindow\r
274   MessageBox MB_ICONINFORMATION|MB_OK \\r
275     "$(^Name) was successfully removed from your computer."\r
276 FunctionEnd\r
277 \r
278 Function un.onInit\r
279   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 \\r
280     "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2\r
281   Abort\r
282 FunctionEnd\r
283 \r
284 Section Uninstall\r
285   SetShellVarContext all\r
286 \r
287   ; Make sure we have the same list in install\r
288   !insertmacro UnRegisterExtensionSection ".a52"\r
289   !insertmacro UnRegisterExtensionSection ".aac"\r
290   !insertmacro UnRegisterExtensionSection ".ac3"\r
291   !insertmacro UnRegisterExtensionSection ".asf"\r
292   !insertmacro UnRegisterExtensionSection ".asx"\r
293   !insertmacro UnRegisterExtensionSection ".avi"\r
294   !insertmacro UnRegisterExtensionSection ".bin"\r
295   !insertmacro UnRegisterExtensionSection ".cue"\r
296   !insertmacro UnRegisterExtensionSection ".dat"\r
297   !insertmacro UnRegisterExtensionSection ".divx"\r
298   !insertmacro UnRegisterExtensionSection ".dts"\r
299   !insertmacro UnRegisterExtensionSection ".dv"\r
300   !insertmacro UnRegisterExtensionSection ".flac"\r
301   !insertmacro UnRegisterExtensionSection ".m1v"\r
302   !insertmacro UnRegisterExtensionSection ".m2v"\r
303   !insertmacro UnRegisterExtensionSection ".m3u"\r
304   !insertmacro UnRegisterExtensionSection ".mka"\r
305   !insertmacro UnRegisterExtensionSection ".mkv"\r
306   !insertmacro UnRegisterExtensionSection ".mov"\r
307   !insertmacro UnRegisterExtensionSection ".mp1"\r
308   !insertmacro UnRegisterExtensionSection ".mp2"\r
309   !insertmacro UnRegisterExtensionSection ".mp3"\r
310   !insertmacro UnRegisterExtensionSection ".mp4"\r
311   !insertmacro UnRegisterExtensionSection ".mpeg"\r
312   !insertmacro UnRegisterExtensionSection ".mpeg1"\r
313   !insertmacro UnRegisterExtensionSection ".mpeg2"\r
314   !insertmacro UnRegisterExtensionSection ".mpeg4"\r
315   !insertmacro UnRegisterExtensionSection ".mpg"\r
316   !insertmacro UnRegisterExtensionSection ".ogg"\r
317   !insertmacro UnRegisterExtensionSection ".ogm"\r
318   !insertmacro UnRegisterExtensionSection ".pls"\r
319   !insertmacro UnRegisterExtensionSection ".spx"\r
320   !insertmacro UnRegisterExtensionSection ".vob"\r
321   !insertmacro UnRegisterExtensionSection ".wav"\r
322   !insertmacro UnRegisterExtensionSection ".wma"\r
323   !insertmacro UnRegisterExtensionSection ".wmv"\r
324 \r
325   RMDir "$SMPROGRAMS\VideoLAN"\r
326   RMDir /r $SMPROGRAMS\VideoLAN\r
327   RMDir /r $INSTDIR\r
328   DeleteRegKey HKLM Software\VideoLAN\r
329 \r
330   DeleteRegKey HKCR Applications\vlc.exe\r
331   DeleteRegKey HKCR AudioCD\shell\PlayWithVLC\r
332   DeleteRegKey HKCR DVD\shell\PlayWithVLC\r
333   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayDVDMovieOnArrival" "VLCPlayDVDMovieOnArrival"\r
334   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayDVDMovieOnArrival\r
335   DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\EventHandlers\PlayCDAudioOnArrival" "VLCPlayCDAudioOnArrival"\r
336   DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\Handlers\VLCPlayCDAudioOnArrival\r
337   DeleteRegKey HKCR "VLC.MediaFile"\r
338 \r
339   DeleteRegKey HKLM \\r
340     SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}\r
341 \r
342   DeleteRegKey HKLM \\r
343     Software\Microsoft\Windows\CurrentVersion\Uninstall\VideoLAN\r
344 \r
345   Delete "$DESKTOP\VLC media player.lnk"\r
346 \r
347   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"\r
348   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
349   SetAutoClose true\r
350 SectionEnd\r