]> git.sesse.net Git - vlc/commitdiff
Win32 installer: split the macros from the file
authorJean-Baptiste Kempf <jb@videolan.org>
Sun, 29 Jul 2012 14:31:04 +0000 (16:31 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Sun, 29 Jul 2012 14:31:04 +0000 (16:31 +0200)
extras/package/win32/UAC.nsh
extras/package/win32/helpers/extensions.nsh [new file with mode: 0644]
extras/package/win32/helpers/install.nsh [new file with mode: 0644]
extras/package/win32/package.mak
extras/package/win32/vlc.win32.nsi.in

index 9df8cefd69df661f4c613abcb9706a1c281a5e35..ff2f4b32cae37f734dee4aabcfd083f07295b638 100644 (file)
@@ -188,4 +188,4 @@ pop $1
 pop $0
 !macroend
 
-!endif /* ifndef UAC_HDR__INC */
\ No newline at end of file
+!endif /* ifndef UAC_HDR__INC */
diff --git a/extras/package/win32/helpers/extensions.nsh b/extras/package/win32/helpers/extensions.nsh
new file mode 100644 (file)
index 0000000..48116e9
--- /dev/null
@@ -0,0 +1,276 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; 1. File type associations ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Function that registers one extension for VLC
+Function RegisterExtension
+  ; back up old value for extension $R0 (eg. ".opt")
+  ReadRegStr $1 HKCR "$R0" ""
+  StrCmp $1 "" NoBackup
+    StrCmp $1 "VLC$R0" "NoBackup"
+    WriteRegStr HKCR "$R0" "VLC.backup" $1
+NoBackup:
+  WriteRegStr HKCR "$R0" "" "VLC$R0"
+  ReadRegStr $0 HKCR "VLC$R0" ""
+  WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
+  WriteRegStr HKCR "VLC$R0\shell" "" "Open"
+  WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
+  WriteRegStr HKCR "VLC$R0\shell\Open" "MultiSelectModel" "Player"
+  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
+  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
+;;; Vista Only part
+  ; Vista and above detection
+  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+  StrCpy $R2 $R1 1
+  StrCmp $R2 '6' ForVista ToEnd
+ForVista:
+  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
+
+ToEnd:
+FunctionEnd
+
+;; Function that registers one skin extension for VLC
+Function RegisterSkinExtension
+  ; back up old value for extension $R0 (eg. ".opt")
+  ReadRegStr $1 HKCR "$R0" ""
+  StrCmp $1 "" NoBackup
+    StrCmp $1 "VLC$R0" "NoBackup"
+    WriteRegStr HKCR "$R0" "VLC.backup" $1
+NoBackup:
+  WriteRegStr HKCR "$R0" "" "VLC$R0"
+  ReadRegStr $0 HKCR "VLC$R0" ""
+  WriteRegStr HKCR "VLC$R0" "" "VLC skin file ($R0)"
+  WriteRegStr HKCR "VLC$R0\shell" "" "Open"
+  WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
+  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
+  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
+
+;;; Vista Only part
+  ; Vista and above detection
+  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+  StrCpy $R2 $R1 1
+  StrCmp $R2 '6' ForVista ToEnd
+ForVista:
+  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
+
+ToEnd:
+FunctionEnd
+
+;; Function that removes one extension that VLC owns.
+Function un.RegisterExtension
+  ;start of restore script
+  ReadRegStr $1 HKCR "$R0" ""
+  StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
+    ; Read the old value from Backup
+    ReadRegStr $1 HKCR "$R0" "VLC.backup"
+    StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
+      DeleteRegKey HKCR "$R0"
+    Goto NoOwn
+Restore:
+      WriteRegStr HKCR "$R0" "" $1
+      DeleteRegValue HKCR "$R0" "VLC.backup"
+NoOwn:
+    DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
+    DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
+FunctionEnd
+
+!macro RegisterExtensionSection EXT
+  Section ${EXT}
+    SectionIn 1 3
+    Push $R0
+    StrCpy $R0 ${EXT}
+    Call RegisterExtension
+    Pop $R0
+  SectionEnd
+!macroend
+
+!macro RegisterSkinExtensionSection EXT
+  Section /o ${EXT}
+    SectionIn 1 3
+    Push $R0
+    StrCpy $R0 ${EXT}
+    Call RegisterSkinExtension
+    Pop $R0
+  SectionEnd
+!macroend
+
+!macro UnRegisterExtensionSection EXT
+  Push $R0
+  StrCpy $R0 ${EXT}
+  Call un.RegisterExtension
+  Pop $R0
+!macroend
+
+!macro WriteRegStrSupportedTypes EXT
+  WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
+!macroend
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Extension lists  Macros                    ;
+; Those macros calls the previous functions  ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+!macro MacroAudioExtensions _action
+  !insertmacro ${_action} ".3ga"
+  !insertmacro ${_action} ".669"
+  !insertmacro ${_action} ".a52"
+  !insertmacro ${_action} ".aac"
+  !insertmacro ${_action} ".ac3"
+  !insertmacro ${_action} ".adt"
+  !insertmacro ${_action} ".adts"
+  !insertmacro ${_action} ".aif"
+  !insertmacro ${_action} ".aifc"
+  !insertmacro ${_action} ".aiff"
+  !insertmacro ${_action} ".au"
+  !insertmacro ${_action} ".amr"
+  !insertmacro ${_action} ".aob"
+  !insertmacro ${_action} ".ape"
+  !insertmacro ${_action} ".caf"
+  !insertmacro ${_action} ".cda"
+  !insertmacro ${_action} ".dts"
+  !insertmacro ${_action} ".flac"
+  !insertmacro ${_action} ".it"
+  !insertmacro ${_action} ".m4a"
+  !insertmacro ${_action} ".m4p"
+  !insertmacro ${_action} ".mid"
+  !insertmacro ${_action} ".mka"
+  !insertmacro ${_action} ".mlp"
+  !insertmacro ${_action} ".mod"
+  !insertmacro ${_action} ".mp1"
+  !insertmacro ${_action} ".mp2"
+  !insertmacro ${_action} ".mp3"
+  !insertmacro ${_action} ".mpc"
+  !insertmacro ${_action} ".mpga"
+  !insertmacro ${_action} ".oma"
+  !insertmacro ${_action} ".oga"
+  !insertmacro ${_action} ".qcp"
+  !insertmacro ${_action} ".ra"
+  !insertmacro ${_action} ".rmi"
+  !insertmacro ${_action} ".snd"
+  !insertmacro ${_action} ".s3m"
+  !insertmacro ${_action} ".spx"
+  !insertmacro ${_action} ".tta"
+  !insertmacro ${_action} ".voc"
+  !insertmacro ${_action} ".vqf"
+  !insertmacro ${_action} ".w64"
+  !insertmacro ${_action} ".wav"
+  !insertmacro ${_action} ".wma"
+  !insertmacro ${_action} ".wv"
+  !insertmacro ${_action} ".xa"
+  !insertmacro ${_action} ".xm"
+!macroend
+
+!macro MacroVideoExtensions _action
+  !insertmacro ${_action} ".3g2"
+  !insertmacro ${_action} ".3gp"
+  !insertmacro ${_action} ".3gp2"
+  !insertmacro ${_action} ".3gpp"
+  !insertmacro ${_action} ".amv"
+  !insertmacro ${_action} ".asf"
+  !insertmacro ${_action} ".avi"
+  !insertmacro ${_action} ".divx"
+  !insertmacro ${_action} ".drc"
+  !insertmacro ${_action} ".dv"
+  !insertmacro ${_action} ".f4v"
+  !insertmacro ${_action} ".flv"
+  !insertmacro ${_action} ".gvi"
+  !insertmacro ${_action} ".gxf"
+  !insertmacro ${_action} ".m1v"
+  !insertmacro ${_action} ".m2t"
+  !insertmacro ${_action} ".m2v"
+  !insertmacro ${_action} ".m2ts"
+  !insertmacro ${_action} ".m4v"
+  !insertmacro ${_action} ".mkv"
+  !insertmacro ${_action} ".mov"
+  !insertmacro ${_action} ".mp2"
+  !insertmacro ${_action} ".mp2v"
+  !insertmacro ${_action} ".mp4"
+  !insertmacro ${_action} ".mp4v"
+  !insertmacro ${_action} ".mpa"
+  !insertmacro ${_action} ".mpe"
+  !insertmacro ${_action} ".mpeg"
+  !insertmacro ${_action} ".mpeg1"
+  !insertmacro ${_action} ".mpeg2"
+  !insertmacro ${_action} ".mpeg4"
+  !insertmacro ${_action} ".mpg"
+  !insertmacro ${_action} ".mpv2"
+  !insertmacro ${_action} ".mts"
+  !insertmacro ${_action} ".mtv"
+  !insertmacro ${_action} ".mxf"
+  !insertmacro ${_action} ".nsv"
+  !insertmacro ${_action} ".nuv"
+  !insertmacro ${_action} ".ogg"
+  !insertmacro ${_action} ".ogm"
+  !insertmacro ${_action} ".ogx"
+  !insertmacro ${_action} ".ogv"
+  !insertmacro ${_action} ".rec"
+  !insertmacro ${_action} ".rm"
+  !insertmacro ${_action} ".rmvb"
+  !insertmacro ${_action} ".tod"
+  !insertmacro ${_action} ".ts"
+  !insertmacro ${_action} ".tts"
+  !insertmacro ${_action} ".vob"
+  !insertmacro ${_action} ".vro"
+  !insertmacro ${_action} ".webm"
+  !insertmacro ${_action} ".wmv"
+  !insertmacro ${_action} ".xesc"
+!macroend
+
+!macro MacroOtherExtensions _action
+  !insertmacro ${_action} ".asx"
+  !insertmacro ${_action} ".b4s"
+  !insertmacro ${_action} ".bin"
+  !insertmacro ${_action} ".cue"
+  !insertmacro ${_action} ".ifo"
+  !insertmacro ${_action} ".m3u"
+  !insertmacro ${_action} ".m3u8"
+  !insertmacro ${_action} ".pls"
+  !insertmacro ${_action} ".ram"
+  !insertmacro ${_action} ".sdp"
+  !insertmacro ${_action} ".vlc"
+  !insertmacro ${_action} ".wvx"
+  !insertmacro ${_action} ".xspf"
+!macroend
+
+!macro MacroSkinExtensions _action
+  !insertmacro ${_action} ".vlt"
+  !insertmacro ${_action} ".wsz"
+!macroend
+
+; One macro to rule them all
+!macro MacroAllExtensions _action
+  !insertmacro MacroAudioExtensions ${_action}
+  !insertmacro MacroVideoExtensions ${_action}
+  !insertmacro MacroOtherExtensions ${_action}
+!macroend
+
+; Generic function for adding the context menu for one ext.
+!macro AddContextMenuExt EXT
+  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
+  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
+
+  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
+  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
+!macroend
+
+!macro AddContextMenu EXT
+  Push $R0
+  ReadRegStr $R0 HKCR ${EXT} ""
+  !insertmacro AddContextMenuExt $R0
+  Pop $R0
+!macroend
+
+!macro DeleteContextMenuExt EXT
+  DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
+  DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
+!macroend
+
+!macro DeleteContextMenu EXT
+  Push $R0
+  ReadRegStr $R0 HKCR ${EXT} ""
+  !insertmacro DeleteContextMenuExt $R0
+  Pop $R0
+!macroend
+
+
diff --git a/extras/package/win32/helpers/install.nsh b/extras/package/win32/helpers/install.nsh
new file mode 100644 (file)
index 0000000..dac55d7
--- /dev/null
@@ -0,0 +1,64 @@
+;;;;;;;;;;;;;;;
+; 4. Logging  ;
+;;;;;;;;;;;;;;;
+!macro OpenUninstallLog
+  FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
+  FileSeek $UninstallLog 0 END
+!macroend
+
+!macro CloseUninstallLog
+  FileClose $UninstallLog
+  SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
+!macroend
+
+;;;;;;;;;;;;;;;;;;;;
+; 5. Installations ;
+;;;;;;;;;;;;;;;;;;;;
+!macro InstallFile FILEREGEX
+  File "${FILEREGEX}"
+  !define Index 'Line${__LINE__}'
+  FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
+  StrCmp $0 "" "${Index}-End"
+  "${Index}-Loop:"
+    StrCmp $1 "" "${Index}-End"
+    FileWrite $UninstallLog "$1$\r$\n"
+    FindNext $0 $1
+    Goto "${Index}-Loop"
+  "${Index}-End:"
+  !undef Index
+!macroend
+
+!macro InstallFolder FOLDER
+  File /r "${FOLDER}"
+  Push "${FOLDER}"
+  Call InstallFolderInternal
+!macroend
+
+Function InstallFolderInternal
+  Pop $9
+  !define Index 'Line${__LINE__}'
+  FindFirst $0 $1 "$INSTDIR\$9\*"
+  StrCmp $0 "" "${Index}-End"
+  "${Index}-Loop:"
+    StrCmp $1 "" "${Index}-End"
+    StrCmp $1 "." "${Index}-Next"
+    StrCmp $1 ".." "${Index}-Next"
+    IfFileExists "$9\$1\*" 0 "${Index}-Write"
+      Push $0
+      Push $9
+      Push "$9\$1"
+      Call InstallFolderInternal
+      Pop $9
+      Pop $0
+      Goto "${Index}-Next"
+    "${Index}-Write:"
+    FileWrite $UninstallLog "$9\$1$\r$\n"
+    "${Index}-Next:"
+    FindNext $0 $1
+    Goto "${Index}-Loop"
+  "${Index}-End:"
+  !undef Index
+FunctionEnd
+;;; End of Macros
+
+
index 33aad9574c8f8c79fe2b9ec3ee613ac0f989ef6f..28ae82d9c4bb991d2da042454dd52c2cbeb2894c 100644 (file)
@@ -137,6 +137,7 @@ package-win32-exe: package-win-strip
 # Script installer
        cd "$(top_builddir)/extras/package/win32" && cp vlc.win32.nsi spad.nsi "$(win32_destdir)/"
        cp -r $(srcdir)/extras/package/win32/languages/ "$(win32_destdir)/"
+       cp -r $(srcdir)/extras/package/win32/helpers/ "$(win32_destdir)/"
        mkdir -p "$(win32_destdir)/NSIS/"
        cd "$(top_srcdir)/extras/package/win32/" && cp UAC.dll UAC.nsh "$(win32_destdir)/NSIS"
 
index 3266c03a7016eb16483c8c0a8f849137b618c389..a2624ea4b90eeaed86b960893ba9581f8d1d5b1f 100644 (file)
@@ -131,287 +131,12 @@ RequestExecutionLevel user
 ; Macro and Functions ;
 ;;;;;;;;;;;;;;;;;;;;;;;
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 1. File type associations ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Function that registers one extension for VLC
-Function RegisterExtension
-  ; back up old value for extension $R0 (eg. ".opt")
-  ReadRegStr $1 HKCR "$R0" ""
-  StrCmp $1 "" NoBackup
-    StrCmp $1 "VLC$R0" "NoBackup"
-    WriteRegStr HKCR "$R0" "VLC.backup" $1
-NoBackup:
-  WriteRegStr HKCR "$R0" "" "VLC$R0"
-  ReadRegStr $0 HKCR "VLC$R0" ""
-  WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"
-  WriteRegStr HKCR "VLC$R0\shell" "" "Open"
-  WriteRegStr HKCR "VLC$R0\shell\Open" "" $ShellAssociation_Play
-  WriteRegStr HKCR "VLC$R0\shell\Open" "MultiSelectModel" "Player"
-  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
-  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
-
-;;; Vista Only part
-  ; Vista and above detection
-  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R2 $R1 1
-  StrCmp $R2 '6' ForVista ToEnd
-ForVista:
-  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
-
-ToEnd:
-FunctionEnd
-
-;; Function that registers one skin extension for VLC
-Function RegisterSkinExtension
-  ; back up old value for extension $R0 (eg. ".opt")
-  ReadRegStr $1 HKCR "$R0" ""
-  StrCmp $1 "" NoBackup
-    StrCmp $1 "VLC$R0" "NoBackup"
-    WriteRegStr HKCR "$R0" "VLC.backup" $1
-NoBackup:
-  WriteRegStr HKCR "$R0" "" "VLC$R0"
-  ReadRegStr $0 HKCR "VLC$R0" ""
-  WriteRegStr HKCR "VLC$R0" "" "VLC skin file ($R0)"
-  WriteRegStr HKCR "VLC$R0\shell" "" "Open"
-  WriteRegStr HKCR "VLC$R0\shell\Open" "" ""
-  WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" -Iskins --skins2-last "%1"'
-  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'
-
-;;; Vista Only part
-  ; Vista and above detection
-  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-  StrCpy $R2 $R1 1
-  StrCmp $R2 '6' ForVista ToEnd
-ForVista:
-  WriteRegStr HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations" "$R0" "VLC$R0"
-
-ToEnd:
-FunctionEnd
-
-;; Function that removes one extension that VLC owns.
-Function un.RegisterExtension
-  ;start of restore script
-  ReadRegStr $1 HKCR "$R0" ""
-  StrCmp $1 "VLC$R0" 0 NoOwn ; only do this if we own it
-    ; Read the old value from Backup
-    ReadRegStr $1 HKCR "$R0" "VLC.backup"
-    StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
-      DeleteRegKey HKCR "$R0"
-    Goto NoOwn
-Restore:
-      WriteRegStr HKCR "$R0" "" $1
-      DeleteRegValue HKCR "$R0" "VLC.backup"
-NoOwn:
-    DeleteRegKey HKCR "VLC$R0" ;Delete key with association settings
-    DeleteRegKey HKLM "Software\Clients\Media\VLC\Capabilities\FileAssociations\VLC$R0" ; for vista
-FunctionEnd
-
-!macro RegisterExtensionSection EXT
-  Section ${EXT}
-    SectionIn 1 3
-    Push $R0
-    StrCpy $R0 ${EXT}
-    Call RegisterExtension
-    Pop $R0
-  SectionEnd
-!macroend
-
-!macro RegisterSkinExtensionSection EXT
-  Section /o ${EXT}
-    SectionIn 1 3
-    Push $R0
-    StrCpy $R0 ${EXT}
-    Call RegisterSkinExtension
-    Pop $R0
-  SectionEnd
-!macroend
-
-!macro UnRegisterExtensionSection EXT
-  Push $R0
-  StrCpy $R0 ${EXT}
-  Call un.RegisterExtension
-  Pop $R0
-!macroend
-
-!macro WriteRegStrSupportedTypes EXT
-  WriteRegStr HKCR Applications\vlc.exe\SupportedTypes ${EXT} ""
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Extension lists  Macros                    ;
-; Those macros calls the previous functions  ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-!macro MacroAudioExtensions _action
-  !insertmacro ${_action} ".3ga"
-  !insertmacro ${_action} ".669"
-  !insertmacro ${_action} ".a52"
-  !insertmacro ${_action} ".aac"
-  !insertmacro ${_action} ".ac3"
-  !insertmacro ${_action} ".adt"
-  !insertmacro ${_action} ".adts"
-  !insertmacro ${_action} ".aif"
-  !insertmacro ${_action} ".aifc"
-  !insertmacro ${_action} ".aiff"
-  !insertmacro ${_action} ".au"
-  !insertmacro ${_action} ".amr"
-  !insertmacro ${_action} ".aob"
-  !insertmacro ${_action} ".ape"
-  !insertmacro ${_action} ".caf"
-  !insertmacro ${_action} ".cda"
-  !insertmacro ${_action} ".dts"
-  !insertmacro ${_action} ".flac"
-  !insertmacro ${_action} ".it"
-  !insertmacro ${_action} ".m4a"
-  !insertmacro ${_action} ".m4p"
-  !insertmacro ${_action} ".mid"
-  !insertmacro ${_action} ".mka"
-  !insertmacro ${_action} ".mlp"
-  !insertmacro ${_action} ".mod"
-  !insertmacro ${_action} ".mp1"
-  !insertmacro ${_action} ".mp2"
-  !insertmacro ${_action} ".mp3"
-  !insertmacro ${_action} ".mpc"
-  !insertmacro ${_action} ".mpga"
-  !insertmacro ${_action} ".oma"
-  !insertmacro ${_action} ".oga"
-  !insertmacro ${_action} ".qcp"
-  !insertmacro ${_action} ".ra"
-  !insertmacro ${_action} ".rmi"
-  !insertmacro ${_action} ".snd"
-  !insertmacro ${_action} ".s3m"
-  !insertmacro ${_action} ".spx"
-  !insertmacro ${_action} ".tta"
-  !insertmacro ${_action} ".voc"
-  !insertmacro ${_action} ".vqf"
-  !insertmacro ${_action} ".w64"
-  !insertmacro ${_action} ".wav"
-  !insertmacro ${_action} ".wma"
-  !insertmacro ${_action} ".wv"
-  !insertmacro ${_action} ".xa"
-  !insertmacro ${_action} ".xm"
-!macroend
-
-!macro MacroVideoExtensions _action
-  !insertmacro ${_action} ".3g2"
-  !insertmacro ${_action} ".3gp"
-  !insertmacro ${_action} ".3gp2"
-  !insertmacro ${_action} ".3gpp"
-  !insertmacro ${_action} ".amv"
-  !insertmacro ${_action} ".asf"
-  !insertmacro ${_action} ".avi"
-  !insertmacro ${_action} ".divx"
-  !insertmacro ${_action} ".drc"
-  !insertmacro ${_action} ".dv"
-  !insertmacro ${_action} ".f4v"
-  !insertmacro ${_action} ".flv"
-  !insertmacro ${_action} ".gvi"
-  !insertmacro ${_action} ".gxf"
-  !insertmacro ${_action} ".m1v"
-  !insertmacro ${_action} ".m2t"
-  !insertmacro ${_action} ".m2v"
-  !insertmacro ${_action} ".m2ts"
-  !insertmacro ${_action} ".m4v"
-  !insertmacro ${_action} ".mkv"
-  !insertmacro ${_action} ".mov"
-  !insertmacro ${_action} ".mp2"
-  !insertmacro ${_action} ".mp2v"
-  !insertmacro ${_action} ".mp4"
-  !insertmacro ${_action} ".mp4v"
-  !insertmacro ${_action} ".mpa"
-  !insertmacro ${_action} ".mpe"
-  !insertmacro ${_action} ".mpeg"
-  !insertmacro ${_action} ".mpeg1"
-  !insertmacro ${_action} ".mpeg2"
-  !insertmacro ${_action} ".mpeg4"
-  !insertmacro ${_action} ".mpg"
-  !insertmacro ${_action} ".mpv2"
-  !insertmacro ${_action} ".mts"
-  !insertmacro ${_action} ".mtv"
-  !insertmacro ${_action} ".mxf"
-  !insertmacro ${_action} ".nsv"
-  !insertmacro ${_action} ".nuv"
-  !insertmacro ${_action} ".ogg"
-  !insertmacro ${_action} ".ogm"
-  !insertmacro ${_action} ".ogx"
-  !insertmacro ${_action} ".ogv"
-  !insertmacro ${_action} ".rec"
-  !insertmacro ${_action} ".rm"
-  !insertmacro ${_action} ".rmvb"
-  !insertmacro ${_action} ".tod"
-  !insertmacro ${_action} ".ts"
-  !insertmacro ${_action} ".tts"
-  !insertmacro ${_action} ".vob"
-  !insertmacro ${_action} ".vro"
-  !insertmacro ${_action} ".webm"
-  !insertmacro ${_action} ".wmv"
-  !insertmacro ${_action} ".xesc"
-!macroend
-
-!macro MacroOtherExtensions _action
-  !insertmacro ${_action} ".asx"
-  !insertmacro ${_action} ".b4s"
-  !insertmacro ${_action} ".bin"
-  !insertmacro ${_action} ".cue"
-  !insertmacro ${_action} ".ifo"
-  !insertmacro ${_action} ".m3u"
-  !insertmacro ${_action} ".m3u8"
-  !insertmacro ${_action} ".pls"
-  !insertmacro ${_action} ".ram"
-  !insertmacro ${_action} ".sdp"
-  !insertmacro ${_action} ".vlc"
-  !insertmacro ${_action} ".wvx"
-  !insertmacro ${_action} ".xspf"
-!macroend
-
-!macro MacroSkinExtensions _action
-  !insertmacro ${_action} ".vlt"
-  !insertmacro ${_action} ".wsz"
-!macroend
-
-; One macro to rule them all
-!macro MacroAllExtensions _action
-  !insertmacro MacroAudioExtensions ${_action}
-  !insertmacro MacroVideoExtensions ${_action}
-  !insertmacro MacroOtherExtensions ${_action}
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 2. Context menu entries ;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; Generic function for adding the context menu for one ext.
-!macro AddContextMenuExt EXT
-  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" $ContextMenuEntry_PlayWith
-  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --no-playlist-enqueue "%1"'
-
-  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" $ContextMenuEntry_AddToPlaylist
-  WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '"$INSTDIR\vlc.exe" --started-from-file --playlist-enqueue "%1"'
-!macroend
-
-!macro AddContextMenu EXT
-  Push $R0
-  ReadRegStr $R0 HKCR ${EXT} ""
-  !insertmacro AddContextMenuExt $R0
-  Pop $R0
-!macroend
-
-!macro DeleteContextMenuExt EXT
-  DeleteRegKey HKCR ${EXT}\shell\PlayWithVLC
-  DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC
-!macroend
-
-!macro DeleteContextMenu EXT
-  Push $R0
-  ReadRegStr $R0 HKCR ${EXT} ""
-  !insertmacro DeleteContextMenuExt $R0
-  Pop $R0
-!macroend
+!include helpers/extensions.nsh
+Var UninstallLog
+!include helpers/install.nsh
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; 3. Delete prefs           ;
+; Delete prefs Macro        ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 !macro delprefs
@@ -433,71 +158,6 @@ FunctionEnd
   !undef Index
 !macroend
 
-;;;;;;;;;;;;;;;
-; 4. Logging  ;
-;;;;;;;;;;;;;;;
-Var UninstallLog
-!macro OpenUninstallLog
-  FileOpen $UninstallLog "$INSTDIR\uninstall.log" a
-  FileSeek $UninstallLog 0 END
-!macroend
-
-!macro CloseUninstallLog
-  FileClose $UninstallLog
-  SetFileAttributes "$INSTDIR\uninstall.log" HIDDEN
-!macroend
-
-;;;;;;;;;;;;;;;;;;;;
-; 5. Installations ;
-;;;;;;;;;;;;;;;;;;;;
-!macro InstallFile FILEREGEX
-  File "${FILEREGEX}"
-  !define Index 'Line${__LINE__}'
-  FindFirst $0 $1 "$INSTDIR\${FILEREGEX}"
-  StrCmp $0 "" "${Index}-End"
-  "${Index}-Loop:"
-    StrCmp $1 "" "${Index}-End"
-    FileWrite $UninstallLog "$1$\r$\n"
-    FindNext $0 $1
-    Goto "${Index}-Loop"
-  "${Index}-End:"
-  !undef Index
-!macroend
-
-!macro InstallFolder FOLDER
-  File /r "${FOLDER}"
-  Push "${FOLDER}"
-  Call InstallFolderInternal
-!macroend
-
-Function InstallFolderInternal
-  Pop $9
-  !define Index 'Line${__LINE__}'
-  FindFirst $0 $1 "$INSTDIR\$9\*"
-  StrCmp $0 "" "${Index}-End"
-  "${Index}-Loop:"
-    StrCmp $1 "" "${Index}-End"
-    StrCmp $1 "." "${Index}-Next"
-    StrCmp $1 ".." "${Index}-Next"
-    IfFileExists "$9\$1\*" 0 "${Index}-Write"
-      Push $0
-      Push $9
-      Push "$9\$1"
-      Call InstallFolderInternal
-      Pop $9
-      Pop $0
-      Goto "${Index}-Next"
-    "${Index}-Write:"
-    FileWrite $UninstallLog "$9\$1$\r$\n"
-    "${Index}-Next:"
-    FindNext $0 $1
-    Goto "${Index}-Loop"
-  "${Index}-End:"
-  !undef Index
-FunctionEnd
-;;; End of Macros
-
-
 ;;;;;;;;;;;;;;;;;;;;;;
 ; Installer sections ;
 ; The CORE of the    ;
@@ -537,16 +197,12 @@ Section $Name_Section01 SEC01
   FindClose $0
 
 
-
   ; URLs
-  WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}"
+  WriteIniStr "$INSTDIR\${PRODUCT_GROUP} Website.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
   FileWrite $UninstallLog "${PRODUCT_GROUP} Website.url$\r$\n"
-  WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}/doc/"
+  WriteIniStr "$INSTDIR\Documentation.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}/doc/"
   FileWrite $UninstallLog "Documentation.url$\r$\n"
-  WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" \
-    "${PRODUCT_WEB_SITE}/vlc/skins.php"
+  WriteIniStr "$INSTDIR\New_Skins.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}/vlc/skins.php"
   FileWrite $UninstallLog "New_Skins.url$\r$\n"
 
   !insertmacro CloseUninstallLog
@@ -555,8 +211,7 @@ Section $Name_Section01 SEC01
   WriteRegStr HKCR Applications\vlc.exe "" ""
   WriteRegStr HKCR Applications\vlc.exe "FriendlyAppName" "VLC media player"
   WriteRegStr HKCR Applications\vlc.exe\shell\Open "" $ContextMenuEntry_PlayWith
-  WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" \
-    '"$INSTDIR\vlc.exe" --started-from-file "%1"'
+  WriteRegStr HKCR Applications\vlc.exe\shell\Open\command "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'
   !insertmacro MacroAllExtensions WriteRegStrSupportedTypes
 
 ; Windows default programs Registration
@@ -603,7 +258,7 @@ SectionEnd
 
 !ifdef INSTALL_MOZILLA
 Section $Name_Section03 SEC03
-  SectionIn 3
+  SectionIn 3
 
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog
@@ -622,7 +277,7 @@ SectionEnd
 
 !ifdef INSTALL_ACTIVEX
 Section $Name_Section04 SEC04
-  SectionIn 3
+  SectionIn 3
 
   SetOutPath "$INSTDIR"
   !insertmacro OpenUninstallLog