123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- ; waplugin.nsi
- ;
- ; This script will generate an installer that installs a Winamp 2 plug-in.
- ;
- ; This installer will automatically alert the user that installation was
- ; successful, and ask them whether or not they would like to make the
- ; plug-in the default and run Winamp.
- ;--------------------------------
- ; Uncomment the next line to enable auto Winamp download
- ; !define WINAMP_AUTOINSTALL
- ; The name of the installer
- Name "TinyVis Plug-in"
- ; The file to write
- OutFile "waplugin.exe"
- ; The default installation directory
- InstallDir $PROGRAMFILES\Winamp
- ; detect winamp path from uninstall string if available
- InstallDirRegKey HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \
- "UninstallString"
- ; The text to prompt the user to enter a directory
- DirText "Please select your Winamp path below (you will be able to proceed when Winamp is detected):"
- # currently doesn't work - DirShow hide
- ; automatically close the installer when done.
- AutoCloseWindow true
- ; hide the "show details" box
- ShowInstDetails nevershow
- ; Request application privileges for Windows Vista
- RequestExecutionLevel admin
- ;--------------------------------
- ;Pages
- Page directory
- Page instfiles
- ;--------------------------------
- ; The stuff to install
- Section ""
- !ifdef WINAMP_AUTOINSTALL
- Call MakeSureIGotWinamp
- !endif
- Call QueryWinampVisPath
- SetOutPath $1
- ; File to extract
- #File "C:\program files\winamp\plugins\vis_nsfs.dll"
- File /oname=vis_nsfs.dll "${NSISDIR}\Plugins\x86-ansi\TypeLib.dll" # dummy plug-in
- ; prompt user, and if they select no, go to NoWinamp
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "The plug-in was installed. Would you like to run Winamp now with TinyVis as the default plug-in?" \
- IDNO NoWinamp
- WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_name" "vis_nsfs.dll"
- WriteINIStr "$INSTDIR\Winamp.ini" "Winamp" "visplugin_num" "0"
- Exec '"$INSTDIR\Winamp.exe"'
- NoWinamp:
-
- SectionEnd
- ;--------------------------------
- Function .onVerifyInstDir
- !ifndef WINAMP_AUTOINSTALL
- ;Check for Winamp installation
- IfFileExists $INSTDIR\Winamp.exe Good
- Abort
- Good:
- !endif ; WINAMP_AUTOINSTALL
- FunctionEnd
- Function QueryWinampVisPath ; sets $1 with vis path
- StrCpy $1 $INSTDIR\Plugins
- ; use DSPDir instead of VISDir to get DSP plugins directory
- ReadINIStr $9 $INSTDIR\winamp.ini Winamp VisDir
- StrCmp $9 "" End
- IfFileExists $9 0 End
- StrCpy $1 $9 ; update dir
- End:
-
- FunctionEnd
- !ifdef WINAMP_AUTOINSTALL
- Function GetWinampInstPath
- Push $0
- Push $1
- Push $2
- ReadRegStr $0 HKLM \
- "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \
- "UninstallString"
- StrCmp $0 "" fin
- StrCpy $1 $0 1 0 ; get firstchar
- StrCmp $1 '"' "" getparent
- ; if first char is ", let's remove "'s first.
- StrCpy $0 $0 "" 1
- StrCpy $1 0
- rqloop:
- StrCpy $2 $0 1 $1
- StrCmp $2 '"' rqdone
- StrCmp $2 "" rqdone
- IntOp $1 $1 + 1
- Goto rqloop
- rqdone:
- StrCpy $0 $0 $1
- getparent:
- ; the uninstall string goes to an EXE, let's get the directory.
- StrCpy $1 -1
- gploop:
- StrCpy $2 $0 1 $1
- StrCmp $2 "" gpexit
- StrCmp $2 "\" gpexit
- IntOp $1 $1 - 1
- Goto gploop
- gpexit:
- StrCpy $0 $0 $1
- StrCmp $0 "" fin
- IfFileExists $0\winamp.exe fin
- StrCpy $0 ""
- fin:
- Pop $2
- Pop $1
- Exch $0
-
- FunctionEnd
- Function MakeSureIGotWinamp
- Call GetWinampInstPath
-
- Pop $0
- StrCmp $0 "" getwinamp
- Return
-
- getwinamp:
-
- Call ConnectInternet ;Make an internet connection (if no connection available)
-
- StrCpy $2 "$TEMP\Winamp Installer.exe"
- NSISdl::download http://download.nullsoft.com/winamp/client/winamp281_lite.exe $2
- Pop $0
- StrCmp $0 success success
- SetDetailsView show
- DetailPrint "download failed: $0"
- Abort
- success:
- ExecWait '"$2" /S'
- Delete $2
- Call GetWinampInstPath
- Pop $0
- StrCmp $0 "" skip
- StrCpy $INSTDIR $0
- skip:
-
- FunctionEnd
- Function ConnectInternet
- Push $R0
-
- ClearErrors
- Dialer::AttemptConnect
- IfErrors noie3
-
- Pop $R0
- StrCmp $R0 "online" connected
- MessageBox MB_OK|MB_ICONSTOP "Cannot connect to the internet."
- Quit
-
- noie3:
-
- ; IE3 not installed
- MessageBox MB_OK|MB_ICONINFORMATION "Please connect to the internet now."
-
- connected:
-
- Pop $R0
-
- FunctionEnd
- !endif ; WINAMP_AUTOINSTALL
|