diff --git a/install.cmd b/install.cmd index acbf496..5a3014b 100644 --- a/install.cmd +++ b/install.cmd @@ -29,4 +29,14 @@ if errorlevel 1 ( "%PS%" -NoProfile -ExecutionPolicy Bypass -File "%TMP_PS%" %* set "RC=%ERRORLEVEL%" del "%TMP_PS%" >nul 2>nul -exit /b %RC% + +set "DOSH_CMD_PREFIX=%PREFIX%" +if "%DOSH_CMD_PREFIX%"=="" set "DOSH_CMD_PREFIX=%USERPROFILE%\.local" +set "DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\bin" +set "DOSH_NEXT_PATH=%PATH%" +if "%RC%"=="0" ( + echo ;%PATH%; | find /I ";%DOSH_CMD_BINDIR%;" >nul 2>nul + if errorlevel 1 set "DOSH_NEXT_PATH=%DOSH_CMD_BINDIR%;%PATH%" +) + +endlocal & set "PATH=%DOSH_NEXT_PATH%" & exit /b %RC% diff --git a/tests/release_scripts.rs b/tests/release_scripts.rs index 224adc1..8dbcaeb 100644 --- a/tests/release_scripts.rs +++ b/tests/release_scripts.rs @@ -259,7 +259,16 @@ fn windows_cmd_installer_wraps_native_powershell_installer() { assert!(cmd.contains("for %%P in (powershell.exe pwsh.exe powershell pwsh) do")); assert!(cmd.contains("Invoke-WebRequest -UseBasicParsing")); assert!(cmd.contains("-ExecutionPolicy Bypass -File \"%TMP_PS%\" %*")); - assert!(cmd.contains("exit /b %RC%")); + assert!(cmd.contains("set \"DOSH_CMD_PREFIX=%PREFIX%\"")); + assert!( + cmd.contains( + "if \"%DOSH_CMD_PREFIX%\"==\"\" set \"DOSH_CMD_PREFIX=%USERPROFILE%\\.local\"" + ) + ); + assert!(cmd.contains("set \"DOSH_CMD_BINDIR=%DOSH_CMD_PREFIX%\\bin\"")); + assert!(cmd.contains("echo ;%PATH%; | find /I \";%DOSH_CMD_BINDIR%;\"")); + assert!(cmd.contains("set \"DOSH_NEXT_PATH=%DOSH_CMD_BINDIR%;%PATH%\"")); + assert!(cmd.contains("endlocal & set \"PATH=%DOSH_NEXT_PATH%\" & exit /b %RC%")); assert!(readme.contains("Windows client from `cmd.exe`:")); assert!(readme.contains("install.cmd")); }