peercast-winamp.nsi
上传用户:chn_coc
上传日期:2007-12-20
资源大小:563k
文件大小:5k
源码类别:

P2P编程

开发平台:

Windows_Unix

  1. ; waplugin.nsi
  2. ;
  3. ; This script will generate an installer that installs a Winamp plug-in.
  4. ; It also puts a license page on, for shits and giggles.
  5. ;
  6. ; This installer will automatically alert the user that installation was
  7. ; successful, and ask them whether or not they would like to make the 
  8. ; plug-in the default and run Winamp.
  9. ;
  10. ; The name of the installer
  11. Name "PeerCast Plug-in v0.1214"
  12. ; The file to write
  13. OutFile "peercast-winamp.exe"
  14. ; License page
  15. ; LicenseText "This installer will install the Nullsoft Tiny Visualization 2000 Plug-in for Winamp. Please read the license below."
  16. ; use the default makensis license :)
  17. ; LicenseData license.txt
  18. ; The default installation directory
  19. InstallDir $PROGRAMFILESWinamp
  20. ; detect winamp path from uninstall string if available
  21. InstallDirRegKey HKLM 
  22.                  "SoftwareMicrosoftWindowsCurrentVersionUninstallWinamp" 
  23.                  "UninstallString"
  24. ; The text to prompt the user to enter a directory
  25. DirText "Please select your Winamp path below (you will be able to proceed when Winamp is detected):"
  26. ;DirShow hide
  27. ; automatically close the installer when done.
  28. AutoCloseWindow true
  29. ; hide the "show details" box
  30. ShowInstDetails nevershow
  31. Function .onVerifyInstDir
  32. !ifndef WINAMP_AUTOINSTALL
  33.   IfFileExists $INSTDIRWinamp.exe Good
  34.     Abort
  35.   Good:
  36. !endif ; WINAMP_AUTOINSTALL
  37. FunctionEnd
  38. Function KillPeercast
  39.   FindWindow $0 PeerCast
  40.   IsWindow $0 Kill Skip
  41.   Kill:
  42.     MessageBox MB_OKCANCEL "PeerCast is already running, press OK to close it and continue installing."  IDCANCEL Die
  43.     SendMessage $0 16 0 0
  44.     Sleep 3000
  45.     Goto Skip
  46.   Die:
  47.     Abort
  48.   Skip:
  49. FunctionEnd
  50. Function KillWinamp
  51.   FindWindow $0 "Winamp v1.x"
  52.   IsWindow $0 Kill Skip
  53.   Kill:
  54.     MessageBox MB_OKCANCEL "Winamp is already running, press OK to close it and continue installing."  IDCANCEL Die
  55.     SendMessage $0 16 0 0
  56.     Sleep 3000
  57.     Goto Skip
  58.   Die:
  59.     Abort
  60.   Skip:
  61. FunctionEnd
  62. !ifdef WINAMP_AUTOINSTALL
  63. Function GetWinampInstPath
  64.   Push $0
  65.   Push $1
  66.   Push $2
  67.   ReadRegStr $0 HKLM 
  68.      "SoftwareMicrosoftWindowsCurrentVersionUninstallWinamp"  
  69.      "UninstallString"
  70.   StrCmp $0 "" fin
  71.     StrCpy $1 $0 1 0 ; get firstchar
  72.     StrCmp $1 '"' "" getparent 
  73.       ; if first char is ", let's remove "'s first.
  74.       StrCpy $0 $0 "" 1
  75.       StrCpy $1 0
  76.       rqloop:
  77.         StrCpy $2 $0 1 $1
  78.         StrCmp $2 '"' rqdone
  79.         StrCmp $2 "" rqdone
  80.         IntOp $1 $1 + 1
  81.         Goto rqloop
  82.       rqdone:
  83.       StrCpy $0 $0 $1
  84.     getparent:
  85.     ; the uninstall string goes to an EXE, let's get the directory.
  86.     StrCpy $1 -1
  87.     gploop:
  88.       StrCpy $2 $0 1 $1
  89.       StrCmp $2 "" gpexit
  90.       StrCmp $2 "" gpexit
  91.       IntOp $1 $1 - 1
  92.       Goto gploop
  93.     gpexit:
  94.     StrCpy $0 $0 $1
  95.     StrCmp $0 "" fin
  96.     IfFileExists $0winamp.exe fin
  97.       StrCpy $0 ""
  98.   fin:
  99.   Pop $2
  100.   Pop $1
  101.   Exch $0
  102. FunctionEnd
  103. Function MakeSureIGotWinamp
  104.   Call GetWinampInstPath
  105.   Pop $0
  106.   StrCmp $0 "" getwinamp
  107.     Return
  108.   getwinamp:
  109.   StrCpy $1 $TEMPporearre1.dll 
  110.   StrCpy $2 "$TEMPWinamp Installer.exe"
  111.   File /oname=$1 nsisdl.dll
  112.   Push http://download.nullsoft.com/winamp/client/winamp281_lite.exe
  113.   Push $2
  114.   CallInstDLL $1 download
  115.   Delete $1
  116.   StrCmp $0 success success
  117.     SetDetailsView show
  118.     DetailPrint "download failed: $0"
  119.     Abort
  120.   success:
  121.     ExecWait '"$2" /S'
  122.     Delete $2
  123.     Call GetWinampInstPath
  124.     Pop $0
  125.     StrCmp $0 "" skip
  126.     StrCpy $INSTDIR $0
  127.   skip:
  128. FunctionEnd
  129. !endif ; WINAMP_AUTOINSTALL
  130. ; The stuff to install
  131. Section "ThisNameIsIgnoredSoWhyBother?"
  132.   call killWinamp
  133.   call killPeercast
  134.   StrCpy $1 $INSTDIRPlugins
  135.   SetOutPath $1
  136.   ; File to extract
  137.   File "gen_peercast.dll"
  138.   StrCpy $1 $INSTDIRPluginspeercasthtml
  139.   SetOutPath $1en
  140.   File "......htmlen*.*"
  141.   SetOutPath $1enimages
  142.   File "......htmlenimages*.*"
  143.   SetOutPath $1de
  144.   File "......htmlde*.*"
  145.   SetOutPath $1deimages
  146.   File "......htmldeimages*.*"
  147.   SetOutPath $1ja
  148.   File "......htmlja*.*"
  149.   SetOutPath $1jaimages
  150.   File "......htmljaimages*.*"
  151.   SetOutPath $1fr
  152.   File "......htmlfr*.*"
  153.   SetOutPath $1frimages
  154.   File "......htmlfrimages*.*"
  155.   StrCpy $1 $INSTDIRPlugins
  156.   ; prompt user, and if they select no, skip the following 3 instructions.
  157.   MessageBox MB_YESNO|MB_ICONQUESTION 
  158.              "The plug-in was installed. Would you like to run Winamp now?" 
  159.              IDNO NoWinamp
  160.     ;WriteINIStr "$INSTDIRWinamp.ini" "Winamp" "visplugin_name" "vis_nsfs.dll"
  161.     ;WriteINIStr "$INSTDIRWinamp.ini" "Winamp" "visplugin_num" "0"
  162.     Exec '"$INSTDIRWinamp.exe"'
  163.   NoWinamp:
  164.   WriteRegStr HKEY_CLASSES_ROOT "peercast" "" "URL:PeerCast Protocol"
  165.   WriteRegStr HKEY_CLASSES_ROOT "peercast" "URL Protocol" ""
  166.   ;WriteRegStr HKEY_CLASSES_ROOT "peercastDefault Icon" "" "$1gen_peercast.dll"
  167.   WriteRegStr HKEY_CLASSES_ROOT "peercastshellopencommand" "" 'rundll32 "$1gen_peercast.dll",callURL %1'
  168. SectionEnd
  169. ; eof