!define PRODUCT_NAME "Winamp Language Packs" !define PRODUCT_VERSION "v1.7" ;!define PRODUCT_SUB_VERSION "1177" !define WINAMP "Winamp" !define MUI_COMPONENTSPAGE_SMALLDESC "Select which Language Packs to install" !define MUI_FINISHPAGE_RUN_TEXT "Run Winamp" !define /date MyTIMESTAMP "%Y/%m/%d at %H:%M:%S" !define Minimal_Version "5.9" !define UNINSTALLER "Uninstall_Winamp_Lang_Packs.exe" !define UNINSTALL "Winamp Language Packs" ;Set Compression SetCompress force SetCompressor /solid lzma ; MUI 2.0 compatible ------ !include "MUI2.nsh" !include "sections.nsh" !include "LogicLib.nsh" !include "WordFunc.nsh" !include "WinVer.nsh" XPStyle on BrandingText "${PRODUCT_NAME} -- built on ${MyTIMESTAMP}" ; detect winamp path from uninstall string if available InstallDirRegKey HKLM \ "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \ "UninstallString" ;Request Administrator Privileges RequestExecutionLevel admin ; MUI Settings !define MUI_ABORTWARNING !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "graphics\wabanner.bmp" !define MUI_HEADERTEXT !define MUI_ICON "graphics\install.ico" !define MUI_UNICON "graphics\uninstall.ico" !define MUI_WELCOMEFINISHPAGE_BITMAP "graphics\welcome55.bmp" ;Run Custom Function On Start For Winamp Checks !define MUI_CUSTOMFUNCTION_GUIINIT My_GUIInit ;Version information for Windows Explorer VIProductVersion "1.7.0.0" VIAddVersionKey "ProductName" "${PRODUCT_NAME} ${PRODUCT_VERSION}" VIAddVersionKey "Comments" "Winamp Language Packs Installer" VIAddVersionKey "LegalCopyright" "" VIAddVersionKey "Company" "Winamp SA" VIAddVersionKey "FileDescription" "${PRODUCT_NAME} ${PRODUCT_VERSION} Installer" VIAddVersionKey "FileVersion" "1.7.0.0" ; Welcome page !define MUI_WELCOMEPAGE_TITLE "${PRODUCT_NAME}" !define MUI_WELCOMEPAGE_TEXT "This package contains the following Language Packs:$\r$\n \ • Dutch (Nederlands)$\r$\n \ • French (Français)$\r$\n \ • German (Deutsch)$\r$\n \ • Hungarian (Magyar)$\r$\n \ • Italian$\r$\n \ • Indonesian (id-id)$\r$\n \ • Japanese (ja-jp)$\r$\n \ • Portuguese (pt-br)$\r$\n \ • Romanian (ro-ro)$\r$\n \ • Russian (Русский)$\r$\n \ • Spanish (es-us)$\r$\n \ • Swedish (sv-se)$\r$\n \ • Turkish (Türkçe)$\r$\n \ • Czech (cz-cz)$\r$\n \ • Korean (ko-kr)$\r$\n \ • Chinese (zh-cn | zh-tw)$\r$\n" !insertmacro MUI_PAGE_WELCOME ; Directory page !define MUI_TEXT_DIRECTORY_TITLE "${PRODUCT_NAME}" !define MUI_TEXT_DIRECTORY_SUBTITLE "Choose Folder" DirText "Please select your Winamp path below; the installer will usually detect your Winamp installation path automatically (you will be able to proceed when Winamp is detected):" !insertmacro MUI_PAGE_DIRECTORY ; Instfiles components !define MUI_TEXT_COMPONENTS_TITLE "${PRODUCT_NAME}" !define MUI_TEXT_COMPONENTS_SUBTITLE "Choose Components" !define MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE "Available Language Packs" !define MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO "Expand to deselect individual language packs" !insertmacro MUI_PAGE_COMPONENTS ; Instfiles page !define MUI_TEXT_INSTALLING_TITLE "${PRODUCT_NAME}" !define MUI_TEXT_INSTALLING_SUBTITLE "Installing..." !insertmacro MUI_PAGE_INSTFILES ; Finish page !define MUI_TEXT_FINISH_TITLE "${PRODUCT_NAME}" !define MUI_TEXT_FINISH_SUBTITLE "Done" !define MUI_FINISHPAGE_RUN "$INSTDIR\winamp.exe" !insertmacro MUI_PAGE_FINISH ; Uninstaller !define MUI_UNWELCOMEFINISHPAGE_BITMAP "graphics\welcome55.bmp" !define MUI_UNWELCOMEPAGE_TEXT "This wizard will guide you through the uninstallation of ${PRODUCT_NAME}.$\n$\nBefore starting the uninstallation, make sure $WINAMP is not running.$\n$\nClick Next to continue." !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !define MUI_UNFINISHPAGE_TEXT "${PRODUCT_NAME} has been uninstalled from your $WINAMP installation.$\n$\nClick Finish to close this wizard." !insertmacro MUI_UNPAGE_FINISH ; Language files !insertmacro MUI_LANGUAGE "English" ; MUI end ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "Winamp_Language_Packs_v1.7.exe" InstallDir "$PROGRAMFILES\Winamp\" ShowInstDetails hide ; Page components SectionGroup "Winamp Language Packs" SEC01 Section "German (Deutsch)" SEC011 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-de-de.wlz" SectionEnd Section "Dutch (Nederlands)" SEC012 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-nl-nl.wlz" SectionEnd Section "French (Français)" SEC013 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-fr-fr.wlz" SectionEnd Section "Hungarian (Magyar)" SEC014 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-hu-hu.wlz" SectionEnd Section "Italian (it-it)" SEC015 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-it-it.wlz" SectionEnd Section "Japanese (ja-jp)" SEC016 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-ja-jp.wlz" SectionEnd Section "Korean (ko-kr)" SEC017 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-ko-kr.wlz" SectionEnd ;Section "Polish (Polski)" SEC018 ;SetOutPath "$INSTDIR\Lang" ;SetOverwrite on ;File "..\..\resources\languages\Winamp-pl-pl.wlz" ;SectionEnd Section "Portuguese (pt-br)" SEC019 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-pt-br.wlz" SectionEnd Section "Romanian (ro-ro)" SEC0110 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-ro-ro.wlz" SectionEnd Section "Russian (Русский)" SEC0111 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-ru-ru.wlz" SectionEnd Section "Spanish (es-us)" SEC0112 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-es-us.wlz" SectionEnd Section "Swedish (sv-se)" SEC0113 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-sv-se.wlz" SectionEnd Section "Turkish (Türkçe)" SEC0114 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-tr-tr.wlz" SectionEnd Section "Czech (cz-cz)" SEC0118 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-cz-cz.wlz" SectionEnd Section "Indonesian (id-id)" SEC0115 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-id-id.wlz" SectionEnd Section "Chinese (zh-cn)" SEC0116 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-zh-cn.wlz" SectionEnd Section "Chinese/Taiwanese (zh-tw)" SEC0117 SetOutPath "$INSTDIR\Lang" SetOverwrite on File "..\..\resources\languages\Winamp-zh-tw.wlz" SectionEnd SectionGroupEnd Section ; Write the uninstall keys for Windows WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "DisplayName" "Winamp Language Packs" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "UninstallString" "$\"$INSTDIR\${UNINSTALLER}$\"" WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "NoRepair" 1 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "Publisher" "Winamp SA" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "HelpLink" "http://forums.winamp.com/forumdisplay.php?f=169" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "InstallLocation" "$INSTDIR\Lang" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "DisplayVersion" "${PRODUCT_VERSION}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "URLInfoAbout" "http://forums.winamp.com/forumdisplay.php?f=8" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "URLUpdateInfo" "https://www.winamp.com" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "DisplayIcon" "$\"$INSTDIR\${UNINSTALLER}$\"" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "QuietUninstallString" "$\"$INSTDIR\${UNINSTALLER}$\" /S" ; Call GetInstalledSize ; WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" "EstimatedSize" "$GetInstalledSize.total" WriteUninstaller "$INSTDIR\${UNINSTALLER}" SectionEnd Section "Uninstall" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINSTALL}" Delete "$INSTDIR\Lang\Winamp-de-de.wlz" Delete "$INSTDIR\Lang\Winamp-es-us.wlz" Delete "$INSTDIR\Lang\Winamp-it-it.wlz" Delete "$INSTDIR\Lang\Winamp-hu-hu.wlz" Delete "$INSTDIR\Lang\Winamp-id-id.wlz" Delete "$INSTDIR\Lang\Winamp-cz-cz.wlz" Delete "$INSTDIR\Lang\Winamp-ru-ru.wlz" Delete "$INSTDIR\Lang\Winamp-ro-ro.wlz" Delete "$INSTDIR\Lang\Winamp-fr-fr.wlz" Delete "$INSTDIR\Lang\Winamp-pt-br.wlz" Delete "$INSTDIR\Lang\Winamp-ja-jp.wlz" Delete "$INSTDIR\Lang\Winamp-sv-se.wlz" Delete "$INSTDIR\Lang\Winamp-zh-cn.wlz" Delete "$INSTDIR\Lang\Winamp-ko-kr.wlz" Delete "$INSTDIR\Lang\Winamp-zh-tw.wlz" Delete "$INSTDIR\Lang\Winamp-nl-nl.wlz" Delete "$INSTDIR\Lang\Winamp-tr-tr.wlz" ;Delete "$INSTDIR\Lang\Winamp-pl-pl.wlz" Delete "$INSTDIR\${UNINSTALLER}" SectionEnd Function GetFileVersion !define GetFileVersion `!insertmacro GetFileVersionCall` !macro GetFileVersionCall _FILE _RESULT Push `${_FILE}` Call GetFileVersion Pop ${_RESULT} !macroend Exch $0 Push $1 Push $2 Push $3 Push $4 Push $5 Push $6 ClearErrors GetDllVersion '$0' $1 $2 IfErrors error IntOp $3 $1 / 0x00010000 IntOp $4 $1 & 0x0000FFFF IntOp $5 $2 / 0x00010000 IntOp $6 $2 & 0x0000FFFF StrCpy $0 '$3.$4.$5.$6' goto end error: SetErrors StrCpy $0 '' end: Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd Function CheckWinampVersion ${GetFileVersion} "$INSTDIR\winamp.exe" $R0 ; Get Winamp.exe version information, $R0 = Actual Version ${if} $R0 != "" ; check if Version info is not empty ${VersionCompare} $R0 ${Minimal_Version} $R1 ; $R1 = Result $R1=0 Versions are equal, $R1=1 Version1 is newer, $R1=2 Version2 is newer ${if} $R1 = "2" MessageBox MB_OK "Winamp Language Packs require at least Winamp ${Minimal_Version} or above.$\r$\nPlease update your Winamp version before you can install this update.$\r$\nInstallation will now be aborted." Quit ${EndIf} ${Else} MessageBox MB_OK "Winamp wasn't detected on this system.$\r$\nPlease install the latest Winamp version from Winamp.com$\r$\nbefore you can install this update.$\r$\nInstallation will now be aborted." ; version info is empty, something goes wrong. Display message and exit Quit ${EndIf} FunctionEnd Function CheckWinampInstallation ;MessageBox MB_OK "$INSTDIR\winamp.exe" ${If} ${FileExists} "$INSTDIR\winamp.exe" ;check if Winamp.exe exists ; ${Else} MessageBox MB_OK "Winamp wasn't detected on this system.$\r$\nPlease install the latest Winamp version from Winamp.com$\r$\nbefore you can install this plugin update.$\r$\nInstallation will now be aborted." ;no winamp.exe Quit ${EndIf} FunctionEnd ;Detect WindowsVersion and running Winamp instances Function .onInit ; check windows version ${If} ${IsWin95} ${OrIf} ${IsWinNT4} ${OrIf} ${IsWin98} ${OrIf} ${IsWinME} ${OrIf} ${IsWin2000} ${OrIf} ${IsWinXP} MessageBox MB_OK|MB_ICONEXCLAMATION "Windows version too old!$\r$\nThis update will not run on Windows 9x/NT4/ME/2k/XP.$\r$\nInstallation will now be aborted." Quit ${EndIf} /* ${If} ${IsWinXP} ${OrIf} ${IsWin2003} MessageBox MB_OK|MB_ICONEXCLAMATION "This update is not recommended for Windows XP.$\r$\n$\r$\nInstallation will now be aborted." Quit ${EndIf} */ !define WINAMP_FILE_EXIT 40001 !ifdef INTERCEPT_MULTIPLE_INSTANCES System::Call 'kernel32::CreateMutexA(i 0, i 0, t "WinampMbApiSetup") i .r1 ?e' Pop $R0 StrCmp $R0 0 noprevinst ReadRegStr $R0 HKCU "${PLUGIN_INSTREGKEY}" "WindowHandle" System::Call 'user32::SetForegroundWindow(i $R0) i ?e' Abort noprevinst: !endif FindWindow $R0 "Winamp v1.x" IntCmp $R0 0 ok MessageBox MB_YESNO|MB_ICONEXCLAMATION "Please close all instances of Winamp before installing this update!$\r$\n\ Close Winamp now?" IDYES checkagain IDNO no checkagain: FindWindow $R0 "Winamp v1.x" IntCmp $R0 0 ok SendMessage $R0 ${WM_COMMAND} ${WINAMP_FILE_EXIT} 0 Goto checkagain no: ; quit installer ok: FunctionEnd Function My_GUIInit Call CheckWinampInstallation Call CheckWinampVersion FunctionEnd