Skip to content

Commit 042db43

Browse files
committed
fix: improve variable handling and logging in Windows script
- Updated the script to enable delayed expansion for better variable management during execution. - Refined directory existence checks to use NUL for more reliable validation. - Enhanced logging for marker file writing to ensure errors are captured correctly, improving overall script robustness.
1 parent 3982150 commit 042db43

1 file changed

Lines changed: 19 additions & 18 deletions

File tree

  • apps/portal/src/app/api/download-agent/scripts

apps/portal/src/app/api/download-agent/scripts/windows.ts

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export function generateWindowsScript(config: ScriptConfig): string {
55

66
const script = `@echo off
77
title CompAI Device Setup
8-
setlocal EnableExtensions DisableDelayedExpansion
8+
setlocal EnableExtensions EnableDelayedExpansion
99
color 0A
1010
1111
echo ------------------------------------------------------------
@@ -26,6 +26,7 @@ set "LOG_FILE="
2626
set "HAS_ERROR=0"
2727
set "ERRORS="
2828
set "EXIT_CODE=0"
29+
set "nl=^
2930
3031
REM Require Administrator (check High Mandatory Level) and exit with instructions if not elevated
3132
whoami /groups | find "S-1-16-12288" >nul 2>&1
@@ -57,15 +58,15 @@ echo.
5758
REM Choose a writable directory (primary first, then fallback) without parentheses blocks
5859
echo Choosing destination directory...
5960
echo Primary: "%PRIMARY_DIR%"
60-
if exist "%PRIMARY_DIR%\" set "CHOSEN_DIR=%PRIMARY_DIR%"
61+
if exist "%PRIMARY_DIR%\NUL" set "CHOSEN_DIR=%PRIMARY_DIR%"
6162
if not defined CHOSEN_DIR echo CMD: mkdir "%PRIMARY_DIR%"
6263
if 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%"
6465
if 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%"
6667
if not defined CHOSEN_DIR echo CMD: mkdir "%FALLBACK_DIR%"
6768
if 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
7071
if 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
)
8687
echo Logs will be written to: %LOG_FILE%
8788
echo.
@@ -90,7 +91,7 @@ REM Write marker files
9091
if 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 (
120121
REM Set permissive read ACLs for SYSTEM and Administrators
121122
if 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
128129
echo.
129130
echo Verifying markers...
130131
if 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
)
142143
rem Skipping registry checks per request

0 commit comments

Comments
 (0)