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