1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00
icecast-server/win32/icecast.nsis
2022-03-13 18:30:26 +00:00

213 lines
6.9 KiB
Plaintext

;NSIS based Icecast Installer
;Written by Thomas B. Rücker
;Initial version written by Stephan Jauernick
;Based on "Start Menu Folder Selection Example Script" by Joost Verburg
;--------------------------------
;Includes
; Modern UI
!include "MUI2.nsh"
;File functions
!include "FileFunc.nsh"
;--------------------------------
;General
;Name and file
Name "Icecast"
OutFile "icecast_win32_2.5-beta3.exe"
;Default installation folder
InstallDir "$PROGRAMFILES32\Icecast"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\Xiph.org\Icecast" ""
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;Installer icon
!define MUI_ICON "bin/icecast.ico"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "icecast2logo3.bmp"
!define MUI_HEADERIMAGE_RIGHT
!define /date BUILDTIMESTAMP "%Y-%m-%dT%H:%M:%S+%z"
;--------------------------------
;Variables
Var RegistryPathForUninstall
Var StartMenuFolder
Var EstimatedSize
Var Day
Var Month
Var Year
Var DoW
Var Hour
Var Minute
Var Second
;--------------------------------
; Create URL file macro
!macro CreateInternetShortcut FILENAME URL ICONFILE ICONINDEX
WriteINIStr "${FILENAME}.url" "InternetShortcut" "URL" "${URL}"
WriteINIStr "${FILENAME}.url" "InternetShortcut" "IconFile" "${ICONFILE}"
WriteINIStr "${FILENAME}.url" "InternetShortcut" "IconIndex" "${ICONINDEX}"
!macroend
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE doc/COPYING
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Xiph.org\Icecast"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections
Section "Icecast" SecIcecastWin32
;Image - not supported on non-win32 builds
;AddBrandingImage left 175 32
;SetBrandingImage "icecast2logo2.bmp"
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
File /r "bin"
File /r "doc"
File /r "web"
File /r "admin"
File "mime.types"
File "icecast.bat"
;OMG my eyes, why is Goto inherent
IfFileExists "$INSTDIR\icecast.xml" config_exists config_nonexistent
config_exists:
Goto config_done
config_nonexistent:
File "icecast.xml"
config_done:
;Store installation folder
WriteRegStr HKCU "Software\Xiph.org\Icecast" "" $INSTDIR
;Determine installed size (will include all files, even user placed in $INSTDIR!)
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $EstimatedSize "0x%08X" $0
${GetTime} "" "LS" $Day $Month $Year $DoW $Hour $Minute $Second
;Registry path for Windows uninstaller and software management
StrCpy $RegistryPathForUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\Xiph.org-Icecast"
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegDWORD HKLM $RegistryPathForUninstall "EstimatedSize" "$EstimatedSize"
WriteRegStr HKLM $RegistryPathForUninstall "DisplayName" "Icecast"
WriteRegStr HKLM $RegistryPathForUninstall "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM $RegistryPathForUninstall "DisplayIcon" "$INSTDIR\bin\icecast.ico"
WriteRegStr HKLM $RegistryPathForUninstall "Publisher" "Xiph.org Foundation / The Icecast Project"
WriteRegStr HKLM $RegistryPathForUninstall "HelpLink" "http://icecast.org/contact"
WriteRegStr HKLM $RegistryPathForUninstall "URLInfoAbout" "http://icecast.org/"
WriteRegStr HKLM $RegistryPathForUninstall "DisplayVersion" "2.5 beta3"
WriteRegStr HKLM $RegistryPathForUninstall "InstallLocation" "$INSTDIR"
WriteRegStr HKLM $RegistryPathForUninstall "InstallDate" "$Year$Month$Day"
WriteRegDWORD HKLM $RegistryPathForUninstall "NoModify" 0x1
WriteRegDWORD HKLM $RegistryPathForUninstall "NoRepair" 0x1
WriteRegDWORD HKLM $RegistryPathForUninstall "VersionMajor" 0x2
WriteRegDWORD HKLM $RegistryPathForUninstall "VersionMinor" 0x4
WriteRegDWORD HKLM $RegistryPathForUninstall "VersionServicePack" 0x63
;WriteRegStr HKLM "$RegistryPathForUninstall "" ""
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Run Icecast (Console).lnk" "$INSTDIR\icecast.bat" "" "$INSTDIR\bin\icecast.ico" "" "" "" "Icecast (Starts in a console window)"
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Icecast Config.lnk" "%SystemRoot%\system32\notepad.exe" "$INSTDIR\icecast.xml" "" "" "" "" "Open Icecast config for editing in Notepad"
!insertmacro CreateInternetShortcut "$SMPROGRAMS\$StartMenuFolder\Icecast web status (public)" "http://127.0.0.1:8000/" "$INSTDIR\bin\icecast.ico" "0"
!insertmacro CreateInternetShortcut "$SMPROGRAMS\$StartMenuFolder\Icecast web admin interface" "http://127.0.0.1:8000/admin/" "$INSTDIR\bin\icecast.ico" "0"
CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Icecast documentation.lnk" "$INSTDIR\doc\index.html"
!insertmacro MUI_STARTMENU_WRITE_END
;Create logging directory
CreateDirectory "$INSTDIR\log"
SectionEnd
;--------------------------------
;Descriptions
;Language strings
LangString DESC_SecIcecastWin32 ${LANG_ENGLISH} "Icecast for win32 with all required files and libraries"
;Assign language strings to sections
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecIcecastWin32} $(DESC_SecIcecastWin32)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
;Uninstaller Section
Section "Uninstall"
;ADD YOUR OWN FILES HERE...
RMDir /r "$INSTDIR\bin"
RMDir /r "$INSTDIR\doc"
Delete "$INSTDIR\mime.types"
Delete "$INSTDIR\icecast.bat"
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\Run Icecast (Console).lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Icecast Config.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Icecast documentation.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Icecast web status (public).url"
Delete "$SMPROGRAMS\$StartMenuFolder\Icecast web admin interface.url"
RMDir "$SMPROGRAMS\$StartMenuFolder"
;Registry path for Windows uninstaller and software management
StrCpy $RegistryPathForUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\Xiph.org-Icecast"
DeleteRegKey HKLM "$RegistryPathForUninstall"
;DeleteRegKey /ifempty HKCU "Software\Xiph.org\Icecast"
SectionEnd
Function .onInit
SectionSetFlags ${SecIcecastWin32} 17
FunctionEnd