]> git.sesse.net Git - vlc/blob - extras/package/win32/NSIS/helpers/extensions.nsh
760d0e5b87c0aa4b813af33e54ce7a03d6241630
[vlc] / extras / package / win32 / NSIS / helpers / extensions.nsh
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; 1. File type associations ;
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
5 ;; Function that associates one extension with VLC
6 Function AssociateExtension
7   ; back up old value for extension $R0 (eg. ".opt")
8   ReadRegStr $1 HKCR "$R0" ""
9   StrCmp $1 "" NoBackup
10     StrCmp $1 "VLC$R0" "NoBackup"
11     WriteRegStr HKCR "$R0" "VLC.backup" $1
12 NoBackup:
13   WriteRegStr HKCR "$R0" "" "VLC$R0"
14 FunctionEnd
15
16 ;; Function that registers one extension for VLC
17 Function RegisterExtension
18   WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
19   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
20   WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
21   WriteRegStr HKCR "VLC$R0\shell\Open" "MultiSelectModel" "Player"
22   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
23   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
24   WriteRegStr HKCR "Applications\vlc.exe\SupportedTypes" $0 ""
25
26   ${If} ${AtLeastWinVista}
27     WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
28   ${EndIf}
29 FunctionEnd
30
31 ;; Function that registers one skin extension for VLC
32 Function RegisterSkinExtension
33   WriteRegStr HKCR "VLC$R0" "" "VLC skin file ($R0)"
34   WriteRegStr HKCR "VLC$R0\shell" "" "Open"
35   WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
36   WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
37   WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
38
39   ${If} ${AtLeastWinVista}
40     WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
41   ${EndIf}
42 FunctionEnd
43
44 ;; Function that removes one extension that VLC owns.
45 Function un.RegisterExtension
46   ;start of restore script
47   ReadRegStr $1 HKCR "$R0" ""
48   StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
49     ; Read the old value from Backup
50     ReadRegStr $1 HKCR "$R0" "VLC.backup"
51     StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
52       DeleteRegKey HKCR "$R0"
53     Goto NoOwn
54 Restore:
55       WriteRegStr HKCR "$R0" "" $1
56       DeleteRegValue HKCR "$R0" "VLC.backup"
57 NoOwn:
58     DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
59     DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
60 FunctionEnd
61
62 !macro RegisterExtensionSection TYPE EXT
63   ${MementoSection} ${EXT} SEC_EXT_${TYPE}_${EXT}
64     SectionIn 1 3
65     Push $R0
66     StrCpy $R0 ${EXT}
67     Call AssociateExtension
68     Pop $R0
69   ${MementoSectionEnd}
70 !macroend
71
72 !macro RegisterSkinExtensionSection TYPE EXT
73   ${MementoUnselectedSection} ${EXT} SEC_EXT_SKIN_${EXT}
74     SectionIn 1 3
75     Push $R0
76     StrCpy $R0 ${EXT}
77     Call AssociateExtension
78     Pop $R0
79   ${MementoSectionEnd}
80 !macroend
81
82 !macro RegisterExtensionMacro TYPE EXT
83   Push $R0
84   StrCpy $R0 ${EXT}
85   Call RegisterExtension
86   Pop $R0
87 !macroend
88
89 !macro RegisterSkinExtensionMacro TYPE EXT
90   Push $R0
91   StrCpy $R0 ${EXT}
92   Call RegisterSkinExtension
93   Pop $R0
94 !macroend
95
96 !macro UnRegisterExtensionSection TYPE EXT
97   Push $R0
98   StrCpy $R0 ${EXT}
99   Call un.RegisterExtension
100   Pop $R0
101 !macroend
102
103 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
104 ; Extension lists  Macros                    ;
105 ; Those macros calls the previous functions  ;
106 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
107
108 !macro MacroAudioExtensions _action
109   !insertmacro ${_action} Audio ".3ga"
110   !insertmacro ${_action} Audio ".669"
111   !insertmacro ${_action} Audio ".a52"
112   !insertmacro ${_action} Audio ".aac"
113   !insertmacro ${_action} Audio ".ac3"
114   !insertmacro ${_action} Audio ".adt"
115   !insertmacro ${_action} Audio ".adts"
116   !insertmacro ${_action} Audio ".aif"
117   !insertmacro ${_action} Audio ".aifc"
118   !insertmacro ${_action} Audio ".aiff"
119   !insertmacro ${_action} Audio ".au"
120   !insertmacro ${_action} Audio ".amr"
121   !insertmacro ${_action} Audio ".aob"
122   !insertmacro ${_action} Audio ".ape"
123   !insertmacro ${_action} Audio ".caf"
124   !insertmacro ${_action} Audio ".cda"
125   !insertmacro ${_action} Audio ".dts"
126   !insertmacro ${_action} Audio ".flac"
127   !insertmacro ${_action} Audio ".it"
128   !insertmacro ${_action} Audio ".m4a"
129   !insertmacro ${_action} Audio ".m4p"
130   !insertmacro ${_action} Audio ".mid"
131   !insertmacro ${_action} Audio ".mka"
132   !insertmacro ${_action} Audio ".mlp"
133   !insertmacro ${_action} Audio ".mod"
134   !insertmacro ${_action} Audio ".mp1"
135   !insertmacro ${_action} Audio ".mp2"
136   !insertmacro ${_action} Audio ".mp3"
137   !insertmacro ${_action} Audio ".mpc"
138   !insertmacro ${_action} Audio ".mpga"
139   !insertmacro ${_action} Audio ".oga"
140   !insertmacro ${_action} Audio ".oma"
141   !insertmacro ${_action} Audio ".opus"
142   !insertmacro ${_action} Audio ".qcp"
143   !insertmacro ${_action} Audio ".ra"
144   !insertmacro ${_action} Audio ".rmi"
145   !insertmacro ${_action} Audio ".snd"
146   !insertmacro ${_action} Audio ".s3m"
147   !insertmacro ${_action} Audio ".spx"
148   !insertmacro ${_action} Audio ".tta"
149   !insertmacro ${_action} Audio ".voc"
150   !insertmacro ${_action} Audio ".vqf"
151   !insertmacro ${_action} Audio ".w64"
152   !insertmacro ${_action} Audio ".wav"
153   !insertmacro ${_action} Audio ".wma"
154   !insertmacro ${_action} Audio ".wv"
155   !insertmacro ${_action} Audio ".xa"
156   !insertmacro ${_action} Audio ".xm"
157 !macroend
158
159 !macro MacroVideoExtensions _action
160   !insertmacro ${_action} Video ".3g2"
161   !insertmacro ${_action} Video ".3gp"
162   !insertmacro ${_action} Video ".3gp2"
163   !insertmacro ${_action} Video ".3gpp"
164   !insertmacro ${_action} Video ".amv"
165   !insertmacro ${_action} Video ".asf"
166   !insertmacro ${_action} Video ".avi"
167   !insertmacro ${_action} Video ".bik"
168   !insertmacro ${_action} Video ".divx"
169   !insertmacro ${_action} Video ".drc"
170   !insertmacro ${_action} Video ".dv"
171   !insertmacro ${_action} Video ".evo"
172   !insertmacro ${_action} Video ".f4v"
173   !insertmacro ${_action} Video ".flv"
174   !insertmacro ${_action} Video ".gvi"
175   !insertmacro ${_action} Video ".gxf"
176   !insertmacro ${_action} Video ".m1v"
177   !insertmacro ${_action} Video ".m2t"
178   !insertmacro ${_action} Video ".m2v"
179   !insertmacro ${_action} Video ".m2ts"
180   !insertmacro ${_action} Video ".m4v"
181   !insertmacro ${_action} Video ".mkv"
182   !insertmacro ${_action} Video ".mov"
183   !insertmacro ${_action} Video ".mp2"
184   !insertmacro ${_action} Video ".mp2v"
185   !insertmacro ${_action} Video ".mp4"
186   !insertmacro ${_action} Video ".mp4v"
187   !insertmacro ${_action} Video ".mpa"
188   !insertmacro ${_action} Video ".mpe"
189   !insertmacro ${_action} Video ".mpeg"
190   !insertmacro ${_action} Video ".mpeg1"
191   !insertmacro ${_action} Video ".mpeg2"
192   !insertmacro ${_action} Video ".mpeg4"
193   !insertmacro ${_action} Video ".mpg"
194   !insertmacro ${_action} Video ".mpv2"
195   !insertmacro ${_action} Video ".mts"
196   !insertmacro ${_action} Video ".mtv"
197   !insertmacro ${_action} Video ".mxf"
198   !insertmacro ${_action} Video ".nsv"
199   !insertmacro ${_action} Video ".nuv"
200   !insertmacro ${_action} Video ".ogg"
201   !insertmacro ${_action} Video ".ogm"
202   !insertmacro ${_action} Video ".ogx"
203   !insertmacro ${_action} Video ".ogv"
204   !insertmacro ${_action} Video ".rec"
205   !insertmacro ${_action} Video ".rm"
206   !insertmacro ${_action} Video ".rmvb"
207   !insertmacro ${_action} Video ".rpl"
208   !insertmacro ${_action} Video ".thp"
209   !insertmacro ${_action} Video ".tod"
210   !insertmacro ${_action} Video ".ts"
211   !insertmacro ${_action} Video ".tts"
212   !insertmacro ${_action} Video ".vob"
213   !insertmacro ${_action} Video ".vro"
214   !insertmacro ${_action} Video ".webm"
215   !insertmacro ${_action} Video ".wmv"
216   !insertmacro ${_action} Video ".xesc"
217 !macroend
218
219 !macro MacroOtherExtensions _action
220   !insertmacro ${_action} Other ".asx"
221   !insertmacro ${_action} Other ".b4s"
222   !insertmacro ${_action} Other ".cue"
223   !insertmacro ${_action} Other ".ifo"
224   !insertmacro ${_action} Other ".m3u"
225   !insertmacro ${_action} Other ".m3u8"
226   !insertmacro ${_action} Other ".pls"
227   !insertmacro ${_action} Other ".ram"
228   !insertmacro ${_action} Other ".sdp"
229   !insertmacro ${_action} Other ".vlc"
230   !insertmacro ${_action} Other ".wvx"
231   !insertmacro ${_action} Other ".xspf"
232 !macroend
233
234 !macro MacroSkinExtensions _action
235   !insertmacro ${_action} Skin ".vlt"
236   !insertmacro ${_action} Skin ".wsz"
237 !macroend
238
239 ; One macro to rule them all
240 !macro MacroAllExtensions _action
241   !insertmacro MacroAudioExtensions ${_action}
242   !insertmacro MacroVideoExtensions ${_action}
243   !insertmacro MacroOtherExtensions ${_action}
244 !macroend
245
246 ; Generic function for adding the context menu for one ext.
247 !macro AddContextMenuExt EXT
248   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
249   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
250
251   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
252   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
253 !macroend
254
255 !macro AddContextMenu TYPE EXT
256   !insertmacro AddContextMenuExt VLC${EXT}
257 !macroend
258
259 !macro DeleteContextMenuExt EXT
260   DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
261   DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
262 !macroend
263
264 !macro DeleteContextMenu TYPE EXT
265   !insertmacro DeleteContextMenuExt VLC${EXT}
266 !macroend
267
268