mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
152 lines
4.8 KiB
Batchfile
152 lines
4.8 KiB
Batchfile
@ECHO OFF
|
|
|
|
CHCP 1252
|
|
|
|
REM %VAR:"=% mean dequoted %VAR%
|
|
|
|
set PATH=%QT_BIN_DIR:"=%;%PATH%
|
|
|
|
echo "Using Qt in %QT_BIN_DIR%"
|
|
echo "Using QIF in %QIF_BIN_DIR%"
|
|
echo "Using WiX in %WIX_BIN_DIR%"
|
|
|
|
if "%WIX_BIN_DIR%"=="" (
|
|
echo "WIX_BIN_DIR is not set"
|
|
exit /b 1
|
|
)
|
|
|
|
set WIX_BIN_DIR_UNQUOTED=%WIX_BIN_DIR:"=%
|
|
|
|
set WIX_CLI=%WIX_BIN_DIR_UNQUOTED%\wix.exe
|
|
|
|
if not exist "%WIX_CLI%" (
|
|
echo "WiX CLI (wix.exe) was not found in %WIX_BIN_DIR%"
|
|
exit /b 1
|
|
)
|
|
|
|
REM Hold on to current directory
|
|
set PROJECT_DIR=%cd%
|
|
set SCRIPT_DIR=%PROJECT_DIR:"=%\deploy
|
|
|
|
set WORK_DIR=%SCRIPT_DIR:"=%\build_%BUILD_ARCH:"=%
|
|
set APP_NAME=AmneziaVPN
|
|
set APP_FILENAME=%APP_NAME:"=%.exe
|
|
set SERVICE_FILENAME=%APP_NAME:"=%-service.exe
|
|
set APP_DOMAIN=org.amneziavpn.package
|
|
set OUT_APP_DIR=%WORK_DIR:"=%\client\release
|
|
set PREBILT_DEPLOY_DATA_DIR=%PROJECT_DIR:"=%\client\3rd-prebuilt\deploy-prebuilt\windows\x%BUILD_ARCH:"=%
|
|
set DEPLOY_DATA_DIR=%SCRIPT_DIR:"=%\data\windows\x%BUILD_ARCH:"=%
|
|
set INSTALLER_DATA_DIR=%WORK_DIR:"=%\installer\packages\%APP_DOMAIN:"=%\data
|
|
set TARGET_FILENAME=%PROJECT_DIR:"=%\%APP_NAME:"=%_x%BUILD_ARCH:"=%.exe
|
|
set TARGET_MSI_FILENAME=%PROJECT_DIR:"=%\%APP_NAME:"=%_x%BUILD_ARCH:"=%.msi
|
|
set STAGE_DIR=%WORK_DIR:"=%\stage
|
|
|
|
echo "Environment:"
|
|
echo "WORK_DIR: %WORK_DIR%"
|
|
echo "APP_FILENAME: %APP_FILENAME%"
|
|
echo "SERVICE_FILENAME: %SERVICE_FILENAME%"
|
|
echo "PROJECT_DIR: %PROJECT_DIR%"
|
|
echo "SCRIPT_DIR: %SCRIPT_DIR%"
|
|
echo "OUT_APP_DIR: %OUT_APP_DIR%"
|
|
echo "DEPLOY_DATA_DIR: %DEPLOY_DATA_DIR%"
|
|
echo "INSTALLER_DATA_DIR: %INSTALLER_DATA_DIR%"
|
|
echo "TARGET_FILENAME: %TARGET_FILENAME%"
|
|
echo "TARGET_MSI_FILENAME: %TARGET_MSI_FILENAME%"
|
|
echo "STAGE_DIR: %STAGE_DIR%"
|
|
|
|
echo "Cleanup..."
|
|
rmdir /Q /S %WORK_DIR%
|
|
del %TARGET_FILENAME%
|
|
del %TARGET_MSI_FILENAME%
|
|
rmdir /Q /S "%STAGE_DIR%"
|
|
|
|
mkdir %WORK_DIR%
|
|
|
|
call "%QT_BIN_DIR:"=%\qt-cmake" --version
|
|
"%QT_BIN_DIR:"=%\windeployqt" -v
|
|
cmake --version
|
|
|
|
cd %PROJECT_DIR%
|
|
call cmake . -B %WORK_DIR% "-DCMAKE_BUILD_TYPE:STRING=Release" "-DCMAKE_PREFIX_PATH:PATH=%QT_BIN_DIR%"
|
|
|
|
cd %WORK_DIR%
|
|
cmake --build . --config release -- /p:UseMultiToolTask=true /m
|
|
if %errorlevel% neq 0 exit /b %errorlevel%
|
|
|
|
echo "Deploying..."
|
|
|
|
mkdir "%OUT_APP_DIR%"
|
|
copy "%WORK_DIR%\service\server\release\%SERVICE_FILENAME%" "%OUT_APP_DIR%"
|
|
rem copy "%WORK_DIR%\client\%APP_FILENAME%" "%OUT_APP_DIR%"
|
|
|
|
copy /Y "%PROJECT_DIR%\client\images\app.ico" "%OUT_APP_DIR%\AmneziaVPN.ico" >nul
|
|
|
|
echo "Signing exe"
|
|
cd %OUT_APP_DIR%
|
|
signtool sign /v /n "Privacy Technologies OU" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 *.exe
|
|
|
|
"%QT_BIN_DIR:"=%\windeployqt" --release --qmldir "%PROJECT_DIR:"=%\client" --force --no-translations --force-openssl "%OUT_APP_DIR:"=%\%APP_FILENAME:"=%"
|
|
"%QT_BIN_DIR:"=%\windeployqt" --release "%OUT_APP_DIR:"=%\%SERVICE_FILENAME:"=%"
|
|
|
|
signtool sign /v /n "Privacy Technologies OU" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 *.dll
|
|
|
|
echo "Copying deploy data..."
|
|
xcopy %DEPLOY_DATA_DIR% %OUT_APP_DIR% /s /e /y /i /f
|
|
xcopy %PREBILT_DEPLOY_DATA_DIR% %OUT_APP_DIR% /s /e /y /i /f
|
|
|
|
cd %SCRIPT_DIR%
|
|
xcopy %SCRIPT_DIR:"=%\installer %WORK_DIR:"=%\installer /s /e /y /i /f
|
|
mkdir %INSTALLER_DATA_DIR%
|
|
|
|
echo "Deploy finished, content:"
|
|
dir %OUT_APP_DIR%
|
|
|
|
cd %OUT_APP_DIR%
|
|
echo "Compressing data..."
|
|
"%QIF_BIN_DIR:"=%\archivegen" -c 9 %INSTALLER_DATA_DIR:"=%\%APP_NAME:"=%.7z .
|
|
|
|
cd "%WORK_DIR:"=%\installer"
|
|
echo "Creating installer..."
|
|
"%QIF_BIN_DIR:"=%\binarycreator" --offline-only -v -c config\windows.xml -p packages -f %TARGET_FILENAME%
|
|
|
|
timeout 5
|
|
|
|
cd %PROJECT_DIR%
|
|
signtool sign /v /n "Privacy Technologies OU" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 "%TARGET_FILENAME%"
|
|
|
|
echo "Preparing staging directory for MSI..."
|
|
rmdir /Q /S "%STAGE_DIR%"
|
|
mkdir "%STAGE_DIR%"
|
|
xcopy "%OUT_APP_DIR%" "%STAGE_DIR%" /s /e /y /i /f >nul
|
|
|
|
echo "Building MSI via CPack..."
|
|
rmdir /Q /S "%WORK_DIR%\_CPack_Packages"
|
|
cd %WORK_DIR%
|
|
cpack -G WIX -C Release --config "%WORK_DIR%\CPackConfig.cmake"
|
|
if exist "%WORK_DIR%\_CPack_Packages\win64\WIX\wix.log" (
|
|
echo ---------------------------------------------
|
|
echo Contents of wix.log:
|
|
type "%WORK_DIR%\_CPack_Packages\win64\WIX\wix.log"
|
|
echo ---------------------------------------------
|
|
)
|
|
if %errorlevel% neq 0 exit /b %errorlevel%
|
|
|
|
set GENERATED_MSI=
|
|
for /f "delims=" %%i in ('dir /b /a:-d /o:-d "%WORK_DIR%\*.msi"') do (
|
|
if not defined GENERATED_MSI set GENERATED_MSI=%WORK_DIR%\%%i
|
|
)
|
|
|
|
if "%GENERATED_MSI%"=="" (
|
|
echo "Failed to locate generated MSI package"
|
|
exit /b 1
|
|
)
|
|
|
|
copy /Y "%GENERATED_MSI%" "%TARGET_MSI_FILENAME%"
|
|
if %errorlevel% neq 0 exit /b %errorlevel%
|
|
|
|
cd %PROJECT_DIR%
|
|
signtool sign /v /n "Privacy Technologies OU" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 "%TARGET_MSI_FILENAME%"
|
|
|
|
echo "Finished, see %TARGET_FILENAME% and %TARGET_MSI_FILENAME%"
|
|
exit 0
|