4e8b5af6c4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
cpp-windows
Operar apps C++ del registry en Windows desde WSL2: compilar, desplegar, lanzar, verificar y relanzar.
Funciones del grupo
| ID | Firma corta | Que hace |
|---|---|---|
build_cpp_windows_bash_infra |
build_cpp_windows([target]) |
Cross-compila apps C++ para Windows con mingw-w64 |
deploy_cpp_exe_to_windows_bash_infra |
deploy_cpp_exe_to_windows(app_name, app_dir) |
Copia .exe + DLLs + assets al Desktop Windows, mata proceso previo |
launch_cpp_app_windows_bash_infra |
launch_cpp_app_windows(app_name, [desktop_dir]) |
Lanza .exe en Windows via cmd.exe /c start, retorna inmediatamente |
is_cpp_app_running_windows_bash_infra |
is_cpp_app_running_windows(app_name) |
Exit 0 si el proceso esta vivo (tasklist.exe), stdout: RUNNING: PID=N MEM=...K |
launch_cpp_app_windows_bash_infra |
launch_cpp_app_windows(app_name, [desktop_dir]) |
Lanza .exe en Windows via cmd.exe /c start, retorna inmediatamente |
e2e_run_cpp_windows_bash_infra |
e2e_run_cpp_windows(target, [--no-build], [--no-deploy]) |
Build + deploy + run headless de app C++ (tests e2e tipo altsnap) |
redeploy_cpp_app_windows_bash_pipelines |
redeploy_cpp_app_windows(app_name, app_dir, [--build]) |
Pipeline completo: build? + deploy + launch + verify en un comando |
Ejemplo canonico
Redeploy rapido (build ya hecho)
source bash/functions/infra/deploy_cpp_exe_to_windows.sh
source bash/functions/infra/launch_cpp_app_windows.sh
source bash/functions/infra/is_cpp_app_running_windows.sh
deploy_cpp_exe_to_windows "registry_dashboard" \
"/home/lucas/fn_registry/projects/fn_monitoring/apps/registry_dashboard"
launch_cpp_app_windows "registry_dashboard"
sleep 1
if is_cpp_app_running_windows "registry_dashboard"; then
echo "OK: arrancado"
else
echo "ERROR: no arranco" >&2; exit 1
fi
Via pipeline (un solo comando)
source bash/functions/pipelines/redeploy_cpp_app_windows.sh
# Sin recompilar
redeploy_cpp_app_windows "registry_dashboard" \
"/home/lucas/fn_registry/projects/fn_monitoring/apps/registry_dashboard"
# Con recompilacion previa
redeploy_cpp_app_windows "chart_demo" \
"/home/lucas/fn_registry/cpp/apps/chart_demo" --build
Comprobar si esta vivo antes de decidir
source bash/functions/infra/is_cpp_app_running_windows.sh
if is_cpp_app_running_windows "registry_dashboard"; then
echo "Ya esta corriendo — skip launch"
else
launch_cpp_app_windows "registry_dashboard"
fi
Fronteras
- No gestiona builds Linux ni assets de Linux — solo el flujo Windows.
- No verifica que la app funcione correctamente, solo que el proceso existe (
tasklist.exe). - No gestiona credenciales ni configuracion de la app — eso es responsabilidad de cada app via
local_files/. - Tests automatizados en CI no son posibles — requieren WSL2 con Windows activo.
Prerequisitos
- WSL2 con interop a Windows habilitado (
tasklist.exe,cmd.exe,wslpathaccesibles). mingw-w64instalado en WSL parabuild_cpp_windows(sudo apt install mingw-w64).- El .exe compilado en
cpp/build/windows/apps/<app>/antes dedeploy_cpp_exe_to_windows.
Notas
El flujo estandar es: build_cpp_windows → deploy_cpp_exe_to_windows → launch_cpp_app_windows → is_cpp_app_running_windows. El pipeline redeploy_cpp_app_windows encapsula los pasos 2-4 (con 1 opcional via --build).
deploy_cpp_exe_to_windows ya incluye un taskkill.exe interno — no es necesario matar el proceso manualmente antes de llamarlo. is_cpp_app_running_windows es util cuando se quiere tomar la decision de matar/no matar de forma explicita antes del deploy.