From da74c6407efad3d7963994c2151bbaf597222c7b Mon Sep 17 00:00:00 2001 From: "Thomas B. Ruecker" Date: Sun, 15 Feb 2015 07:44:43 +0000 Subject: [PATCH] Adding NSIS script to git. This script helps package Icecast into a Windows installer. It is used for the mingw32 builds of Icecast. --- win32/icecast.nsis | 212 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 win32/icecast.nsis diff --git a/win32/icecast.nsis b/win32/icecast.nsis new file mode 100644 index 00000000..45a4dd10 --- /dev/null +++ b/win32/icecast.nsis @@ -0,0 +1,212 @@ +;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-beta2.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 beta2" + 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