mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
feat: msi installer and cli command (#2020)
* feat: Add msi quite installer * chore: update code for new wix * feat: add cpack wix installer * feat: add gihub workflow for msi * chore: fix deploy script * chore: add wix logs * chore: fix msi build * chore: fix msi build * chore: add wix exts log * chore: add cpackwixpatch for registering the service * chore: fix build script * chore: fix wix fragment * feat: add closing app with reinstalling * chore: update version for test * chore: fix build script * feat: added cli commands --connect and --import (#1967) * fix: delete unused file and disable rollback after unsuccessful service start in msi installer * fix: Add deps to msi * fix: msi deps * feat: added os signal handler * fix: incorrect import at the empty client start (#2024) * chore: add force quit for os signal handler * feat: os signal handler improvements * fix: fixed --connection command --------- Co-authored-by: Mykola Baibuz <mykola.baibuz@gmail.com> Co-authored-by: aiamnezia <ai@amnezia.org> Co-authored-by: Mitternacht822 <sb@amnezia.org>
This commit is contained in:
@@ -8,6 +8,21 @@ 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%
|
||||
@@ -22,6 +37,8 @@ set PREBILT_DEPLOY_DATA_DIR=%PROJECT_DIR:"=%\client\3rd-prebuilt\deploy-prebuilt
|
||||
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%"
|
||||
@@ -32,10 +49,14 @@ 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%
|
||||
|
||||
@@ -56,6 +77,7 @@ mkdir "%OUT_APP_DIR%"
|
||||
copy "%WORK_DIR%\service\server\release\%APP_NAME%-service.exe" "%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%
|
||||
@@ -89,5 +111,38 @@ 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 "Finished, see %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
|
||||
|
||||
13
deploy/installer/wix/close_client_patch.xml
Normal file
13
deploy/installer/wix/close_client_patch.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CPackWiXPatch>
|
||||
<CPackWiXFragment Id="#PRODUCT">
|
||||
<!-- Требует расширение WixToolset.Util.wixext и xmlns util -->
|
||||
<util:CloseApplication
|
||||
Id="CloseAmneziaClient"
|
||||
Target="AmneziaVPN.exe"
|
||||
Description="Closing AmneziaVPN client"
|
||||
TerminateProcess="1"
|
||||
RebootPrompt="no" />
|
||||
</CPackWiXFragment>
|
||||
</CPackWiXPatch>
|
||||
|
||||
24
deploy/installer/wix/service_install_patch.xml
Normal file
24
deploy/installer/wix/service_install_patch.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CPackWiXPatch>
|
||||
<CPackWiXFragment Id="CM_CP_AmneziaVPN_service.exe">
|
||||
<ServiceInstall
|
||||
Id="AmneziaServiceInstall"
|
||||
Name="AmneziaVPN-service"
|
||||
DisplayName="AmneziaVPN Service"
|
||||
Description="Service for AmneziaVPN"
|
||||
Start="auto"
|
||||
Type="ownProcess"
|
||||
ErrorControl="normal"
|
||||
Vital="no">
|
||||
<ServiceDependency Id="BFE" />
|
||||
<ServiceDependency Id="nsi" />
|
||||
</ServiceInstall>
|
||||
<ServiceControl
|
||||
Id="AmneziaServiceControl"
|
||||
Name="AmneziaVPN-service"
|
||||
Start="install"
|
||||
Stop="both"
|
||||
Remove="uninstall"
|
||||
Wait="yes" />
|
||||
</CPackWiXFragment>
|
||||
</CPackWiXPatch>
|
||||
Reference in New Issue
Block a user