mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-04 21:01:30 -05:00
440 lines
20 KiB
Text
440 lines
20 KiB
Text
|
; LICENSE
|
||
|
; -------
|
||
|
; Copyright 2005-2013 Nullsoft, Inc.
|
||
|
; All rights reserved.
|
||
|
;
|
||
|
; Redistribution and use in source and binary forms, with or without modification,
|
||
|
; are permitted provided that the following conditions are met:
|
||
|
;
|
||
|
; * Redistributions of source code must retain the above copyright notice,
|
||
|
; this list of conditions and the following disclaimer.
|
||
|
;
|
||
|
; * Redistributions in binary form must reproduce the above copyright notice,
|
||
|
; this list of conditions and the following disclaimer in the documentation
|
||
|
; and/or other materials provided with the distribution.
|
||
|
;
|
||
|
; * Neither the name of Nullsoft nor the names of its contributors may be used to
|
||
|
; endorse or promote products derived from this software without specific prior written permission.
|
||
|
;
|
||
|
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
||
|
; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||
|
; FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||
|
; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||
|
; IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||
|
; OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
|
||
|
; ----------------------------------------------------------------
|
||
|
; NOTE: this .nsi script was last built with 'makensis.exe'
|
||
|
; version 1.98. If you go to install it (unchanged) and get errors,
|
||
|
; try tracking down that older version, or try to figure out what
|
||
|
; has changed since then. You can get NSIS at:
|
||
|
;
|
||
|
; http://www.nullsoft.com/free/nsis/
|
||
|
;
|
||
|
; This installer will produce a single EXE file that, when run,
|
||
|
; will decompress and install your plugin and all of its data files
|
||
|
; to Winamp 2 or Winamp 3.
|
||
|
; ----------------------------------------------------------------
|
||
|
; MODIFYING THIS SCRIPT TO CREATE AN INSTALLER FOR YOUR OWN PLUGIN:
|
||
|
; ----------------------------------------------------------------
|
||
|
; 1) there are three sections below, each marked 'EDIT THIS SECTION
|
||
|
; [x/3]' where 'x' is the section number. These are the 3
|
||
|
; places where you need to make changes to customize this
|
||
|
; installer script for your particular plugin. Go to each
|
||
|
; and make the changes, reading the comments there for
|
||
|
; more information.
|
||
|
; 2) download NSIS from http://www.nullsoft.com/free/nsis/, if you
|
||
|
; haven't already.
|
||
|
; 3) run the command 'makensis.exe installer.nsi' to build
|
||
|
; the executable. (note: ignore the warning message about
|
||
|
; 'InstallRegKey' being used multiple times; this is necessary
|
||
|
; to determine whether Winamp 2 or 3 is a better candidate
|
||
|
; for the install.)
|
||
|
; ----------------------------------------------------------------
|
||
|
; WHAT THIS INSTALLER SCRIPT DOES:
|
||
|
; ----------------------------------------------------------------
|
||
|
; If Winamp 2 is installed, it will install your plugin to Winamp 2,
|
||
|
; in the directory Winamp\Plugins (or whatever is specified as the
|
||
|
; vis plugins path, in Winamp\winamp.ini). It will also select
|
||
|
; the plugin as the current plugin. (Note that Winamp must be
|
||
|
; closed to do this, so if it's open, the installer will ask the
|
||
|
; user to close it before proceeding.) At the end of a successful
|
||
|
; install, it asks if they'd like to run Winamp.
|
||
|
;
|
||
|
; If Winamp 2 is not present but Winamp 3 is, or if the user manually
|
||
|
; selects the Winamp 3 directory to install to, the plugin will be
|
||
|
; installed to Winamp 3 as a classic visualization plugin, to the
|
||
|
; directory Winamp3\Plugins. At install time, if ClassicVis is not
|
||
|
; installed, it will prompt the user to go download it. If they
|
||
|
; don't download it, it will tell them the installation failed.
|
||
|
; If they already had it, or after they presumably download it,
|
||
|
; the installer will briefly tell them how to select their new
|
||
|
; plugin and run it in Winamp 3, using ClassicVis. Finally, at
|
||
|
; the end of a successful install, it asks if they'd like to run
|
||
|
; Winamp 3.
|
||
|
; ----------------------------------------------------------------
|
||
|
|
||
|
|
||
|
|
||
|
; -------------------- EDIT THIS SECTION [1/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [1/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [1/3] --------------------
|
||
|
|
||
|
!define PLUGIN_NAME "MilkDrop 2" ; Brief name of the component. Can have spaces in it.
|
||
|
!define INSTALL_CAPTION "MilkDrop 2.2 Setup" ; Caption for the installer dialog
|
||
|
!define PLUGIN_DLL "vis_milk2.dll" ; The filename of the actual plugin
|
||
|
!define PLUGIN_OUTFILE "milkdrop_2.exe" ; Name of the installer to create
|
||
|
|
||
|
; ----------------------- END SECTION [1/3] -----------------------
|
||
|
; ----------------------- END SECTION [1/3] -----------------------
|
||
|
; ----------------------- END SECTION [1/3] -----------------------
|
||
|
|
||
|
; ----------------------------------------------------------------
|
||
|
Name ${PLUGIN_NAME}
|
||
|
Caption "${INSTALL_CAPTION}"
|
||
|
OutFile ${PLUGIN_OUTFILE}
|
||
|
; ----------------------------------------------------------------
|
||
|
|
||
|
; to determine the install directory, we start with Program Files\Winamp.
|
||
|
; then, if winamp 3 is found, override this and use that directory.
|
||
|
; finally, if winamp 2 is found, override again and use that directory.
|
||
|
InstallDir $PROGRAMFILES\Winamp
|
||
|
InstallDirRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp3" "UninstallString"
|
||
|
InstallDirRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" "UninstallString"
|
||
|
DirText \
|
||
|
"The installer has determined that this is the path to Winamp.$\rIf it is not correct, please change it. You will not be able to proceed$\runtil a valid path is found." \
|
||
|
"Select the directory in which Winamp 2 or 3 is installed:"
|
||
|
|
||
|
Function .onInit
|
||
|
IfFileExists $INSTDIR\winamp.exe End ; else if winamp.exe found (winamp2), we're good
|
||
|
IfFileExists $INSTDIR\winamp3.exe End ; if winamp3.exe found (winamp3), we're good
|
||
|
IfFileExists $INSTDIR\studio.exe End ; or if studio.exe found (older version of winamp3), we're good
|
||
|
; the above will work fine if winamp 2 or 3 is installed,
|
||
|
; but will break if winamp 2 or 3 was uninstalled *but the directory remains.*
|
||
|
IfFileExists $PROGRAMFILES\Winamp\winamp.exe SelectNaturalWinamp2 ; last but not least, try the default winamp 2 directory
|
||
|
IfFileExists $PROGRAMFILES\Winamp3\winamp3.exe SelectNaturalWinamp3 ; otherwise, try the default winamp 3 directory
|
||
|
IfFileExists $PROGRAMFILES\Winamp3\studio.exe SelectNaturalWinamp3 ; otherwise, try the default winamp 3 directory
|
||
|
; if all of these failed, no good path to Winamp (2 or 3) could be found,
|
||
|
; and the 'Next' button will be disabled until the user can specify
|
||
|
; the correct folder.
|
||
|
Goto End
|
||
|
|
||
|
SelectNaturalWinamp3:
|
||
|
strcpy $INSTDIR $PROGRAMFILES\Winamp3
|
||
|
goto End
|
||
|
|
||
|
SelectNaturalWinamp2:
|
||
|
strcpy $INSTDIR $PROGRAMFILES\Winamp
|
||
|
goto End
|
||
|
|
||
|
End:
|
||
|
FunctionEnd
|
||
|
|
||
|
|
||
|
Function .onVerifyInstDir
|
||
|
IfFileExists $INSTDIR\Winamp.exe DirOk
|
||
|
IfFileExists $INSTDIR\Winamp3.exe DirOk
|
||
|
IfFileExists $INSTDIR\Studio.exe DirOk
|
||
|
Abort ; leaves the directory as the selected one, but disables the 'Next' button...
|
||
|
|
||
|
DirOk:
|
||
|
FunctionEnd
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Function QueryWinampVisPath
|
||
|
; input: $INSTDIR, the currently-selected install dir (path to winamp)
|
||
|
; output: $1, the path to the winamp vis plugins subdirectory
|
||
|
; -for winamp 3x, this is just $INSTDIR\plugins
|
||
|
; -for winamp 2x, it comes from the winamp.ini file
|
||
|
; (or just $INSTDIR\plugins if there is an error reading it.)
|
||
|
IfFileExists $INSTDIR\Winamp.exe CaseWinamp2
|
||
|
IfFileExists $INSTDIR\Winamp3.exe CaseWinamp3
|
||
|
IfFileExists $INSTDIR\Studio.exe CaseWinamp3 ; legacy check
|
||
|
goto CaseImpossible
|
||
|
|
||
|
CaseWinamp2:
|
||
|
StrCpy $1 $INSTDIR\Plugins\MilkDrop2
|
||
|
ReadINIStr $8 $INSTDIR\winamp.ini Winamp VisDir
|
||
|
StrCmp $8 "" End
|
||
|
IfFileExists $8 0 End
|
||
|
StrCpy $1 $8 ; update dir
|
||
|
goto end
|
||
|
|
||
|
CaseWinamp3:
|
||
|
CaseImpossible:
|
||
|
StrCpy $1 $INSTDIR\Plugins\MilkDrop2
|
||
|
goto end
|
||
|
|
||
|
End:
|
||
|
FunctionEnd
|
||
|
|
||
|
|
||
|
; The stuff to install
|
||
|
Section ""
|
||
|
|
||
|
CloseWinamp2:
|
||
|
; make sure winamp is closed before we 1) try to install files
|
||
|
; and 2) (later) edit winamp.ini. for 1), if they're running
|
||
|
; (or were running) some other vms-based plugin using
|
||
|
; vms_desktop.dll, then if winamp is still open, the installer
|
||
|
; could have trouble overwriting vms_desktop.dll, or other files;
|
||
|
; the user would get an abort/retry/ignore box, but it's easier
|
||
|
; to just play it safe.
|
||
|
FindWindow $R0 "winamp v1.x"
|
||
|
StrCmp $R0 0 "" RequestCloseWinamp2
|
||
|
goto Winamp2Closed
|
||
|
RequestCloseWinamp2:
|
||
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "Winamp is currently running; please close it,$\rand then hit OK to continue..." \
|
||
|
IDCANCEL WarnWinampStillOpen
|
||
|
goto CloseWinamp2
|
||
|
WarnWinampStillOpen:
|
||
|
FindWindow $R0 "winamp v1.x"
|
||
|
StrCmp $R0 0 "" WarnWinampStillOpen2
|
||
|
goto Winamp2Closed
|
||
|
WarnWinampStillOpen2:
|
||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "Warning: Winamp is still open; as a result, the installer$\rwill not be able to set ${PLUGIN_NAME} as the default plugin; you will$\rhave to do this yourself.$\r$\rTo do so, wait until the installation is finished. Then bring up $\rWinamp and hit CTRL+K. From there, you will be able to select$\r${PLUGIN_NAME} from the list of visualization plug-ins, and it will$\rbecome the new default."
|
||
|
goto Winamp2Closed
|
||
|
Winamp2Closed:
|
||
|
|
||
|
; this function sets $1 to point to the 'winamp\plugins\milkdrop2' folder:
|
||
|
; (see function definition above)
|
||
|
Call QueryWinampVisPath
|
||
|
|
||
|
; -------------------- EDIT THIS SECTION [2/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [2/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [2/3] --------------------
|
||
|
|
||
|
; LIST FILES TO INCLUDE WITH THE INSTALLER
|
||
|
|
||
|
; For each file we want to install onto the destination system,
|
||
|
; we first set the output directory (relative to $1, which is
|
||
|
; the PLUGINS directory) and then list files. The paths for
|
||
|
; the files will be local paths on your hard disk, but fear not -
|
||
|
; the files will be placed in the current output directory
|
||
|
; (as last set by SetOutPath) on the destination system.
|
||
|
|
||
|
; So, first, we set the current output path (the folder to which
|
||
|
; files will be decompressed on the user's system) to '$1',
|
||
|
; which is the path to their winamp plugins folder.
|
||
|
|
||
|
SetOutPath $1
|
||
|
File "C:\program files\winamp\plugins\${PLUGIN_DLL}"
|
||
|
|
||
|
SetOutPath $1\Milkdrop2\config
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\config\milk_msg.ini"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\config\milk_img.ini"
|
||
|
;File "C:\program files\winamp\plugins\milkdrop2\config\milkdrop.ini" ;this one will be generated - do not install
|
||
|
|
||
|
SetOutPath $1\Milkdrop2\data
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\vms_desktop.dll"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\comp_ps.fx"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\comp_vs.fx"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\warp_ps.fx"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\warp_vs.fx"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\data\include.fx"
|
||
|
|
||
|
SetOutPath $1\Milkdrop2\docs
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\docs\milkdrop.html"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\docs\milkdrop_preset_authoring.html"
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\docs\q_and_t_vars.gif"
|
||
|
|
||
|
SetOutPath $1\Milkdrop2\textures
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\textures\*.*"
|
||
|
|
||
|
SetOutPath $1\Milkdrop2\presets
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\presets\*.milk"
|
||
|
|
||
|
hmmm
|
||
|
SetOutPath $1\MilkDrop2\presets\3d
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\presets\3d\*.milk"
|
||
|
|
||
|
hmmm
|
||
|
SetOutPath $1\MilkDrop2\presets\inverted
|
||
|
File "C:\program files\winamp\plugins\milkdrop2\presets\inverted\*.milk"
|
||
|
|
||
|
; ----------------------- END SECTION [2/3] -----------------------
|
||
|
; ----------------------- END SECTION [2/3] -----------------------
|
||
|
; ----------------------- END SECTION [2/3] -----------------------
|
||
|
|
||
|
|
||
|
; now time to create the Uninstaller:
|
||
|
|
||
|
IfFileExists $INSTDIR\Winamp.exe UninstWinamp2
|
||
|
IfFileExists $INSTDIR\Winamp3.exe UninstWinamp3
|
||
|
IfFileExists $INSTDIR\Studio.exe UninstWinamp3 ; legacy check
|
||
|
goto UninstDone
|
||
|
|
||
|
UninstWinamp3:
|
||
|
WriteRegStr HKLM SOFTWARE\${PLUGIN_DLL}Winamp3 "Install_Dir" "$INSTDIR"
|
||
|
WriteRegStr HKLM SOFTWARE\${PLUGIN_DLL}Winamp3 "Install_Plugins_Dir" $1
|
||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp3" "DisplayName" "${PLUGIN_NAME} for Winamp 3 (remove only)"
|
||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp3" "UninstallString" '"$INSTDIR\uninst-${PLUGIN_DLL}.exe"'
|
||
|
WriteUninstaller "$INSTDIR\uninst-${PLUGIN_DLL}.exe"
|
||
|
CreateDirectory "$SMPROGRAMS\Winamp3\Vis Plugin Uninstallers"
|
||
|
CreateShortCut "$SMPROGRAMS\Winamp3\Vis Plugin Uninstallers\Uninstall ${PLUGIN_NAME}.lnk" "$INSTDIR\uninst-${PLUGIN_DLL}.exe" "" "$INSTDIR\uninst-${PLUGIN_DLL}.exe" 0
|
||
|
goto UninstDone
|
||
|
|
||
|
UninstWinamp2:
|
||
|
WriteRegStr HKLM SOFTWARE\${PLUGIN_DLL}Winamp "Install_Dir" "$INSTDIR"
|
||
|
WriteRegStr HKLM SOFTWARE\${PLUGIN_DLL}Winamp "Install_Plugins_Dir" $1
|
||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp" "DisplayName" "${PLUGIN_NAME} for Winamp 2x (remove only)"
|
||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp" "UninstallString" '"$INSTDIR\uninst-${PLUGIN_DLL}.exe"'
|
||
|
WriteUninstaller "$INSTDIR\uninst-${PLUGIN_DLL}.exe"
|
||
|
CreateDirectory "$SMPROGRAMS\Winamp\Vis Plugin Uninstallers"
|
||
|
CreateShortCut "$SMPROGRAMS\Winamp\Vis Plugin Uninstallers\Uninstall ${PLUGIN_NAME}.lnk" "$INSTDIR\uninst-${PLUGIN_DLL}.exe" "" "$INSTDIR\uninst-${PLUGIN_DLL}.exe" 0
|
||
|
goto UninstDone
|
||
|
|
||
|
UninstDone:
|
||
|
|
||
|
SectionEnd
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
|
||
|
UninstallText "This will uninstall the ${PLUGIN_NAME} plugin. Hit next to continue."
|
||
|
ShowUninstDetails Show
|
||
|
|
||
|
Section "Uninstall"
|
||
|
|
||
|
; This section is the code that will be run when the user goes
|
||
|
; to Uninstall the plugin.
|
||
|
|
||
|
IfFileExists $INSTDIR\Winamp.exe UninstStep1Winamp2
|
||
|
IfFileExists $INSTDIR\Winamp3.exe UninstStep1Winamp3
|
||
|
IfFileExists $INSTDIR\Studio.exe UninstStep1Winamp3 ; legacy check
|
||
|
goto UninstScriptDone
|
||
|
|
||
|
UninstStep1Winamp3:
|
||
|
ReadRegStr $1 HKLM SOFTWARE\${PLUGIN_DLL}Winamp3 "Install_Plugins_Dir"
|
||
|
goto UninstStep2
|
||
|
UninstStep1Winamp2:
|
||
|
ReadRegStr $1 HKLM SOFTWARE\${PLUGIN_DLL}Winamp "Install_Plugins_Dir"
|
||
|
goto UninstStep2
|
||
|
|
||
|
UninstStep2:
|
||
|
|
||
|
; -------------------- EDIT THIS SECTION [3/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [3/3] --------------------
|
||
|
; -------------------- EDIT THIS SECTION [3/3] --------------------
|
||
|
|
||
|
; LIST OF FILES TO DELETE WHEN USER RUNS THE UNINSTALL
|
||
|
|
||
|
Delete "$1\${PLUGIN_DLL}"
|
||
|
;Delete "$1\vms_desktop.dll" ** DO NOT DELETE! **
|
||
|
Delete "$1\milkdrop.html"
|
||
|
Delete "$1\milkdrop_preset_authoring.html"
|
||
|
Delete "$1\q_and_t_vars.gif"
|
||
|
|
||
|
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||
|
"Clear your saved settings?:$\r $1\milkdrop_config.ini$\r $1\milk_msg.ini$\r $1\milk_img.ini" \
|
||
|
IDNO SaveSettings
|
||
|
|
||
|
Delete "$1\milkdrop_config.ini"
|
||
|
Delete "$1\milk_msg.ini"
|
||
|
Delete "$1\milk_img.ini"
|
||
|
|
||
|
SaveSettings:
|
||
|
|
||
|
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||
|
"Delete all presets in these 3 directories?:$\r $1\milkdrop$\r $1\milkdrop\3d$\r $1\milkdrop\inverted" \
|
||
|
IDNO SavePresets
|
||
|
|
||
|
Delete "$1\milkdrop2\inverted\*.milk"
|
||
|
Delete "$1\milkdrop2\3d\*.milk"
|
||
|
Delete "$1\milkdrop2\*.milk"
|
||
|
RMDir "$1\milkdrop2\inverted"
|
||
|
RMDir "$1\milkdrop2\3d"
|
||
|
RMDir "$1\milkdrop2"
|
||
|
|
||
|
SavePresets:
|
||
|
|
||
|
; ----------------------- END SECTION [3/3] -----------------------
|
||
|
; ----------------------- END SECTION [3/3] -----------------------
|
||
|
; ----------------------- END SECTION [3/3] -----------------------
|
||
|
|
||
|
IfFileExists $INSTDIR\Winamp.exe UninstStep3Winamp2
|
||
|
IfFileExists $INSTDIR\Winamp3.exe UninstStep3Winamp3
|
||
|
IfFileExists $INSTDIR\Studio.exe UninstStep3Winamp3 ; legacy check
|
||
|
goto UninstScriptDone
|
||
|
|
||
|
UninstStep3Winamp3:
|
||
|
DeleteRegKey HKLM SOFTWARE\${PLUGIN_DLL}Winamp3
|
||
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp3"
|
||
|
Delete $INSTDIR\uninst-${PLUGIN_DLL}.exe
|
||
|
Delete "$SMPROGRAMS\Winamp3\Vis Plugin Uninstallers\Uninstall ${PLUGIN_NAME}.lnk"
|
||
|
RMDir "$SMPROGRAMS\Winamp3\Vis Plugin Uninstallers"
|
||
|
goto UninstScriptDone
|
||
|
UninstStep3Winamp2:
|
||
|
DeleteRegKey HKLM SOFTWARE\${PLUGIN_DLL}Winamp
|
||
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PLUGIN_DLL}Winamp"
|
||
|
Delete $INSTDIR\uninst-${PLUGIN_DLL}.exe
|
||
|
Delete "$SMPROGRAMS\Winamp\Vis Plugin Uninstallers\Uninstall ${PLUGIN_NAME}.lnk"
|
||
|
RMDir "$SMPROGRAMS\Winamp\Vis Plugin Uninstallers"
|
||
|
goto UninstScriptDone
|
||
|
|
||
|
UninstScriptDone:
|
||
|
SectionEnd
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
|
||
|
Function .onInstSuccess
|
||
|
IfFileExists $INSTDIR\Winamp.exe CaseWinamp2
|
||
|
IfFileExists $INSTDIR\Winamp3.exe CaseWinamp3
|
||
|
IfFileExists $INSTDIR\Studio.exe CaseWinamp3 ; legacy check
|
||
|
goto CaseImpossible
|
||
|
|
||
|
CaseWinamp3:
|
||
|
IfFileExists $INSTDIR\wacs\classicvis.wac ClassicVisOk
|
||
|
; no classicvis -> give them instructions
|
||
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION \
|
||
|
"IMPORTANT: You must download and install the Classic Visualization$\rComponent before ${PLUGIN_NAME} will work with Winamp 3.$\r$\rWould you like to download it now?" \
|
||
|
IDNO FailNoClassicVis
|
||
|
ExecShell "open" "http://www.winamp.com/components3/detail.jhtml?componentId=122130"
|
||
|
MessageBox MB_OK|MB_ICONINFORMATION \
|
||
|
"Your web browser will now open and allow you to download$\rthe Classic Visualization Component. Please download$\rand install it.$\r$\rOnce it is installed, open Winamp 3 and hit CTRL+P$\rto open the Preferences screen. Then, on the left,$\rscroll to 'Classic Visualizations' and select it. From there,$\ryou can easily select, configure and run any plugins$\rinstalled to Winamp 2 or 3."
|
||
|
goto end
|
||
|
FailNoClassicVis:
|
||
|
MessageBox MB_OK|MB_ICONSTOP "Installation failed."
|
||
|
goto end
|
||
|
ClassicVisOk:
|
||
|
FindWindow $R0 "STUDIO"
|
||
|
StrCmp $R0 0 "" DoneWinamp3
|
||
|
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||
|
"${PLUGIN_NAME} was installed successfully.$\rWould you like to run Winamp 3 now?" \
|
||
|
IDNO DoneWinamp3
|
||
|
; to do here: update 'oldvisname' string in the *xml* file winamp3\studio.xnf,
|
||
|
; and set 'oldvisidx' to "0"
|
||
|
IfFileExists $INSTDIR\Winamp3.exe CaseWinamp3b
|
||
|
Exec '"$INSTDIR\studio.exe"'
|
||
|
goto DoneWinamp3
|
||
|
CaseWinamp3b:
|
||
|
Exec '"$INSTDIR\winamp3.exe"'
|
||
|
goto DoneWinamp3
|
||
|
DoneWinamp3:
|
||
|
MessageBox MB_OK "While in Winamp 3, press CTRL+P to bring up the$\rPreferences screen, then scroll down and select$\rthe 'Classic Visualizations' option. From there,$\ryou can select, configure, and run the ${PLUGIN_NAME} plugin."
|
||
|
goto end
|
||
|
|
||
|
CaseWinamp2:
|
||
|
; note: winamp 2 should already be closed at this point.
|
||
|
WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_name" ${PLUGIN_DLL}
|
||
|
WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_num" "0"
|
||
|
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||
|
"${PLUGIN_NAME} was installed successfully.$\r$\rWhile in Winamp, press ALT+K to configure it (optional);$\rpress CTRL+SHIFT+K to execute it.$\r$\rWould you like to run Winamp now?" \
|
||
|
IDNO end
|
||
|
Exec '"$INSTDIR\Winamp.exe"'
|
||
|
Goto end
|
||
|
|
||
|
CaseImpossible:
|
||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "ERROR: unable to find winamp.exe (winamp2) or studio.exe/winamp3.exe (winamp3) in the install directory..."
|
||
|
Goto end
|
||
|
|
||
|
End:
|
||
|
FunctionEnd
|
||
|
|
||
|
; eof
|
||
|
|