From fe62b103241cfb739e2b9cb83f110301c57204e3 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 23 May 2023 21:00:41 -0500 Subject: [PATCH] Add an option to control whether Sunshine starts on boot --- CMakeLists.txt | 11 +++++++++++ .../windows/misc/autostart/autostart-service.bat | 4 ++++ src_assets/windows/misc/service/install-service.bat | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src_assets/windows/misc/autostart/autostart-service.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index c3efcc64..ba87661c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -712,6 +712,11 @@ if(WIN32) # see options at: https://cmake.org/cmake/help/latest/cpack_gen/nsis.h DESTINATION "scripts" COMPONENT assets) + # Configurable options for the service + install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/misc/autostart/" + DESTINATION "scripts" + COMPONENT autostart) + # scripts install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/windows/misc/firewall/" DESTINATION "scripts" @@ -747,6 +752,7 @@ if(WIN32) # see options at: https://cmake.org/cmake/help/latest/cpack_gen/nsis.h nsExec::ExecToLog '\\\"$INSTDIR\\\\scripts\\\\add-firewall-rule.bat\\\"' nsExec::ExecToLog '\\\"$INSTDIR\\\\scripts\\\\install-service.bat\\\"' nsExec::ExecToLog '\\\"$INSTDIR\\\\scripts\\\\install-vigembus.bat\\\"' + nsExec::ExecToLog '\\\"$INSTDIR\\\\scripts\\\\autostart-service.bat\\\"' NoController: ") @@ -804,6 +810,11 @@ if(WIN32) # see options at: https://cmake.org/cmake/help/latest/cpack_gen/nsis.h set(CPACK_COMPONENT_APPLICATION_REQUIRED true) set(CPACK_COMPONENT_APPLICATION_DEPENDS assets) + # service auto-start script + set(CPACK_COMPONENT_AUTOSTART_DISPLAY_NAME "Launch on Startup") + set(CPACK_COMPONENT_AUTOSTART_DESCRIPTION "If enabled, launches Sunshine automatically on system startup.") + set(CPACK_COMPONENT_AUTOSTART_GROUP "Core") + # assets set(CPACK_COMPONENT_ASSETS_DISPLAY_NAME "Required Assets") set(CPACK_COMPONENT_ASSETS_DESCRIPTION "Shaders, default box art, and web UI.") diff --git a/src_assets/windows/misc/autostart/autostart-service.bat b/src_assets/windows/misc/autostart/autostart-service.bat new file mode 100644 index 00000000..d18ad9a6 --- /dev/null +++ b/src_assets/windows/misc/autostart/autostart-service.bat @@ -0,0 +1,4 @@ +@echo off + +rem Set the service to auto-start +sc config sunshinesvc start= auto diff --git a/src_assets/windows/misc/service/install-service.bat b/src_assets/windows/misc/service/install-service.bat index 4edafc22..bca88890 100644 --- a/src_assets/windows/misc/service/install-service.bat +++ b/src_assets/windows/misc/service/install-service.bat @@ -5,7 +5,9 @@ for %%I in ("%~dp0\..") do set "ROOT_DIR=%%~fI" set SERVICE_NAME=sunshinesvc set SERVICE_BIN="%ROOT_DIR%\tools\sunshinesvc.exe" -set SERVICE_START_TYPE=auto + +rem Set service to demand start. It will be changed to auto later if the user selected that option. +set SERVICE_START_TYPE=demand rem Check if sunshinesvc already exists sc qc %SERVICE_NAME% > nul 2>&1