406 lines
26 KiB
Plaintext
406 lines
26 KiB
Plaintext
!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
|