X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=vlc.win32.nsi;h=ee859c242b1b5dc8c9e30b28594d89eb921c753f;hb=563dc100dbe2c567e70d6a0d6cb1cc3f58649419;hp=3f8b59be8e8c8154a52b1de601b1d526ba748ac9;hpb=ba08aac52620e973ce063517fa6a359388faafd2;p=vlc diff --git a/vlc.win32.nsi b/vlc.win32.nsi index 3f8b59be8e..ee859c242b 100644 --- a/vlc.win32.nsi +++ b/vlc.win32.nsi @@ -21,7 +21,11 @@ Name "${PRODUCT_GROUP} ${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile ..\vlc-${VERSION}-win32.exe InstallDir "$PROGRAMFILES\VideoLAN\VLC" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "Install_Dir" +!ifdef NSIS_LZMA_COMPRESS_WHOLE +SetCompressor lzma +!else SetCompressor /SOLID lzma +!endif ;ShowInstDetails show ;ShowUnInstDetails show SetOverwrite ifnewer @@ -35,38 +39,40 @@ InstType "Full" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MUI 1.67 compatible ------ -!include "MUI.nsh" + !include "MUI.nsh" ; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "vlc48x48new.ico" -!define MUI_UNICON "vlc48x48new.ico" -!define MUI_COMPONENTSPAGE_SMALLDESC - -; Welcome page -!define MUI_WELCOMEPAGE_TITLE_3LINES -!insertmacro MUI_PAGE_WELCOME -; License page -!insertmacro MUI_PAGE_LICENSE "COPYING.txt" -; Components page -!insertmacro MUI_PAGE_COMPONENTS -; Directory page -!insertmacro MUI_PAGE_DIRECTORY -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES -; Finish page -!define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe" -!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\NEWS.txt" -!define MUI_FINISHPAGE_SHOWREADME_TEXT "View changelog" -!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED -!define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website" -!define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!insertmacro MUI_PAGE_FINISH + !define MUI_ABORTWARNING + !define MUI_ICON "vlc48x48new.ico" + !define MUI_UNICON "vlc48x48new.ico" + !define MUI_COMPONENTSPAGE_SMALLDESC + +; Installer pages + ; Welcome page + !define MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro MUI_PAGE_WELCOME + ; License page + !insertmacro MUI_PAGE_LICENSE "COPYING.txt" + ; Components page + !insertmacro MUI_PAGE_COMPONENTS + ; Directory page + !insertmacro MUI_PAGE_DIRECTORY + ; Instfiles page + !insertmacro MUI_PAGE_INSTFILES + ; Finish page + !define MUI_FINISHPAGE_RUN "$INSTDIR\vlc.exe" + !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt" + !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + !define MUI_FINISHPAGE_LINK "Visit the VideoLAN VLC media player Website" + !define MUI_FINISHPAGE_LINK_LOCATION "http://www.videolan.org/vlc/" + !define MUI_FINISHPAGE_NOREBOOTSUPPORT + !insertmacro MUI_PAGE_FINISH ; Uninstaller pages -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_COMPONENTS + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH ; Language files !insertmacro MUI_LANGUAGE "English" # first language is the default language @@ -91,13 +97,14 @@ InstType "Full" !insertmacro MUI_RESERVEFILE_LANGDLL ; Reserve files -!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Push extensions on stack ; -;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;; +; Extension lists ; +;;;;;;;;;;;;;;;;;;; + !macro MacroAudioExtensions _action !insertmacro ${_action} ".a52" !insertmacro ${_action} ".aac" @@ -223,6 +230,30 @@ FunctionEnd DeleteRegKey HKCR ${EXT}\shell\AddToPlaylistVLC !macroend +;;;;;;;;;;;;;;;;;;;;;;;;;; +; Delete prefs and cache ; +;;;;;;;;;;;;;;;;;;;;;;;;;; + +!macro delprefs + SectionIn 2 3 + StrCpy $0 0 + !define Index 'Line${__LINE__}' + "${Index}-Loop:" + ; FIXME + ; this will loop through all the logged users and "virtual" windows users + ; (it looks like users are only present in HKEY_USERS when they are logged in) + ClearErrors + EnumRegKey $1 HKU "" $0 + StrCmp $1 "" "${Index}-End" + IntOp $0 $0 + 1 + ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData + StrCmp $2 "" "${Index}-Loop" + RMDir /r "$2\vlc" + Goto "${Index}-Loop" + "${Index}-End:" + !undef Index +!macroend + ;;;;;;;;;;;;;;;;;;;;;; ; Installer sections ; ;;;;;;;;;;;;;;;;;;;;;; @@ -238,6 +269,7 @@ Section "Media player (required)" SEC01 File /r plugins File /r locale + File /r osdmenu File /r skins File /r http @@ -272,7 +304,7 @@ Section "Media player (required)" SEC01 WriteRegStr HKCR "VLC.DVDMovie" "" "VLC DVD Movie" WriteRegStr HKCR "VLC.DVDMovie\shell" "" "Play" WriteRegStr HKCR "VLC.DVDMovie\shell\Play\command" "" \ - '$INSTDIR\vlc.exe dvd:%1@1:0' + '$INSTDIR\vlc.exe dvd:%1' WriteRegStr HKCR "VLC.DVDMovie\DefaultIcon" "" '"$INSTDIR\vlc.exe",0' WriteRegStr HKCR "VLC.CDAudio" "" "VLC CD Audio" WriteRegStr HKCR "VLC.CDAudio\shell" "" "Play" @@ -282,19 +314,17 @@ Section "Media player (required)" SEC01 SectionEnd -Section "Start Menu + Desktop Shortcut" SEC02 +Section "Start Menu Shortcut" SEC02a SectionIn 1 2 3 CreateDirectory "$SMPROGRAMS\VideoLAN" CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" \ - "$INSTDIR\vlc.exe" "--intf wxwin --wxwin-embed" + "$INSTDIR\vlc.exe" "--intf wx --wx-embed" CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (alt).lnk" \ - "$INSTDIR\vlc.exe" "--intf wxwin --no-wxwin-embed" + "$INSTDIR\vlc.exe" "--intf wx --no-wx-embed" CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \ "$INSTDIR\vlc.exe" "--intf skins" CreateShortCut "$SMPROGRAMS\VideoLAN\Reset VLC defaults and quit.lnk" \ "$INSTDIR\vlc.exe" "--reset-config --reset-plugins-cache --save-config vlc:quit " - CreateShortCut "$DESKTOP\VLC media player.lnk" \ - "$INSTDIR\vlc.exe" "--intf wxwin" WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \ "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\VideoLAN\${PRODUCT_NAME} Website.lnk" \ @@ -305,6 +335,12 @@ Section "Start Menu + Desktop Shortcut" SEC02 "$INSTDIR\Documentation.url" SectionEnd +Section "Desktop Shortcut" SEC02b + SectionIn 1 2 3 + CreateShortCut "$DESKTOP\VLC media player.lnk" \ + "$INSTDIR\vlc.exe" "--intf wx" +SectionEnd + Section /o "Mozilla plugin" SEC03 SectionIn 2 3 File /r mozilla @@ -368,32 +404,18 @@ SectionGroup "File type associations" SEC06 SectionGroupEnd SectionGroupEnd -Section -Post - WriteUninstaller "$INSTDIR\uninstall.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe" - - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "DisplayIcon" "$INSTDIR\vlc.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ - "Publisher" "${PRODUCT_PUBLISHER}" +Section /o "Delete preferences and cache" SEC07 + !insertmacro delprefs SectionEnd -; Section descriptions +; Installer section descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} \ "The media player itself" - !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} \ - "Adds icons to your start menu and your desktop for easy access" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02a} \ + "Adds icons to your start menu for easy access" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02b} \ + "Adds icon to your desktop for easy access" !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} \ "The VLC Mozilla and Mozilla Firefox plugin" !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} \ @@ -402,6 +424,8 @@ SectionEnd "Add context menu items ('Play With VLC' and 'Add To VLC's Playlist')" !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \ "Sets VLC media player as the default application for the specified file type" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \ + "Deletes VLC media player preferences and cache files leftover from previous installations" !insertmacro MUI_FUNCTION_DESCRIPTION_END Function .onInit @@ -422,17 +446,32 @@ Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK \ - "$(^Name) was successfully removed from your computer." -FunctionEnd +Section -Post + WriteUninstaller "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${VERSION}" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\vlc.exe" -Function un.onInit - !insertmacro MUI_LANGDLL_DISPLAY -FunctionEnd + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "DisplayIcon" "$INSTDIR\vlc.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" \ + "Publisher" "${PRODUCT_PUBLISHER}" +SectionEnd -Section Uninstall +;;;;;;;;;;;;;;;;;;;;;;;; +; Uninstaller sections ; +;;;;;;;;;;;;;;;;;;;;;;;; + +Section "Uninstall" SEC91 + SectionIn 1 2 3 RO SetShellVarContext all !insertmacro MacroAllExtensions DeleteContextMenu @@ -492,3 +531,25 @@ Section Uninstall DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd + +Section /o "un.Delete preferences and cache" SEC92 + !insertmacro delprefs +SectionEnd + +; Uninstaller section descriptions +!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC91} \ + "Uninstall VLC media player and all its components" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC92} \ + "Deletes VLC media player preferences and cache files" +!insertmacro MUI_UNFUNCTION_DESCRIPTION_END + +;Function un.onUninstSuccess +; HideWindow +; MessageBox MB_ICONINFORMATION|MB_OK \ +; "$(^Name) was successfully removed from your computer." +;FunctionEnd + +Function un.onInit + !insertmacro MUI_LANGDLL_DISPLAY +FunctionEnd