2006-02-26 08:48:23 +00:00
; $Id$
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
2006-05-01 03:10:45 +00:00
!define PRODUCT_NAME " Firefly Media Server "
!define PRODUCT_SERVICE " Firefly Media Server "
2006-02-26 08:48:23 +00:00
!define /date DATEVER " %Y%m%d "
2006-05-01 03:10:45 +00:00
!define PRODUCT_VERSION " Beta 1 "
2006-02-26 08:48:23 +00:00
!define PRODUCT_PUBLISHER " Ron Pedde "
2006-05-01 03:10:45 +00:00
!define PRODUCT_WEB_SITE " http://www.fireflymediaserver.org "
!define PRODUCT_DIR_REGKEY " Software\Microsoft\Windows\CurrentVersion\App Paths\firefly.exe "
2006-02-26 08:48:23 +00:00
!define PRODUCT_UNINST_KEY " Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME} "
!define PRODUCT_UNINST_ROOT_KEY " HKLM "
2006-05-01 03:10:45 +00:00
!define PROJROOT " ..\..\.. "
!define MTD_SOURCE " ${PROJROOT}\mt-daapd\win32\Release "
!define DLL_SOURCE " ${PROJROOT}\win32\dll "
!define ADMIN_ROOT " ${PROJROOT}\mt-daapd\admin-root "
2006-02-26 08:48:23 +00:00
; MUI 1.67 compatible ------
!include " MUI.nsh "
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON " ${NSISDIR} \Contrib\Graphics\Icons\modern-install.ico "
!define MUI_UNICON " ${NSISDIR} \Contrib\Graphics\Icons\modern-uninstall.ico "
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
2006-04-22 21:37:58 +00:00
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE LicensePost
2006-05-01 03:10:45 +00:00
!insertmacro MUI_PAGE_LICENSE " ${ADMIN_ROOT}\gpl-license.txt "
2006-02-26 08:48:23 +00:00
; Directory page
2006-04-22 21:37:58 +00:00
!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave
2006-02-26 08:48:23 +00:00
!insertmacro MUI_PAGE_DIRECTORY
2006-04-22 21:37:58 +00:00
; Music Directory Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave
!insertmacro MUI_PAGE_DIRECTORY
2006-02-26 08:48:23 +00:00
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE " English "
; MUI end ------
Name " ${PRODUCT_NAME} ${PRODUCT_VERSION} "
2006-05-01 03:10:45 +00:00
OutFile " ${PRODUCT_NAME} (${PRODUCT_VERSION}).exe "
InstallDir " $PROGRAMFILES \${PRODUCT_NAME} "
2006-02-26 08:48:23 +00:00
InstallDirRegKey HKLM " ${PRODUCT_DIR_REGKEY} " " "
ShowInstDetails show
ShowUnInstDetails show
2006-03-31 08:32:14 +00:00
Section - Pre
nsSCM :: QueryStatus " Bonjour Service "
Pop $0
Pop $1
StrCmp $0 " success " lbl_got_bonjour
MessageBox MB_OK " Bonjour for Windows service not found. Please install Apple's Bonjour for Windows. "
Quit
lbl_got_bonjour :
SectionEnd
2006-02-26 08:48:23 +00:00
Section " MainSection " SEC01
2006-04-22 21:37:58 +00:00
SetOutPath " $2 "
2006-02-26 08:48:23 +00:00
SetOverwrite ifnewer
2006-05-01 03:10:45 +00:00
File /oname = firefly.exe " ${MTD_SOURCE}\mt-daapd.exe "
2006-04-25 23:13:04 +00:00
File " ${DLL_SOURCE}\gnu_regex.dll "
File " ${DLL_SOURCE}\pthreadVC2.dll "
File " ${DLL_SOURCE}\sqlite.dll "
File " ${DLL_SOURCE}\sqlite3.dll "
File " ${DLL_SOURCE}\zlib1.dll "
2006-05-01 03:10:45 +00:00
File " ..\Release\rsp.dll "
2006-02-26 08:48:23 +00:00
2006-04-22 21:37:58 +00:00
SetOutPath " $2 \admin-root "
2006-04-25 23:13:04 +00:00
File " ${ADMIN_ROOT}\thanks.html "
File " ${ADMIN_ROOT}\status.html "
File " ${ADMIN_ROOT}\smartpopup.html "
File " ${ADMIN_ROOT}\smart.js "
File " ${ADMIN_ROOT}\smart.html "
File " ${ADMIN_ROOT}\required.gif "
File " ${ADMIN_ROOT}\playlist.js "
File " ${ADMIN_ROOT}\playlist.html "
File " ${ADMIN_ROOT}\mt-daapd.png "
File " ${ADMIN_ROOT}\mt-daapd.js "
File " ${ADMIN_ROOT}\mt-daapd.css "
File " ${ADMIN_ROOT}\linkTransparent.gif "
File " ${ADMIN_ROOT}\linkOpaque.gif "
File " ${ADMIN_ROOT}\index.html "
File " ${ADMIN_ROOT}\hdr.html "
File " ${ADMIN_ROOT}\gpl-license.txt "
File " ${ADMIN_ROOT}\gpl-license.html "
File " ${ADMIN_ROOT}\ftr.html "
File " ${ADMIN_ROOT}\feedback.html "
File " ${ADMIN_ROOT}\favicon.ico "
File " ${ADMIN_ROOT}\DAAPApplet-0.1.jar "
File " ${ADMIN_ROOT}\CREDITS "
File " ${ADMIN_ROOT}\config-update.html "
File " ${ADMIN_ROOT}\config.html "
File " ${ADMIN_ROOT}\config.js "
File " ${ADMIN_ROOT}\aspl-license.txt "
File " ${ADMIN_ROOT}\aspl-license.html "
File " ${ADMIN_ROOT}\applet.html "
File " ${ADMIN_ROOT}\smart.js "
2006-04-22 21:37:58 +00:00
SetOutPath " $2 \admin-root\lib-js "
2006-04-25 23:13:04 +00:00
File " ${ADMIN_ROOT}\lib-js\prototype.js "
File " ${ADMIN_ROOT}\lib-js\rico.js "
2006-04-22 21:37:58 +00:00
SetOutPath " $2 \admin-root\lib-js\script.aculo.us "
2006-04-25 23:13:04 +00:00
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\builder.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\controls.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\dragdrop.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\effects.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\scriptaculous.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\slider.js "
File " ${ADMIN_ROOT}\lib-js\script.aculo.us\unittest.js "
2006-04-22 21:37:58 +00:00
SetOutPath " $2 "
2006-05-01 03:10:45 +00:00
File " mt-daapd-example.conf "
2006-04-22 21:37:58 +00:00
IfFileExists " $2 \mt-daapd.conf " HasConf
2006-02-26 08:48:23 +00:00
SetOverwrite off
2006-04-22 21:37:58 +00:00
CopyFiles " $2 \mt-daapd-example.conf " " $2 \mt-daapd.conf "
WriteINIStr " $2 \mt-daapd.conf " " general " " mp3_dir " $3
2006-04-25 23:13:04 +00:00
HasConf :
2006-04-22 21:37:58 +00:00
SetAutoClose False
2006-02-26 08:48:23 +00:00
SectionEnd
Section - AdditionalIcons
2006-04-22 21:37:58 +00:00
WriteIniStr " $2 \${PRODUCT_NAME}.url " " InternetShortcut " " URL " " ${PRODUCT_WEB_SITE} "
2006-05-01 03:10:45 +00:00
CreateDirectory " $SMPROGRAMS \${PRODUCT_NAME} "
CreateShortCut " $SMPROGRAMS \${PRODUCT_NAME}\Website.lnk " " $2 \${PRODUCT_NAME}.url "
CreateShortCut " $SMPROGRAMS \${PRODUCT_NAME}\Uninstall.lnk " " $2 \uninst.exe "
CreateShortCut " $SMPROGRAMS \${PRODUCT_NAME}\Debug Mode.lnk " " $2 \firefly.exe " " -d9 -f "
CreateShortCut " $SMPROGRAMS \${PRODUCT_NAME}\Configure Media Server.lnk " " notepad.exe " " $2 \mt-daapd.conf "
2006-02-26 08:48:23 +00:00
SectionEnd
Section - Post
2006-04-22 21:37:58 +00:00
WriteUninstaller " $2 \uninst.exe "
WriteRegStr HKLM " ${PRODUCT_DIR_REGKEY} " " " " $2 \mt-daapd.exe "
2006-02-26 08:48:23 +00:00
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " DisplayName " " $(^Name) "
2006-04-22 21:37:58 +00:00
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " UninstallString " " $2 \uninst.exe "
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " DisplayIcon " " $2 \mt-daapd.exe "
2006-02-26 08:48:23 +00:00
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " DisplayVersion " " ${PRODUCT_VERSION} "
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " URLInfoAbout " " ${PRODUCT_WEB_SITE} "
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} " " Publisher " " ${PRODUCT_PUBLISHER} "
2006-04-22 21:37:58 +00:00
; ExecWait "$2\mt-daapd.exe -i"
2006-03-31 08:32:14 +00:00
2006-05-01 03:10:45 +00:00
nsSCM :: Install " ${PRODUCT_NAME} " " ${PRODUCT_SERVICE} " 16 2 " $2 \firefly.exe " " " " Bonjour Service " " " " "
2006-03-31 08:32:14 +00:00
Pop $0
Pop $1
StrCmp $0 " success " lbl_install_success
IntCmp $1 1073 lbl_install_success ; service already exists
MessageBox MB_OK " Error installing service: $1 "
lbl_install_success :
2006-04-25 23:13:04 +00:00
nsSCM :: Start " ${PRODUCT_NAME} "
2006-02-26 08:48:23 +00:00
SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION | MB_OK " $(^Name) was successfully removed from your computer. "
FunctionEnd
Function un.onInit
MessageBox MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 " Are you sure you want to completely remove $(^Name) and all of its components? " IDYES + 2
Abort
FunctionEnd
2006-04-22 21:37:58 +00:00
Function .onInit
; Must set $INSTDIR here to avoid adding ${PRODUCT_NAME} to the end of the
; path when user selects a new directory using the 'Browse' button.
StrCpy $INSTDIR " $PROGRAMFILES \${PRODUCT_NAME} "
FunctionEnd
Function LicensePost
StrCpy $9 " 0 "
FunctionEnd
Function DirectoryPre
StrCmp $9 " 0 " OK
;Skip 2nd (Music) Directory Page if conf file Exists
IfFileExists " $2 \mt-daapd.conf " " " OK
Abort
OK :
FunctionEnd
Function DirectoryShow
StrCmp $9 " 0 " AppDirectoryPage
StrCmp $9 " 1 " MusicDirectoryPage
AppDirectoryPage :
StrCpy $9 " 1 "
!insertmacro MUI_INNERDIALOG_TEXT 1041 " Destination Folder "
!insertmacro MUI_INNERDIALOG_TEXT 1019 " $PROGRAMFILES \${PRODUCT_NAME}\ "
!insertmacro MUI_INNERDIALOG_TEXT 1006 " Setup will install ${PRODUCT_NAME} in the following folder.$\r$\n$\r$\nTo install in a different folder, click Browse and select another folder. Click Next to continue. "
Goto EndDirectoryShow
MusicDirectoryPage :
StrCpy $9 " 2 "
!insertmacro MUI_HEADER_TEXT " Choose Music Location " " Choose the folder containing music to share. "
!insertmacro MUI_INNERDIALOG_TEXT 1041 " Music Folder "
2006-04-25 23:13:04 +00:00
!insertmacro MUI_INNERDIALOG_TEXT 1019 " $DOCUMENTS \My Music "
2006-04-22 21:37:58 +00:00
!insertmacro MUI_INNERDIALOG_TEXT 1006 " Setup will share the music in the following folder.$\r$\n$\r$\nTo share a different folder, click Browse and select another folder. Click Install to start the installation. "
EndDirectoryShow :
FunctionEnd
Function DirectoryLeave
StrCmp $9 " 1 " SaveInstallDir
StrCmp $9 " 2 " SaveMusicDir
Goto EndDirectoryLeave
SaveInstallDir :
StrCpy $2 $INSTDIR
Goto EndDirectoryLeave
SaveMusicDir :
2006-05-01 03:10:45 +00:00
; Push $INSTDIR
; Call GetParent
; Pop $3
StrCpy $3 $INSTDIR
2006-04-22 21:37:58 +00:00
EndDirectoryLeave :
FunctionEnd
Function .onVerifyInstDir
StrCmp $9 " 2 " DataPath All
DataPath :
;all valid if UNC
StrCpy $R2 $INSTDIR 2
StrCmp $R2 " \\ " PathOK
All :
; Invalid path if root
Push $INSTDIR
call GetRoot
Pop $R1
StrCmp $R1 $INSTDIR " " PathOK
Abort
PathOK :
FunctionEnd
;--------------------------------
;Helper Functions
2006-04-25 23:13:04 +00:00
; GetParent
; input, top of stack (e.g. C:\Program Files\Poop)
; output, top of stack (replaces, with e.g. C:\Program Files)
; modifies no other variables.
;
; Usage:
; Push "C:\Program Files\Directory\Whatever"
; Call GetParent
; Pop $R0
; ; at this point $R0 will equal "C:\Program Files\Directory"
Function GetParent
Exch $R0
Push $R1
Push $R2
Push $R3
StrCpy $R1 0
StrLen $R2 $R0
loop :
IntOp $R1 $R1 + 1
IntCmp $R1 $R2 get 0 get
StrCpy $R3 $R0 1 - $R1
StrCmp $R3 " \ " get
Goto loop
get :
StrCpy $R0 $R0 - $R1
Pop $R3
Pop $R2
Pop $R1
Exch $R0
FunctionEnd
2006-04-22 21:37:58 +00:00
Function GetRoot
Exch $0
Push $1
Push $2
Push $3
Push $4
StrCpy $1 $0 2
StrCmp $1 " \\ " UNC
StrCpy $0 $1
Goto done
UNC :
StrCpy $2 3
StrLen $3 $0
loop :
IntCmp $2 $3 " " " " loopend
StrCpy $1 $0 1 $2
IntOp $2 $2 + 1
StrCmp $1 " \ " loopend loop
loopend :
StrCmp $4 " 1 " + 3
StrCpy $4 1
Goto loop
IntOp $2 $2 - 1
StrCpy $0 $0 $2
done :
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
FunctionEnd
2006-02-26 08:48:23 +00:00
Section Uninstall
2006-03-31 08:32:14 +00:00
nsSCM :: Stop " ${PRODUCT_NAME} "
nsSCM :: Remove " ${PRODUCT_NAME} "
Pop $0
StrCmp $0 " success " lbl_continue_uninstall
2006-04-22 21:37:58 +00:00
MessageBox MB_OK " Error Uninstalling service: $1 "
2006-03-31 08:32:14 +00:00
lbl_continue_uninstall :
2006-04-22 21:37:58 +00:00
2006-02-26 08:48:23 +00:00
Delete " $INSTDIR \${PRODUCT_NAME}.url "
Delete " $INSTDIR \uninst.exe "
Delete " $INSTDIR \gnu_regex.dll "
Delete " $INSTDIR \pthreadVC2.dll "
Delete " $INSTDIR \sqlite.dll "
2006-04-25 23:13:04 +00:00
Delete " $INSTDIR \sqlite3.dll "
2006-04-22 21:37:58 +00:00
Delete " $INSTDIR \mt-daapd.conf "
2006-04-25 23:13:04 +00:00
Delete " $INSTDIR \zlib1.dll "
2006-05-01 03:10:45 +00:00
Delete " $INSTDIR \rsp.dll "
Delete " $INSTDIR \songs.db "
Delete " $INSTDIR \songs3.db "
2006-02-26 08:48:23 +00:00
Delete " $INSTDIR \mt-daapd-example.conf "
2006-04-22 21:37:58 +00:00
Delete " $INSTDIR \admin-root\applet.html "
Delete " $INSTDIR \admin-root\aspl-license.html "
Delete " $INSTDIR \admin-root\aspl-license.txt "
Delete " $INSTDIR \admin-root\config.html "
Delete " $INSTDIR \admin-root\config-update.html "
Delete " $INSTDIR \admin-root\CREDITS "
Delete " $INSTDIR \admin-root\DAAPApplet-0.1.jar "
Delete " $INSTDIR \admin-root\favicon.ico "
Delete " $INSTDIR \admin-root\feedback.html "
Delete " $INSTDIR \admin-root\ftr.html "
Delete " $INSTDIR \admin-root\gpl-license.html "
Delete " $INSTDIR \admin-root\gpl-license.txt "
Delete " $INSTDIR \admin-root\hdr.html "
Delete " $INSTDIR \admin-root\index.html "
Delete " $INSTDIR \admin-root\linkOpaque.gif "
Delete " $INSTDIR \admin-root\linkTransparent.gif "
Delete " $INSTDIR \admin-root\mt-daapd.css "
Delete " $INSTDIR \admin-root\mt-daapd.js "
Delete " $INSTDIR \admin-root\mt-daapd.png "
Delete " $INSTDIR \admin-root\playlist.html "
Delete " $INSTDIR \admin-root\playlist.js "
Delete " $INSTDIR \admin-root\required.gif "
Delete " $INSTDIR \admin-root\smart.html "
Delete " $INSTDIR \admin-root\smart.js "
Delete " $INSTDIR \admin-root\smartpopup.html "
Delete " $INSTDIR \admin-root\status.html "
Delete " $INSTDIR \admin-root\thanks.html "
Delete " $INSTDIR \admin-root\config.js "
Delete " $INSTDIR \admin-root\lib-js\prototype.js "
Delete " $INSTDIR \admin-root\lib-js\rico.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\builder.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\controls.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\dragdrop.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\effects.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\scriptaculous.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\slider.js "
Delete " $INSTDIR \admin-root\lib-js\script.aculo.us\unittest.js "
RMDir " $INSTDIR \admin-root\lib-js\script.aculo.us "
RMDir " $INSTDIR \admin-root\lib-js "
RMDir " $INSTDIR \admin-root "
2006-05-01 03:10:45 +00:00
Delete " $INSTDIR \firefly.exe "
2006-02-26 08:48:23 +00:00
2006-05-01 03:10:45 +00:00
Delete " $SMPROGRAMS \${PRODUCT_NAME}\Uninstall.lnk "
Delete " $SMPROGRAMS \${PRODUCT_NAME}\Website.lnk "
Delete " $SMPROGRAMS \${PRODUCT_NAME}\Configure Media Server.lnk "
Delete " $SMPROGRAMS \${PRODUCT_NAME}\Debug Mode.lnk "
2006-02-26 08:48:23 +00:00
2006-05-01 03:10:45 +00:00
RMDir " $SMPROGRAMS \${PRODUCT_NAME} "
2006-02-26 08:48:23 +00:00
RMDir " $INSTDIR "
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} " ${PRODUCT_UNINST_KEY} "
DeleteRegKey HKLM " ${PRODUCT_DIR_REGKEY} "
2006-04-22 21:37:58 +00:00
SetAutoClose false
SectionEnd