aboutsummaryrefslogtreecommitdiffstats
path: root/1-setup-path-win.bat
diff options
context:
space:
mode:
authorIBNobody <protospherex@gmail.com>2016-03-30 16:31:46 -0500
committerIBNobody <protospherex@gmail.com>2016-03-30 16:31:46 -0500
commita3ed43227385a8ab95b13510e0ecf0ffeed96083 (patch)
treef84151c2086c41f5e220444b977c476ad32c2134 /1-setup-path-win.bat
parentae47275bf34549a0f66cb2f37daca299fd4ecdee (diff)
downloadfirmware-a3ed43227385a8ab95b13510e0ecf0ffeed96083.tar.gz
firmware-a3ed43227385a8ab95b13510e0ecf0ffeed96083.tar.bz2
firmware-a3ed43227385a8ab95b13510e0ecf0ffeed96083.zip
Drastically rewrote the path script to handle Explorer's stubborn grasp of EnvVars. Tested on Win7.
Diffstat (limited to '1-setup-path-win.bat')
-rw-r--r--1-setup-path-win.bat79
1 files changed, 68 insertions, 11 deletions
diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat
index 6957dbc3f..2c15857bb 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 <pathToAdd>
+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