]> vilimpoc.org git repositories - dotfiles/blame - setup-windows.bat
dotfiles: install the common tools every project on these machines expects
[dotfiles] / setup-windows.bat
CommitLineData
3c096107
MV
1@echo off\r
2\r
3@rem ---------------------------------------------------------------------------\r
452f525c 4@rem setup-windows.bat - provision a fresh Windows box for native development\r
3c096107
MV
5@rem ---------------------------------------------------------------------------\r
6\r
2e281421 7@rem --- Non-admin (per-user) winget installs ---\r
3c096107
MV
8winget install Anthropic.ClaudeCode\r
9winget install Git.Git\r
10winget install Microsoft.PowerShell Microsoft.Sysinternals.ProcessExplorer Microsoft.Sysinternals.ProcessMonitor Microsoft.Sysinternals.SDelete Microsoft.VisualStudioCode Microsoft.WindowsTerminal\r
d68d73b6 11winget install Oracle.VirtualBox\r
3c096107
MV
12winget install Python.Python.3.13\r
13winget install WinMerge.WinMerge\r
14winget install WiXToolset.WiXCLI\r
15\r
16@rem OpenCppCoverage: native (PE) line coverage for the C++ binaries. run-coverage-occ.py drives the\r
452f525c 17@rem pytest suite under it to produce an HTML report (the binaries under test build with PDBs,\r
3c096107
MV
18@rem which it reads). The installer elevates via UAC.\r
19winget install OpenCppCoverage.OpenCppCoverage\r
20\r
3c096107
MV
21@rem ---------------------------------------------------------------------------\r
22@rem No package manager needed for the Windows build\r
23@rem\r
24@rem Just:\r
25@rem cd windows && cmake -B build -G "Visual Studio 17 2022" -A x64 && cmake --build build --config Release\r
26@rem ---------------------------------------------------------------------------\r
27\r
28@rem --- Elevated installs (VS2022, WDK, system tools) ---\r
29@rem The elevated script runs in its own window and logs to setup-windows-uac.log.\r
30@rem -PassThru + $p.ExitCode propagates its real exit code back through to ERRORLEVEL.\r
31set "UAC_LOG=%~dp0setup-windows-uac.log"\r
32if exist "%UAC_LOG%" del "%UAC_LOG%"\r
33\r
34powershell -NoProfile -Command "$p = Start-Process powershell -Verb RunAs -ArgumentList '-NoProfile','-ExecutionPolicy','Bypass','-File','""%~dp0setup-windows-with-uac.ps1""' -Wait -PassThru; exit $p.ExitCode"\r
35set "UAC_RC=%ERRORLEVEL%"\r
36\r
37@rem --- Surface the elevated session's output (its window has already closed) ---\r
38if exist "%UAC_LOG%" (\r
39 echo.\r
40 echo ===== elevated setup log ^(%UAC_LOG%^) =====\r
41 type "%UAC_LOG%"\r
42 echo ===== end of elevated setup log =====\r
43) else (\r
44 echo [setup-windows] WARNING: no elevated log found at "%UAC_LOG%".\r
45 echo [setup-windows] The elevated window may have been cancelled at the UAC prompt.\r
46)\r
47\r
2bbc9b41
MV
48@rem --- Non-elevated PowerShell half ---\r
49@rem WinMerge on the user PATH, BinSkim, and the global git config (identity +\r
50@rem core.sshCommand -> a Win32-OpenSSH client, so git shares the Windows\r
51@rem ssh-agent). EDIT THE GIT IDENTITY at the top of setup-windows-no-uac.ps1\r
52@rem before the first run.\r
53@rem\r
54@rem Deliberately NOT elevated: every step writes per-user state (the HKCU PATH,\r
55@rem the .gitconfig under %USERPROFILE%), which the elevated half would write to\r
56@rem the administrator profile instead.\r
57@rem\r
58@rem AFTER the elevated half on purpose: core.sshCommand prefers the ssh.exe that\r
59@rem half unpacks beside rsync.exe - a push through the in-box client is capped\r
60@rem at ~17MB/s - and it can only prefer it once it is on disk. Run either way,\r
61@rem including when the elevated half failed above: nothing here depends on it,\r
62@rem and the fallback is the in-box client that Windows already has.\r
63@rem\r
64@rem Non-fatal: these are conveniences, and the elevated half is the part worth\r
65@rem the UAC prompt. A failure warns and provisioning continues.\r
66powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0setup-windows-no-uac.ps1"\r
67if not "%ERRORLEVEL%"=="0" echo [setup-windows] WARNING: setup-windows-no-uac.ps1 reported a failure ^(see above^); continuing.\r
68\r
3c096107
MV
69if not "%UAC_RC%"=="0" (\r
70 echo.\r
71 echo [setup-windows] ELEVATED SETUP FAILED ^(exit code %UAC_RC%^). See log above.\r
72 exit /b %UAC_RC%\r
73)\r
74echo.\r
75echo [setup-windows] Elevated setup completed successfully.\r
76\r
77@rem Removed: this doesn't work as well as I hoped, maybe try again later\r
78@rem -- Install Headroom ---\r
79@rem py -m pip install "headroom-ai[all]"\r
80@rem npm install headroom-ai\r
81\r
82py -m pip install Pillow