From a3ed43227385a8ab95b13510e0ecf0ffeed96083 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 30 Mar 2016 16:31:46 -0500 Subject: Drastically rewrote the path script to handle Explorer's stubborn grasp of EnvVars. Tested on Win7. --- 1-setup-path-win.bat | 79 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 11 deletions(-) (limited to '1-setup-path-win.bat') diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 6957dbc3f4..2c15857bb7 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -1,14 +1,71 @@ -@echo off +@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION +@ECHO OFF +SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe -reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_SZ /d "%path%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul -echo. +SET NEWPATH1="C:\MinGW\msys\1.0\bin" +SET NEWPATH2="C:\MinGW\bin" -if NOT ["%errorlevel%"]==["0"] ( - echo FAILED. You probably just need to run the script with administrator privileges. -) else ( - echo Success! - setx QMK QMK > nul -) +:: Make sure paths exist +IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch) +IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) -echo. -pause +:: Add paths +CALL :AddPath %NEWPATH1% +CALL :AddPath %NEWPATH2% + +:: Branch to UpdateEnv if we need to update +IF DEFINED UPDATE (GOTO UpdateEnv) + +GOTO ExitBatch + +:: ----------------------------------------------------------------------------- + +:UpdateEnv +ECHO Making updated PATH go live . . . +REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1 +setx TEMPVAR 1 > nul 2>&1 +REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1 +IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer) +GOTO ExitBatch + +:: ----------------------------------------------------------------------------- + +:ExitBatch +ENDLOCAL +PAUSE +EXIT /b + +:: ----------------------------------------------------------------------------- + +:AddPath +ECHO %PATH% | FINDSTR /C:"%~1" > nul +IF ERRORLEVEL 1 ( + REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" > nul 2>&1 + IF ERRORLEVEL 0 ( + ECHO Adding %1 . . . Success! + SET "PATH=%PATH%;%~1" + SET UPDATE=1 + ) ELSE ( + ECHO Adding %1 . . . FAILED. Run this script with administrator privileges. + ) +) ELSE ( + ECHO Skipping %1 - Already in PATH + ) +EXIT /b + +:: ----------------------------------------------------------------------------- + +:KillExplorer + +ECHO Your desktop is being restarted, please wait. . . +ping -n 5 127.0.0.1 > NUL 2>&1 +ECHO Killing process Explorer.exe. . . +taskkill /f /im explorer.exe +ECHO. +ECHO Your desktop is now loading. . . +ping -n 5 127.0.0.1 > NUL 2>&1 +ECHO. +ping -n 5 127.0.0.1 > NUL 2>&1 +START explorer.exe +START explorer.exe %CD% +EXIT /b \ No newline at end of file -- cgit v1.2.3 From 1bc05ac85fd6b7bc5fce8d99a43a5d2202b314fe Mon Sep 17 00:00:00 2001 From: NoahAndrews Date: Mon, 11 Apr 2016 14:09:42 -0400 Subject: Remove failing check NEWPATH1 (C:\MinGW\msys\bin) won't actually be created until the second script is run --- 1-setup-path-win.bat | 1 - 1 file changed, 1 deletion(-) (limited to '1-setup-path-win.bat') diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 2c15857bb7..c42f34444a 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -6,7 +6,6 @@ SET NEWPATH1="C:\MinGW\msys\1.0\bin" SET NEWPATH2="C:\MinGW\bin" :: Make sure paths exist -IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch) IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) :: Add paths -- cgit v1.2.3 From 5b86028d148f7e8b5573e4426cc67c26df82a1d4 Mon Sep 17 00:00:00 2001 From: NoahAndrews Date: Mon, 11 Apr 2016 14:14:15 -0400 Subject: Updated comment --- 1-setup-path-win.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '1-setup-path-win.bat') diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index c42f34444a..6965f5bb95 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -5,7 +5,7 @@ SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe SET NEWPATH1="C:\MinGW\msys\1.0\bin" SET NEWPATH2="C:\MinGW\bin" -:: Make sure paths exist +:: Make sure the second path exists. The first path won't be created until the second script is run IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) :: Add paths -- cgit v1.2.3 From b437de8874244711280f984c1db463937750072d Mon Sep 17 00:00:00 2001 From: NoahAndrews Date: Mon, 11 Apr 2016 14:30:15 -0400 Subject: Added admin privilege check Running this as a non-administrator appears to work at first, but the changes wouldn't stick on my Win 8.1 system. It's weird, but this script needs to run as admin. --- 1-setup-path-win.bat | 7 +++++++ 1 file changed, 7 insertions(+) (limited to '1-setup-path-win.bat') diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat index 6965f5bb95..f612d0f4a7 100644 --- a/1-setup-path-win.bat +++ b/1-setup-path-win.bat @@ -5,6 +5,13 @@ SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe SET NEWPATH1="C:\MinGW\msys\1.0\bin" SET NEWPATH2="C:\MinGW\bin" +:: Make sure we're running with administrator privileges +NET SESSION >nul 2>&1 +IF ERRORLEVEL 1 ( + ECHO FAILED. Run this script with administrator privileges. + GOTO ExitBatch +) + :: Make sure the second path exists. The first path won't be created until the second script is run IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch) -- cgit v1.2.3