Files
goose/ui/desktop/scripts/prepare-windows-npm.sh
2025-04-08 10:07:37 -07:00

102 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
set -e
# Script to prepare Windows npm bundle
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PLATFORM_WIN_DIR="$SCRIPT_DIR/../src/platform/windows"
WIN_BIN_DIR="$PLATFORM_WIN_DIR/bin"
DEST_BIN_DIR="$SCRIPT_DIR/../src/bin"
echo "Preparing Windows npm bundle..."
echo "SCRIPT_DIR: $SCRIPT_DIR"
echo "PLATFORM_WIN_DIR: $PLATFORM_WIN_DIR"
echo "WIN_BIN_DIR: $WIN_BIN_DIR"
echo "DEST_BIN_DIR: $DEST_BIN_DIR"
# Ensure directories exist
mkdir -p "$WIN_BIN_DIR"
# Node.js version and paths
NODE_VERSION="23.10.0"
NODE_MSI_URL="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-x64.msi"
# Create Windows Node.js installer script
echo "Creating install-node.cmd..."
cat > "$WIN_BIN_DIR/install-node.cmd" << 'EOL'
@echo off
setlocal enabledelayedexpansion
REM Check if Node.js is installed in Program Files
if exist "C:\Program Files\nodejs\node.exe" (
echo Node.js found in Program Files
set "NODE_EXE=C:\Program Files\nodejs\node.exe"
goto :found
)
REM Check if Node.js is installed in Program Files (x86)
if exist "C:\Program Files (x86)\nodejs\node.exe" (
echo Node.js found in Program Files (x86)
set "NODE_EXE=C:\Program Files (x86)\nodejs\node.exe"
goto :found
)
echo Node.js not found in standard locations, installing...
REM Download Node.js MSI installer
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%1' -OutFile '%TEMP%\node-setup.msi'}"
REM Install Node.js silently
msiexec /i "%TEMP%\node-setup.msi" /qn
REM Wait a bit for installation to complete
timeout /t 5 /nobreak
REM Clean up
del "%TEMP%\node-setup.msi"
REM Set path to installed Node.js
set "NODE_EXE=C:\Program Files\nodejs\node.exe"
:found
echo Using Node.js: %NODE_EXE%
exit /b 0
EOL
# Create a modified npx.cmd that checks for system Node.js first
echo "Creating npx.cmd..."
cat > "$WIN_BIN_DIR/npx.cmd" << 'EOL'
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET "SCRIPT_DIR=%~dp0"
REM Try to find Node.js in standard locations first
if exist "C:\Program Files\nodejs\npx.cmd" (
"C:\Program Files\nodejs\npx.cmd" %*
exit /b %errorlevel%
)
if exist "C:\Program Files (x86)\nodejs\npx.cmd" (
"C:\Program Files (x86)\nodejs\npx.cmd" %*
exit /b %errorlevel%
)
REM If Node.js not found, run installer
call "%SCRIPT_DIR%install-node.cmd" "https://nodejs.org/dist/v23.10.0/node-v23.10.0-x64.msi"
if errorlevel 1 (
echo Failed to install Node.js
exit /b 1
)
REM Try using the newly installed Node.js
if exist "C:\Program Files\nodejs\npx.cmd" (
"C:\Program Files\nodejs\npx.cmd" %*
exit /b %errorlevel%
)
echo Failed to find npx after Node.js installation
exit /b 1
EOL
echo "Windows npm bundle prepared successfully"