5d2a14e50a
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
53 lines
2.2 KiB
Bash
53 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
# launch_cpp_app_windows v1.1.0 — Lanza un .exe en Windows desde WSL2 via PowerShell.
|
|
# Asume que el exe ya fue copiado por deploy_cpp_exe_to_windows al escritorio.
|
|
# v1.1.0: propaga FN_REGISTRY_ROOT (Windows path) y FN_REGISTRY_ROOT_WSL (Linux path)
|
|
# al proceso hijo para que pueda invocar WSL python via wsl.exe.
|
|
|
|
launch_cpp_app_windows() {
|
|
local app="${1:-}"
|
|
local desktop_dir="${2:-/mnt/c/Users/lucas/Desktop}"
|
|
|
|
if [ -z "$app" ]; then
|
|
echo "ERROR: uso: launch_cpp_app_windows <app_name> [desktop_dir]" >&2
|
|
return 1
|
|
fi
|
|
|
|
local exe_path="$desktop_dir/apps/$app/$app.exe"
|
|
|
|
if [ ! -f "$exe_path" ]; then
|
|
echo "ERROR: exe no encontrado: $exe_path" >&2
|
|
echo "Copia primero con: deploy_cpp_exe_to_windows $app <app_dir>" >&2
|
|
return 1
|
|
fi
|
|
|
|
# Usamos PowerShell en vez de cmd.exe — los backslashes de paths Windows
|
|
# no rompen el escaping aqui (cmd.exe `\"` interpreta como escape de
|
|
# comilla y deja el string sin cerrar; PowerShell single-quote es literal).
|
|
local win_app_dir win_exe
|
|
win_app_dir=$(wslpath -w "$desktop_dir/apps/$app")
|
|
win_exe="$win_app_dir\\$app.exe"
|
|
|
|
# Deducir raiz del registry en Linux (WSL) y traducir a Windows path.
|
|
# FN_REGISTRY_ROOT_WSL puede sobreescribirse en el entorno del llamante.
|
|
local linux_root win_root
|
|
linux_root="${FN_REGISTRY_ROOT_WSL:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)}"
|
|
win_root=$(wslpath -w "$linux_root")
|
|
|
|
# Start-Process detacha (equivale a `start` de cmd) y respeta -WorkingDirectory.
|
|
# Las comillas simples en PowerShell son literales — no procesa \ ni $.
|
|
# Se inyectan FN_REGISTRY_ROOT (Windows path) y FN_REGISTRY_ROOT_WSL (Linux path)
|
|
# para que el exe pueda localizar el venv WSL y hacer: wsl.exe -- python3 ...
|
|
powershell.exe -NoProfile -Command \
|
|
"\$env:FN_REGISTRY_ROOT='$win_root'; \$env:FN_REGISTRY_ROOT_WSL='$linux_root'; Start-Process -FilePath '$win_exe' -WorkingDirectory '$win_app_dir'" \
|
|
>/dev/null 2>&1
|
|
|
|
local ts
|
|
ts=$(date '+%Y-%m-%dT%H:%M:%S')
|
|
echo "OK: $app launched at $ts"
|
|
}
|
|
|
|
if [ "${BASH_SOURCE[0]}" = "$0" ]; then
|
|
launch_cpp_app_windows "$@"
|
|
fi
|