From cf8ea8bbce273dbec93edd9aa3634cd194cf7149 Mon Sep 17 00:00:00 2001 From: denis0001-dev Date: Mon, 7 Sep 2026 18:09:17 +0300 Subject: [PATCH] Speed up Windows x64 CI: beta build, fix MSVC lookup on GHA. Co-authored-by: Cursor --- .github/workflows/desktop-windows-x64.yml | 5 +- .../scripts/compile-windows-native.cmd | 63 +++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 app/desktop/scripts/compile-windows-native.cmd diff --git a/.github/workflows/desktop-windows-x64.yml b/.github/workflows/desktop-windows-x64.yml index e9322e6..6dae969 100644 --- a/.github/workflows/desktop-windows-x64.yml +++ b/.github/workflows/desktop-windows-x64.yml @@ -21,6 +21,7 @@ env: jobs: windows-x64: runs-on: windows-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 @@ -43,9 +44,9 @@ jobs: shell: bash run: | export FROMCHAT_PACKAGING_JDK="$JAVA_HOME" - ./gradlew :app:desktop:packageReleaseWindows -PdesktopArch=x64 --no-daemon + ./gradlew :app:desktop:packageBetaWindows -PbetaDesktop -PdesktopArch=x64 --no-daemon --console=plain - uses: actions/upload-artifact@v4 with: name: windows-x64-installer - path: app/desktop/build/distributions/release/*-windows-x64.exe + path: app/desktop/build/distributions/release/FromChat-Setup-*-beta2.exe if-no-files-found: error diff --git a/app/desktop/scripts/compile-windows-native.cmd b/app/desktop/scripts/compile-windows-native.cmd new file mode 100644 index 0000000..bd2270c --- /dev/null +++ b/app/desktop/scripts/compile-windows-native.cmd @@ -0,0 +1,63 @@ +@echo off +setlocal EnableExtensions +set "OUT_DIR=%~1" +set "SRC=%~2" +set "JAVA_HOME=%~3" +set "ARCH=%~4" + +if /I "%ARCH%"=="arm64" ( + set "VCVARS_NAME=vcvarsarm64.bat" +) else ( + set "VCVARS_NAME=vcvars64.bat" +) + +set "VCVARS=" +if exist "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\%VCVARS_NAME%" ( + set "VCVARS=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\%VCVARS_NAME%" +) +if not defined VCVARS if exist "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\%VCVARS_NAME%" ( + set "VCVARS=C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\%VCVARS_NAME%" +) +if not defined VCVARS if exist "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\%VCVARS_NAME%" ( + set "VCVARS=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\%VCVARS_NAME%" +) +if not defined VCVARS if exist "C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\%VCVARS_NAME%" ( + set "VCVARS=C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\%VCVARS_NAME%" +) +if not defined VCVARS if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\%VCVARS_NAME%" ( + set "VCVARS=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\%VCVARS_NAME%" +) +if not defined VCVARS ( + for /f "delims=" %%i in ('where /r "C:\Program Files\Microsoft Visual Studio" %VCVARS_NAME% 2^>nul') do set "VCVARS=%%i" +) +if not defined VCVARS ( + echo compile-windows-native: %VCVARS_NAME% not found >&2 + exit /b 1 +) + +call "%VCVARS%" +if errorlevel 1 exit /b 1 + +if not exist "%OUT_DIR%" mkdir "%OUT_DIR%" +cd /d "%OUT_DIR%" + +set "JNI_INCLUDE=%JAVA_HOME%\include" +set "JNI_WIN32=%JNI_INCLUDE%\win32" + +cl /nologo /LD /EHsc /std:c++17 /utf-8 ^ + /I"%JNI_INCLUDE%" /I"%JNI_WIN32%" ^ + "%SRC%" /Fe:fromchat_windows.dll ^ + /link windowsapp.lib user32.lib shell32.lib ole32.lib oleaut32.lib uxtheme.lib +if errorlevel 1 ( + echo compile-windows-native: cl failed >&2 + exit /b 1 +) +if not exist "fromchat_windows.dll" ( + echo compile-windows-native: missing fromchat_windows.dll in %OUT_DIR% >&2 + exit /b 1 +) + +if exist "fromchat_windows.lib" del "fromchat_windows.lib" +if exist "fromchat_windows.exp" del "fromchat_windows.exp" +if exist "WindowsNativeBridge.obj" del "WindowsNativeBridge.obj" +exit /b 0