@@ -5,7 +5,7 @@ export function generateWindowsScript(config: ScriptConfig): string {
55
66 const script = `@echo off
77title CompAI Device Setup
8- setlocal EnableExtensions DisableDelayedExpansion
8+ setlocal EnableExtensions EnableDelayedExpansion
99color 0A
1010
1111echo ------------------------------------------------------------
@@ -26,6 +26,7 @@ set "LOG_FILE="
2626set "HAS_ERROR=0"
2727set "ERRORS="
2828set "EXIT_CODE=0"
29+ set "nl=^
2930
3031REM Require Administrator (check High Mandatory Level) and exit with instructions if not elevated
3132whoami /groups | find "S-1-16-12288" >nul 2>&1
@@ -57,15 +58,15 @@ echo.
5758REM Choose a writable directory (primary first, then fallback) without parentheses blocks
5859echo Choosing destination directory...
5960echo Primary: "%PRIMARY_DIR%"
60- if exist "%PRIMARY_DIR%\" set "CHOSEN_DIR=%PRIMARY_DIR%"
61+ if exist "%PRIMARY_DIR%\NUL " set "CHOSEN_DIR=%PRIMARY_DIR%"
6162if not defined CHOSEN_DIR echo CMD: mkdir "%PRIMARY_DIR%"
6263if not defined CHOSEN_DIR mkdir "%PRIMARY_DIR%" 2>&1
63- if not defined CHOSEN_DIR if exist "%PRIMARY_DIR%\" set "CHOSEN_DIR=%PRIMARY_DIR%"
64+ if not defined CHOSEN_DIR if exist "%PRIMARY_DIR%\NUL " set "CHOSEN_DIR=%PRIMARY_DIR%"
6465if not defined CHOSEN_DIR echo Fallback: "%FALLBACK_DIR%"
65- if not defined CHOSEN_DIR if exist "%FALLBACK_DIR%\" set "CHOSEN_DIR=%FALLBACK_DIR%"
66+ if not defined CHOSEN_DIR if exist "%FALLBACK_DIR%\NUL " set "CHOSEN_DIR=%FALLBACK_DIR%"
6667if not defined CHOSEN_DIR echo CMD: mkdir "%FALLBACK_DIR%"
6768if not defined CHOSEN_DIR mkdir "%FALLBACK_DIR%" 2>&1
68- if not defined CHOSEN_DIR if exist "%FALLBACK_DIR%\" set "CHOSEN_DIR=%FALLBACK_DIR%"
69+ if not defined CHOSEN_DIR if exist "%FALLBACK_DIR%\NUL " set "CHOSEN_DIR=%FALLBACK_DIR%"
6970
7071if not defined CHOSEN_DIR (
7172 color 0E
@@ -79,9 +80,9 @@ if not defined CHOSEN_DIR (
7980 set "EXIT_CODE=1"
8081) else (
8182 set "MARKER_DIR=%CHOSEN_DIR%"
82- if not "% MARKER_DIR:~-1% "=="\\" set "MARKER_DIR=% MARKER_DIR% \\"
83- set "LOG_FILE=% MARKER_DIR% setup.log"
84- echo Using directory: % MARKER_DIR%
83+ if not "! MARKER_DIR:~-1! "=="\\" set "MARKER_DIR=! MARKER_DIR! \\"
84+ set "LOG_FILE=! MARKER_DIR! setup.log"
85+ echo Using directory: ! MARKER_DIR!
8586)
8687echo Logs will be written to: %LOG_FILE%
8788echo.
@@ -90,7 +91,7 @@ REM Write marker files
9091if defined CHOSEN_DIR (
9192 echo Writing organization marker file...
9293 echo CMD: write org marker to "%MARKER_DIR%%ORG_ID%"
93- (echo %ORG_ID%) ^ > "%MARKER_DIR%%ORG_ID%" 2^>^ >"%LOG_FILE%"
94+ (echo %ORG_ID%) > "%MARKER_DIR%%ORG_ID%" 2> >"%LOG_FILE%"
9495 if errorlevel 1 (
9596 color 0E
9697 echo WARNING: Failed writing organization marker file to %MARKER_DIR%.
@@ -104,7 +105,7 @@ if defined CHOSEN_DIR (
104105
105106 echo Writing employee marker file...
106107 echo CMD: write employee marker to "%MARKER_DIR%%EMPLOYEE_ID%"
107- (echo %EMPLOYEE_ID%) ^ > "%MARKER_DIR%%EMPLOYEE_ID%" 2^>^ >"%LOG_FILE%"
108+ (echo %EMPLOYEE_ID%) > "%MARKER_DIR%%EMPLOYEE_ID%" 2> >"%LOG_FILE%"
108109 if errorlevel 1 (
109110 color 0E
110111 echo WARNING: Failed writing employee marker file to %MARKER_DIR%.
@@ -120,23 +121,23 @@ if defined CHOSEN_DIR (
120121REM Set permissive read ACLs for SYSTEM and Administrators
121122if defined CHOSEN_DIR (
122123 echo Setting permissions on marker files...
123- icacls "% MARKER_DIR% " /inheritance:e >nul 2>&1
124- icacls "% MARKER_DIR%% ORG_ID% " /grant *S-1-5-18:R *S-1-5-32-544:R /T >nul 2>&1
125- icacls "% MARKER_DIR%% EMPLOYEE_ID% " /grant *S-1-5-18:R *S-1-5-32-544:R /T >nul 2>&1
124+ icacls "! MARKER_DIR! " /inheritance:e >nul 2>&1
125+ icacls "! MARKER_DIR!! ORG_ID! " /grant *S-1-5-18:R *S-1-5-32-544:R >nul 2>&1
126+ icacls "! MARKER_DIR!! EMPLOYEE_ID! " /grant *S-1-5-18:R *S-1-5-32-544:R >nul 2>&1
126127)
127128
128129echo.
129130echo Verifying markers...
130131if defined CHOSEN_DIR (
131- if not exist "% MARKER_DIR%% EMPLOYEE_ID% " (
132+ if not exist "! MARKER_DIR!! EMPLOYEE_ID! " (
132133 color 0E
133- echo WARNING: Employee marker file missing at % MARKER_DIR%% EMPLOYEE_ID%
134- echo [%date% %time%] Verification failed: employee marker file missing >> "% LOG_FILE% "
134+ echo WARNING: Employee marker file missing at ! MARKER_DIR!! EMPLOYEE_ID!
135+ echo [%date% %time%] Verification failed: employee marker file missing >> "! LOG_FILE! "
135136 set "HAS_ERROR=1"
136- set "ERRORS=!ERRORS!- Employee marker file missing at % MARKER_DIR%% EMPLOYEE_ID% .!nl!"
137+ set "ERRORS=!ERRORS!- Employee marker file missing at ! MARKER_DIR!! EMPLOYEE_ID!! .!nl!"
137138 set "EXIT_CODE=2"
138139 ) else (
139- echo [OK] Employee marker file present.
140+ echo [OK] Employee marker file present: !MARKER_DIR!!EMPLOYEE_ID!
140141 )
141142)
142143rem Skipping registry checks per request
0 commit comments