⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vlc.win32.nsi.in

📁 VLC Player Source Code
💻 IN
📖 第 1 页 / 共 2 页
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NSIS installer script for vlc ;; (http://nsis.sourceforge.net) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!include "languages\declaration.nsh"!define PRODUCT_NAME "VLC media player"!define VERSION @VERSION@!define PRODUCT_VERSION @VERSION@!define PRODUCT_GROUP "VideoLAN"!define PRODUCT_PUBLISHER "VideoLAN Team"!define PRODUCT_WEB_SITE "http://www.videolan.org"!define PRODUCT_DIR_REGKEY "Software\VideoLAN\VLC"!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"!define PRODUCT_UNINST_ROOT_KEY "HKLM"!define PRODUCT_ID "{ea92ef52-afe4-4212-bacb-dfe9fca94cd6}"!define MUI_LANGDLL_REGISTRY_ROOT "HKLM"!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_DIR_REGKEY}"!define MUI_LANGDLL_REGISTRY_VALUENAME "Language"@FILE_LIBVLCCORE_DLL@@FILE_LIBVLC_DLL@;;;;;;;;;;;;;;;;;;;;;;;;;; General configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"OutFile ..\vlc-${VERSION}-win32.exeInstallDir "$PROGRAMFILES\VideoLAN\VLC"InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""!ifdef NSIS_LZMA_COMPRESS_WHOLESetCompressor lzma!elseSetCompressor /SOLID lzma!endif;ShowInstDetails show;ShowUnInstDetails showSetOverwrite ifnewerCRCCheck onBrandingText "${PRODUCT_GROUP} ${PRODUCT_NAME}"InstType $Name_InstTypeRecommendedInstType $Name_InstTypeMinimumInstType $Name_InstTypeFull;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NSIS Modern User Interface configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MUI 1.67 compatible ------  !include "MUI.nsh"; MUI Settings  !define MUI_ABORTWARNING  !define MUI_ICON "vlc48x48.ico"  !define MUI_UNICON "vlc48x48.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 $Link_VisitWebsite    !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_COMPONENTS    !insertmacro MUI_UNPAGE_INSTFILES    !insertmacro MUI_UNPAGE_FINISH; Language files  !insertmacro MUI_LANGUAGE "English" # first language is the default language  !insertmacro MUI_LANGUAGE "French"  !insertmacro MUI_LANGUAGE "German"  !insertmacro MUI_LANGUAGE "Spanish"  !insertmacro MUI_LANGUAGE "SimpChinese"  !insertmacro MUI_LANGUAGE "TradChinese"  !insertmacro MUI_LANGUAGE "Japanese"  !insertmacro MUI_LANGUAGE "Korean"  !insertmacro MUI_LANGUAGE "Italian"  !insertmacro MUI_LANGUAGE "Dutch"  !insertmacro MUI_LANGUAGE "Danish"  !insertmacro MUI_LANGUAGE "Swedish"  !insertmacro MUI_LANGUAGE "Norwegian"  !insertmacro MUI_LANGUAGE "Finnish"  !insertmacro MUI_LANGUAGE "Greek"  !insertmacro MUI_LANGUAGE "Russian"  !insertmacro MUI_LANGUAGE "Portuguese"  !insertmacro MUI_LANGUAGE "Arabic"  !insertmacro MUI_LANGUAGE "Polish"  !insertmacro MUI_LANGUAGE "Romanian"  !insertmacro MUI_LANGUAGE "Slovak"  !insertmacro MUI_LANGUAGE "Czech"; Reserve files for solid compression  !insertmacro MUI_RESERVEFILE_LANGDLL  !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS; MUI end ------;;;;;;;;;;;;;;;;;;;;;;;; Macro and Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1. File type associations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function that register one extension for VLCFunction 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" $1NoBackup:  WriteRegStr HKCR "$R0" "" "VLC$R0"  ReadRegStr $0 HKCR "VLC$R0" ""  WriteRegStr HKCR "VLC$R0" "" "VLC media file ($R0)"  WriteRegStr HKCR "VLC$R0\shell" "" "Play"  WriteRegStr HKCR "VLC$R0\shell\Play" "" $ShellAssociation_Play  WriteRegStr HKCR "VLC$R0\shell\Play\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'  WriteRegStr HKCR "VLC$R0\DefaultIcon" "" '"$INSTDIR\vlc.exe",0';;; Vista Only part  ; Vista detection  ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion  StrCpy $R2 $R1 3  StrCmp $R2 '6.0' ForVista ToEndForVista:  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 NoOwnRestore:      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 vistaFunctionEnd!macro RegisterExtensionSection EXT  Section ${EXT}    SectionIn 1 3    Push $R0    StrCpy $R0 ${EXT}    Call RegisterExtension    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} ".a52"  !insertmacro ${_action} ".aac"  !insertmacro ${_action} ".ac3"  !insertmacro ${_action} ".dts"  !insertmacro ${_action} ".flac"  !insertmacro ${_action} ".m4a"  !insertmacro ${_action} ".m4p"  !insertmacro ${_action} ".mka"  !insertmacro ${_action} ".mod"  !insertmacro ${_action} ".mp1"  !insertmacro ${_action} ".mp2"  !insertmacro ${_action} ".mp3"  !insertmacro ${_action} ".oma"  !insertmacro ${_action} ".ogg"  !insertmacro ${_action} ".spx"  !insertmacro ${_action} ".wav"  !insertmacro ${_action} ".wma"  !insertmacro ${_action} ".wma"  !insertmacro ${_action} ".xm"!macroend!macro MacroVideoExtensions _action  !insertmacro ${_action} ".asf"  !insertmacro ${_action} ".avi"  !insertmacro ${_action} ".divx"  !insertmacro ${_action} ".dv"  !insertmacro ${_action} ".flv"  !insertmacro ${_action} ".gxf"  !insertmacro ${_action} ".m1v"  !insertmacro ${_action} ".m2v"  !insertmacro ${_action} ".m2ts"  !insertmacro ${_action} ".m4v"  !insertmacro ${_action} ".mkv"  !insertmacro ${_action} ".mov"  !insertmacro ${_action} ".mp4"  !insertmacro ${_action} ".mpeg"  !insertmacro ${_action} ".mpeg1"  !insertmacro ${_action} ".mpeg2"  !insertmacro ${_action} ".mpeg4"  !insertmacro ${_action} ".mpg"  !insertmacro ${_action} ".mts"  !insertmacro ${_action} ".mxf"  !insertmacro ${_action} ".ogm"  !insertmacro ${_action} ".ts"  !insertmacro ${_action} ".vob"  !insertmacro ${_action} ".wmv"!macroend!macro MacroOtherExtensions _action  !insertmacro ${_action} ".asx"  !insertmacro ${_action} ".bin"  !insertmacro ${_action} ".cue"  !insertmacro ${_action} ".m3u"  !insertmacro ${_action} ".pls"  !insertmacro ${_action} ".vlc"  !insertmacro ${_action} ".xspf"!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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 3. Delete prefs and cache ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;!macro delprefs  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;;;;;;;;;;;;;;;; 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!macroendFunction 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 IndexFunctionEnd;;; End of Macros;;;;;;;;;;;;;;;;;;;;;;; Installer sections ;; The CORE of the    ;; installer          ;;;;;;;;;;;;;;;;;;;;;;;  Section $Name_Section01 SEC01  SectionIn 1 2 3 RO  SetShellVarContext all  SetOutPath "$INSTDIR"  !insertmacro OpenUninstallLog  ; VLC.exe, libvlc.dll  !insertmacro InstallFile vlc.exe  !insertmacro InstallFile vlc.exe.manifest  ; All dlls  !insertmacro InstallFile *.dll  ; Text files  !insertmacro InstallFile *.txt  ; Subfolders  !insertmacro InstallFolder plugins  !insertmacro InstallFolder locale  !insertmacro InstallFolder osdmenu  !insertmacro InstallFolder skins  !insertmacro InstallFolder http  !insertmacro InstallFolder lua  ; URLs  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" \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -