]> git.sesse.net Git - vlc/blobdiff - vlc.win32.nsi
* Lets at the very least remove icons we don't use anymore. Should save some space.
[vlc] / vlc.win32.nsi
index 31e0f4140539254ce0d1832aa7bab70e4c0dc9d3..ee859c242b1b5dc8c9e30b28594d89eb921c753f 100644 (file)
@@ -21,9 +21,13 @@ Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}"
 OutFile ..\vlc-${VERSION}-win32.exe\r
 InstallDir "$PROGRAMFILES\VideoLAN\VLC"\r
 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "Install_Dir"\r
+!ifdef NSIS_LZMA_COMPRESS_WHOLE\r
 SetCompressor lzma\r
-ShowInstDetails show\r
-ShowUnInstDetails show\r
+!else\r
+SetCompressor /SOLID lzma\r
+!endif\r
+;ShowInstDetails show\r
+;ShowUnInstDetails show\r
 SetOverwrite ifnewer\r
 CRCCheck on\r
 \r
@@ -35,44 +39,72 @@ InstType "Full"
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 \r
 ; MUI 1.67 compatible ------\r
-!include "MUI.nsh"\r
+  !include "MUI.nsh"\r
 \r
 ; MUI Settings\r
-!define MUI_ABORTWARNING\r
-!define MUI_ICON "vlc48x48.ico"\r
-!define MUI_UNICON "vlc48x48.ico"\r
-!define MUI_COMPONENTSPAGE_SMALLDESC\r
-\r
-; Welcome page\r
-!insertmacro MUI_PAGE_WELCOME\r
-; License page\r
-!insertmacro MUI_PAGE_LICENSE "COPYING.txt"\r
-; Components page\r
-!insertmacro MUI_PAGE_COMPONENTS\r
-; Directory page\r
-!insertmacro MUI_PAGE_DIRECTORY\r
-; Instfiles page\r
-!insertmacro MUI_PAGE_INSTFILES\r
-; Finish page\r
-!define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"\r
-!define MUI_FINISHPAGE_NOREBOOTSUPPORT\r
-!insertmacro MUI_PAGE_FINISH\r
+  !define MUI_ABORTWARNING\r
+  !define MUI_ICON "vlc48x48new.ico"\r
+  !define MUI_UNICON "vlc48x48new.ico"\r
+  !define MUI_COMPONENTSPAGE_SMALLDESC\r
+\r
+; Installer pages\r
+  ; Welcome page\r
+    !define MUI_WELCOMEPAGE_TITLE_3LINES\r
+    !insertmacro MUI_PAGE_WELCOME\r
+  ; License page\r
+    !insertmacro MUI_PAGE_LICENSE "COPYING.txt"\r
+  ; Components page\r
+    !insertmacro MUI_PAGE_COMPONENTS\r
+  ; Directory page\r
+    !insertmacro MUI_PAGE_DIRECTORY\r
+  ; Instfiles page\r
+    !insertmacro MUI_PAGE_INSTFILES\r
+  ; Finish page\r
+    !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe"\r
+    !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"\r
+    !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED\r
+    !define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website"\r
+    !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/"\r
+    !define MUI_FINISHPAGE_NOREBOOTSUPPORT\r
+    !insertmacro MUI_PAGE_FINISH\r
 \r
 ; Uninstaller pages\r
-!insertmacro MUI_UNPAGE_INSTFILES\r
+    !insertmacro MUI_UNPAGE_CONFIRM\r
+    !insertmacro MUI_UNPAGE_COMPONENTS\r
+    !insertmacro MUI_UNPAGE_INSTFILES\r
+    !insertmacro MUI_UNPAGE_FINISH\r
 \r
 ; Language files\r
-!insertmacro MUI_LANGUAGE "English"\r
+  !insertmacro MUI_LANGUAGE "English" # first language is the default language\r
+  !insertmacro MUI_LANGUAGE "French"\r
+  !insertmacro MUI_LANGUAGE "German"\r
+  !insertmacro MUI_LANGUAGE "Spanish"\r
+  !insertmacro MUI_LANGUAGE "SimpChinese"\r
+  !insertmacro MUI_LANGUAGE "TradChinese"\r
+  !insertmacro MUI_LANGUAGE "Japanese"\r
+  !insertmacro MUI_LANGUAGE "Korean"\r
+  !insertmacro MUI_LANGUAGE "Italian"\r
+  !insertmacro MUI_LANGUAGE "Dutch"\r
+  !insertmacro MUI_LANGUAGE "Danish"\r
+  !insertmacro MUI_LANGUAGE "Swedish"\r
+  !insertmacro MUI_LANGUAGE "Norwegian"\r
+  !insertmacro MUI_LANGUAGE "Finnish"\r
+  !insertmacro MUI_LANGUAGE "Greek"\r
+  !insertmacro MUI_LANGUAGE "Russian"\r
+  !insertmacro MUI_LANGUAGE "Portuguese"\r
+  !insertmacro MUI_LANGUAGE "Arabic"\r
+\r
+!insertmacro MUI_RESERVEFILE_LANGDLL\r
 \r
 ; Reserve files\r
-!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
+  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS\r
 \r
 ; MUI end ------\r
 \r
+;;;;;;;;;;;;;;;;;;;\r
+; Extension lists ;\r
+;;;;;;;;;;;;;;;;;;;\r
 \r
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
-; Push extensions on stack ;\r
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r
 !macro MacroAudioExtensions _action\r
   !insertmacro ${_action} ".a52"\r
   !insertmacro ${_action} ".aac"\r
@@ -162,6 +194,7 @@ FunctionEnd
 \r
 !macro RegisterExtensionSection EXT\r
   Section /o ${EXT}\r
+    SectionIn 2 3\r
     Push $R0\r
     StrCpy $R0 ${EXT}\r
     Call RegisterExtension\r
@@ -186,7 +219,7 @@ FunctionEnd
 \r
 !macro AddContextMenu EXT\r
   WriteRegStr HKCR ${EXT}\shell\PlayWithVLC "" "Play with VLC media player"\r
-  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe "%1"'\r
+  WriteRegStr HKCR ${EXT}\shell\PlayWithVLC\command "" '$INSTDIR\vlc.exe --no-playlist-enqueue "%1"'\r
 \r
   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC "" "Add to VLC media player's Playlist"\r
   WriteRegStr HKCR ${EXT}\shell\AddToPlaylistVLC\command "" '$INSTDIR\vlc.exe --one-instance --playlist-enqueue "%1"'\r
@@ -197,6 +230,30 @@ FunctionEnd
   DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC\r
 !macroend\r
 \r
+;;;;;;;;;;;;;;;;;;;;;;;;;;\r
+; Delete prefs and cache ;\r
+;;;;;;;;;;;;;;;;;;;;;;;;;;\r
+\r
+!macro delprefs\r
+  SectionIn 2 3\r
+  StrCpy $0 0\r
+  !define Index 'Line${__LINE__}'\r
+  "${Index}-Loop:"\r
+  ; FIXME\r
+  ; this will loop through all the logged users and "virtual" windows users\r
+  ; (it looks like users are only present in HKEY_USERS when they are logged in)\r
+    ClearErrors\r
+    EnumRegKey $1 HKU "" $0\r
+    StrCmp $1 "" "${Index}-End"\r
+    IntOp $0 $0 + 1\r
+    ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData\r
+    StrCmp $2 "" "${Index}-Loop"\r
+    RMDir /r "$2\vlc"\r
+    Goto "${Index}-Loop"\r
+  "${Index}-End:"\r
+  !undef Index\r
+!macroend\r
+\r
 ;;;;;;;;;;;;;;;;;;;;;;\r
 ; Installer sections ;\r
 ;;;;;;;;;;;;;;;;;;;;;;\r
@@ -212,6 +269,7 @@ Section "Media player (required)" SEC01
 \r
   File  /r plugins\r
   File  /r locale\r
+  File  /r osdmenu\r
   File  /r skins\r
   File  /r http\r
 \r
@@ -246,7 +304,7 @@ Section "Media player (required)" SEC01
   WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie"\r
   WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Play"\r
   WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \\r
-    '$INSTDIR\vlc.exe dvd:%1@1:0'\r
+    '$INSTDIR\vlc.exe dvd:%1'\r
   WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0'\r
   WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio"\r
   WriteRegStr HKCR "VLC.CDAudio\shell" "" "Play"\r
@@ -256,19 +314,17 @@ Section "Media player (required)" SEC01
 \r
 SectionEnd\r
 \r
-Section "Start Menu + Desktop Shortcut" SEC02\r
+Section "Start Menu Shortcut" SEC02a\r
   SectionIn 1 2 3\r
   CreateDirectory "$SMPROGRAMS\VideoLAN"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \\r
-    "$INSTDIR\vlc.exe" "--intf wxwin --wxwin-embed"\r
+    "$INSTDIR\vlc.exe" "--intf wx --wx-embed"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (alt).lnk" \\r
-    "$INSTDIR\vlc.exe" "--intf wxwin --no-wxwin-embed"\r
+    "$INSTDIR\vlc.exe" "--intf wx --no-wx-embed"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \\r
     "$INSTDIR\vlc.exe" "--intf skins"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC defaults and quit.lnk" \\r
     "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit "\r
-  CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
-    "$INSTDIR\vlc.exe" "--intf wxwin"\r
   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \\r
     "${PRODUCT_WEB_SITE}"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_NAME} Website.lnk" \\r
@@ -279,6 +335,12 @@ Section "Start Menu + Desktop Shortcut" SEC02
     "$INSTDIR\Documentation.url"\r
 SectionEnd\r
 \r
+Section "Desktop Shortcut" SEC02b\r
+  SectionIn 1 2 3\r
+  CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
+    "$INSTDIR\vlc.exe" "--intf wx"\r
+SectionEnd\r
+\r
 Section /o "Mozilla plugin" SEC03\r
   SectionIn 2 3\r
   File /r mozilla\r
@@ -327,6 +389,7 @@ SectionEnd
 Section "Context Menus" SEC05\r
   SectionIn 1 2 3\r
   !insertmacro MacroAllExtensions AddContextMenu\r
+  !insertmacro AddContextMenu "Folder"\r
 SectionEnd\r
 \r
 SectionGroup "File type associations" SEC06\r
@@ -341,6 +404,48 @@ SectionGroup "File type associations" SEC06
   SectionGroupEnd\r
 SectionGroupEnd\r
 \r
+Section /o "Delete preferences and cache" SEC07\r
+  !insertmacro delprefs\r
+SectionEnd\r
+\r
+; Installer section descriptions\r
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
+    "The media player itself"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \\r
+    "Adds icons to your start menu for easy access"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \\r
+    "Adds icon to your desktop for easy access"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
+    "The VLC Mozilla and Mozilla Firefox plugin"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
+    "The VLC ActiveX plugin"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \\r
+    "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \\r
+    "Sets VLC media player as the default application for the specified file type"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \\r
+    "Deletes VLC media player preferences and cache files leftover from previous installations"\r
+!insertmacro MUI_FUNCTION_DESCRIPTION_END\r
+\r
+Function .onInit\r
+  ReadRegStr $R0  ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \\r
+  "UninstallString"\r
+  StrCmp $R0 "" done\r
\r
+  MessageBox MB_YESNO|MB_ICONEXCLAMATION \\r
+  "VLC media player has already been installed. $\nDo you want to remove \\r
+  the previous version before installing $(^Name) ?" \\r
+  IDNO done\r
+  \r
+  ;Run the uninstaller\r
+  ;uninst:\r
+    ClearErrors\r
+    ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file\r
+  done:\r
+  !insertmacro MUI_LANGDLL_DISPLAY\r
+FunctionEnd\r
+\r
 Section -Post\r
   WriteUninstaller "$INSTDIR\uninstall.exe"\r
   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR\r
@@ -361,40 +466,17 @@ Section -Post
     "Publisher" "${PRODUCT_PUBLISHER}"\r
 SectionEnd\r
 \r
-; Section descriptions\r
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \\r
-    "The media player itself"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} \\r
-    "Adds icons to your start menu and your desktop for easy access"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \\r
-    "The VLC Mozilla and Mozilla Firefox plugin"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \\r
-    "The VLC ActiveX plugin"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} \\r
-    "Add context menu items (Play With VLC and Add To VLC's Playlist)"\r
-  !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \\r
-    "Sets VLC media player as the default application for the specified file type"\r
-!insertmacro MUI_FUNCTION_DESCRIPTION_END\r
-\r
-\r
-Function un.onUninstSuccess\r
-  HideWindow\r
-  MessageBox MB_ICONINFORMATION|MB_OK \\r
-    "$(^Name) was successfully removed from your computer."\r
-FunctionEnd\r
-\r
-Function un.onInit\r
-  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 \\r
-    "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2\r
-  Abort\r
-FunctionEnd\r
+;;;;;;;;;;;;;;;;;;;;;;;;\r
+; Uninstaller sections ;\r
+;;;;;;;;;;;;;;;;;;;;;;;;\r
 \r
-Section Uninstall\r
+Section "Uninstall" SEC91\r
+  SectionIn 1 2 3 RO\r
   SetShellVarContext all\r
 \r
   !insertmacro MacroAllExtensions DeleteContextMenu\r
   !insertmacro MacroAllExtensions UnRegisterExtensionSection\r
+  !insertmacro DeleteContextMenu "Folder"\r
 \r
   UnRegDLL "$INSTDIR\axvlc.dll"\r
   Delete /REBOOTOK "$INSTDIR\axvlc.dll"\r
@@ -438,10 +520,10 @@ Section Uninstall
   DeleteRegKey HKCR "VLC.MediaFile"\r
 \r
   DeleteRegKey HKLM \\r
-    SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}\r
+    "SOFTWARE\MozillaPlugins\@videolan.org/vlc,version=${VERSION}"\r
 \r
   DeleteRegKey HKLM \\r
-    Software\Microsoft\Windows\CurrentVersion\Uninstall\VideoLAN\r
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"\r
 \r
   Delete "$DESKTOP\VLC media player.lnk"\r
 \r
@@ -449,3 +531,25 @@ Section Uninstall
   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"\r
   SetAutoClose true\r
 SectionEnd\r
+\r
+Section /o "un.Delete preferences and cache" SEC92\r
+  !insertmacro delprefs\r
+SectionEnd\r
+\r
+; Uninstaller section descriptions\r
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \\r
+    "Uninstall VLC media player and all its components"\r
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \\r
+    "Deletes VLC media player preferences and cache files"\r
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END\r
+\r
+;Function un.onUninstSuccess\r
+;  HideWindow\r
+;  MessageBox MB_ICONINFORMATION|MB_OK \\r
+;    "$(^Name) was successfully removed from your computer."\r
+;FunctionEnd\r
+\r
+Function un.onInit\r
+  !insertmacro MUI_LANGDLL_DISPLAY\r
+FunctionEnd\r