aboutsummaryrefslogtreecommitdiff
path: root/subsonic-installer-windows/src/main/nsis/subsonic.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'subsonic-installer-windows/src/main/nsis/subsonic.nsi')
-rw-r--r--subsonic-installer-windows/src/main/nsis/subsonic.nsi203
1 files changed, 203 insertions, 0 deletions
diff --git a/subsonic-installer-windows/src/main/nsis/subsonic.nsi b/subsonic-installer-windows/src/main/nsis/subsonic.nsi
new file mode 100644
index 00000000..1fa404d1
--- /dev/null
+++ b/subsonic-installer-windows/src/main/nsis/subsonic.nsi
@@ -0,0 +1,203 @@
+# subsonic.nsi
+
+!include "WordFunc.nsh"
+!include "MUI.nsh"
+
+!insertmacro VersionCompare
+
+# The name of the installer
+Name "Subsonic"
+
+# The default installation directory
+InstallDir $PROGRAMFILES\Subsonic
+
+# Registry key to check for directory (so if you install again, it will
+# overwrite the old one automatically)
+InstallDirRegKey HKLM "Software\Subsonic" "Install_Dir"
+
+#--------------------------------
+#Interface Configuration
+
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp"
+!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Getting Started.html"
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "View Getting Started document"
+
+#--------------------------------
+# Pages
+
+# This page checks for JRE
+Page custom CheckInstalledJRE
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+# Languages
+!insertmacro MUI_LANGUAGE "English"
+
+Section "Subsonic"
+
+ SectionIn RO
+
+ # Install for all users
+ SetShellVarContext "all"
+
+ # Take backup of existing subsonic-service.exe.vmoptions
+ CopyFiles /SILENT $INSTDIR\subsonic-service.exe.vmoptions $TEMP\subsonic-service.exe.vmoptions
+
+ # Silently uninstall existing version.
+ ExecWait '"$INSTDIR\uninstall.exe" /S _?=$INSTDIR'
+
+ # Remove previous Jetty temp directory.
+ RMDir /r "c:\subsonic\jetty"
+
+ # Set output path to the installation directory.
+ SetOutPath $INSTDIR
+
+ # Write files.
+ File ..\..\..\target\subsonic-agent.exe
+ File ..\..\..\target\subsonic-agent.exe.vmoptions
+ File ..\..\..\target\subsonic-agent-elevated.exe
+ File ..\..\..\target\subsonic-agent-elevated.exe.vmoptions
+ File ..\..\..\target\subsonic-service.exe
+ File ..\..\..\target\subsonic-service.exe.vmoptions
+ File ..\..\..\..\subsonic-booter\target\subsonic-booter-jar-with-dependencies.jar
+ File ..\..\..\..\subsonic-main\README.TXT
+ File ..\..\..\..\subsonic-main\LICENSE.TXT
+ File "..\..\..\..\subsonic-main\Getting Started.html"
+ File ..\..\..\..\subsonic-main\target\subsonic.war
+ File ..\..\..\..\subsonic-main\target\classes\version.txt
+ File ..\..\..\..\subsonic-main\target\classes\build_number.txt
+
+ # Write the installation path into the registry
+ WriteRegStr HKLM SOFTWARE\Subsonic "Install_Dir" "$INSTDIR"
+
+ # Write the uninstall keys for Windows
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsonic" "DisplayName" "Subsonic"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsonic" "UninstallString" '"$INSTDIR\uninstall.exe"'
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsonic" "NoModify" 1
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsonic" "NoRepair" 1
+ WriteUninstaller "uninstall.exe"
+
+ # Restore subsonic-service.exe.vmoptions
+ CopyFiles /SILENT $TEMP\subsonic-service.exe.vmoptions $INSTDIR\subsonic-service.exe.vmoptions
+ Delete $TEMP\subsonic-service.exe.vmoptions
+
+ # Write transcoding pack files.
+ SetOutPath "c:\subsonic\transcode"
+ File ..\..\..\..\subsonic-transcode\windows\*.*
+
+ # Add Windows Firewall exception.
+ # (Requires NSIS plugin found on http://nsis.sourceforge.net/NSIS_Simple_Firewall_Plugin to be installed
+ # as NSIS_HOME/Plugins/SimpleFC.dll)
+ SimpleFC::AddApplication "Subsonic Service" "$INSTDIR\subsonic-service.exe" 0 2 "" 1
+ SimpleFC::AddApplication "Subsonic Agent" "$INSTDIR\subsonic-agent.exe" 0 2 "" 1
+ SimpleFC::AddApplication "Subsonic Agent (Elevated)" "$INSTDIR\subsonic-agent-elevated.exe" 0 2 "" 1
+
+ # Install and start service.
+ ExecWait '"$INSTDIR\subsonic-service.exe" -install'
+ ExecWait '"$INSTDIR\subsonic-service.exe" -start'
+
+ # Start agent.
+ Exec '"$INSTDIR\subsonic-agent-elevated.exe" -balloon'
+
+SectionEnd
+
+
+Section "Start Menu Shortcuts"
+
+ CreateDirectory "$SMPROGRAMS\Subsonic"
+ CreateShortCut "$SMPROGRAMS\Subsonic\Open Subsonic.lnk" "$INSTDIR\subsonic.url" "" "$INSTDIR\subsonic-agent.exe" 0
+ CreateShortCut "$SMPROGRAMS\Subsonic\Subsonic Tray Icon.lnk" "$INSTDIR\subsonic-agent.exe" "-balloon" "$INSTDIR\subsonic-agent.exe" 0
+ CreateShortCut "$SMPROGRAMS\Subsonic\Start Subsonic Service.lnk" "$INSTDIR\subsonic-service.exe" "-start" "$INSTDIR\subsonic-service.exe" 0
+ CreateShortCut "$SMPROGRAMS\Subsonic\Stop Subsonic Service.lnk" "$INSTDIR\subsonic-service.exe" "-stop" "$INSTDIR\subsonic-service.exe" 0
+ CreateShortCut "$SMPROGRAMS\Subsonic\Uninstall Subsonic.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+ CreateShortCut "$SMPROGRAMS\Subsonic\Getting Started.lnk" "$INSTDIR\Getting Started.html" "" "$INSTDIR\Getting Started.html" 0
+
+ CreateShortCut "$SMSTARTUP\Subsonic.lnk" "$INSTDIR\subsonic-agent.exe" "" "$INSTDIR\subsonic-agent.exe" 0
+
+SectionEnd
+
+
+# Uninstaller
+
+Section "Uninstall"
+
+ # Uninstall for all users
+ SetShellVarContext "all"
+
+ # Stop and uninstall service if present.
+ ExecWait '"$INSTDIR\subsonic-service.exe" -stop'
+ ExecWait '"$INSTDIR\subsonic-service.exe" -uninstall'
+
+ # Stop agent by killing it.
+ # (Requires NSIS plugin found on http://nsis.sourceforge.net/Processes_plug-in to be installed
+ # as NSIS_HOME/Plugins/Processes.dll)
+ Processes::KillProcess "subsonic-agent"
+ Processes::KillProcess "subsonic-agent-elevated"
+ Processes::KillProcess "ffmpeg"
+ Processes::KillProcess "lame"
+
+ # Remove registry keys
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsonic"
+ DeleteRegKey HKLM SOFTWARE\Subsonic
+
+ # Remove files.
+ Delete "$SMSTARTUP\Subsonic.lnk"
+ RMDir /r "$SMPROGRAMS\Subsonic"
+ Delete "$INSTDIR\build_number.txt"
+ Delete "$INSTDIR\elevate.exe"
+ Delete "$INSTDIR\Getting Started.html"
+ Delete "$INSTDIR\LICENSE.TXT"
+ Delete "$INSTDIR\README.TXT"
+ Delete "$INSTDIR\subsonic.url"
+ Delete "$INSTDIR\subsonic.war"
+ Delete "$INSTDIR\subsonic-agent.exe"
+ Delete "$INSTDIR\subsonic-agent.exe.vmoptions"
+ Delete "$INSTDIR\subsonic-agent-elevated.exe"
+ Delete "$INSTDIR\subsonic-agent-elevated.exe.vmoptions"
+ Delete "$INSTDIR\subsonic-booter-jar-with-dependencies.jar"
+ Delete "$INSTDIR\subsonic-service.exe"
+ Delete "$INSTDIR\subsonic-service.exe.vmoptions"
+ Delete "$INSTDIR\uninstall.exe"
+ Delete "$INSTDIR\version.txt"
+ RMDir /r "$INSTDIR\log"
+ RMDir "$INSTDIR"
+
+ # Remove Windows Firewall exception.
+ # (Requires NSIS plugin found on http://nsis.sourceforge.net/NSIS_Simple_Firewall_Plugin to be installed
+ # as NSIS_HOME/Plugins/SimpleFC.dll)
+ SimpleFC::RemoveApplication "$INSTDIR\elevate.exe"
+ SimpleFC::RemoveApplication "$INSTDIR\subsonic-service.exe"
+ SimpleFC::RemoveApplication "$INSTDIR\subsonic-agent.exe"
+ SimpleFC::RemoveApplication "$INSTDIR\subsonic-agent-elevated.exe"
+
+SectionEnd
+
+
+Function CheckInstalledJRE
+ # Read the value from the registry into the $0 register
+ ReadRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion
+
+ # Check JRE version. At least 1.6 is required.
+ # $1=0 Versions are equal
+ # $1=1 Installed version is newer
+ # $1=2 Installed version is older (or non-existent)
+ ${VersionCompare} $0 "1.6" $1
+ IntCmp $1 2 InstallJRE 0 0
+ Return
+
+ InstallJRE:
+ # Launch Java web installer.
+ MessageBox MB_OK "Java 6 was not found and will now be installed."
+ File /oname=$TEMP\jre-setup.exe jre-6u27-windows-i586-iftw.exe
+ ExecWait '"$TEMP\jre-setup.exe"' $0
+ Delete "$TEMP\jre-setup.exe"
+
+FunctionEnd