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