mirror of
https://github.com/thinkonmay/sunshine-sdk.git
synced 2025-12-26 22:48:09 +00:00
112 lines
3.3 KiB
Batchfile
112 lines
3.3 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion
|
|
|
|
rem Check if parameter is provided
|
|
if "%~1"=="" (
|
|
echo Usage: %0 [add^|remove]
|
|
echo add - Adds Sunshine directories to system PATH
|
|
echo remove - Removes Sunshine directories from system PATH
|
|
exit /b 1
|
|
)
|
|
|
|
rem Get sunshine root directory
|
|
for %%I in ("%~dp0\..") do set "ROOT_DIR=%%~fI"
|
|
echo Sunshine root directory: !ROOT_DIR!
|
|
|
|
rem Define directories to add to path
|
|
set "PATHS_TO_MANAGE[0]=!ROOT_DIR!"
|
|
set "PATHS_TO_MANAGE[1]=!ROOT_DIR!\tools"
|
|
|
|
rem System path registry location
|
|
set "KEY_NAME=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
|
|
set "VALUE_NAME=Path"
|
|
|
|
rem Get the current path
|
|
for /f "tokens=2*" %%A in ('reg query "%KEY_NAME%" /v "%VALUE_NAME%"') do set "CURRENT_PATH=%%B"
|
|
echo Current path: !CURRENT_PATH!
|
|
|
|
rem Check if adding to path
|
|
if /i "%~1"=="add" (
|
|
set "NEW_PATH=!CURRENT_PATH!"
|
|
|
|
rem Process each directory to add
|
|
for /L %%i in (0,1,1) do (
|
|
set "DIR_TO_ADD=!PATHS_TO_MANAGE[%%i]!"
|
|
|
|
rem Check if path already contains this directory
|
|
echo "!CURRENT_PATH!" | findstr /i /c:"!DIR_TO_ADD!" > nul
|
|
if !ERRORLEVEL!==0 (
|
|
echo !DIR_TO_ADD! already in path
|
|
) else (
|
|
echo Adding to path: !DIR_TO_ADD!
|
|
set "NEW_PATH=!NEW_PATH!;!DIR_TO_ADD!"
|
|
)
|
|
)
|
|
|
|
rem Only update if path was changed
|
|
if "!NEW_PATH!" neq "!CURRENT_PATH!" (
|
|
rem Set the new path in the registry
|
|
reg add "%KEY_NAME%" /v "%VALUE_NAME%" /t REG_EXPAND_SZ /d "!NEW_PATH!" /f
|
|
if !ERRORLEVEL!==0 (
|
|
echo Successfully added Sunshine directories to PATH
|
|
) else (
|
|
echo Failed to add Sunshine directories to PATH
|
|
)
|
|
) else (
|
|
echo No changes needed to PATH
|
|
)
|
|
exit /b !ERRORLEVEL!
|
|
)
|
|
|
|
rem Check if removing from path
|
|
if /i "%~1"=="remove" (
|
|
set "CHANGES_MADE=0"
|
|
|
|
rem Process each directory to remove
|
|
for /L %%i in (0,1,1) do (
|
|
set "DIR_TO_REMOVE=!PATHS_TO_MANAGE[%%i]!"
|
|
|
|
rem Check if path contains this directory
|
|
echo "!CURRENT_PATH!" | findstr /i /c:"!DIR_TO_REMOVE!" > nul
|
|
if !ERRORLEVEL!==0 (
|
|
echo Removing from path: !DIR_TO_REMOVE!
|
|
|
|
rem Build a new path by parsing and filtering the current path
|
|
set "NEW_PATH="
|
|
for %%p in ("!CURRENT_PATH:;=" "!") do (
|
|
set "PART=%%~p"
|
|
if /i "!PART!" NEQ "!DIR_TO_REMOVE!" (
|
|
if defined NEW_PATH (
|
|
set "NEW_PATH=!NEW_PATH!;!PART!"
|
|
) else (
|
|
set "NEW_PATH=!PART!"
|
|
)
|
|
)
|
|
)
|
|
|
|
set "CURRENT_PATH=!NEW_PATH!"
|
|
set "CHANGES_MADE=1"
|
|
) else (
|
|
echo !DIR_TO_REMOVE! not found in path
|
|
)
|
|
)
|
|
|
|
rem Only update if path was changed
|
|
if "!CHANGES_MADE!"=="1" (
|
|
rem Set the new path in the registry
|
|
reg add "%KEY_NAME%" /v "%VALUE_NAME%" /t REG_EXPAND_SZ /d "!CURRENT_PATH!" /f
|
|
if !ERRORLEVEL!==0 (
|
|
echo Successfully removed Sunshine directories from PATH
|
|
) else (
|
|
echo Failed to remove Sunshine directories from PATH
|
|
)
|
|
) else (
|
|
echo No changes needed to PATH
|
|
)
|
|
exit /b !ERRORLEVEL!
|
|
)
|
|
|
|
echo Unknown parameter: %~1
|
|
echo Usage: %0 [add^|remove]
|
|
exit /b 1
|