merged upstream/master

This commit is contained in:
csoler 2020-08-25 11:52:06 +02:00
commit fa72af4d0c
259 changed files with 12221 additions and 4892 deletions

View File

@ -247,7 +247,7 @@ ${RS_SOURCE_DIR}/build_scripts/Android/pull_sysroot.sh
[source,bash]
--------------------------------------------------------------------------------
## Optionally set Qt version variable consistently with your installation
export QT_VERSION="5.12.4"
export QT_VERSION="5.12.7"
## Optionally set Qt architecture variable consistently with Android device
export QT_ARCH="arm64_v8a"

View File

@ -41,41 +41,56 @@ function define_default_value()
define_default_value ANDROID_APK_PACKAGE "org.retroshare.service"
define_default_value ANDROID_PROCESS_NAME "org.retroshare.service:rs"
define_default_value ANDROID_INSTALL_PATH ""
define_default_value LIB_GDB_SERVER_PATH ""
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
define_default_value GDB_SERVER_PORT 5039
adb_shell()
adb_ushell()
{
adb shell run-as ${ANDROID_APK_PACKAGE} $@
}
[ -z "${ANDROID_INSTALL_PATH}" ] &&
{
ANDROID_INSTALL_PATH="$(adb_ushell pm path "${ANDROID_APK_PACKAGE}")"
ANDROID_INSTALL_PATH="$(dirname ${ANDROID_INSTALL_PATH#"package:"})"
[ -z "${ANDROID_INSTALL_PATH}" ] &&
cat <<EOF
Cannot find install path for ${ANDROID_APK_PACKAGE} make sure it is installed,
or manually specify ANDROID_INSTALL_PATH
EOF
}
## If not passed as environement variable try to determine gdbserver path
## shipped withing Android package
## shipped withing APK
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
{
for mUsualPath in \
"/data/data/${ANDROID_APK_PACKAGE}/lib/libgdbserver.so" \
"/data/app/${ANDROID_APK_PACKAGE}"*"/lib/arm64/libgdbserver.so"
"${ANDROID_INSTALL_PATH}/lib/libgdbserver.so" \
"${ANDROID_INSTALL_PATH}/lib/arm64/libgdbserver.so"
do
adb_shell ls "${mUsualPath}" &&
adb_ushell ls "${mUsualPath}" &&
export LIB_GDB_SERVER_PATH="${mUsualPath}" && break
done
}
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
{
cat <<EOF
libgdbserver.so not found in any of the usual path attempting to look for it
with find, it will take a bunch of time. Take note of the discovered path and
with find, it will take a little more time. Take note of the discovered path and
define LIB_GDB_SERVER_PATH on your commandline at next run to avoid waiting
again.
EOF
tFile="$(mktemp)"
adb_shell find -type f -name 'libgdbserver.so' / | \
grep ${ANDROID_APK_PACKAGE} | tee "${tFile}"
adb_ushell find ${ANDROID_INSTALL_PATH} -type f -name 'libgdbserver.so' | \
tee "${tFile}"
LIB_GDB_SERVER_PATH="$(head -n 1 "${tFile}")"
rm "${tFile}"
@ -87,7 +102,7 @@ EOF
exit -1
}
mPid="$(adb_shell ps | grep ${ANDROID_PROCESS_NAME} | awk '{print $2}')"
mPid="$(adb_ushell ps | grep ${ANDROID_PROCESS_NAME} | awk '{print $2}')"
[ -z "${mPid}" ] &&
{
echo "Failed ${ANDROID_PROCESS_NAME} PID retrival are you sure it is running?"
@ -98,4 +113,4 @@ mPid="$(adb_shell ps | grep ${ANDROID_PROCESS_NAME} | awk '{print $2}')"
## Establish port forwarding so we can connect to gdbserver with gdb
adb forward tcp:${GDB_SERVER_PORT} tcp:${GDB_SERVER_PORT}
((adb_shell ${LIB_GDB_SERVER_PATH} 127.0.0.1:${GDB_SERVER_PORT} --attach ${mPid})&)
((adb_ushell ${LIB_GDB_SERVER_PATH} 127.0.0.1:${GDB_SERVER_PORT} --attach ${mPid})&)

@ -1 +1 @@
Subproject commit 879d5dfe8dcd8995be753120cf1b8bab4dd2ec82
Subproject commit b0d7ae39fe9d9192848bbf7b8902d2188da895c9

View File

@ -0,0 +1 @@
/build/env-mod.bat

View File

@ -9,11 +9,11 @@ call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
%cecho% info "Build %SourceName%"
call "%~dp0build\build.bat" 32 release tor autologin plugins
call "%~dp0build\build.bat" 64 release tor autologin "CONFIG+=rs_use_native_dialogs"
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
%cecho% info "Pack %SourceName%"
call "%~dp0build\pack.bat" 32 release tor
call "%~dp0build\pack.bat" 64 release tor autologin "CONFIG+=rs_use_native_dialogs"
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
exit /B 0

View File

@ -9,11 +9,11 @@ call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
%cecho% info "Build %SourceName%"
call "%~dp0build\build.bat" 32 release autologin plugins
call "%~dp0build\build.bat" 64 release autologin "CONFIG+=rs_use_native_dialogs"
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
%cecho% info "Pack %SourceName%"
call "%~dp0build\pack.bat" 32 release
call "%~dp0build\pack.bat" 64 release autologin "CONFIG+=rs_use_native_dialogs"
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
exit /B 0

View File

@ -0,0 +1,67 @@
@echo off
setlocal
:: Initialize environment
call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-msys2.bat"
if errorlevel 1 goto error_env
:: Initialize environment
call "%~dp0env.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
if not "%ParamNoupdate%"=="1" (
:: Install NSIS
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-nsis"
)
:: Check deployment
if not exist "%RsDeployPath%\retroshare.exe" echo Project is not deployed. Run pack.bat first! & goto error
:: Get compiled revision
set GetRsVersion=%SourcePath%\build_scripts\Windows-msys2\tools\get-rs-version.bat
if not exist "%GetRsVersion%" (
%cecho% error "File not found"
echo %GetRsVersion%
goto error
)
:: Get compiled version
call "%GetRsVersion%" "%RsDeployPath%\retroshare.exe" RsVersion
if errorlevel 1 %cecho% error "Revision not found."& goto error
if "%RsVersion.Extra%"=="" %cecho% error "Extra number not found".& goto error
:: Build defines for script
set NSIS_PARAM=
set NSIS_PARAM=%NSIS_PARAM% /DDEPLOYDIR="%RsDeployPath%"
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
set NSIS_PARAM=%NSIS_PARAM% /DARCHITECTURE="%RsArchitecture%"
set NSIS_PARAM=%NSIS_PARAM% /DREVISION=%RsVersion.Extra%
set QtMainVersion=%QtVersion:~0,1%
:: Create installer
echo %path%
rem makensis %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
rem pushd "%SourcePath%\build_scripts\Windows-msys2\installer"
rem %EnvMSYS2Cmd% "makensis $0 retroshare-Qt%QtMainVersion%.nsi" "%NSIS_PARAM%"
rem popd
"%RsMinGWPath%\bin\makensis" %NSIS_PARAM% "%SourcePath%\build_scripts\Windows-msys2\installer\retroshare-Qt%QtMainVersion%.nsi"
exit /B %ERRORLEVEL%
:error
endlocal
exit /B 1
:error_env
echo Failed to initialize environment.
endlocal
exit /B 1

View File

@ -7,8 +7,6 @@ call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-msys2.bat"
if errorlevel 1 goto error_env

View File

@ -7,8 +7,6 @@ call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-msys2.bat"
if errorlevel 1 goto error_env
@ -17,11 +15,22 @@ call "%~dp0env-base.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
:: Install needed things
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
if not "%ParamNoupdate%"=="1" (
:: Install needed things
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-toolchain mingw-w64-%RsMSYS2Architecture%-qt5 mingw-w64-%RsMSYS2Architecture%-miniupnpc mingw-w64-%RsMSYS2Architecture%-sqlcipher mingw-w64-%RsMSYS2Architecture%-cmake mingw-w64-%RsMSYS2Architecture%-rapidjson"
:: Plugins
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
:: Webui
if "%ParamWebui%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-doxygen"
:: Plugins
if "%ParamPlugins%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-speex mingw-w64-%RsMSYS2Architecture%-speexdsp mingw-w64-%RsMSYS2Architecture%-curl mingw-w64-%RsMSYS2Architecture%-libxslt mingw-w64-%RsMSYS2Architecture%-opencv mingw-w64-%RsMSYS2Architecture%-ffmpeg"
:: Clang
if "%ParamClang%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-clang"
:: Indexing
if "%ParamIndexing%"=="1" %EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-xapian-core mingw-w64-%RsMSYS2Architecture%-libvorbis mingw-w64-%RsMSYS2Architecture%-flac mingw-w64-%RsMSYS2Architecture%-taglib"
)
:: Initialize environment
call "%~dp0env.bat" %*
@ -57,10 +66,15 @@ echo %RS_QMAKE_CONFIG% > buildinfo.txt
echo %RsBuildConfig% >> buildinfo.txt
echo %RsArchitecture% >> buildinfo.txt
echo Qt %QtVersion% >> buildinfo.txt
echo %RsCompiler% >> buildinfo.txt
call "%ToolsPath%\msys2-path.bat" "%SourcePath%" MSYS2SourcePath
call "%ToolsPath%\msys2-path.bat" "%EnvMSYS2Path%" MSYS2EnvMSYS2Path
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
if "%ParamClang%"=="1" (
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-clang-g++ %RS_QMAKE_CONFIG%"
) else (
%EnvMSYS2Cmd% "qmake "%MSYS2SourcePath%/RetroShare.pro" -r -spec win32-g++ %RS_QMAKE_CONFIG%"
)
if errorlevel 1 goto error
echo.
@ -69,7 +83,8 @@ echo.
title Build - %SourceName%-%RsBuildConfig% [make]
%EnvMSYS2Cmd% "make -j %NUMBER_OF_PROCESSORS%"
%EnvMSYS2Cmd% "make -j %CoreCount%"
if errorlevel 1 goto error
:: Webui
if "%ParamWebui%"=="1" (

View File

@ -7,6 +7,10 @@ set ParamAutologin=0
set ParamPlugins=0
set ParamTor=0
set ParamWebui=0
set ParamClang=0
set ParamIndexing=0
set ParamNoupdate=0
set CoreCount=%NUMBER_OF_PROCESSORS%
set RS_QMAKE_CONFIG=
:parameter_loop
@ -28,6 +32,14 @@ if "%~1" NEQ "" (
set ParamTor=1
) else if "%%~a"=="webui" (
set ParamWebui=1
) else if "%%~a"=="singlethread" (
set CoreCount=1
) else if "%%~a"=="clang" (
set ParamClang=1
) else if "%%~a"=="indexing" (
set ParamIndexing=1
) else if "%%~a"=="noupdate" (
set ParamNoupdate=1
) else if "%%~a"=="CONFIG+" (
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% %1
) else (
@ -58,6 +70,12 @@ if "%Param64%"=="1" (
set RsMSYS2Architecture=x86_64
)
if "%ParamClang%"=="1" (
set RsCompiler=Clang
) else (
set RsCompiler=GCC
)
if "%RsBit%"=="" goto :usage
if "%ParamRelease%"=="1" (
@ -82,11 +100,15 @@ if "%ParamWebui%"=="1" (
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_jsonapi" "CONFIG+=rs_webui"
)
if "%ParamIndexing%"=="1" (
set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_deep_channels_index" "CONFIG+=rs_deep_files_index" "CONFIG+=rs_deep_files_index_ogg" "CONFIG+=rs_deep_files_index_flac" "CONFIG+=rs_deep_files_index_taglib"
)
exit /B 0
:usage
echo.
echo Usage: 32^|64 release^|debug [version autologin plugins webui]
echo Usage: 32^|64 release^|debug [autologin plugins webui singlethread clang indexing noupdate] ["CONFIG+=..."]
echo.
echo Mandatory parameter
echo 32^|64 32-bit or 64-bit Version
@ -96,6 +118,11 @@ echo Optional parameter (need clean when changed)
echo autologin Build with autologin
echo plugins Build plugins
echo webui Enable JsonAPI and pack webui files
echo singlethread Use only 1 thread for building
echo clang Use clang compiler instead of GCC
echo indexing Build with deep channel and file indexing support
echo noupdate Skip updating the libraries
echo "CONFIG+=..." Enable some extra features, you can find the almost complete list in retroshare.pri
echo.
echo Parameter for pack
echo tor Pack tor version

View File

@ -16,8 +16,8 @@ if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
set RsMinGWPath=%EnvMSYS2BasePath%\mingw%RsBit%
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsArchitecture%-%RsBuildConfig%
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsArchitecture%-%RsBuildConfig%
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsArchitecture%-%RsCompiler%-%RsBuildConfig%
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsArchitecture%-%RsCompiler%-%RsBuildConfig%
set RsPackPath=%DeployPath%
set RsArchiveAdd=
set RsWebuiPath=%RootPath%\%SourceName%-webui

View File

@ -1,118 +1,43 @@
@echo off
setlocal enabledelayedexpansion
setlocal
set NoAsk=
if "%~2"=="no-ask" set NoAsk=1
:: Initialize environment
call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-msys2.bat"
if errorlevel 1 goto error_env
call "%~dp0env.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
:: Check git executable
set GitPath=
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
if "%GitPath%"=="" echo Git executable not found in PATH.& exit /B 1
:: Get compiled revision
set GetRsVersion=%SourcePath%\build_scripts\Windows-msys2\tools\get-rs-version.bat
if not exist "%GetRsVersion%" (
echo File not found
echo %GetRsVersion%
if "%~2"=="" (
echo.
echo Parameter error.
echo Usage git-log sourcepath outputfile
exit /B 1
)
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
set logfile=%~2
copy nul %logfile% > nul
:: Get compiled version
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
pushd %~1
call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion
if "%RsMajorVersion%"=="" echo Major version not found.& exit /B 1
call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion
if "%RsMinorVersion%"=="" echo Minor version not found.& exit /B 1
call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber
if "%RsBuildNumber%"=="" echo Build number not found.& exit /B 1
call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd
set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd%
:: Check WMIC is available
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& exit /B 1
:: Use WMIC to retrieve date in format YYYYMMDD
set RsDate=
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
:: Get last revision
set RsLastRefFile=%BuildPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%-LastRef.txt
set RsLastRef=
if exist "%RsLastRefFile%" set /P RsLastRef=<"%RsLastRefFile%"
if "%NoAsk%"=="1" goto no_ask_for_last_revision
if not "%RsLastRef%"=="" echo Last Revision was %RsLastRef%
set /P RsLastRefInput=Last Revision:
if "%RsLastRefInput%" NEQ "" set RsLastRef=%RsLastRefInput%
:no_ask_for_last_revision
:: Get current revision
pushd "%SourcePath%"
call "%ToolsPath%\get-git-ref.bat" RsRef
popd
if errorlevel 1 exit /B 1
if "%RsRef%"=="" echo Cannot get git revision.& exit /B 1
echo.
echo Creating log from %RsLastRef%
echo to %RsRef%
if "%NoAsk%"=="1" goto no_confirm
choice /M "Do you want to proceed?"
if %errorlevel%==2 exit /B 1
:no_confirm
if "%RsBuildConfig%" NEQ "release" (
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%-msys2%RsArchiveAdd%-%RsBuildConfig%.txt
) else (
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%-msys2%RsArchiveAdd%.txt
)
title %SourceName%-%RsBuildConfig% [git log]
pushd "%SourcePath%"
if "%RsLastRef%"=="" (
git log %RsRef% >"%RsGitLog%"
) else (
if "%RsLastRef%"=="%RsRef%" (
git log %RsRef% --max-count=1 >"%RsGitLog%"
set last=HEAD
for /f %%t in ('git tag --sort=-taggerdate --merged ^| findstr v') do (
echo generating changelog for !last!..%%t
echo ----------------------------------------------- >> %logfile%
if !last! neq HEAD (
git tag -n !last! >> %logfile%
) else (
git log %RsLastRef%..%RsRef% >"%RsGitLog%"
echo HEAD >> %logfile%
)
rem echo !last! ---^> %%t >> %logfile%
echo ----------------------------------------------- >> %logfile%
echo. >> %logfile%
git log %%t..!last! --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
echo. >> %logfile%
echo. >> %logfile%
set last=%%t
)
echo generating changelog for %last%
echo ----------------------------------------------- >> %logfile%
git tag -n %last% >> %logfile%
echo ----------------------------------------------- >> %logfile%
echo. >> %logfile%
git log %last% --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
popd
title %COMSPEC%
echo %RsRef%>"%RsLastRefFile%"
exit /B %ERRORLEVEL%
:error_env
echo Failed to initialize environment.
endlocal
exit /B 1
endlocal enabledelayedexpansion

View File

@ -17,8 +17,15 @@ call "%~dp0env.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
:: Install ntldd
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S make git mingw-w64-%RsMSYS2Architecture%-ntldd-git"
if not "%ParamNoupdate%"=="1" (
:: Install ntldd
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-ntldd-git"
:: Install tor
if "%ParamTor%"=="1" (
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S mingw-w64-%RsMSYS2Architecture%-tor"
)
)
:: Remove deploy path
if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%"
@ -53,14 +60,6 @@ set RsDate=
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
if "%ParamTor%"=="1" (
:: Check for tor executable
if not exist "%EnvDownloadPath%\tor\Tor\tor.exe" (
%cecho% error "Tor binary not found. Please download Tor Expert Bundle from\nhttps://www.torproject.org/download/download.html.en\nand unpack to\n%EnvDownloadPath:\=\\%\\tor"
goto error
)
)
set QtMainVersion=%QtVersion:~0,1%
set QtSharePath=%RsMinGWPath%\share\qt%QtMainVersion%\
@ -72,9 +71,9 @@ if "%QtMainVersion%"=="4" set QtMainVersion2=4
if "%QtMainVersion%"=="5" set QtMainVersion1=5
if "%RsBuildConfig%" NEQ "release" (
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
) else (
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-msys2%RsType%%RsArchiveAdd%.7z
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-%RsArchitecture%-msys2%RsType%%RsArchiveAdd%.7z
)
if exist "%Archive%" del /Q "%Archive%"
@ -96,6 +95,7 @@ mkdir "%RsDeployPath%\qss"
mkdir "%RsDeployPath%\stylesheets"
mkdir "%RsDeployPath%\sounds"
mkdir "%RsDeployPath%\translations"
mkdir "%RsDeployPath%\license"
copy nul "%RsDeployPath%\portable" %Quite%
@ -121,7 +121,7 @@ if "%QtMainVersion%"=="5" (
)
if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
echo Copy styles
echo copy styles
mkdir "%RsDeployPath%\styles" %Quite%
copy "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" "%RsDeployPath%\styles" %Quite%
)
@ -129,6 +129,12 @@ if exist "%QtSharePath%\plugins\styles\qwindowsvistastyle.dll" (
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
if "%ParamTor%"=="1" (
echo copy tor
copy "%RsMinGWPath%\bin\tor.exe" "%RsDeployPath%" %Quite%
copy "%RsMinGWPath%\bin\tor-gencert.exe" "%RsDeployPath%" %Quite%
)
echo copy dependencies
for /R "%RsDeployPath%" %%D in (*.dll, *.exe) do (
call :copy_dependencies "%%D" "%RsDeployPath%"
@ -146,6 +152,9 @@ rmdir /S /Q "%RsDeployPath%\stylesheets\__MACOSX__Bubble" %Quite%
echo copy sounds
xcopy /S "%SourcePath%\retroshare-gui\src\sounds" "%RsDeployPath%\sounds" %Quite%
echo copy license
xcopy /S "%SourcePath%\retroshare-gui\src\license" "%RsDeployPath%\license" %Quite%
echo copy translation
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtSharePath%\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
@ -160,8 +169,8 @@ if "%QtMainVersion%"=="5" (
echo copy bdboot.txt
copy "%SourcePath%\libbitdht\src\bitdht\bdboot.txt" "%RsDeployPath%" %Quite%
echo copy changelog.txt
copy "%SourcePath%\retroshare-gui\src\changelog.txt" "%RsDeployPath%" %Quite%
echo generate changelog.txt
call call "%~dp0\git-log.bat" "%SourcePath%" "%RsDeployPath%\changelog.txt"
echo copy buildinfo.txt
copy "%RsBuildPath%\buildinfo.txt" "%RsDeployPath%" %Quite%
@ -177,11 +186,6 @@ if "%ParamWebui%"=="1" (
)
)
if "%ParamTor%"=="1" (
echo copy tor
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
)
rem pack files
title Pack - %SourceName%%RsType%-%RsBuildConfig% [pack files]

View File

@ -25,7 +25,7 @@ if exist "%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\pacman.exe" (
)
)
set MSYS2Install=msys2-base-%MSYS2Architecture%-20180531.tar.xz
set MSYS2Install=msys2-base-%MSYS2Architecture%-20200720.tar.xz
set MSYS2Url=http://sourceforge.net/projects/msys2/files/Base/%MSYS2Architecture%/%MSYS2Install%/download
%cecho% info "Remove previous MSYS2 version"

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,15 @@
; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
!macro !defineifexist _VAR_NAME _FILE_NAME
!tempfile _TEMPFILE
!ifdef NSIS_WIN32_MAKENSIS
; Windows - cmd.exe
!system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
!else
; Posix - sh
!system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
!endif
!include '${_TEMPFILE}'
!delfile '${_TEMPFILE}'
!undef _TEMPFILE
!macroend
!define !defineifexist "!insertmacro !defineifexist"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instal·la ${APPNAME} i els components necessaris."
!insertmacro LANG_STRING Section_Data "Pells"
!insertmacro LANG_STRING Section_Data_Desc "Instal·la pells."
!insertmacro LANG_STRING Section_Shortcuts "Icones d'accés directe"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Afegir icones d'accés directe."
!insertmacro LANG_STRING Section_StartMenu "Icona del menú d'inici"
!insertmacro LANG_STRING Section_StartMenu_Desc "Afegir icona en el menú d'inici"
!insertmacro LANG_STRING Section_Desktop "Icona d'escriptori"
!insertmacro LANG_STRING Section_Desktop_Desc "Afegir icona a l'escriptori"
!insertmacro LANG_STRING Section_QuickLaunch "Icona de la barra ràpida d'accés"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Afegir icona a la barra ràpida d'accés"
!insertmacro LANG_STRING Section_Plugins "Complements opcionals"
!insertmacro LANG_STRING Section_Plugins_Desc "Components opcionals per afegir funcionalitat."
!insertmacro LANG_STRING Section_Plugin_FeedReader "LectorFonts"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Instal·lar complement LectorFonts."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "NúvolEnllaços"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Instal·lar complement NúvolEnllaços."
!insertmacro LANG_STRING Section_Plugin_VOIP "VeuIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Instal·lar complement VeuIP."
!insertmacro LANG_STRING Section_AutoStart "Posada en marxa automàtica"
!insertmacro LANG_STRING Section_AutoStart_Desc "Autoengegar al arrencar."
!insertmacro LANG_STRING Page_InstallMode "Mode instal·lació"
!insertmacro LANG_STRING Page_InstallMode_Desc "Escull com vols instal·lar ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "Instal·lació e&stàndard"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Instal·la ${APPNAME} per la sessió d'usuari actual."
!insertmacro LANG_STRING Page_InstallMode_Portable "Instal·lació &portable."
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "En mode portable les dades de configuració s'emmagatzemen a la carpeta d'aplicació i no s'escriu informació al registre del sistema."
!insertmacro LANG_STRING Link_Uninstall "Desinstal·lar."

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installiert ${APPNAME} und die benötigten Komponenten."
!insertmacro LANG_STRING Section_Data "Skins"
!insertmacro LANG_STRING Section_Data_Desc "Skins installieren."
!insertmacro LANG_STRING Section_Shortcuts "Verknüpfungssymbole"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Verküpfungssymbole hinzufügen."
!insertmacro LANG_STRING Section_StartMenu "Startmenüsymbol"
!insertmacro LANG_STRING Section_StartMenu_Desc "Fügt Symbol zum Startmenü hinzu."
!insertmacro LANG_STRING Section_Desktop "Desktopsymbol"
!insertmacro LANG_STRING Section_Desktop_Desc "Fügt Symbol zum Desktop hinzu."
!insertmacro LANG_STRING Section_QuickLaunch "Schnellstartsymbol"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Fügt Symbol zur Schnellstartleiste hinzu."
!insertmacro LANG_STRING Section_Plugins "Optionale Plug-ins"
!insertmacro LANG_STRING Section_Plugins_Desc "Optionale Plug-ins zum Erweitern der Funktionalität."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Installiert das Plug-in Feedreader."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "Verknüpfungswolke"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Installiert das Plug-in Verknüpfungswolke."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Installiert das Plug-in VOIP"
!insertmacro LANG_STRING Section_AutoStart "Automatischer Programmstart"
!insertmacro LANG_STRING Section_AutoStart_Desc "Beim Start automatisch ausführen."
!insertmacro LANG_STRING Page_InstallMode "Installationsmodus"
!insertmacro LANG_STRING Page_InstallMode_Desc "Wähle wie du ${APPNAME} installieren willst."
!insertmacro LANG_STRING Page_InstallMode_Standard "&Standardinstallation"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Installiere ${APPNAME} für den derzeitigen Benutzer dieses Geräts."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Portable Installation"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "Im portablen Modus werden alle Konfigurationsdaten im Verzeichnis der Anwendung gespeichert und keine Informationen in der Registry abgelegt."
!insertmacro LANG_STRING Link_Uninstall "Deinstallieren"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installs ${APPNAME} and required components."
!insertmacro LANG_STRING Section_Data "Skins"
!insertmacro LANG_STRING Section_Data_Desc "Installs skins."
!insertmacro LANG_STRING Section_Shortcuts "Shortcut icons"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Adds shortcut icons."
!insertmacro LANG_STRING Section_StartMenu "Start Menu icon"
!insertmacro LANG_STRING Section_StartMenu_Desc "Adds icon to start menu."
!insertmacro LANG_STRING Section_Desktop "Desktop icon"
!insertmacro LANG_STRING Section_Desktop_Desc "Adds icon to desktop."
!insertmacro LANG_STRING Section_QuickLaunch "Quick Launch icon"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Adds icon to Quick Launch toolbar."
!insertmacro LANG_STRING Section_Plugins "Optional plugins"
!insertmacro LANG_STRING Section_Plugins_Desc "Optional plugins to extend functionality."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Installs plugin FeedReader."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Installs plugin VOIP."
;!insertmacro LANG_STRING Section_Link "File Association"
;!insertmacro LANG_STRING Section_Link_Desc "Associate ${APPNAME} with .pqi file extension."
!insertmacro LANG_STRING Section_AutoStart "Auto Startup"
!insertmacro LANG_STRING Section_AutoStart_Desc "Auto-Run at startup."
!insertmacro LANG_STRING Page_InstallMode "Installation Mode"
!insertmacro LANG_STRING Page_InstallMode_Desc "Choose how you want to install ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "&Standard installation"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Install ${APPNAME} for the current user of this machine."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Portable installation"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "In portable mode all configuration data is stored in the application folder and no information is written to the registry."
!insertmacro LANG_STRING Link_Uninstall "Uninstall"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instala ${APPNAME} y los componentes requeridos."
!insertmacro LANG_STRING Section_Data "Coberturas (skins)"
!insertmacro LANG_STRING Section_Data_Desc "Instalar coberturas"
!insertmacro LANG_STRING Section_Shortcuts "Iconos de accesos directos"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Añade iconos de accesos directos."
!insertmacro LANG_STRING Section_StartMenu "Icono de menú de inicio"
!insertmacro LANG_STRING Section_StartMenu_Desc "Añade icono al menú de inicio."
!insertmacro LANG_STRING Section_Desktop "Icono del escritorio"
!insertmacro LANG_STRING Section_Desktop_Desc "Añade icono al escritorio"
!insertmacro LANG_STRING Section_QuickLaunch "Icono de inicio rápido"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Añade icono a la Barra de Inicio Rápido"
!insertmacro LANG_STRING Section_Plugins "Complementos opcionales"
!insertmacro LANG_STRING Section_Plugins_Desc "Complementos opcionales para expandir la funcionalidad."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Instala el complemento FeedReader."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "LinksCloud"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Instala el complemento LinksCloud."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Instala el complemento VOIP"
!insertmacro LANG_STRING Section_AutoStart "Auto iniciar"
!insertmacro LANG_STRING Section_AutoStart_Desc "Auto-ejecutar al incio."
!insertmacro LANG_STRING Page_InstallMode "Modo de instalación"
!insertmacro LANG_STRING Page_InstallMode_Desc "Elija cómo quiere instalar ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "Instalación &Estándar"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Instalar ${APPNAME} para el usuario actual de esta máquina."
!insertmacro LANG_STRING Page_InstallMode_Portable "Instalación &Portable"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "En modo portable, todos los datos de configuración se almacenan en la carpeta de la aplicación y no se escribe ninguna información en el registro."
!insertmacro LANG_STRING Link_Uninstall "Desinstalar"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installe ${APPNAME} et les composants requis."
!insertmacro LANG_STRING Section_Data "Habillages"
!insertmacro LANG_STRING Section_Data_Desc "Installe des habillages."
!insertmacro LANG_STRING Section_Shortcuts "Icônes de raccourci"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Ajoute les icônes de raccourci."
!insertmacro LANG_STRING Section_StartMenu "Icône de menu démarrage"
!insertmacro LANG_STRING Section_StartMenu_Desc "Ajoute l'icône au menu démarrer."
!insertmacro LANG_STRING Section_Desktop "Icônes de bureau"
!insertmacro LANG_STRING Section_Desktop_Desc "Ajoute l'icône sur le bureau."
!insertmacro LANG_STRING Section_QuickLaunch "Icône de lancement rapide"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Ajoute une icône à la barre d'outils de lancement rapide."
!insertmacro LANG_STRING Section_Plugins "Plug-ins optionnels"
!insertmacro LANG_STRING Section_Plugins_Desc "Plug-ins optionnels destinés à étendre les fonctionnalités."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Installe le plug-in FeedReader."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "LinksCloud"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Installe le plug-in LinksCloud."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Installe le plug-in VOIP."
!insertmacro LANG_STRING Section_AutoStart "Démarrage automatique"
!insertmacro LANG_STRING Section_AutoStart_Desc "Démarrage automatique au démarrage."
!insertmacro LANG_STRING Page_InstallMode "Mode d'installation"
!insertmacro LANG_STRING Page_InstallMode_Desc "Choisissez comment vous voulez installer ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "&Installation standard"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Installer ${APPNAME} pour l'utilisateur actuel de cette machine."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Installation portable"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "En mode portable toutes les données de configuration sont stockées dans le dossier de l'application et aucune information n'est écrite dans la base de registre."
!insertmacro LANG_STRING Link_Uninstall "Désinstaller"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instaluje ${APPNAME} oraz wymagane komponenty."
!insertmacro LANG_STRING Section_Data "Skórki"
!insertmacro LANG_STRING Section_Data_Desc "Instaluje skórki."
!insertmacro LANG_STRING Section_Shortcuts "Ikony skrótów"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Dodaje skróty ikon."
!insertmacro LANG_STRING Section_StartMenu "Start Menu icon"
!insertmacro LANG_STRING Section_StartMenu_Desc "Dodaje ikonę do menu start."
!insertmacro LANG_STRING Section_Desktop "Ikona na pulpicie"
!insertmacro LANG_STRING Section_Desktop_Desc "Dodawanie ikony na pulpicie"
!insertmacro LANG_STRING Section_QuickLaunch "Ikona szybkiego uruchamiania"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Dodaje ikonę do paska Szybkiego Uruchamiania."
!insertmacro LANG_STRING Section_Plugins "Wtyczki opcjonalne"
!insertmacro LANG_STRING Section_Plugins_Desc "Wtyczki opcjonalne rozszerzające funkcjonalność."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Instaluje wtyczki FeedReader"
!insertmacro LANG_STRING Section_Plugin_LinksCloud "LinksCloud"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Instaluje wtyczki LinksCloud."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Instaluje wtyczki VOIP."
!insertmacro LANG_STRING Section_AutoStart "Auto Startup"
!insertmacro LANG_STRING Section_AutoStart_Desc "Automatyczne uruchamianie przy starcie."
!insertmacro LANG_STRING Page_InstallMode "Tryb instalacji"
!insertmacro LANG_STRING Page_InstallMode_Desc "Wybierz jak chcesz zainstalować ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "&Standardowa instalacja"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Zainstaluj ${APPNAME} dla bieżącego użytkownika tej maszyny."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Portable installation"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "W trybie przenośnym wszystkie dane konfiguracyjne są przechowywane w folderze aplikacji i nie są zapisywane w rejestrze."
!insertmacro LANG_STRING Link_Uninstall "Odinstaluj"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Установка ${APPNAME} и необходимых компонентов."
!insertmacro LANG_STRING Section_Data "Оболочки"
!insertmacro LANG_STRING Section_Data_Desc "Установка оболочек."
!insertmacro LANG_STRING Section_Shortcuts "Ярлыки"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Добавление ярлыков."
!insertmacro LANG_STRING Section_StartMenu "Ярлык в меню Пуск"
!insertmacro LANG_STRING Section_StartMenu_Desc "Добавление ярлыка в меню Пуск."
!insertmacro LANG_STRING Section_Desktop "Ярлык на рабочем столе"
!insertmacro LANG_STRING Section_Desktop_Desc "Добавление ярлыка на рабочий стол."
!insertmacro LANG_STRING Section_QuickLaunch "Ярлык в панели быстрого запуска"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Добавление ярлыка на панель быстрого запуска."
!insertmacro LANG_STRING Section_Plugins "Дополнительные плагины"
!insertmacro LANG_STRING Section_Plugins_Desc "Дополнительные плагины для расширения функциональности."
!insertmacro LANG_STRING Section_Plugin_FeedReader "FeedReader RSS-агрегатор"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "Установка плагина FeedReader."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "LinksCloud Облако ссылок"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "Установка плагина LinksCloud."
!insertmacro LANG_STRING Section_Plugin_VOIP "VoIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "Установка плагина VoIP."
!insertmacro LANG_STRING Section_AutoStart "Автозапуск"
!insertmacro LANG_STRING Section_AutoStart_Desc "Автозапуск при загрузке системы."
!insertmacro LANG_STRING Page_InstallMode "Режим установки"
!insertmacro LANG_STRING Page_InstallMode_Desc "Выберите метод установки ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "Стандартная установка"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Установка ${APPNAME} для текущего пользователя компьютера."
!insertmacro LANG_STRING Page_InstallMode_Portable "Портативная установка"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "В режиме портативной установки все конфигурационные файлы сохраняются в папку приложения и в системный реестр не записывается никакой информации."
!insertmacro LANG_STRING Link_Uninstall "Удаление программы"

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "${APPNAME} ve gerekli bileşenleri kurar."
!insertmacro LANG_STRING Section_Data "Temalar"
!insertmacro LANG_STRING Section_Data_Desc "Tema yükleyin."
!insertmacro LANG_STRING Section_Shortcuts "Kısayol simgeleri"
!insertmacro LANG_STRING Section_Shortcuts_Desc "Kısayol simgesi ekleyin."
!insertmacro LANG_STRING Section_StartMenu "Başlat Menüsü simgesi"
!insertmacro LANG_STRING Section_StartMenu_Desc "Başlat menüsüne simge ekleyin."
!insertmacro LANG_STRING Section_Desktop "Masaüstü simgesi"
!insertmacro LANG_STRING Section_Desktop_Desc "Masaüstüne simge ekleyin."
!insertmacro LANG_STRING Section_QuickLaunch "Hızlı Başlat simgesi"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "Hızlı Başlat araç çubuğuna simge ekleyin."
!insertmacro LANG_STRING Section_Plugins "İsteğe bağlı eklentiler"
!insertmacro LANG_STRING Section_Plugins_Desc "İşlevselliği artırmak için isteğe bağlı eklentiler."
!insertmacro LANG_STRING Section_Plugin_FeedReader "AkışOkuyucu"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "AkışOkuyucu eklentisini yükleyin."
!insertmacro LANG_STRING Section_Plugin_LinksCloud "BağlantıBulutu"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "BağlantıBulutu eklentisini yükleyin."
!insertmacro LANG_STRING Section_Plugin_VOIP "VOIP"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "VOIP eklentisini yükleyin."
!insertmacro LANG_STRING Section_AutoStart "Otomatik Başlat"
!insertmacro LANG_STRING Section_AutoStart_Desc "Açılışta otomatik başlatın."
!insertmacro LANG_STRING Page_InstallMode "Kurulum Yöntemi"
!insertmacro LANG_STRING Page_InstallMode_Desc "${APPNAME} kurulum şeklini seçin"
!insertmacro LANG_STRING Page_InstallMode_Standard "&Normal kurulum"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "${APPNAME} yalnızca şimdiki kullanıcı için kurulsun."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Taşınabilir kurulum"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "Taşınabilir kipte tüm ayarlar uygulama klasörüne depolanır ve kayıt defterine hiçbir bilgi yazılmaz."
!insertmacro LANG_STRING Link_Uninstall "Kaldırın"

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ca_ES" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Instal·la ${APPNAME} i els components necessaris.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Pells</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Instal·la pells.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Icones d&apos;accés directe</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Afegir icones d&apos;accés directe.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Icona del menú d&apos;inici</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Afegir icona en el menú d&apos;inici</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Icona d&apos;escriptori</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Afegir icona a l&apos;escriptori</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Icona de la barra ràpida d&apos;accés</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Afegir icona a la barra ràpida d&apos;accés</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Complements opcionals</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Components opcionals per afegir funcionalitat.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>LectorFonts</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Instal·lar complement LectorFonts.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>NúvolEnllaços</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Instal·lar complement NúvolEnllaços.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VeuIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Instal·lar complement VeuIP.</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Posada en marxa automàtica</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Autoengegar al arrencar.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Mode instal·lació</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Escull com vols instal·lar ${APPNAME}.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>Instal·lació e&amp;stàndard</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Instal·la ${APPNAME} per la sessió d&apos;usuari actual.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>Instal·lació &amp;portable.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>En mode portable les dades de configuració s&apos;emmagatzemen a la carpeta d&apos;aplicació i no s&apos;escriu informació al registre del sistema.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Desinstal·lar.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,27 @@
@echo off
:: Very simple conversion from *.ts to *.nsh using xslt
pushd "%~dp0"
if "%1"=="" (
for %%F in (*.ts) do if "%%F" NEQ "en.ts" call :convert %%~nF
goto :exit
)
call :convert %1
:exit
popd
goto :EOF
:convert
if not exist "%~1.ts" (
echo File "%~1.ts" not found.
goto :EOF
)
echo %~1
"%~dp0xsltproc.exe" --output "%~dp0..\%~1.nsh" "%~dp0convert_from_ts.xsl" "%~1.ts"

View File

@ -0,0 +1,20 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="context">
<xsl:text>!insertmacro LANG_STRING </xsl:text>
<xsl:value-of select="./name"/>
<xsl:text> "</xsl:text>
<xsl:choose>
<xsl:when test="./message/translation!=''"><xsl:value-of select="./message/translation"/></xsl:when>
<xsl:otherwise><xsl:value-of select="./message/source"/></xsl:otherwise>
</xsl:choose>
<xsl:text>"
</xsl:text>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,50 @@
@echo off
:: Very simple conversion from *.nsh to *.ts
setlocal
set Language=en
if "%1" NEQ "" set Language=%1
set InputFile=%~dp0..\%Language%.nsh
set OutputFile=%~dp0%Language%.ts
if not exist "%InputFile%" (
echo File %InputFile% not found.
goto :exit
)
echo ^<?xml version="1.0" encoding="utf-8"?^> >"%OutputFile%"
echo ^<!DOCTYPE TS^> >>"%OutputFile%"
echo ^<TS version="2.0" language="en_US"^> >>"%OutputFile%"
for /F "tokens=1,2,3,*" %%A in (%InputFile%) do if "%%A"=="!insertmacro" call :context %%C %%D
echo ^</TS^> >>"%OutputFile%"
:exit
endlocal
goto :EOF
:context
setlocal EnableDelayedExpansion
:: Simple replace of & to &amp;
set Text=%2
set Text=%Text:&=^&amp;%
set Text=%Text:~1,-1%
echo !Text!
echo ^<context^> >>"%OutputFile%"
echo ^<name^>%~1^</name^> >>"%OutputFile%"
echo ^<message^> >>"%OutputFile%"
echo ^<source^>!Text!^</source^> >>"%OutputFile%"
echo ^<translation type="unfinished"^>^</translation^> >>"%OutputFile%"
echo ^</message^> >>"%OutputFile%"
echo ^</context^> >>"%OutputFile%"
endlocal
goto :EOF

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="de" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Installiert ${APPNAME} und die benötigten Komponenten.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Skins</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Skins installieren.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Verknüpfungssymbole</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Verküpfungssymbole hinzufügen.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Startmenüsymbol</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Fügt Symbol zum Startmenü hinzu.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Desktopsymbol</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Fügt Symbol zum Desktop hinzu.</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Schnellstartsymbol</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Fügt Symbol zur Schnellstartleiste hinzu.</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Optionale Plug-ins</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Optionale Plug-ins zum Erweitern der Funktionalität.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>FeedReader</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Installiert das Plug-in Feedreader.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>Verknüpfungswolke</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Installiert das Plug-in Verknüpfungswolke.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VOIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Installiert das Plug-in VOIP</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Automatischer Programmstart</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Beim Start automatisch ausführen.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Installationsmodus</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Wähle wie du ${APPNAME} installieren willst.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>&amp;Standardinstallation</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Installiere ${APPNAME} für den derzeitigen Benutzer dieses Geräts.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>&amp;Portable Installation</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>Im portablen Modus werden alle Konfigurationsdaten im Verzeichnis der Anwendung gespeichert und keine Informationen in der Registry abgelegt.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Deinstallieren</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="en_US">
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Instala ${APPNAME} y los componentes requeridos.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Coberturas (skins)</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Instalar coberturas</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Iconos de accesos directos</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Añade iconos de accesos directos.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Icono de menú de inicio</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Añade icono al menú de inicio.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Icono del escritorio</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Añade icono al escritorio</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Icono de inicio rápido</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Añade icono a la Barra de Inicio Rápido</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Complementos opcionales</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Complementos opcionales para expandir la funcionalidad.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>FeedReader</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Instala el complemento FeedReader.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>LinksCloud</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Instala el complemento LinksCloud.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VOIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Instala el complemento VOIP</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Auto iniciar</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Auto-ejecutar al incio.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Modo de instalación</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Elija cómo quiere instalar ${APPNAME}.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>Instalación &amp;Estándar</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Instalar ${APPNAME} para el usuario actual de esta máquina.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>Instalación &amp;Portable</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>En modo portable, todos los datos de configuración se almacenan en la carpeta de la aplicación y no se escribe ninguna información en el registro.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Desinstalar</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Installe ${APPNAME} et les composants requis.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Habillages</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Installe des habillages.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Icônes de raccourci</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Ajoute les icônes de raccourci.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Icône de menu démarrage</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Ajoute l&apos;icône au menu démarrer.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Icônes de bureau</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Ajoute l&apos;icône sur le bureau.</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Icône de lancement rapide</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Ajoute une icône à la barre d&apos;outils de lancement rapide.</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Plug-ins optionnels</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Plug-ins optionnels destinés à étendre les fonctionnalités.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>FeedReader</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Installe le plug-in FeedReader.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>LinksCloud</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Installe le plug-in LinksCloud.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VOIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Installe le plug-in VOIP.</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Démarrage automatique</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Démarrage automatique au démarrage.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Mode d&apos;installation</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Choisissez comment vous voulez installer ${APPNAME}.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>&amp;Installation standard</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Installer ${APPNAME} pour l&apos;utilisateur actuel de cette machine.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>&amp;Installation portable</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>En mode portable toutes les données de configuration sont stockées dans le dossier de l&apos;application et aucune information n&apos;est écrite dans la base de registre.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Désinstaller</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="pl" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Instaluje ${APPNAME} oraz wymagane komponenty.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Skórki</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Instaluje skórki.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Ikony skrótów</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Dodaje skróty ikon.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Dodaje ikonę do menu start.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Ikona na pulpicie</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Dodawanie ikony na pulpicie</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Ikona szybkiego uruchamiania</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Dodaje ikonę do paska Szybkiego Uruchamiania.</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Wtyczki opcjonalne</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Wtyczki opcjonalne rozszerzające funkcjonalność.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>FeedReader</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Instaluje wtyczki FeedReader</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Instaluje wtyczki LinksCloud.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VOIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Instaluje wtyczki VOIP.</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Automatyczne uruchamianie przy starcie.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Tryb instalacji</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Wybierz jak chcesz zainstalować ${APPNAME}.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>&amp;Standardowa instalacja</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Zainstaluj ${APPNAME} dla bieżącego użytkownika tej maszyny.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>W trybie przenośnym wszystkie dane konfiguracyjne przechowywane w folderze aplikacji i nie zapisywane w rejestrze.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Odinstaluj</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>Установка ${APPNAME} и необходимых компонентов.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Оболочки</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Установка оболочек.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Ярлыки</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Добавление ярлыков.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Ярлык в меню Пуск</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Добавление ярлыка в меню Пуск.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Ярлык на рабочем столе</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Добавление ярлыка на рабочий стол.</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Ярлык в панели быстрого запуска</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Добавление ярлыка на панель быстрого запуска.</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>Дополнительные плагины</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>Дополнительные плагины для расширения функциональности.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>FeedReader RSS-агрегатор</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>Установка плагина FeedReader.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>LinksCloud Облако ссылок</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>Установка плагина LinksCloud.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VoIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>Установка плагина VoIP.</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Автозапуск</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>Автозапуск при загрузке системы.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Режим установки</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>Выберите метод установки ${APPNAME}.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>Стандартная установка</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>Установка ${APPNAME} для текущего пользователя компьютера.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>Портативная установка</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>В режиме портативной установки все конфигурационные файлы сохраняются в папку приложения и в системный реестр не записывается никакой информации.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Удаление программы</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="tr" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation>${APPNAME}</translation>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation>${APPNAME} ve gerekli bileşenleri kurar.</translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation>Temalar</translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation>Tema yükleyin.</translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation>Kısayol simgeleri</translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation>Kısayol simgesi ekleyin.</translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation>Başlat Menüsü simgesi</translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation>Başlat menüsüne simge ekleyin.</translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation>Masaüstü simgesi</translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation>Masaüstüne simge ekleyin.</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation>Hızlı Başlat simgesi</translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation>Hızlı Başlat araç çubuğuna simge ekleyin.</translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation>İsteğe bağlı eklentiler</translation>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation>İşlevselliği artırmak için isteğe bağlı eklentiler.</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>AkışOkuyucu</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>AkışOkuyucu eklentisini yükleyin.</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>BağlantıBulutu</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>BağlantıBulutu eklentisini yükleyin.</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation>VOIP</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation>VOIP eklentisini yükleyin.</translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation>Otomatik Başlat</translation>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation>ılışta otomatik başlatın.</translation>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation>Kurulum Yöntemi</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation>${APPNAME} kurulum şeklini seçin</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation>&amp;Normal kurulum</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation>${APPNAME} yalnızca şimdiki kullanıcı için kurulsun.</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation>&amp;Taşınabilir kurulum</translation>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation>Taşınabilir kipte tüm ayarlar uygulama klasörüne depolanır ve kayıt defterine hiçbir bilgi yazılmaz.</translation>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation>Kaldırın</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,205 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.0">
<context>
<name>Section_Main</name>
<message>
<source>${APPNAME}</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_Main_Desc</name>
<message>
<source>Installs ${APPNAME} and required components.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_Data</name>
<message>
<source>Skins</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Data_Desc</name>
<message>
<source>Installs skins.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Shortcuts</name>
<message>
<source>Shortcut icons</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Shortcuts_Desc</name>
<message>
<source>Adds shortcut icons.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_StartMenu</name>
<message>
<source>Start Menu icon</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_StartMenu_Desc</name>
<message>
<source>Adds icon to start menu.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Desktop</name>
<message>
<source>Desktop icon</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Desktop_Desc</name>
<message>
<source>Adds icon to desktop.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_QuickLaunch</name>
<message>
<source>Quick Launch icon</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_QuickLaunch_Desc</name>
<message>
<source>Adds icon to Quick Launch toolbar.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Plugins</name>
<message>
<source>Optional plugins</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_Plugins_Desc</name>
<message>
<source>Optional plugins to extend functionality.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader</name>
<message>
<source>FeedReader</source>
<translation>RSS订阅</translation>
</message>
</context>
<context>
<name>Section_Plugin_FeedReader_Desc</name>
<message>
<source>Installs plugin FeedReader.</source>
<translation>RSS订阅插件</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud</name>
<message>
<source>LinksCloud</source>
<translation>LinksCloud</translation>
</message>
</context>
<context>
<name>Section_Plugin_LinksCloud_Desc</name>
<message>
<source>Installs plugin LinksCloud.</source>
<translation>LinksCloud</translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP</name>
<message>
<source>VOIP</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_Plugin_VOIP_Desc</name>
<message>
<source>Installs plugin VOIP.</source>
<translation></translation>
</message>
</context>
<context>
<name>Section_AutoStart</name>
<message>
<source>Auto Startup</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Section_AutoStart_Desc</name>
<message>
<source>Auto-Run at startup.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode</name>
<message>
<source>Installation Mode</source>
<translation></translation>
</message>
</context>
<context>
<name>Page_InstallMode_Desc</name>
<message>
<source>Choose how you want to install ${APPNAME}.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode_Standard</name>
<message>
<source>&amp;Standard installation</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode_Standard_Desc</name>
<message>
<source>Install ${APPNAME} for the current user of this machine.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode_Portable</name>
<message>
<source>&amp;Portable installation</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Page_InstallMode_Portable_Desc</name>
<message>
<source>In portable mode all configuration data is stored in the application folder and no information is written to the registry.</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>Link_Uninstall</name>
<message>
<source>Uninstall</source>
<translation></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,29 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installs ${APPNAME} and required components."
!insertmacro LANG_STRING Section_Data "皮肤"
!insertmacro LANG_STRING Section_Data_Desc "安装皮肤"
!insertmacro LANG_STRING Section_Shortcuts "快捷方式图标"
!insertmacro LANG_STRING Section_Shortcuts_Desc "添加快捷方式图标"
!insertmacro LANG_STRING Section_StartMenu "开始菜单图标"
!insertmacro LANG_STRING Section_StartMenu_Desc "添加图标至开始菜单"
!insertmacro LANG_STRING Section_Desktop "桌面图标"
!insertmacro LANG_STRING Section_Desktop_Desc "添加图标至桌面"
!insertmacro LANG_STRING Section_QuickLaunch "快速启动栏图标"
!insertmacro LANG_STRING Section_QuickLaunch_Desc "添加图标至快速启动栏"
!insertmacro LANG_STRING Section_Plugins "Optional plugins"
!insertmacro LANG_STRING Section_Plugins_Desc "Optional plugins to extend functionality."
!insertmacro LANG_STRING Section_Plugin_FeedReader "RSS订阅"
!insertmacro LANG_STRING Section_Plugin_FeedReader_Desc "安装RSS订阅插件"
!insertmacro LANG_STRING Section_Plugin_LinksCloud "LinksCloud"
!insertmacro LANG_STRING Section_Plugin_LinksCloud_Desc "安装插件LinksCloud"
!insertmacro LANG_STRING Section_Plugin_VOIP "语音"
!insertmacro LANG_STRING Section_Plugin_VOIP_Desc "安装语音插件"
!insertmacro LANG_STRING Section_AutoStart "Auto Startup"
!insertmacro LANG_STRING Section_AutoStart_Desc "Auto-Run at startup."
!insertmacro LANG_STRING Page_InstallMode "安装模式"
!insertmacro LANG_STRING Page_InstallMode_Desc "Choose how you want to install ${APPNAME}."
!insertmacro LANG_STRING Page_InstallMode_Standard "&Standard installation"
!insertmacro LANG_STRING Page_InstallMode_Standard_Desc "Install ${APPNAME} for the current user of this machine."
!insertmacro LANG_STRING Page_InstallMode_Portable "&Portable installation"
!insertmacro LANG_STRING Page_InstallMode_Portable_Desc "In portable mode all configuration data is stored in the application folder and no information is written to the registry."
!insertmacro LANG_STRING Link_Uninstall "卸载"

View File

@ -1,26 +1,25 @@
; Script generated with the Venis Install Wizard & modified by defnax
; Reworked by Thunder
; Adapted to msys2 and 64 bit by anmo
!include ifexist.nsh
!include x64.nsh
# Needed defines
;!define REVISION ""
;!define RELEASEDIR ""
;!define QTDIR ""
;!define MINGWDIR ""
;!define DEPLOYDIR ""
;!define ARCHITECTURE ""
# Optional defines
;!define OUTDIR ""
;!define INSTALLERADD ""
# Check needed defines
!ifndef RELEASEDIR
!error "RELEASEDIR is not defined"
!ifndef DEPLOYDIR
!error "DEPLOYDIR is not defined"
!endif
!ifndef QTDIR
!error "QTDIR is not defined"
!endif
!ifndef MINGWDIR
!error "MINGWDIR is not defined"
!ifndef ARCHITECTURE
!error "ARCHITECTURE is not defined"
!endif
# Check optional defines
@ -39,14 +38,10 @@
!define SOURCEDIR "..\..\.."
# Get version from executable
!GetDllVersion "${RELEASEDIR}\retroshare-gui\src\release\retroshare.exe" VERSION_
!GetDllVersion "${DEPLOYDIR}\retroshare.exe" VERSION_
!define VERSION ${VERSION_1}.${VERSION_2}.${VERSION_3}
;!define REVISION ${VERSION_4}
# Get version of Qt
!GetDllVersion "${QTDIR}\bin\QtCore4.dll" QTVERSION_
!define QTVERSION ${QTVERSION_1}.${QTVERSION_2}.${QTVERSION_3}
# Check version
!ifndef REVISION
!error "REVISION is not defined"
@ -55,13 +50,20 @@
# Date
!define /date Date "%Y%m%d"
# Detect tor
${!defineifexist} TOR_EXISTS "${DEPLOYDIR}\tor.exe"
!ifdef TOR_EXISTS
!define RSTYPE "-tor"
!else
!define RSTYPE ""
!endif
# Application name and version
!define APPNAME "RetroShare"
!define APPNAMEANDVERSION "${APPNAME} ${VERSION}"
!define PUBLISHER "RetroShare Team"
# Install path
!define INSTDIR_NORMAL "$ProgramFiles\${APPNAME}"
!define INSTDIR_PORTABLE "$Desktop\${APPNAME}"
!define DATADIR_NORMAL "$APPDATA\${APPNAME}"
@ -70,7 +72,7 @@
# Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt-${QTVERSION}${INSTALLERADD}-setup.exe"
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-${ARCHITECTURE}${RSTYPE}${INSTALLERADD}-setup.exe"
BrandingText "${APPNAMEANDVERSION}"
RequestExecutionlevel highest
# Use compression
@ -91,7 +93,7 @@ Var StyleSheetDir
# Interface Settings
!define MUI_ABORTWARNING
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\installer\HeaderImage.bmp"
!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows-msys2\installer\HeaderImage.bmp"
;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp"
# MUI defines
@ -172,64 +174,13 @@ Section $(Section_Main) Section_Main
; Clears previous error logs
; Delete "$INSTDIR\*.log"
; Main binaries
SetOutPath "$INSTDIR"
File /oname=retroshare.exe "${RELEASEDIR}\retroshare-gui\src\release\retroshare.exe"
File /oname=retroshare-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\retroshare-nogui.exe"
; Qt binaries
File "${QTDIR}\bin\QtCore4.dll"
File "${QTDIR}\bin\QtGui4.dll"
File "${QTDIR}\bin\QtMultimedia4.dll"
File "${QTDIR}\bin\QtNetwork4.dll"
File "${QTDIR}\bin\QtSvg4.dll"
File "${QTDIR}\bin\QtXml4.dll"
; MinGW binaries
File "${MINGWDIR}\bin\libstdc++-6.dll"
File "${MINGWDIR}\bin\libgcc_s_dw2-1.dll"
File "${MINGWDIR}\bin\libwinpthread-1.dll"
; External binaries
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
; Other files
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
File "${SOURCEDIR}\libbitdht\src\bitdht\bdboot.txt"
; Image formats
SetOutPath "$INSTDIR\imageformats"
File /r "${QTDIR}\plugins\imageformats\qgif4.dll"
File /r "${QTDIR}\plugins\imageformats\qico4.dll"
File /r "${QTDIR}\plugins\imageformats\qjpeg4.dll"
File /r "${QTDIR}\plugins\imageformats\qmng4.dll"
File /r "${QTDIR}\plugins\imageformats\qsvg4.dll"
File /r "${QTDIR}\plugins\imageformats\qtga4.dll"
File /r "${QTDIR}\plugins\imageformats\qtiff4.dll"
; Sounds
SetOutPath "$INSTDIR\sounds"
File /r "${SOURCEDIR}\retroshare-gui\src\sounds\*.*"
; Translations
SetOutPath "$INSTDIR\translations"
File /r "${SOURCEDIR}\retroshare-gui\src\translations\*.qm"
File /r "${QTDIR}\translations\qt_*.qm"
; WebUI
SetOutPath "$INSTDIR\webui"
File /r "${SOURCEDIR}\libresapi\src\webui\*.*"
; License
SetOutPath "$INSTDIR\license"
File /r "${SOURCEDIR}\retroshare-gui\src\license\*.*"
SetOutPath "$INSTDIR"
File /r /x Data /x stylesheets /x qss /x portable "${DEPLOYDIR}\*.*"
SectionEnd
# Plugins
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${DEPLOYDIR}\Data\extensions6\FeedReader.dll"
${!defineifexist} PLUGIN_VOIP_EXISTS "${DEPLOYDIR}\Data\extensions6\VOIP.dll"
!ifdef PLUGIN_FEEDREADER_EXISTS
!define /ifndef PLUGIN_EXISTS
@ -243,14 +194,14 @@ ${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dl
!ifdef PLUGIN_FEEDREADER_EXISTS
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
SetOutPath "$DataDir\extensions6"
File "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
File "${DEPLOYDIR}\Data\extensions6\FeedReader.dll"
SectionEnd
!endif
!ifdef PLUGIN_VOIP_EXISTS
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
SetOutPath "$DataDir\extensions6"
File "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
File "${DEPLOYDIR}\Data\extensions6\VOIP.dll"
SectionEnd
!endif
SectionGroupEnd
@ -262,14 +213,12 @@ Section $(Section_Data) Section_Data
SetOverwrite on
; Chat style
SetOutPath "$StyleSheetDir\stylesheets\Bubble"
File /r "${SOURCEDIR}\retroshare-gui\src\gui\qss\chat\Bubble\*.*"
SetOutPath "$StyleSheetDir\stylesheets\Bubble_Compact"
File /r "${SOURCEDIR}\retroshare-gui\src\gui\qss\chat\Bubble_Compact\*.*"
SetOutPath "$StyleSheetDir\stylesheets"
File /r "${DEPLOYDIR}\stylesheets\*.*"
; Stylesheets
SetOutPath "$INSTDIR\qss"
File /r "${SOURCEDIR}\retroshare-gui\src\qss\*.*"
File /r "${DEPLOYDIR}\qss\*.*"
SectionEnd
;Section $(Section_Link) Section_Link
@ -379,7 +328,22 @@ Section "Uninstall"
SectionEnd
Function .onInit
StrCpy $InstDirNormal "${INSTDIR_NORMAL}"
; source: https://stackoverflow.com/questions/19374453/nsis-installer-define-installer-and-system-x32-x64
${If} ${RunningX64}
${If} ${ARCHITECTURE} == "x64"
StrCpy $InstDirNormal "$PROGRAMFILES64\${APPNAME}"
${Else}
StrCpy $InstDirNormal "$PROGRAMFILES32\${APPNAME}"
${Endif}
${Else}
${If} ${ARCHITECTURE} == "x64"
MessageBox MB_ICONSTOP "You cannot install the 64 bit version on a 32 bit system!"
Quit
${Else}
StrCpy $InstDirNormal "$PROGRAMFILES\${APPNAME}"
${Endif}
${EndIf}
StrCpy $InstDirPortable "${INSTDIR_PORTABLE}"
StrCpy $PortableMode 0

View File

@ -0,0 +1,91 @@
# Compilation on Windows
The preferred build method on Windows is by using MSYS2 which is a collection
of packages providing unix-like tools to build native Windows software.
This guide contains information about how to setup your build environment in an automated way by scripts.
If you prefer to setup your environment manually, check this guide:
[WindowsMSys2_InstallGuide.md](WindowsMSys2_InstallGuide.md)
Setting up the build environment automatically on a 32 bit OS is not possible anymore.
You can download an older 32 bit [MSYS2 installer](https://sourceforge.net/projects/msys2/files/Base/i686/msys2-base-i686-20180531.tar.xz/download) and follow the manual setup instructions.
Building 32 bit RetroShare from the 64 bit build environment is still possible.
You have to clone this repository (with [git for windows](https://gitforwindows.org/)) to a local folder, then start it in a terminal.
## Automatic building
Run the following script:
<sourcefolder>\build_scripts\Windows-msys2\build.bat
It will install all necessary tools to build RetrosShare, and build it with the default configuration.
After the script is finished, you can find the resulting .7z package here:
<sourcefolder>-msys2\deploy\
## Advanced building
You can specify extra build options if you use the scripts under:
<sourcefolder>\build_scripts\Windows-msys2\build\
You have to specify the build options after each command.
Run the scripts in this order:
1. build.bat: builds RetroShare
2. pack.bat: makes a .7z archive with all the needed files to run the program
3. build-installer: makes a self extracting installer (optional)
### Build options
**Always delete the build artifacts folder if you enable or disable extra features after the build command: &lt;sourcefolder&gt;-msys2\deploy\builds**
* Mandatory
* 32 or 64: 32 or 64 bit version
* release or debug: normally you would like to use the release option
* Extra features (optional)
* autologin: enable autologin
* plugins: build plugins
* webui: enable remoting features and pack webui files
* indexing: build with deep channel and file indexing support
* tor: include tor in the package
* "CONFIG+=..." enable other extra compile time features, you can find the almost complete list in file *&lt;sourcefolder&gt;\retroshare.pri*
* For fixing compile problems (optional)
* singlethread: use only 1 thread for building, slow but useful if you don't find the error message in the console
* clang: use clang compiler instead of GCC
* noupdate: skip the msys2 update step, sometimes some msys2 packages are broken, you can manually switch back to the older package, and this option will prevent updating to the broken version again
Example:
```batch
build.bat 64 release autologin webui "CONFIG+=rs_use_native_dialogs" "CONFIG+=rs_gui_cmark"
pack.bat 64 release autologin webui tor
build-installer.bat 64 release autologin
```
## Troubleshooting
* Run the command again, sometimes it works the second time, specially if it complains about *restbed* during building
* Delete the build artifacts: *&lt;sourcefolder&gt;-msys2\deploy\builds*
* Update msys2 manually:
1. Open the terminal: *&lt;sourcefolder&gt;-msys2\msys2\msys64\msys2.exe*
2. pacman -Sy
3. pacman -Su
4. Close the terminal
5. Jump to 1. until it doesn't find more updates
* Start with a clean path environment variable, run *&lt;sourcefolder&gt;\build_scripts\Windows-msys2\start-clean-env.bat*, you will get a terminal with cleaned path
### Errors during MSYS2 update
MSYS2 developers recently introduced some breaking changes.
If you get PGP related errors during updating the system from pacman, then follow [their guide](https://www.msys2.org/news/#2020-06-29-new-packagers) to resolve the problems.
## Updating webui
The scripts don't update the webui source code automatically once it is checked out.
You have to do it manually with your favourite git client.
You can find the webui source code here:
<sourcefolder>-webui

View File

@ -0,0 +1,7 @@
setlocal
set path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0
cd build\
cmd
endlocal

View File

@ -7,7 +7,9 @@ title Build webui
if not exist "%RsWebuiPath%" (
echo Checking out webui source into %RsWebuiPath%
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S git"
if not "%ParamNoupdate%"=="1" (
%EnvMSYS2Cmd% "pacman --noconfirm --needed -S git"
)
git clone https://github.com/RetroShare/RSNewWebUI.git "%RsWebuiPath%"
) else (
echo Webui source found at %RsWebuiPath%

21
build_scripts/Windows/build-libs/Makefile Executable file → Normal file
View File

@ -1,15 +1,15 @@
ZLIB_VERSION=1.2.3
BZIP2_VERSION=1.0.6
MINIUPNPC_VERSION=2.0
OPENSSL_VERSION=1.0.2n
OPENSSL_VERSION=1.1.1g
SPEEX_VERSION=1.2.0
SPEEXDSP_VERSION=1.2rc3
OPENCV_VERSION=3.4.1
OPENCV_VERSION=3.4.11
LIBXML2_VERSION=2.9.7
LIBXSLT_VERSION=1.1.32
CURL_VERSION=7.58.0
TCL_VERSION=8.6.2
SQLCIPHER_VERSION=2.2.1
TCL_VERSION=8.6.10
SQLCIPHER_VERSION=4.4.0
LIBMICROHTTPD_VERSION=0.9.59
FFMPEG_VERSION=3.4
RAPIDJSON_VERSION=1.1.0
@ -74,7 +74,7 @@ $(BUILD_PATH)/zlib-$(ZLIB_VERSION): $(DOWNLOAD_PATH)/zlib-$(ZLIB_VERSION).tar.gz
bzip2: $(BUILD_PATH)/bzip2-$(BZIP2_VERSION)
$(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz:
wget http://bzip.org/$(BZIP2_VERSION)/bzip2-$(BZIP2_VERSION).tar.gz -O $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz
wget https://sourceforge.net/projects/bzip2/files/bzip2-$(BZIP2_VERSION).tar.gz/download -O $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz
$(BUILD_PATH)/bzip2-$(BZIP2_VERSION): $(DOWNLOAD_PATH)/bzip2-$(BZIP2_VERSION).tar.gz
# prepare
@ -102,7 +102,7 @@ $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION): $(DOWNLOAD_PATH)/miniupnpc-$(MINIU
rm -r -f $(BUILD_PATH)/miniupnpc-*
tar xvf $(DOWNLOAD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tar.gz
# build
cd miniupnpc-$(MINIUPNPC_VERSION) && export CC=gcc && make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll
cd miniupnpc-$(MINIUPNPC_VERSION) && export CC=gcc && export PATH=.:$$PATH && make -f Makefile.mingw init libminiupnpc.a miniupnpc.dll
# copy files
mkdir -p $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc
cp miniupnpc-$(MINIUPNPC_VERSION)/*.h $(BUILD_PATH)/miniupnpc-$(MINIUPNPC_VERSION).tmp/include/miniupnpc/
@ -132,8 +132,11 @@ $(BUILD_PATH)/openssl-$(OPENSSL_VERSION): $(DOWNLOAD_PATH)/openssl-$(OPENSSL_VER
mkdir -p $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl
cp openssl-$(OPENSSL_VERSION)/include/openssl/*.h $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/include/openssl/
mkdir -p $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin
cp openssl-$(OPENSSL_VERSION)/libeay32.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/
cp openssl-$(OPENSSL_VERSION)/ssleay32.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/
if [ $(MSYSTEM) = "MINGW32" ] ; then cp openssl-$(OPENSSL_VERSION)/libcrypto-1_1.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/ ; fi
if [ $(MSYSTEM) = "MINGW32" ] ; then cp openssl-$(OPENSSL_VERSION)/libcrypto-1_1.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/ ; fi
if [ $(MSYSTEM) = "MINGW32" ] ; then cp openssl-$(OPENSSL_VERSION)/libssl-1_1.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/ ; fi
if [ $(MSYSTEM) = "MINGW64" ] ; then cp openssl-$(OPENSSL_VERSION)/libcrypto-1_1-x64.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/ ; fi
if [ $(MSYSTEM) = "MINGW64" ] ; then cp openssl-$(OPENSSL_VERSION)/libssl-1_1-x64.dll $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/bin/ ; fi
mkdir -p $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/lib
cp openssl-$(OPENSSL_VERSION)/libcrypto.dll.a $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/lib/
cp openssl-$(OPENSSL_VERSION)/libssl.dll.a $(BUILD_PATH)/openssl-$(OPENSSL_VERSION).tmp/lib/
@ -202,7 +205,7 @@ $(BUILD_PATH)/opencv-$(OPENCV_VERSION): $(DOWNLOAD_PATH)/opencv-$(OPENCV_VERSION
mkdir -p $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp/include
cp -r opencv-$(OPENCV_VERSION)/build/install/include/* $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp/include/
mkdir -p $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp/lib/opencv
cp -r opencv-$(OPENCV_VERSION)/build/install/x86/mingw/staticlib/* $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp/lib/opencv/
cp -r opencv-$(OPENCV_VERSION)/build/install/x64/mingw/staticlib/* $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp/lib/opencv/
# cleanup
rm -r -f opencv-$(OPENCV_VERSION)
mv $(BUILD_PATH)/opencv-$(OPENCV_VERSION).tmp $(BUILD_PATH)/opencv-$(OPENCV_VERSION)

View File

@ -6,7 +6,7 @@
setlocal
:: Parameter
set MakeParam="DOWNLOAD_PATH=../download"
set MakeParam="DOWNLOAD_PATH=../../download"
set MakeTask=
:param_loop
@ -19,25 +19,29 @@ if "%~1" NEQ "" (
:: Initialize environment
call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-msys.bat"
call "%EnvPath%\env-msys2.bat"
if errorlevel 1 goto error_env
:: Check MSYS environment
if not exist "%EnvMSYSSH%" %cecho% error "Please install MSYS first." & exit /B 1
if not exist "%EnvMSYS2SH%" %cecho% error "Please install MSYS2 first." & exit /B 1
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
:: Add tools path to PATH environment
set PATH=%EnvToolsPath%;%PATH%
call "%ToolsPath%\msys-path.bat" "%~dp0" MSYSCurPath
call "%ToolsPath%\msys-path.bat" "%BuildLibsPath%" MSYSBuildLibsPath
call "%ToolsPath%\msys2-path.bat" "%~dp0" MSYS2CurPath
call "%ToolsPath%\msys2-path.bat" "%BuildLibsPath%" MSYS2BuildLibsPath
if not exist "%BuildLibsPath%" mkdir "%BuildLibsPath%"
%EnvMSYSCmd% "cd "%MSYSBuildLibsPath%" && make -f %MSYSCurPath%/makefile %MakeParam% %MakeTask%"
set MSYSTEM=MINGW%MSYS2Base%
set MSYS2_PATH_TYPE=inherit
%EnvMSYS2Cmd% "pacman --needed --noconfirm -S diffutils perl tar make wget mingw-w64-%MSYS2Architecture%-make"
::mingw-w64-%MSYS2Architecture%-cmake
::%EnvMSYS2Cmd% "pacman --noconfirm -Rd --nodeps mingw-w64-%MSYS2Architecture%-zlib"
%EnvMSYS2Cmd% "cd "%MSYS2BuildLibsPath%" && make -f %MSYS2CurPath%/makefile %MakeParam% %MakeTask%"
exit /B %ERRORLEVEL%

View File

@ -4,9 +4,10 @@ call "%ToolsPath%\find-in-path.bat" MinGWPath gcc.exe
if "%MinGWPath%"=="" %cecho% error "Please run command in the Qt Command Prompt or add the path to MinGW bin folder to PATH variable." & exit /B 1
:: Get gcc versions
call "%ToolsPath%\get-gcc-version.bat" GCCVersion
call "%ToolsPath%\get-gcc-version.bat" GCCVersion GCCArchitecture
if "%GCCVersion%"=="" %cecho% error "Cannot get gcc version." & exit /B 1
if "%GCCArchitecture%"=="" %cecho% error "Cannot get gcc architecture." & exit /B 1
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%\%GCCArchitecture%
exit /B 0

View File

@ -1,27 +0,0 @@
@echo off
setlocal
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env.bat"
if errorlevel 1 goto error_env
%cecho% info "Build libraries"
call "%~dp0build-libs\build-libs.bat"
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
%cecho% info "Build %SourceName%"
call "%~dp0build\build.bat" release tor autologin plugins
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
%cecho% info "Pack %SourceName%"
call "%~dp0build\pack.bat" release tor
if errorlevel 1 %cecho% error "Failed to pack %SourceName%." & exit /B %ERRORLEVEL%
exit /B 0
:error_env
echo Failed to initialize environment.
exit /B 1

View File

@ -13,7 +13,8 @@ call "%~dp0build-libs\build-libs.bat"
if errorlevel 1 %cecho% error "Failed to build libraries." & exit /B %ERRORLEVEL%
%cecho% info "Build %SourceName%"
call "%~dp0build\build.bat" release autologin plugins
call "%~dp0build\build.bat" release autologin jsonapi
rem plugins
if errorlevel 1 %cecho% error "Failed to build %SourceName%." & exit /B %ERRORLEVEL%
%cecho% info "Pack %SourceName%"

View File

@ -21,6 +21,12 @@ if not exist "%BuildLibsPath%\libs\gcc-version" %cecho% error "Cannot get gcc ve
set /P LibsGCCVersion=<"%BuildLibsPath%\libs\gcc-version"
if "%LibsGCCVersion%" NEQ "%GCCVersion%" %cecho% error "Please use correct version of external libraries. (gcc %GCCVersion% ^<^> libs %LibsGCCVersion%)." & exit /B 1
:: Get date
call "%ToolsPath%\get-rs-date.bat" "%SourcePath%" RsDate
if errorlevel 1 %cecho% error "Could not get date."& goto error
if "%RsDate%"=="" %cecho% error "Could not get date."& goto error
:: Build defines for script
set NSIS_PARAM=
@ -30,6 +36,10 @@ set NSIS_PARAM=%NSIS_PARAM% /DMINGWDIR="%MinGWPath%\.."
set NSIS_PARAM=%NSIS_PARAM% /DOUTDIR="%RsPackPath%"
set NSIS_PARAM=%NSIS_PARAM% /DINSTALLERADD="%RsArchiveAdd%"
set NSIS_PARAM=%NSIS_PARAM% /DEXTERNAL_LIB_DIR="%BuildLibsPath%\libs"
set NSIS_PARAM=%NSIS_PARAM% /DARCHITECTURE="%GCCArchitecture%"
set NSIS_PARAM=%NSIS_PARAM% /DDATE="%RsDate%"
if exist "%EnvTorPath%\Tor\tor.exe" set NSIS_PARAM=%NSIS_PARAM% /DTORDIR="%EnvTorPath%\Tor"
:: Get compiled version
call "%ToolsPath%\get-rs-version.bat" "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare.exe" RsVersion

View File

@ -50,8 +50,8 @@ echo.
title Build - %SourceName%-%RsBuildConfig% [qmake]
set RS_QMAKE_CONFIG=%RsBuildConfig%
if "%ParamVersion%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% version_detail_bash_script
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% rs_autologin
if "%ParamJsonApi%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% rs_jsonapi
if "%ParamPlugins%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% retroshare_plugins
qmake "%SourcePath%\RetroShare.pro" -r -spec win32-g++ "CONFIG+=%RS_QMAKE_CONFIG%" "EXTERNAL_LIB_DIR=%BuildLibsPath%\libs"
@ -63,11 +63,15 @@ echo.
title Build - %SourceName%-%RsBuildConfig% [make]
if exist "%EnvJomExe%" (
"%EnvJomExe%"
) else (
mingw32-make
)
mingw32-make -j %CoreCount%
if errorlevel 1 goto error
echo.
echo === Changelog
echo.
title Build - %SourceName%-%RsBuildConfig% [changelog]
call "%ToolsPath%\generate-changelog.bat" "%SourcePath%" "%RsBuildPath%\changelog.txt"
:error
popd

View File

@ -3,7 +3,10 @@ set ParamRelease=0
set ParamDebug=0
set ParamAutologin=0
set ParamPlugins=0
set ParamJsonApi=0
set ParamTor=0
set NonInteractive=0
set CoreCount=%NUMBER_OF_PROCESSORS%
:parameter_loop
if "%~1" NEQ "" (
@ -14,10 +17,16 @@ if "%~1" NEQ "" (
set ParamDebug=1
) else if "%%~a"=="autologin" (
set ParamAutologin=1
) else if "%%~a"=="jsonapi" (
set ParamJsonApi=1
) else if "%%~a"=="plugins" (
set ParamPlugins=1
) else if "%%~a"=="tor" (
set ParamTor=1
) else if "%%~a"=="non-interactive" (
set NonInteractive=1
) else if "%%~a"=="singlethread" (
set CoreCount=1
) else (
echo.
echo Unknown parameter %1
@ -67,13 +76,14 @@ call "%ToolsPath%\get-qt-version.bat" QtVersion
if "%QtVersion%"=="" %cecho% error "Cannot get Qt version." & exit /B 1
:: Get gcc versions
call "%ToolsPath%\get-gcc-version.bat" GCCVersion
call "%ToolsPath%\get-gcc-version.bat" GCCVersion GCCArchitecture
if "%GCCVersion%"=="" %cecho% error "Cannot get gcc version." & exit /B 1
if "%GCCArchitecture%"=="" %cecho% error "Cannot get gcc architecture." & exit /B 1
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%
set BuildLibsPath=%EnvRootPath%\build-libs\gcc-%GCCVersion%\%GCCArchitecture%
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%RsBuildConfig%
set RsDeployPath=%DeployPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%
set RsBuildPath=%BuildPath%\Qt-%QtVersion%-%GCCArchitecture%-%RsBuildConfig%
set RsDeployPath=%DeployPath%\Qt-%QtVersion%-%GCCArchitecture%%RsType%-%RsBuildConfig%
set RsPackPath=%DeployPath%
set RsArchiveAdd=
@ -93,9 +103,16 @@ echo release^|debug Build release or debug version
echo.
echo Optional parameter (need clean when changed)
echo autologin Build with autologin
echo jsonapi Build with jsonapi
echo plugins Build plugins
echo.
echo Optional parameter
echo singlethread Use only 1 thread for building
echo.
echo Parameter for pack
echo tor Pack tor version
echo.
echo Parameter for git-log
echo non-interactive Non-interactive mode
echo.
exit /B 2

View File

@ -2,9 +2,6 @@
setlocal
set NoAsk=
if "%~2"=="no-ask" set NoAsk=1
:: Initialize environment
call "%~dp0..\env.bat"
if errorlevel 1 goto error_env
@ -20,48 +17,29 @@ set GitPath=
call "%ToolsPath%\find-in-path.bat" GitPath git.exe
if "%GitPath%"=="" echo Git executable not found in PATH.& exit /B 1
:: Get compiled revision
set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat
if not exist "%GetRsVersion%" (
echo File not found
echo %GetRsVersion%
exit /B 1
)
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
:: Get compiled version
call "%GetRsVersion%" RS_REVISION_STRING RsRevision
if "%RsRevision%"=="" echo Revision not found.& exit /B 1
call "%ToolsPath%\get-rs-version.bat" "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare.exe" RsVersion
if errorlevel 1 %cecho% error "Version not found."& goto error
call "%GetRsVersion%" RS_MAJOR_VERSION RsMajorVersion
if "%RsMajorVersion%"=="" echo Major version not found.& exit /B 1
if "%RsVersion.Major%"=="" %cecho% error "Major version not found."& goto error
if "%RsVersion.Minor%"=="" %cecho% error "Minor version not found."& goto error
if "%RsVersion.Mini%"=="" %cecho% error "Mini number not found".& goto error
if "%RsVersion.Extra%"=="" %cecho% error "Extra number not found".& goto error
call "%GetRsVersion%" RS_MINOR_VERSION RsMinorVersion
if "%RsMinorVersion%"=="" echo Minor version not found.& exit /B 1
set RsVersion=%RsVersion.Major%.%RsVersion.Minor%.%RsVersion.Mini%
call "%GetRsVersion%" RS_BUILD_NUMBER RsBuildNumber
if "%RsBuildNumber%"=="" echo Build number not found.& exit /B 1
:: Get date
call "%ToolsPath%\get-rs-date.bat" "%SourcePath%" RsDate
if errorlevel 1 %cecho% error "Could not get date."& goto error
call "%GetRsVersion%" RS_BUILD_NUMBER_ADD RsBuildNumberAdd
set RsVersion=%RsMajorVersion%.%RsMinorVersion%.%RsBuildNumber%%RsBuildNumberAdd%
:: Check WMIC is available
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& exit /B 1
:: Use WMIC to retrieve date in format YYYYMMDD
set RsDate=
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
if "%RsDate%"=="" %cecho% error "Could not get date."& goto error
:: Get last revision
set RsLastRefFile=%BuildPath%\Qt-%QtVersion%%RsType%-%RsBuildConfig%-LastRef.txt
set RsLastRefFile=%BuildPath%\Qt-%QtVersion%-%GCCArchitecture%%RsType%-%RsBuildConfig%-LastRef.txt
set RsLastRef=
if exist "%RsLastRefFile%" set /P RsLastRef=<"%RsLastRefFile%"
if "%NoAsk%"=="1" goto no_ask_for_last_revision
if "%NonInteractive%"=="1" goto no_ask_for_last_revision
if not "%RsLastRef%"=="" echo Last Revision was %RsLastRef%
set /P RsLastRefInput=Last Revision:
if "%RsLastRefInput%" NEQ "" set RsLastRef=%RsLastRefInput%
@ -79,15 +57,15 @@ echo.
echo Creating log from %RsLastRef%
echo to %RsRef%
if "%NoAsk%"=="1" goto no_confirm
if "%NonInteractive%"=="1" goto no_confirm
choice /M "Do you want to proceed?"
if %errorlevel%==2 exit /B 1
:no_confirm
if "%RsBuildConfig%" NEQ "release" (
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%%RsArchiveAdd%-%RsBuildConfig%.txt
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%-%RsBuildConfig%.txt
) else (
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsRevision%-Qt-%QtVersion%%RsType%%RsArchiveAdd%.txt
set RsGitLog=%DeployPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%.txt
)
title %SourceName%-%RsBuildConfig% [git log]

View File

@ -29,16 +29,8 @@ if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%"
:: Check compilation
if not exist "%RsBuildPath%\Makefile" echo Project is not compiled.& goto error
:: Get compiled revision
set GetRsVersion=%SourcePath%\build_scripts\Windows\tools\get-rs-version.bat
if not exist "%GetRsVersion%" (
%cecho% error "File not found"
echo %GetRsVersion%
goto error
)
:: Get compiled version
call "%GetRsVersion%" "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare.exe" RsVersion
call "%ToolsPath%\get-rs-version.bat" "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare.exe" RsVersion
if errorlevel 1 %cecho% error "Version not found."& goto error
if "%RsVersion.Major%"=="" %cecho% error "Major version not found."& goto error
@ -48,18 +40,17 @@ if "%RsVersion.Extra%"=="" %cecho% error "Extra number not found".& goto error
set RsVersion=%RsVersion.Major%.%RsVersion.Minor%.%RsVersion.Mini%
:: Check WMIC is available
wmic.exe alias /? >nul 2>&1 || echo WMIC is not available.&& goto error
:: Get date
call "%ToolsPath%\get-rs-date.bat" "%SourcePath%" RsDate
if errorlevel 1 %cecho% error "Could not get date."& goto error
:: Use WMIC to retrieve date in format YYYYMMDD
set RsDate=
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set RsDate=%%I
set RsDate=%RsDate:~0,4%%RsDate:~4,2%%RsDate:~6,2%
if "%RsDate%"=="" %cecho% error "Could not get date."& goto error
rem Tor
if "%ParamTor%"=="1" (
:: Check for tor executable
if not exist "%EnvDownloadPath%\tor\Tor\tor.exe" (
%cecho% error "Tor binary not found. Please download Tor Expert Bundle from\nhttps://www.torproject.org/download/download.html.en\nand unpack to\n%EnvDownloadPath:\=\\%\\tor"
if not exist "%EnvTorPath%\Tor\tor.exe" (
%cecho% error "Tor binary not found. Please download Tor Expert Bundle from\nhttps://www.torproject.org/download/download.html.en\nand unpack to\n%EnvTorPath:\=\\%"
goto error
)
)
@ -74,9 +65,9 @@ if "%QtMainVersion%"=="4" set QtMainVersion2=4
if "%QtMainVersion%"=="5" set QtMainVersion1=5
if "%RsBuildConfig%" NEQ "release" (
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%-%RsBuildConfig%.7z
) else (
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%%RsType%%RsArchiveAdd%.7z
set Archive=%RsPackPath%\RetroShare-%RsVersion%-Windows-Portable-%RsDate%-%RsVersion.Extra%-Qt-%QtVersion%-%GCCArchitecture%%RsType%%RsArchiveAdd%.7z
)
if exist "%Archive%" del /Q "%Archive%"
@ -98,12 +89,13 @@ mkdir "%RsDeployPath%\qss"
mkdir "%RsDeployPath%\stylesheets"
mkdir "%RsDeployPath%\sounds"
mkdir "%RsDeployPath%\translations"
mkdir "%RsDeployPath%\license"
copy nul "%RsDeployPath%\portable" %Quite%
echo copy binaries
copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\RetroShare*.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\retroshare-nogui\src\%RsBuildConfig%\retroshare*-nogui.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\retroshare-gui\src\%RsBuildConfig%\retroshare*.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\retroshare-service\src\%RsBuildConfig%\retroshare*-service.exe" "%RsDeployPath%" %Quite%
echo copy extensions
for /D %%D in ("%RsBuildPath%\plugins\*") do (
@ -148,13 +140,15 @@ rmdir /S /Q "%RsDeployPath%\stylesheets\__MACOSX__Bubble" %Quite%
echo copy sounds
xcopy /S "%SourcePath%\retroshare-gui\src\sounds" "%RsDeployPath%\sounds" %Quite%
echo copy license
xcopy /S "%SourcePath%\retroshare-gui\src\license" "%RsDeployPath%\license" %Quite%
echo copy translation
copy "%SourcePath%\retroshare-gui\src\translations\qt_tr.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtPath%\..\translations\qt_*.qm" "%RsDeployPath%\translations" %Quite%
if "%QtMainVersion%"=="5" (
copy "%QtPath%\..\translations\qtbase_*.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtPath%\..\translations\qtscript_*.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtPath%\..\translations\qtquick1_*.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtPath%\..\translations\qtmultimedia_*.qm" "%RsDeployPath%\translations" %Quite%
copy "%QtPath%\..\translations\qtxmlpatterns_*.qm" "%RsDeployPath%\translations" %Quite%
)
@ -163,7 +157,7 @@ echo copy bdboot.txt
copy "%SourcePath%\libbitdht\src\bitdht\bdboot.txt" "%RsDeployPath%" %Quite%
echo copy changelog.txt
copy "%SourcePath%\retroshare-gui\src\changelog.txt" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\changelog.txt" "%RsDeployPath%" %Quite%
if exist "%SourcePath%\libresapi\src\webui" (
echo copy webui
@ -173,7 +167,7 @@ if exist "%SourcePath%\libresapi\src\webui" (
if "%ParamTor%"=="1" (
echo copy tor
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
echo n | copy /-y "%EnvTorPath%\Tor\*.*" "%RsDeployPath%" %Quite%
)
rem pack files

View File

@ -1,22 +0,0 @@
:: Usage:
:: call env-msys.bat [reinstall|clean]
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
set EnvMSYSPath=%EnvRootPath%\msys
call "%~dp0tools\prepare-msys.bat" %1
if errorlevel 1 exit /B %ERRORLEVEL%
set EnvMSYSSH=%EnvMSYSPath%\msys\1.0\bin\sh.exe
if not exist "%EnvMSYSSH%" if errorlevel 1 goto error_env
set EnvMSYSCmd="%EnvMSYSSH%" --login -i -c
exit /B 0
:error_env
echo Failed to initialize environment.
exit /B 1

39
build_scripts/Windows/env/env-msys2.bat vendored Normal file
View File

@ -0,0 +1,39 @@
:: Usage:
:: call env-msys2.bat [reinstall|clean]
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
rem openssl x86 doesn't compile with mingw64 x64
:: Get gcc versions
call "%ToolsPath%\get-gcc-version.bat" GCCVersion GCCArchitecture
if "%GCCVersion%"=="" %cecho% error "Cannot get gcc version." & exit /B 1
if "%GCCArchitecture%"=="" %cecho% error "Cannot get gcc architecture." & exit /B 1
rem IF DEFINED ProgramFiles(x86) (
if "%GCCArchitecture%"=="x64" (
:: x64
set MSYS2Architecture=x86_64
set MSYS2Base=64
) else (
:: x86
set MSYS2Architecture=i686
set MSYS2Base=32
)
set EnvMSYS2Path=%EnvRootPath%\msys2
call "%~dp0tools\prepare-msys2.bat" %1
if errorlevel 1 exit /B %ERRORLEVEL%
set EnvMSYS2SH=%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\sh.exe
if not exist "%EnvMSYS2SH%" if errorlevel 1 goto error_env
set EnvMSYS2Cmd="%EnvMSYS2SH%" -lc
exit /B 0
:error_env
echo Failed to initialize environment.
exit /B 1

View File

@ -1,23 +0,0 @@
:: Usage:
:: call env-qt4.bat version [reinstall|clean]
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
set EnvQtBasePath=%EnvRootPath%\qt
:: Create folders
if not exist "%EnvQtBasePath%" mkdir "%EnvQtBasePath%"
call "%~dp0tools\prepare-qt.bat" %1 %2
if errorlevel 1 exit /B %ERRORLEVEL%
if "%MinGWDir%" NEQ "" set PATH=%MinGWDir%\bin;%PATH%
if "%QtDir%" NEQ "" set PATH=%QtDir%\bin;%PATH%
exit /B 0
:error_env
echo Failed to initialize environment.
exit /B 1

View File

@ -6,11 +6,9 @@ set EnvRootPath=%RootPath%\%SourceName%-env
set EnvToolsPath=%EnvRootPath%\tools
set EnvTempPath=%EnvRootPath%\tmp
set EnvDownloadPath=%EnvRootPath%\download
set EnvTorPath=%EnvDownloadPath%\tor
::set EnvCurlExe=%EnvToolsPath%\curl.exe
set EnvWgetExe=%EnvToolsPath%\wget.exe
set EnvSevenZipExe=%EnvToolsPath%\7z.exe
set EnvJomExe=%EnvToolsPath%\jom.exe
set EnvSedExe=%EnvToolsPath%\sed.exe
set EnvCutExe=%EnvToolsPath%\cut.exe
set EnvDependsExe=%EnvToolsPath%\depends.exe
@ -27,7 +25,7 @@ call "%~dp0tools\prepare-tools.bat"
if errorlevel 1 exit /B %ERRORLEVEL%
:: Add MinGit to PATH
set PATH=%EnvToolsPath%\MinGit\cmd;%PATH%
set PATH=%EnvToolsPath%\MinGit\cmd;%EnvToolsPath%\cmake\bin;%PATH%
set HOME=%EnvToolsPath%\MinGit\home
exit /B 0

View File

@ -1,81 +0,0 @@
:: Usage:
:: call prepare-msys.bat [reinstall|clean]
setlocal enabledelayedexpansion
if "%EnvMSYSPath%"=="" exit /B 1
if not exist "%EnvRootPath%"=="" exit /B 1
copy "%~dp0root\update-msys.bat" "%EnvRootPath%" >nul
if "%~1"=="clean" (
%cecho% info "Clean MSYS"
call "%ToolsPath%\remove-dir.bat" "%EnvMSYSPath%"
goto exit
)
if exist "%EnvMSYSPath%\bin\mingw-get.exe" (
if "%~1"=="reinstall" (
choice /M "Found existing MSYS version. Do you want to proceed?"
if !ERRORLEVEL!==2 goto exit
) else (
goto exit
)
)
set MSYSInstall=mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip
set MSYSUrl=http://sourceforge.net/projects/mingw/files/Installer/mingw-get/mingw-get-0.6.2-beta-20131004-1/%MSYSInstall%/download
set CMakeInstall=cmake-3.1.0-win32-x86.zip
set CMakeUrl=http://www.cmake.org/files/v3.1/%CMakeInstall%
set CMakeUnpackPath=%EnvMSYSPath%\msys\1.0
%cecho% info "Remove previous MSYS version"
call "%ToolsPath%\remove-dir.bat" "%EnvMSYSPath%"
%cecho% info "Download installation files"
if not exist "%EnvDownloadPath%\%MSYSInstall%" call "%ToolsPath%\download-file.bat" "%MSYSUrl%" "%EnvDownloadPath%\%MSYSInstall%"
if not exist "%EnvDownloadPath%\%MSYSInstall%" %cecho% error "Cannot download MSYS" & goto error
if not exist "%EnvDownloadPath%\%CMakeInstall%" call "%ToolsPath%\download-file.bat" "%CMakeUrl%" "%EnvDownloadPath%\%CMakeInstall%"
if not exist "%EnvDownloadPath%\%CMakeInstall%" %cecho% error "Cannot download CMake" & goto error
%cecho% info "Unpack MSYS"
"%EnvSevenZipExe%" x -o"%EnvMSYSPath%" "%EnvDownloadPath%\%MSYSInstall%"
%cecho% info "Install MSYS"
if not exist "%EnvMSYSPath%\var\lib\mingw-get\data\profile.xml" copy "%EnvMSYSPath%\var\lib\mingw-get\data\defaults.xml" "%EnvMSYSPath%\var\lib\mingw-get\data\profile.xml"
pushd "%EnvMSYSPath%\bin"
mingw-get.exe install mingw32-mingw-get
mingw-get.exe install msys-coreutils
mingw-get.exe install msys-base
mingw-get.exe install msys-autoconf
mingw-get.exe install msys-automake
mingw-get.exe install msys-autogen
mingw-get.exe install msys-mktemp
rem Use own wget binary, because MSYS version of wget is to old
rem mingw-get.exe install msys-wget
popd
%cecho% info "Unpack CMake"
"%EnvSevenZipExe%" x -o"%CMakeUnpackPath%" "%EnvDownloadPath%\%CMakeInstall%"
%cecho% info "Install CMake"
set CMakeVersion=
for /D %%F in (%CMakeUnpackPath%\cmake*) do set CMakeVersion=%%~nxF
if "%CMakeVersion%"=="" %cecho% error "CMake version not found." & goto :exit
%cecho% info "Found CMake version %CMakeVersion%"
set FoundProfile=
for /f "tokens=3" %%F in ('find /c /i "%CMakeVersion%" "%EnvMSYSPath%\msys\1.0\etc\profile"') do set FoundProfile=%%F
if "%FoundProfile%"=="0" (
echo export PATH="${PATH}:/%CMakeVersion%/bin">>"%EnvMSYSPath%\msys\1.0\etc\profile"
)
:exit
endlocal
exit /B 0
:error
endlocal
exit /B 1

View File

@ -0,0 +1,85 @@
:: Usage:
:: call prepare-msys2.bat [reinstall|clean]
setlocal enabledelayedexpansion
if "%EnvMSYS2Path%"=="" exit /B 1
if "%MSYS2Architecture%"=="" exit /B 1
if "%MSYS2Base%"=="" exit /B 1
if not exist "%EnvRootPath%"=="" exit /B 1
copy "%~dp0root\update-msys2.bat" "%EnvRootPath%" >nul
if "%~1"=="clean" (
%cecho% info "Clean MSYS2"
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%"
goto exit
)
if exist "%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\pacman.exe" (
if "%~1"=="reinstall" (
choice /M "Found existing MSYS2 version. Do you want to proceed?"
if !ERRORLEVEL!==2 goto exit
) else (
goto exit
)
)
set MSYS2Install=msys2-base-%MSYS2Architecture%-20190524.tar.xz
set MSYS2Url=http://sourceforge.net/projects/msys2/files/Base/%MSYS2Architecture%/%MSYS2Install%/download
set CMakeInstall=cmake-3.1.0-win32-x86.zip
set CMakeUrl=http://www.cmake.org/files/v3.1/%CMakeInstall%
set CMakeUnpackPath=%EnvMSYS2Path%\msys%MSYS2Base%
if exist "%EnvMSYS2Path%\msys%MSYS2Base%" (
%cecho% info "Remove previous MSYS2 version"
call "%ToolsPath%\remove-dir.bat" "%EnvMSYS2Path%\msys%MSYS2Base%"
)
%cecho% info "Download installation files"
if not exist "%EnvDownloadPath%\%MSYS2Install%" call "%ToolsPath%\download-file.bat" "%MSYS2Url%" "%EnvDownloadPath%\%MSYS2Install%"
if not exist "%EnvDownloadPath%\%MSYS2Install%" %cecho% error "Cannot download MSYS" & goto error
if not exist "%EnvDownloadPath%\%CMakeInstall%" call "%ToolsPath%\download-file.bat" "%CMakeUrl%" "%EnvDownloadPath%\%CMakeInstall%"
if not exist "%EnvDownloadPath%\%CMakeInstall%" %cecho% error "Cannot download CMake" & goto error
%cecho% info "Unpack MSYS2"
"%EnvSevenZipExe%" x -so "%EnvDownloadPath%\%MSYS2Install%" | "%EnvSevenZipExe%" x -y -si -ttar -o"%EnvMSYS2Path%"
%cecho% info "Unpack CMake"
"%EnvSevenZipExe%" x -o"%CMakeUnpackPath%" "%EnvDownloadPath%\%CMakeInstall%"
%cecho% info "Install CMake"
set CMakeVersion=
for /D %%F in (%CMakeUnpackPath%\cmake*) do set CMakeVersion=%%~nxF
if "%CMakeVersion%"=="" %cecho% error "CMake version not found." & goto :exit
%cecho% info "Found CMake version %CMakeVersion%"
set FoundProfile=
for /f "tokens=3" %%F in ('find /c /i "%CMakeVersion%" "%EnvMSYS2Path%\msys%MSYS2Base%\etc\profile"') do set FoundProfile=%%F
if "%FoundProfile%"=="0" (
echo export PATH="${PATH}:/%CMakeVersion%/bin">>"%EnvMSYS2Path%\msys%MSYS2Base%\etc\profile"
)
set MSYS2SH=%EnvMSYS2Path%\msys%MSYS2Base%\usr\bin\sh
%cecho% info "Update keyring"
"%MSYS2SH%" -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
"%MSYS2SH%" -lc "pacman --noconfirm -U msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
%cecho% info "Initialize MSYS2"
"%MSYS2SH%" -lc "pacman -Sy"
"%MSYS2SH%" -lc "pacman --noconfirm --needed -S bash pacman pacman-mirrors msys2-runtime"
call "%EnvMSYS2Path%\msys%MSYS2Base%\autorebase.bat"
call "%EnvRootPath%\update-msys2.bat"
call "%EnvRootPath%\update-msys2.bat"
:exit
endlocal
exit /B 0
:error
endlocal
exit /B 1

View File

@ -1,204 +0,0 @@
:: Usage:
:: call prepare-qt.bat version [reinstall|clean]
setlocal enabledelayedexpansion
if "%EnvQtBasePath%"=="" exit /B 1
if not exist "%EnvRootPath%"=="" exit /B 1
set EnvQtVersion=%~1
if "%EnvQtVersion%"=="" (
%cecho% error "Please specify Qt version"
goto error
)
for /f "tokens=1,2 delims=." %%A in ("%EnvQtVersion%") do set EnvQtMainVersion=%%A& set EnvQtBaseVersion=%%A.%%B
set EnvQtPath=%EnvQtBasePath%\%EnvQtVersion%
if "%~2"=="clean" (
%cecho% info "Clean Qt %EnvQtVersion%"
call "%ToolsPath%\remove-dir.bat" "%EnvQtPath%"
goto exit
)
set CheckQmakeExe=
if "%EnvQtMainVersion%"=="4" (
set CheckQmakeExe=%EnvQtPath%\Qt\bin\qmake.exe
) else (
if "%EnvQtMainVersion%" GEQ "5" (
call :get_mingw_version EnvQtMinGWVersion "%EnvQtPath%\%EnvQtBaseVersion%"
if "!EnvQtMinGWVersion!" NEQ "" (
set CheckQmakeExe=%EnvQtPath%\%EnvQtBaseVersion%\!EnvQtMinGWVersion!\bin\qmake.exe
)
)
)
if "%CheckQmakeExe%" NEQ "" (
if exist "%CheckQmakeExe%" (
if "%~2"=="reinstall" (
choice /M "Found existing Qt %EnvQtVersion% version. Do you want to proceed?"
if !ERRORLEVEL!==2 goto exit
) else (
goto exit
)
)
)
set QtInstall=qt-opensource-windows-x86-mingw-%EnvQtVersion%.exe
set QtInstallWildcard=qt-opensource-windows-x86-mingw*-%EnvQtVersion%.exe
set QtUrl=http://download.qt.io/official_releases/qt/%EnvQtBaseVersion%/%EnvQtVersion%
%cecho% info "Remove previous Qt %EnvQtVersion% version"
call "%ToolsPath%\remove-dir.bat" "%EnvQtPath%"
%cecho% info "Download Qt installation files"
if not exist "%EnvDownloadPath%\%QtInstall%" (
call "%ToolsPath%\download-file-wildcard.bat" "%QtUrl%" "%QtInstallWildcard%" "%EnvDownloadPath%" QtInstallDownload
if "!QtInstallDownload!"=="" %cecho% error "Cannot download Qt %EnvQtVersion%" & goto error
ren "%EnvDownloadPath%\!QtInstallDownload!" "%QtInstall%"
)
if not exist "%EnvDownloadPath%\%QtInstall%" %cecho% error "Cannot download Qt %EnvQtVersion%" & goto error
mkdir "%EnvQtPath%"
if "%EnvQtMainVersion%"=="4" (
rem Qt 4
goto install_qt4
)
if "%EnvQtMainVersion%" GEQ "5" (
rem Qt >= 5
goto install_qt5
)
%cecho% error "Unknown Qt version %EnvQtVersion%"
:error
endlocal & set QtDir=& set MinGWDir=
exit /B 1
:exit
set QtDir=
set MinGWDir=
if "%EnvQtMainVersion%"=="4" (
rem Qt 4
set QtDir=%EnvQtBasePath%\%EnvQtVersion%\Qt
set MinGWDir=%EnvQtBasePath%\%EnvQtVersion%\mingw32
) else (
if "%EnvQtMainVersion%" GEQ "5" (
call :get_mingw_version EnvQtToolsMinGWVersion "%EnvQtPath%\Tools"
set QtDir=%EnvQtPath%\%EnvQtBaseVersion%\!EnvQtMinGWVersion!
set MinGWDir=%EnvQtPath%\Tools\!EnvQtToolsMinGWVersion!
)
)
endlocal & set QtDir=%QtDir%& set MinGWDir=%MinGWDir%
exit /B 0
:get_mingw_version
setlocal enabledelayedexpansion
set Variable=%~1
set Result=
for /D %%A in (%~2\*) do set Name=%%~nA& if "!Name:~0,5!"=="mingw" set Result=!Name!
endlocal & set %Variable%=%Result%
goto :EOF
:replace
set InFile=%~1
set InFileName=%~nx1
set OutFile=%~1.tmp
set SearchText=%~2
set ReplaceText=%~3
if exist "%OutFile%" del /Q "%OutFile%"
for /f "tokens=1* delims=]" %%A in ('find /n /v ""^<%InFile%') do (
set string=%%B
if "!string!"=="" (
echo.>>%OutFile%
) else (
set modified=!string:%SearchText%=%ReplaceText%!
echo !modified!>> %OutFile%
)
)
del "%InFile%"
rename "%OutFile%" "%InFileName%"
goto :EOF
:install_qt4
set MinGWInstall=i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z
set MinGWUrl=http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/4.8.2/threads-posix/dwarf/%MinGWInstall%/download
%cecho% info "Download MinGW installation files"
if not exist "%EnvDownloadPath%\%MinGWInstall%" call "%ToolsPath%\download-file.bat" "%MinGWUrl%" "%EnvDownloadPath%\%MinGWInstall%"
if not exist "%EnvDownloadPath%\%MinGWInstall%" %cecho% error "Cannot download MinGW" & goto error
%cecho% info "Unpack Qt %EnvQtVersion%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%QtInstall%" $_14_
move "%EnvTempPath%\$_14_" "%EnvQtPath%\Qt"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
%cecho% info "Unpack MinGW"
"%EnvSevenZipExe%" x -o"%EnvQtPath%" "%EnvDownloadPath%\%MinGWInstall%"
echo Prepare Qt %EnvQtVersion%
echo [Paths]>"%EnvQtPath%\Qt\bin\qt.conf"
echo Prefix=..>>"%EnvQtPath%\Qt\bin\qt.conf"
goto exit
:install_qt5
set EnvQtInstallerFrameworkVersion=2.0.3
set QtInstallerFrameworkInstall=QtInstallerFramework-%EnvQtInstallerFrameworkVersion%-win-x86.exe
set QtInstallerFrameworkUrl=http://download.qt.io/official_releases/qt-installer-framework/%EnvQtInstallerFrameworkVersion%/QtInstallerFramework-win-x86.exe
%cecho% info "Download QtInstallerFramework installation files"
if not exist "%EnvDownloadPath%\%QtInstallerFrameworkInstall%" call "%ToolsPath%\download-file.bat" "%QtInstallerFrameworkUrl%" "%EnvDownloadPath%\%QtInstallerFrameworkInstall%"
if not exist "%EnvDownloadPath%\%QtInstallerFrameworkInstall%" %cecho% error "Cannot download Qt Installer Framework %EnvQtInstallerFrameworkVersion%" & goto error
%cecho% info "Unpack Qt Installer Framework"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%QtInstallerFrameworkInstall%" bin\devtool.exe
move "%EnvTempPath%\bin\devtool.exe" "%EnvQtPath%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
%cecho% info "Unpack Qt %EnvQtVersion%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
"%EnvQtPath%\devtool.exe" "%EnvDownloadPath%\%QtInstall%" --dump "%EnvTempPath%"
pushd "%EnvTempPath%"
del /S *vcredist*.7z
del /S *qtcreator*.7z
del /S *1installer-changelog.7z
for /R %%F in (*.7z) do "%EnvSevenZipExe%" x -y -o"%EnvQtPath%" "%%F"
popd
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
call :get_mingw_version EnvQtMinGWVersion "%EnvQtPath%\%EnvQtBaseVersion%"
%cecho% info "Prepare Qt %EnvQtVersion%"
echo [Paths]>"%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\bin\qt.conf"
echo Documentation=../../Docs/Qt-%EnvQtBaseVersion%>>"%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\bin\qt.conf"
echo Examples=../../Examples/Qt-%EnvQtBaseVersion%>>"%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\bin\qt.conf"
echo Prefix=..>>"%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\bin\qt.conf"
call :replace "%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\mkspecs\qconfig.pri" "Enterprise" "OpenSource"
for /R "%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\lib" %%A in (*.pc) do (
call :replace "%%A" "c:/Users/qt/work/install" "%EnvQtPath:\=\\%\%EnvQtBaseVersion%\\%EnvQtMinGWVersion%"
call :replace "%%A" "c:\Users\qt\work\install" "%EnvQtPath:\=/%\%EnvQtBaseVersion%/%EnvQtMinGWVersion%"
)
for /R "%EnvQtPath%\%EnvQtBaseVersion%\%EnvQtMinGWVersion%\lib" %%A in (*.prl) do (
call :replace "%%A" "c:/Users/qt/work/install" "%EnvQtPath:\=\\%\%EnvQtBaseVersion%\\%EnvQtMinGWVersion%"
call :replace "%%A" "c:\Users\qt\work\install" "%EnvQtPath:\=/%\%EnvQtBaseVersion%/%EnvQtMinGWVersion%"
)
goto exit

View File

@ -4,36 +4,24 @@ if "%EnvRootPath%"=="" exit /B 1
set CEchoUrl=https://github.com/lordmulder/cecho/releases/download/2015-10-10/cecho.2015-10-10.zip
set CEchoInstall=cecho.2015-10-10.zip
set SevenZipUrl=https://sourceforge.net/projects/sevenzip/files/7-Zip/18.05/7z1805.msi/download
set SevenZipInstall=7z1805.msi
::set CurlUrl=https://bintray.com/artifact/download/vszakats/generic/curl-7.50.1-win32-mingw.7z
::set CurlInstall=curl-7.50.1-win32-mingw.7z
set WgetUrl=https://eternallybored.org/misc/wget/1.19.4/32/wget.exe
set WgetInstall=wget.exe
set JomUrl=http://download.qt.io/official_releases/jom/jom.zip
set JomInstall=jom.zip
set SevenZipUrl=https://sourceforge.net/projects/sevenzip/files/7-Zip/19.00/7z1900.msi/download
set SevenZipInstall=7z1900.msi
set DependsUrl=http://www.dependencywalker.com/depends22_x86.zip
set DependsInstall=depends22_x86.zip
set UnixToolsUrl=http://unxutils.sourceforge.net/UnxUpdates.zip
set UnixToolsInstall=UnxUpdates.zip
set NSISUrl=http://prdownloads.sourceforge.net/nsis/nsis-3.0-setup.exe?download
set NSISInstall=nsis-3.0-setup.exe
set NSISInstall=nsis-3.05-setup.exe
set NSISUrl=http://prdownloads.sourceforge.net/nsis/%NSISInstall%?download
set NSISInstallPath=%EnvToolsPath%\NSIS
set MinGitInstall=MinGit-2.19.1-32-bit.zip
set MinGitUrl=https://github.com/git-for-windows/git/releases/download/v2.19.1.windows.1/%MinGitInstall%
set MinGitInstall=MinGit-2.28.0-32-bit.zip
set MinGitUrl=https://github.com/git-for-windows/git/releases/download/v2.28.0.windows.1/%MinGitInstall%
set MinGitInstallPath=%EnvToolsPath%\MinGit
set SigcheckInstall=Sigcheck.zip
set SigcheckUrl=https://download.sysinternals.com/files/%SigcheckInstall%
if not exist "%EnvToolsPath%\wget.exe" (
echo Download Wget installation
if not exist "%EnvDownloadPath%\%WgetInstall%" call "%ToolsPath%\winhttpjs.bat" %WgetUrl% -saveTo "%EnvDownloadPath%\%WgetInstall%"
if not exist "%EnvDownloadPath%\%WgetInstall%" %cecho% error "Cannot download Wget installation" & goto error
echo Copy Wget
copy "%EnvDownloadPath%\wget.exe" "%EnvToolsPath%"
)
set CMakeVersion=cmake-3.1.0-win32-x86
set CMakeInstall=%CMakeVersion%.zip
set CMakeUrl=http://www.cmake.org/files/v3.1/%CMakeInstall%
set CMakeInstallPath=%EnvToolsPath%\cmake
set TorProjectUrl=https://www.torproject.org
set TorDownloadIndexUrl=%TorProjectUrl%/download/tor
if not exist "%EnvToolsPath%\7z.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
@ -68,45 +56,13 @@ if not exist "%EnvToolsPath%\cecho.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
)
::if not exist "%EnvToolsPath%\curl.exe" (
:: call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
:: mkdir "%EnvTempPath%"
::
:: echo Download Curl installation
::
:: if not exist "%EnvDownloadPath%\%CurlInstall%" call "%ToolsPath%\winhttpjs.bat" %CurlUrl% -saveTo "%EnvDownloadPath%\%CurlInstall%"
:: if not exist "%EnvDownloadPath%\%CurlInstall%" echo Cannot download Curl installation& goto error
::
:: echo Unpack Curl
:: "%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%CurlInstall%"
:: copy "%EnvTempPath%\curl-7.50.1-win32-mingw\bin\curl.exe" "%EnvToolsPath%"
::
:: call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
::)
if not exist "%EnvToolsPath%\jom.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
%cecho% info "Download jom installation"
if not exist "%EnvDownloadPath%\%JomInstall%" call "%ToolsPath%\winhttpjs.bat" %JomUrl% -saveTo "%EnvDownloadPath%\%JomInstall%"
if not exist "%EnvDownloadPath%\%JomInstall%" %cecho% error "Cannot download jom installation" & goto error
%cecho% info "Unpack jom"
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%JomInstall%"
copy "%EnvTempPath%\jom.exe" "%EnvToolsPath%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
)
if not exist "%EnvToolsPath%\depends.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
%cecho% info "Download Dependency Walker installation"
if not exist "%EnvDownloadPath%\%DependsInstall%" call "%ToolsPath%\winhttpjs.bat" %DependsUrl% -saveTo "%EnvDownloadPath%\%DependsInstall%"
if not exist "%EnvDownloadPath%\%DependsInstall%" call "%ToolsPath%\download-file.bat" %DependsUrl% "%EnvDownloadPath%\%DependsInstall%"
if not exist "%EnvDownloadPath%\%DependsInstall%" %cecho% error "Cannot download Dependendy Walker installation" & goto error
%cecho% info "Unpack Dependency Walker"
@ -122,7 +78,7 @@ if not exist "%EnvToolsPath%\cut.exe" (
%cecho% info "Download Unix Tools installation"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\winhttpjs.bat" %UnixToolsUrl% -saveTo "%EnvDownloadPath%\%UnixToolsInstall%"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\download-file.bat" %UnixToolsUrl% "%EnvDownloadPath%\%UnixToolsInstall%"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" %cecho% error "Cannot download Unix Tools installation" & goto error
%cecho% info "Unpack Unix Tools"
@ -138,7 +94,7 @@ if not exist "%EnvToolsPath%\sed.exe" (
%cecho% info "Download Unix Tools installation"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\winhttpjs.bat" %UnixToolsUrl% -saveTo "%EnvDownloadPath%\%UnixToolsInstall%"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" call "%ToolsPath%\download-file.bat" %UnixToolsUrl% "%EnvDownloadPath%\%UnixToolsInstall%"
if not exist "%EnvDownloadPath%\%UnixToolsInstall%" %cecho% error "Cannot download Unix Tools installation" & goto error
%cecho% info "Unpack Unix Tools"
@ -148,8 +104,12 @@ if not exist "%EnvToolsPath%\sed.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
)
if not exist "%EnvDownloadPath%\%NSISInstall%" call "%ToolsPath%\remove-dir.bat" "%NSISInstallPath%"
if not exist "%NSISInstallPath%\nsis.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
if exist "%NSISInstallPath%" call "%ToolsPath%\remove-dir.bat" "%NSISInstallPath%"
mkdir "%EnvTempPath%"
%cecho% info "Download NSIS installation"
@ -175,14 +135,45 @@ if not exist "%MinGitInstallPath%\cmd\git.exe" (
"%EnvSevenZipExe%" x -o"%MinGitInstallPath%" "%EnvDownloadPath%\%MinGitInstall%"
)
if not exist "%EnvToolsPath%\sigcheck.exe" (
%cecho% info "Download Sigcheck installation"
if not exist "%EnvDownloadPath%\%CMakeInstall%" call "%ToolsPath%\remove-dir.bat" "%CMakeInstallPath%"
if not exist "%CMakeInstallPath%\bin\cmake.exe" (
%cecho% info "Download CMake installation"
if not exist "%EnvDownloadPath%\%SigcheckInstall%" call "%ToolsPath%\download-file.bat" "%SigcheckUrl%" "%EnvDownloadPath%\%SigcheckInstall%"
if not exist "%EnvDownloadPath%\%SigcheckInstall%" %cecho% error "Cannot download Sigcheck installation" & goto error
if exist "%CMakeInstallPath%" call "%ToolsPath%\remove-dir.bat" "%CMakeInstallPath%"
%cecho% info "Unpack Sigcheck"
"%EnvSevenZipExe%" x -o"%EnvToolsPath%" "%EnvDownloadPath%\%SigcheckInstall%" sigcheck.exe
mkdir "%EnvTempPath%"
if not exist "%EnvDownloadPath%\%CMakeInstall%" call "%ToolsPath%\download-file.bat" "%CMakeUrl%" "%EnvDownloadPath%\%CMakeInstall%"
if not exist "%EnvDownloadPath%\%CMakeInstall%" %cecho% error "Cannot download CMake installation" & goto error
%cecho% info "Unpack CMake"
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%CMakeInstall%"
move "%EnvTempPath%\%CMakeVersion%" "%CMakeInstallPath%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
)
rem Tor
rem Get download link and filename from download page
mkdir "%EnvTempPath%"
call "%ToolsPath%\download-file.bat" "%TorDownloadIndexUrl%" "%EnvTempPath%\index.html"
if not exist "%EnvTempPath%\index.html" %cecho% error "Cannot download Tor installation" & goto error
for /F "tokens=1,2 delims= " %%A in ('%EnvSedExe% -r -n -e"s/.*href=\"^(.*^)^(tor-win32.*\.zip^)\".*/\2 \1\2/p" "%EnvTempPath%\index.html"') do set TorInstall=%%A& set TorDownloadUrl=%TorProjectUrl%%%B
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
if "%TorInstall%"=="" %cecho% error "Cannot download Tor installation" & goto error
if "%TorDownloadUrl%"=="" %cecho% error "Cannot download Tor installation" & goto error
if not exist "%EnvDownloadPath%\%TorInstall%" call "%ToolsPath%\remove-dir.bat" "%EnvTorPath%"
if not exist "%EnvTorPath%\Tor\tor.exe" (
%cecho% info "Download Tor installation"
if not exist "%EnvDownloadPath%\%TorInstall%" call "%ToolsPath%\download-file.bat" "%TorDownloadUrl%" "%EnvDownloadPath%\%TorInstall%"
if not exist "%EnvDownloadPath%\%TorInstall%" %cecho% error "Cannot download Tor installation" & goto error
%cecho% info "Unpack Tor"
"%EnvSevenZipExe%" x -o"%EnvTorPath%" "%EnvDownloadPath%\%TorInstall%"
)
:exit
@ -190,5 +181,6 @@ endlocal
exit /B 0
:error
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
endlocal
exit /B 1

View File

@ -1,15 +0,0 @@
@echo off
setlocal
set MSYSPath=%~dp0msys
if not exist "%MSYSPath%\bin\mingw-get.exe" echo MSYS is not installed& exit /B 0
echo Update MSYS
pushd "%MSYSPath%\bin"
mingw-get.exe update
mingw-get.exe upgrade
popd
exit /B %ERRORLEVEL%

View File

@ -0,0 +1,19 @@
@echo off
setlocal
if exist "%~dp0msys2\msys32" call :update 32
if exist "%~dp0msys2\msys64" call :update 64
goto :EOF
:update
set MSYSSH=%~dp0msys2\msys%~1\usr\bin\sh
echo Update MSYS2 %~1
"%MSYSSH%" -lc "pacman -Sy"
"%MSYSSH%" -lc "pacman --noconfirm -Su"
:exit
endlocal
goto :EOF

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instal·la ${APPNAME} i els components necessaris."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Pells"
!insertmacro LANG_STRING Section_Data_Desc "Instal·la pells."
!insertmacro LANG_STRING Section_Shortcuts "Icones d'accés directe"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installiert ${APPNAME} und die benötigten Komponenten."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installiert Tor."
!insertmacro LANG_STRING Section_Data "Skins"
!insertmacro LANG_STRING Section_Data_Desc "Skins installieren."
!insertmacro LANG_STRING Section_Shortcuts "Verknüpfungssymbole"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installs ${APPNAME} and required components."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Skins"
!insertmacro LANG_STRING Section_Data_Desc "Installs skins."
!insertmacro LANG_STRING Section_Shortcuts "Shortcut icons"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instala ${APPNAME} y los componentes requeridos."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Coberturas (skins)"
!insertmacro LANG_STRING Section_Data_Desc "Instalar coberturas"
!insertmacro LANG_STRING Section_Shortcuts "Iconos de accesos directos"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installe ${APPNAME} et les composants requis."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Habillages"
!insertmacro LANG_STRING Section_Data_Desc "Installe des habillages."
!insertmacro LANG_STRING Section_Shortcuts "Icônes de raccourci"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Instaluje ${APPNAME} oraz wymagane komponenty."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Skórki"
!insertmacro LANG_STRING Section_Data_Desc "Instaluje skórki."
!insertmacro LANG_STRING Section_Shortcuts "Ikony skrótów"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Установка ${APPNAME} и необходимых компонентов."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Оболочки"
!insertmacro LANG_STRING Section_Data_Desc "Установка оболочек."
!insertmacro LANG_STRING Section_Shortcuts "Ярлыки"

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "${APPNAME} ve gerekli bileşenleri kurar."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "Temalar"
!insertmacro LANG_STRING Section_Data_Desc "Tema yükleyin."
!insertmacro LANG_STRING Section_Shortcuts "Kısayol simgeleri"

View File

@ -8,6 +8,20 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Tor</name>
<message>
<source>Tor</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Tor_Desc</name>
<message>
<source>Installs Tor.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Section_Data</name>
<message>

View File

@ -1,5 +1,7 @@
!insertmacro LANG_STRING Section_Main "${APPNAME}"
!insertmacro LANG_STRING Section_Main_Desc "Installs ${APPNAME} and required components."
!insertmacro LANG_STRING Section_Tor "Tor"
!insertmacro LANG_STRING Section_Tor_Desc "Installs Tor."
!insertmacro LANG_STRING Section_Data "皮肤"
!insertmacro LANG_STRING Section_Data_Desc "安装皮肤"
!insertmacro LANG_STRING Section_Shortcuts "快捷方式图标"

View File

@ -22,6 +22,9 @@
!ifndef MINGWDIR
!error "MINGWDIR is not defined"
!endif
!ifndef ARCHITECTURE
!error "Architecture is not defined"
!endif
# Check optional defines
!ifdef OUTDIR
@ -53,7 +56,17 @@
!endif
# Date
!define /date Date "%Y%m%d"
!ifndef DATE
!define /date DATE "%Y%m%d"
!endif
# Tor
!ifdef TORDIR
${!defineifexist} TOR_EXISTS "${TORDIR}\tor.exe"
!ifndef TOR_EXISTS
!error "tor.exe not found"
!endif
!endif
# Application name and version
!define APPNAME "RetroShare"
@ -61,7 +74,12 @@
!define PUBLISHER "RetroShare Team"
# Install path
!define INSTDIR_NORMAL "$ProgramFiles\${APPNAME}"
!if ${ARCHITECTURE} == "x86"
!define INSTDIR_NORMAL "$ProgramFiles32\${APPNAME}"
!endif
!if ${ARCHITECTURE} == "x64"
!define INSTDIR_NORMAL "$ProgramFiles64\${APPNAME}"
!endif
!define INSTDIR_PORTABLE "$Desktop\${APPNAME}"
!define DATADIR_NORMAL "$APPDATA\${APPNAME}"
@ -70,7 +88,7 @@
# Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt-${QTVERSION}${INSTALLERADD}-setup.exe"
OutFile "${OUTDIR_}RetroShare-${VERSION}-${DATE}-${REVISION}-Qt-${QTVERSION}-${ARCHITECTURE}${INSTALLERADD}-setup.exe"
BrandingText "${APPNAMEANDVERSION}"
RequestExecutionlevel highest
# Use compression
@ -104,7 +122,7 @@ Var StyleSheetDir
!define MUI_FINISHPAGE_RUN "$INSTDIR\retroshare.exe"
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
;!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
;!define MUI_LANGDLL_REGISTRY_ROOT HKLM
@ -175,7 +193,7 @@ Section $(Section_Main) Section_Main
; Main binaries
SetOutPath "$INSTDIR"
File /oname=retroshare.exe "${RELEASEDIR}\retroshare-gui\src\release\retroshare.exe"
File /oname=retroshare-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\retroshare-nogui.exe"
File /oname=retroshare-service.exe "${RELEASEDIR}\retroshare-service\src\release\retroshare-service.exe"
; Qt binaries
File "${QTDIR}\bin\Qt5Core.dll"
@ -202,18 +220,33 @@ Section $(Section_Main) Section_Main
; MinGW binaries
SetOutPath "$INSTDIR"
File "${MINGWDIR}\bin\libstdc++-6.dll"
File "${MINGWDIR}\bin\libgcc_s_dw2-1.dll"
!if ${ARCHITECTURE} == "x86"
File "${MINGWDIR}\bin\libgcc_s_dw2-1.dll"
!endif
!if ${ARCHITECTURE} == "x64"
File "${MINGWDIR}\bin\libgcc_s_seh-1.dll"
!endif
File "${MINGWDIR}\bin\libwinpthread-1.dll"
; External binaries
File "${EXTERNAL_LIB_DIR}\bin\miniupnpc.dll"
File "${EXTERNAL_LIB_DIR}\bin\libeay32.dll"
File "${EXTERNAL_LIB_DIR}\bin\ssleay32.dll"
!if ${ARCHITECTURE} == "x86"
File "${EXTERNAL_LIB_DIR}\bin\libcrypto-1_1.dll"
File "${EXTERNAL_LIB_DIR}\bin\libssl-1_1.dll"
!endif
!if ${ARCHITECTURE} == "x64"
File "${EXTERNAL_LIB_DIR}\bin\libcrypto-1_1-x64.dll"
File "${EXTERNAL_LIB_DIR}\bin\libssl-1_1-x64.dll"
!endif
; Other files
File "${SOURCEDIR}\retroshare-gui\src\changelog.txt"
File "${RELEASEDIR}\changelog.txt"
File "${SOURCEDIR}\libbitdht\src\bitdht\bdboot.txt"
; License
SetOutPath "$INSTDIR\license"
File "${SOURCEDIR}\retroshare-gui\src\license\*.*"
; Image formats
SetOutPath "$INSTDIR\imageformats"
File /r "${QTDIR}\plugins\imageformats\qgif.dll"
@ -236,19 +269,26 @@ Section $(Section_Main) Section_Main
File /r "${QTDIR}\translations\qt_*.qm"
File /r "${QTDIR}\translations\qtbase_*.qm"
File /r "${QTDIR}\translations\qtscript_*.qm"
File /r "${QTDIR}\translations\qtquick1_*.qm"
File /r "${QTDIR}\translations\qtmultimedia_*.qm"
File /r "${QTDIR}\translations\qtxmlpatterns_*.qm"
; WebUI
SetOutPath "$INSTDIR\webui"
File /r "${SOURCEDIR}\libresapi\src\webui\*.*"
; SetOutPath "$INSTDIR\webui"
; File /r "${SOURCEDIR}\libresapi\src\webui\*.*"
; License
SetOutPath "$INSTDIR\license"
File /r "${SOURCEDIR}\retroshare-gui\src\license\*.*"
SectionEnd
# Tor
!ifdef TOR_EXISTS
Section /o $(Section_Tor) Section_Tor
SetOutPath "$INSTDIR"
File /r "${TORDIR}\*"
SectionEnd
!endif
# Plugins
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
@ -363,6 +403,7 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugin_VOIP} $(Section_Plugin_VOIP_Desc)
; !insertmacro MUI_DESCRIPTION_TEXT ${Section_Link} $(Section_Link_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_AutoStart} $(Section_AutoStart_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Tor} $(Section_Tor_Desc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
# Uninstall

View File

@ -1,27 +0,0 @@
:: Usage:
:: call qt-cmd.bat <Qt version> [command]
@echo off
setlocal
set QtVersion=%~1
:: Initialize environment
call "%~dp0env.bat"
if errorlevel 1 goto error_env
call "%EnvPath%\env-qt.bat" %QtVersion%
if errorlevel 1 goto error_env
if "%~2"=="" (
"%ComSpec%"
) else (
"%ComSpec%" /c %2 %3 %4 %5 %6 %7 %8 %9
)
exit /B %ERRORLEVEL%
:error_env
echo Failed to initialize environment.
endlocal
exit /B 1

View File

@ -1,46 +0,0 @@
:: Usage:
:: call download-file-wildcard.bat url file-wildcard download-path variable
if "%~4"=="" (
echo.
echo Parameter error.
exit /B 1
)
if "%EnvTempPath%"=="" (
echo.
echo Environment error.
exit /B 1
)
setlocal
set Url=%~1
set FileWildcard=%~2
set DownloadPath=%~3
set Var=%~4
set File=
call "%~dp0remove-dir.bat" "%EnvTempPath%"
mkdir "%EnvTempPath%"
"%EnvWgetExe%" --recursive --continue --no-directories --no-parent -A "%FileWildcard%" --directory-prefix="%EnvTempPath%" "%Url%"
if errorlevel 1 (
call "%~dp0remove-dir.bat" "%EnvTempPath%"
endlocal & set %Var%=
exit /B %ERRORLEVEL%
)
for %%A in (%EnvTempPath%\%FileWildcard%) do set File=%%~nxA
if "%File%"=="" (
call "%~dp0remove-dir.bat" "%EnvTempPath%"
endlocal & set %Var%=
exit /B %ERRORLEVEL%
)
move "%EnvTempPath%\%File%" "%DownloadPath%"
call "%~dp0remove-dir.bat" "%EnvTempPath%"
endlocal & set %Var%=%File%
exit /B 0

View File

@ -7,7 +7,6 @@ if "%~2"=="" (
exit /B 1
)
::"%EnvCurlExe%" -L -k "%~1" -o "%~2"
"%EnvWgetExe%" --no-check-certificate --continue "%~1" --output-document="%~2"
powershell -NoLogo -NoProfile -Command (New-Object System.Net.WebClient).DownloadFile(\""%~1\"", \""%~2\"")
exit /B %ERRORLEVEL%

View File

@ -0,0 +1,50 @@
@echo off
setlocal enabledelayedexpansion
if "%~2"=="" (
echo.
echo Parameter error.
echo Usage %~n0 sourcepath outputfile
exit /B 1
)
:: Check git executable
set GitPath=
call "%~dp0find-in-path.bat" GitPath git.exe
if "%GitPath%"=="" echo Git executable not found in PATH.& exit /B 1
set logfile=%~2
copy nul %logfile% > nul
pushd %~1
set last=HEAD
for /f %%t in ('git tag --sort=-taggerdate --merged ^| findstr v') do (
echo generating changelog for !last!..%%t
echo ----------------------------------------------- >> %logfile%
if !last! neq HEAD (
git tag -n !last! >> %logfile%
) else (
echo HEAD >> %logfile%
)
rem echo !last! ---^> %%t >> %logfile%
echo ----------------------------------------------- >> %logfile%
echo. >> %logfile%
git log %%t..!last! --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
echo. >> %logfile%
echo. >> %logfile%
set last=%%t
)
echo generating changelog for %last%
echo ----------------------------------------------- >> %logfile%
git tag -n %last% >> %logfile%
echo ----------------------------------------------- >> %logfile%
echo. >> %logfile%
git log %last% --no-merges "--pretty=format:%%h %%ai %%<(10,trunc)%%an %%s" >> %logfile%
popd
endlocal enabledelayedexpansion
exit /B 0

View File

@ -1,42 +1,37 @@
:: Usage:
:: call get-gcc-version.bat variable
:: call get-gcc-version.bat version architecture
setlocal
set Var=%~1
if "%Var%"=="" (
set VarVersion=%~1
if "%VarVersion%"=="" (
echo.
echo Parameter error.
exit /B 1
)
set VarArchitecture=%~2
if "%VarArchitecture%"=="" (
echo.
echo Parameter error.
exit /B 1
)
set GCCVersion=
set GCCArchitecture=
set _Architecture=
call "%~dp0find-in-path.bat" GCCPath gcc.exe
if "%GCCPath%"=="" (
echo.
echo Cannot find gcc.exe in PATH.
goto exit
exit /B 1
)
gcc --version >"%~dp0gccversion.tmp"
for /F "tokens=1*" %%A in (%~sdp0gccversion.tmp) do (
if "%%A"=="gcc" (
call :find_version %%B
goto exit
)
)
for /F "tokens=1-8* delims= " %%A in ('gcc --version') do if "%%A"=="gcc" set _Architecture=%%B& set GCCVersion=%%G
:exit
if exist "%~dp0gccversion.tmp" del /Q "%~dp0gccversion.tmp"
if "%_Architecture:~1,4%"=="i686" set GCCArchitecture=x86
if "%_Architecture:~1,6%"=="x86_64" set GCCArchitecture=x64
endlocal & set %Var%=%GCCVersion%
goto :EOF
:find_version
:loop
if "%2" NEQ "" (
shift
goto loop
)
set GCCVersion=%1
endlocal & set %VarVersion%=%GCCVersion%& set %VarArchitecture%=%GCCArchitecture%
exit /B 0

View File

@ -18,7 +18,7 @@ call "%~dp0find-in-path.bat" GitPath git.exe
if "%GitPath%"=="" (
echo.
echo Git executable not found in PATH.
goto exit
exit /B 1
)
set GitParameter=

View File

@ -16,19 +16,10 @@ call "%~dp0find-in-path.bat" QMakePath qmake.exe
if "%QMakePath%"=="" (
echo.
echo Cannot find qmake.exe in PATH.
goto exit
exit /B 1
)
qmake.exe -version >"%~dp0qtversion.tmp"
for /F "tokens=1,2,3,4" %%A in (%~sdp0qtversion.tmp) do (
if "%%A"=="Using" (
set QtVersion=%%D
goto exit
)
)
:exit
if exist "%~dp0qtversion.tmp" del /Q "%~dp0qtversion.tmp"
for /F "tokens=1,2,3,4 delims= " %%A in ('qmake.exe -version') do if "%%A"=="Using" set QtVersion=%%D
endlocal & set %Var%=%QtVersion%
exit /B 0

View File

@ -0,0 +1,32 @@
REM Usage:
REM call get-rs-date.bat SourcePath Variable
setlocal
set SourcePath=%~1
set Variable=%~2
if "%Variable%"=="" (
echo.
echo Parameter error
exit /B 1
)
:: Check git executable
set GitPath=
call "%~dp0find-in-path.bat" GitPath git.exe
if "%GitPath%"=="" (
echo.
echo Git executable not found in PATH.
exit /B 1
)
set Date=
pushd "%SourcePath%"
rem This doesn't work: git log -1 --date=format:"%Y%m%d" --format="%ad"
for /F "tokens=1,2,3* delims=-" %%A in ('git log -1 --date^=short --format^="%%ad"') do set Date=%%A%%B%%C
popd
:exit
endlocal & set %Variable%=%Date%
exit /B 0

View File

@ -27,7 +27,7 @@ set VersionMinor=
set VersionMini=
set VersionExtra=
for /F "tokens=1,2,3,* delims=.-" %%A in ('%EnvToolsPath%\sigcheck.exe -nobanner -n %Executable%') do (
for /F "USEBACKQ tokens=1,2,3,* delims=.-" %%A in (`powershell -NoLogo -NoProfile -Command ^(Get-Item "%Executable%"^).VersionInfo.FileVersion`) do (
set VersionMajor=%%A
set VersionMinor=%%B
set VersionMini=%%C

View File

@ -1,20 +0,0 @@
:: Usage:
:: call msys-path.bat path variable
setlocal
set WinPath=%~1
set MSYSVar=%~2
if "%MSYSVar%"=="" (
echo.
echo Parameter error.
exit /B 1
)
set MSYSPath=/%WinPath:~0,1%/%WinPath:~3%
set MSYSPath=%MSYSPath:\=/%
endlocal & set %MSYSVar%=%MSYSPath%
exit /B 0

View File

@ -0,0 +1,20 @@
:: Usage:
:: call msys2-path.bat path variable
setlocal
set WinPath=%~1
set MSYS2Var=%~2
if "%MSYS2Var%"=="" (
echo.
echo Parameter error.
exit /B 1
)
set MSYS2Path=/%WinPath:~0,1%/%WinPath:~3%
set MSYS2Path=%MSYS2Path:\=/%
endlocal & set %MSYS2Var%=%MSYS2Path%
exit /B 0

View File

@ -1,584 +0,0 @@
@if (@X) == (@Y) @end /* JScript comment
@echo off
rem :: the first argument is the script name as it will be used for proper help message
cscript //E:JScript //nologo "%~f0" "%~nx0" %*
exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
// used resources
// update 12.10.15
// osvikvi(https://github.com/osvikvi) has nodited that the -password option is not set , so this is fixed
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384058(v=vs.85).aspx
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384055(v=vs.85).aspx
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx
// global variables and constants
// ----------------------------------
// -- asynch requests not included --
// ----------------------------------
//todo - save responceStream instead of responceBody !!
//todo - set all winthttp options ->//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
//todo - log all options
//todo - improve help message . eventual verbose option
var ARGS = WScript.Arguments;
var scriptName = ARGS.Item(0);
var url = "";
var saveTo = "";
var user = 0;
var pass = 0;
var proxy = 0;
var bypass = 0;
var proxy_user = 0;
var proxy_pass = 0;
var certificate = 0;
var force = true;
var body = "";
//ActiveX objects
var WinHTTPObj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
var FileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
var AdoDBObj = new ActiveXObject("ADODB.Stream");
// HttpRequest SetCredentials flags.
var proxy_settings = 0;
//
HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0;
HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1;
//timeouts and their default values
var RESOLVE_TIMEOUT = 0;
var CONNECT_TIMEOUT = 90000;
var SEND_TIMEOUT = 90000;
var RECEIVE_TIMEOUT = 90000;
//HttpRequestMethod
var http_method = 'GET';
//header
var header_file = "";
//report
var reportfile = "";
//test-this:
var use_stream = false;
//autologon policy
var autologon_policy = 1; //0,1,2
//headers will be stored as multi-dimensional array
var headers = [];
//user-agent
var ua = "";
//escape URL
var escape = false;
function printHelp() {
WScript.Echo(scriptName + " - sends HTTP request and saves the request body as a file and/or a report of the sent request");
WScript.Echo(scriptName + " url [-force yes|no] [-user username -password password] [-proxy proxyserver:port] [-bypass bypass_list]");
WScript.Echo(" [-proxyuser proxy_username -proxypassword proxy_password] [-certificate certificateString]");
WScript.Echo(" [-method GET|POST|PATCH|DELETE|HEAD|OPTIONS|CONNECT]");
WScript.Echo(" [-saveTo file] - to print response to console use con");
WScript.Echo(" [-sendTimeout int(milliseconds)]");
WScript.Echo(" [-resolveTimeout int(milliseconds)]");
WScript.Echo(" [-connectTimeout int(milliseconds)]");
WScript.Echo(" [-receiveTimeout int(milliseconds)]");
WScript.Echo(" [-autologonPolicy 1|2|3]");
WScript.Echo(" [-proxySettings 1|2|3] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx)");
//header
WScript.Echo(" [-headers-file header_file]");
//reportfile
WScript.Echo(" [-reportfile reportfile]");
WScript.Echo(" [-ua user-agent]");
WScript.Echo(" [-ua-file user-agent-file]");
WScript.Echo(" [-escape yes|no]");
WScript.Echo(" [-body body-string]");
WScript.Echo(" [-body-file body-file]");
WScript.Echo("-force - decide to not or to overwrite if the local files exists");
WScript.Echo("proxyserver:port - the proxy server");
WScript.Echo("bypass- bypass list");
WScript.Echo("proxy_user , proxy_password - credentials for proxy server");
WScript.Echo("user , password - credentials for the server");
WScript.Echo("certificate - location of SSL certificate");
WScript.Echo("method - what HTTP method will be used.Default is GET");
WScript.Echo("saveTo - save the responce as binary file");
WScript.Echo(" ");
WScript.Echo("Header file should contain key:value pairs.Lines starting with \"#\" will be ignored.");
WScript.Echo("value should NOT be enclosed with quotes");
WScript.Echo(" ");
WScript.Echo("Examples:");
WScript.Echo(scriptName + " http://somelink.com/somefile.zip -saveTo c:\\somefile.zip -certificate \"LOCAL_MACHINE\\Personal\\My Middle-Tier Certificate\"");
WScript.Echo(scriptName + " http://somelink.com/something.html -method POST -certificate \"LOCAL_MACHINE\\Personal\\My Middle-Tier Certificate\" -header c:\\header_file -reportfile c:\\reportfile.txt");
WScript.Echo(scriptName + "\"http://somelink\" -method POST -header hdrs.txt -reportfile reportfile2.txt -saveTo responsefile2 -ua \"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\" -body-file some.json");
}
function parseArgs() {
//
if (ARGS.Length < 2) {
WScript.Echo("insufficient arguments");
printHelp();
WScript.Quit(43);
}
// !!!
url = ARGS.Item(1);
// !!!
if (ARGS.Length % 2 != 0) {
WScript.Echo("illegal arguments");
printHelp();
WScript.Quit(44);
}
for (var i = 2; i < ARGS.Length - 1; i = i + 2) {
var arg = ARGS.Item(i).toLowerCase();
var next = ARGS.Item(i + 1);
try {
switch (arg) { // the try-catch is set mainly because of the parseInts
case "-force":
if (next == "no") {
force = false;
}
break;
case "-escape":
if (next == "yes") {
escape = true;
}
break;
case "-saveto":
saveTo = next;
break;
case "-user":
case "-u":
user = next;
break;
case "-pass":
case "-password":
case "-p":
pass = next;
break;
case "-proxy":
proxy = next;
break;
case "-bypass":
bypass = next;
break;
case "-proxyuser":
case "-pu":
proxy_user = next;
break;
case "-proxypassword":
case "-pp":
proxy_pass = next;
break;
case "-ua":
ua = next;
break;
case "-ua-file":
ua = readFile(next);
break;
case "-body":
body = next;
break;
case "-usestream":
//WScript.Echo("~~");
if (next.toLowerCase() === "yes") {
use_stream = true
};
break;
case "-body-file":
body = readFile(next);
break;
case "-certificate":
certificate = next;
break;
case "-method":
switch (next.toLowerCase()) {
case "post":
http_method = 'POST';
break;
case "get":
http_method = 'GET';
break;
case "head":
http_method = 'HEAD';
break;
case "put":
http_method = 'PUT';
break;
case "options":
http_method = 'OPTIONS';
break;
case "connect":
http_method = 'CONNECT';
break;
case "patch":
http_method = 'PATCH';
break;
case "delete":
http_method = 'DELETE';
break;
default:
WScript.Echo("Invalid http method passed " + next);
WScript.Echo("possible values are GET,POST,DELETE,PUT,CONNECT,PATCH,HEAD,OPTIONS");
WScript.Quit(1326);
break;
}
break;
case "-headers-file":
case "-header":
headers = readPropFile(next);
break;
case "-reportfile":
reportfile = next;
break;
//timeouts
case "-sendtimeout":
SEND_TIMEOUT = parseInt(next);
break;
case "-connecttimeout":
CONNECT_TIMEOUT = parseint(next);
break;
case "-resolvetimeout":
RESOLVE_TIMEOUT = parseInt(next);
break;
case "-receivetimeout":
RECEIVE_TIMEOUT = parseInt(next);
break;
case "-autologonpolicy":
autologon_policy = parseInt(next);
if (autologon_policy > 2 || autologon_policy < 0) {
WScript.Echo("out of autologon policy range");
WScript.Quit(87);
};
break;
case "-proxysettings":
proxy_settings = parseInt(next);
if (proxy_settings > 2 || proxy_settings < 0) {
WScript.Echo("out of proxy settings range");
WScript.Quit(87);
};
break;
default:
WScript.Echo("Invalid command line switch: " + arg);
WScript.Quit(1405);
break;
}
} catch (err) {
WScript.Echo(err.message);
WScript.Quit(1348);
}
}
}
stripTrailingSlash = function(path) {
while (path.substr(path.length - 1, path.length) == '\\') {
path = path.substr(0, path.length - 1);
}
return path;
}
function existsItem(path) {
return FileSystemObj.FolderExists(path) || FileSystemObj.FileExists(path);
}
function deleteItem(path) {
if (FileSystemObj.FileExists(path)) {
FileSystemObj.DeleteFile(path);
return true;
} else if (FileSystemObj.FolderExists(path)) {
FileSystemObj.DeleteFolder(stripTrailingSlash(path));
return true;
} else {
return false;
}
}
//-------------------------------
//----------------------
//----------
//-----
//--
function request(url) {
try {
WinHTTPObj.Open(http_method, url, false);
if (proxy != 0 && bypass != 0) {
WinHTTPObj.SetProxy(proxy_settings, proxy, bypass);
}
if (proxy != 0) {
WinHTTPObj.SetProxy(proxy_settings, proxy);
}
if (user != 0 && pass != 0) {
WinHTTPObj.SetCredentials(user, pass, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER);
}
if (proxy_user != 0 && proxy_pass != 0) {
WinHTTPObj.SetCredentials(proxy_user, proxy_pass, HTTPREQUEST_SETCREDENTIALS_FOR_PROXY);
}
if (certificate != 0) {
WinHTTPObj.SetClientCertificate(certificate);
}
//set autologin policy
WinHTTPObj.SetAutoLogonPolicy(autologon_policy);
//set timeouts
WinHTTPObj.SetTimeouts(RESOLVE_TIMEOUT, CONNECT_TIMEOUT, SEND_TIMEOUT, RECEIVE_TIMEOUT);
if (headers.length !== 0) {
WScript.Echo("Sending with headers:");
for (var i = 0; i < headers.length; i++) {
WinHTTPObj.SetRequestHeader(headers[i][0], headers[i][1]);
WScript.Echo(headers[i][0] + ":" + headers[i][1]);
}
WScript.Echo("");
}
if (ua !== "") {
//user-agent option from:
//WinHttpRequestOption enumeration
// other options can be added like bellow
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
WinHTTPObj.Option(0) = ua;
}
if (escape) {
WinHTTPObj.Option(3) = true;
}
if (trim(body) === "") {
WinHTTPObj.Send();
} else {
WinHTTPObj.Send(body);
}
var status = WinHTTPObj.Status
} catch (err) {
WScript.Echo(err.message);
WScript.Quit(666);
}
////////////////////////
// report //
////////////////////////
if (reportfile != "") {
//var report_string="";
var n = "\r\n";
var report_string = "Status:" + n;
report_string = report_string + " " + WinHTTPObj.Status;
report_string = report_string + " " + WinHTTPObj.StatusText + n;
report_string = report_string + " " + n;
report_string = report_string + "Response:" + n;
report_string = report_string + WinHTTPObj.ResponseText + n;
report_string = report_string + " " + n;
report_string = report_string + "Headers:" + n;
report_string = report_string + WinHTTPObj.GetAllResponseHeaders() + n;
WinHttpRequestOption_UserAgentString = 0; // Name of the user agent
WinHttpRequestOption_URL = 1; // Current URL
WinHttpRequestOption_URLCodePage = 2; // Code page
WinHttpRequestOption_EscapePercentInURL = 3; // Convert percents
// in the URL
// rest of the options can be seen and eventually added using this as reference
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
report_string = report_string + "URL:" + n;
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_URL) + n;
report_string = report_string + "URL Code Page:" + n;
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_URLCodePage) + n;
report_string = report_string + "User Agent:" + n;
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_UserAgentString) + n;
report_string = report_string + "Escapped URL:" + n;
report_string = report_string + WinHTTPObj.Option(WinHttpRequestOption_EscapePercentInURL) + n;
prepareateFile(force, reportfile);
WScript.Echo("Writing report to " + reportfile);
writeFile(reportfile, report_string);
}
switch (status) {
case 200:
WScript.Echo("Status: 200 OK");
break;
default:
WScript.Echo("Status: " + status);
WScript.Echo("Status was not OK. More info -> https://en.wikipedia.org/wiki/List_of_HTTP_status_codes");
}
//if as binary
if (saveTo.toLowerCase() === "con") {
WScript.Echo(WinHTTPObj.ResponseText);
}
if (saveTo !== "" && saveTo.toLowerCase() !== "con") {
prepareateFile(force, saveTo);
try {
if (use_stream) {
writeBinFile(saveTo, WinHTTPObj.ResponseStream);
} else {
writeBinFile(saveTo, WinHTTPObj.ResponseBody);
}
} catch (err) {
WScript.Echo("Failed to save the file as binary.Attempt to save it as text");
AdoDBObj.Close();
prepareateFile(true, saveTo);
writeFile(saveTo, WinHTTPObj.ResponseText);
}
}
WScript.Quit(status);
}
//--
//-----
//----------
//----------------------
//-------------------------------
function prepareateFile(force, file) {
if (force && existsItem(file)) {
if (!deleteItem(file)) {
WScript.Echo("Unable to delete " + file);
WScript.Quit(8);
}
} else if (existsItem(file)) {
WScript.Echo("Item " + file + " already exist");
WScript.Quit(9);
}
}
function writeBinFile(fileName, data) {
AdoDBObj.Type = 1;
AdoDBObj.Open();
AdoDBObj.Position = 0;
AdoDBObj.Write(data);
AdoDBObj.SaveToFile(fileName, 2);
AdoDBObj.Close();
}
function writeFile(fileName, data) {
AdoDBObj.Type = 2;
AdoDBObj.CharSet = "iso-8859-1";
AdoDBObj.Open();
AdoDBObj.Position = 0;
AdoDBObj.WriteText(data);
AdoDBObj.SaveToFile(fileName, 2);
AdoDBObj.Close();
}
function readFile(fileName) {
//check existence
try {
if (!FileSystemObj.FileExists(fileName)) {
WScript.Echo("file " + fileName + " does not exist!");
WScript.Quit(13);
}
if (FileSystemObj.GetFile(fileName).Size === 0) {
return "";
}
var fileR = FileSystemObj.OpenTextFile(fileName, 1);
var content = fileR.ReadAll();
fileR.Close();
return content;
} catch (err) {
WScript.Echo("Error while reading file: " + fileName);
WScript.Echo(err.message);
WScript.Echo("Will return empty string");
return "";
}
}
function readPropFile(fileName) {
//check existence
resultArray = [];
if (!FileSystemObj.FileExists(fileName)) {
WScript.Echo("(headers)file " + fileName + " does not exist!");
WScript.Quit(15);
}
if (FileSystemObj.GetFile(fileName).Size === 0) {
return resultArray;
}
var fileR = FileSystemObj.OpenTextFile(fileName, 1);
var line = "";
var k = "";
var v = "";
var lineN = 0;
var index = 0;
try {
WScript.Echo("parsing headers form " + fileName + " property file ");
while (!fileR.AtEndOfStream) {
line = fileR.ReadLine();
lineN++;
index = line.indexOf(":");
if (line.indexOf("#") === 0 || trim(line) === "") {
continue;
}
if (index === -1 || index === line.length - 1 || index === 0) {
WScript.Echo("Invalid line " + lineN);
WScript.Quit(93);
}
k = trim(line.substring(0, index));
v = trim(line.substring(index + 1, line.length));
resultArray.push([k, v]);
}
fileR.Close();
return resultArray;
} catch (err) {
WScript.Echo("Error while reading headers file: " + fileName);
WScript.Echo(err.message);
WScript.Echo("Will return empty array");
return resultArray;
}
}
function trim(str) {
return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
function main() {
parseArgs();
request(url);
}
main();

View File

@ -285,12 +285,6 @@ int sleep(unsigned int sec)
}
#endif
int usleep(unsigned int usec)
{
Sleep(usec / 1000);
return 0;
}
/********************************** WINDOWS/UNIX SPECIFIC PART ******************/
#else // UNIX

View File

@ -159,7 +159,6 @@ int bdnet_w2u_errno(int error);
#ifndef __MINGW64_VERSION_MAJOR
int sleep(unsigned int sec);
#endif
int usleep(unsigned int usec);
#endif // END of WINDOWS defines.
/********************************** WINDOWS/UNIX SPECIFIC PART ******************/

View File

@ -219,7 +219,13 @@ bool DistributedChatService::checkSignature(RsChatLobbyBouncingObject *obj,const
// network pre-request key to allow message authentication.
mGixs->requestKey(obj->signature.keyId,peer_list,RsIdentityUsage(RS_SERVICE_TYPE_CHAT,RsIdentityUsage::CHAT_LOBBY_MSG_VALIDATION,RsGxsGroupId(),RsGxsMessageId(),obj->lobby_id));
mGixs->requestKey(obj->signature.keyId,peer_list,RsIdentityUsage(RsServiceType::CHAT,
RsIdentityUsage::CHAT_LOBBY_MSG_VALIDATION,
RsGxsGroupId(),
RsGxsMessageId(),
RsGxsMessageId(),
RsGxsMessageId(),
obj->lobby_id));
uint32_t size = RsChatSerialiser(RsSerializationFlags::SIGNATURE)
.size(dynamic_cast<RsItem*>(obj));
@ -238,7 +244,13 @@ bool DistributedChatService::checkSignature(RsChatLobbyBouncingObject *obj,const
}
uint32_t error_status ;
RsIdentityUsage use_info(RS_SERVICE_TYPE_CHAT,RsIdentityUsage::CHAT_LOBBY_MSG_VALIDATION,RsGxsGroupId(),RsGxsMessageId(),obj->lobby_id) ;
RsIdentityUsage use_info(RsServiceType::CHAT,
RsIdentityUsage::CHAT_LOBBY_MSG_VALIDATION,
RsGxsGroupId(),
RsGxsMessageId(),
RsGxsMessageId(),
RsGxsMessageId(),
obj->lobby_id) ;
if(!mGixs->validateData(memory,size,obj->signature,false,use_info,error_status))
{

View File

@ -450,7 +450,7 @@ void p3discovery2::recvIdentityList(const RsPeerId& pid,const std::list<RsGxsId>
std::cerr << "p3discovery2::recvIdentityList(): from peer " << pid << ": " << ids.size() << " identities" << std::endl;
#endif
RsIdentityUsage use_info(RS_SERVICE_TYPE_DISC,RsIdentityUsage::IDENTITY_DATA_UPDATE);
RsIdentityUsage use_info(RsServiceType::GOSSIP_DISCOVERY,RsIdentityUsage::IDENTITY_NEW_FROM_DISCOVERY);
for(auto it(ids.begin());it!=ids.end();++it)
{

View File

@ -2108,7 +2108,7 @@ bool p3GRouter::verifySignedDataItem(const RsGRouterAbstractMsgItem *item,const
if(!signature_serializer.serialise(const_cast<RsGRouterAbstractMsgItem*>(item),data,&data_size))
throw std::runtime_error("Cannot serialise signed data.");
RsIdentityUsage use(RS_SERVICE_TYPE_GROUTER,info);
RsIdentityUsage use(RsServiceType::GROUTER,info);
if(!mGixs->validateData( data, data_size, item->signature, true, use, error_status ))
{

View File

@ -502,6 +502,9 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c, int colOffset
RsGxsGrpMetaData* grpMeta ;
RsGxsGroupId grpId(tempId) ;
if(grpId.isNull()) // not in the DB!
return nullptr;
if(use_cache)
grpMeta = mGrpMetaDataCache.getOrCreateMeta(grpId);
else
@ -659,8 +662,10 @@ RsGxsMsgMetaData* RsDataService::locked_getMsgMeta(RetroCursor &c, int colOffset
std::string temp;
c.getString(mColMsgMeta_MsgId + colOffset, temp);
msg_id = RsGxsMessageId(temp);
// without these, a msg is meaningless
ok &= (!group_id.isNull()) && (!msg_id.isNull());
if(group_id.isNull() || msg_id.isNull())
return nullptr;
RsGxsMsgMetaData* msgMeta = nullptr;
@ -1432,7 +1437,7 @@ int RsDataService::retrieveGxsGrpMetaData(RsGxsGrpMetaTemporaryMap& grp)
RsGxsGrpMetaData *meta = mGrpMetaDataCache.getMeta(mit->first) ;
if(meta)
grp[mit->first] = meta;
mit->second = meta;
else
{
#ifdef RS_DATA_SERVICE_DEBUG_CACHE
@ -1446,7 +1451,7 @@ int RsDataService::retrieveGxsGrpMetaData(RsGxsGrpMetaTemporaryMap& grp)
RsGxsGrpMetaData* meta = locked_getGrpMeta(*c, 0,true);
if(meta)
grp[mit->first] = meta;
mit->second = meta;
#ifdef RS_DATA_SERVICE_DEBUG_TIME
++resultCount;

View File

@ -39,6 +39,14 @@ template<class ID, class MetaDataClass> class t_MetaDataCache
{
public:
t_MetaDataCache() : mCache_ContainsAllMetas(false) {}
virtual ~t_MetaDataCache()
{
for(auto it: mMetas)
delete it.second;
for(auto it: mOldCachedItems)
delete it.second;
}
bool isCacheUpToDate() const { return mCache_ContainsAllMetas ; }
void setCacheUpToDate(bool b) { mCache_ContainsAllMetas = b; }

View File

@ -512,7 +512,7 @@ int RsGenExchange::createGroupSignatures(RsTlvKeySignatureSet& signSet, RsTlvBin
if(GxsSecurity::getSignature((char*)grpData.bin_data, grpData.bin_len, authorKey, sign))
{
id_ret = SIGN_SUCCESS;
mGixs->timeStampKey(grpMeta.mAuthorId,RsIdentityUsage(mServType,RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_CREATION,grpMeta.mGroupId)) ;
mGixs->timeStampKey(grpMeta.mAuthorId,RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_CREATION,grpMeta.mGroupId)) ;
signSet.keySignSet[INDEX_AUTHEN_IDENTITY] = sign;
}
else
@ -680,7 +680,7 @@ int RsGenExchange::createMsgSignatures(RsTlvKeySignatureSet& signSet, RsTlvBinar
if(GxsSecurity::getSignature((char*)msgData.bin_data, msgData.bin_len, authorKey, sign))
{
id_ret = SIGN_SUCCESS;
mGixs->timeStampKey(msgMeta.mAuthorId,RsIdentityUsage(mServType,RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_CREATION,msgMeta.mGroupId,msgMeta.mMsgId)) ;
mGixs->timeStampKey(msgMeta.mAuthorId,RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_CREATION,msgMeta.mGroupId,msgMeta.mMsgId,msgMeta.mParentId,msgMeta.mThreadId)) ;
signSet.keySignSet[INDEX_AUTHEN_IDENTITY] = sign;
}
else
@ -905,7 +905,11 @@ int RsGenExchange::validateMsg(RsNxsMsg *msg, const uint32_t& grpFlag, const uin
{
RsTlvKeySignature sign = metaData.signSet.keySignSet[INDEX_AUTHEN_IDENTITY];
idValidate &= GxsSecurity::validateNxsMsg(*msg, sign, authorKey);
mGixs->timeStampKey(metaData.mAuthorId,RsIdentityUsage(mServType,RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId,metaData.mMsgId)) ;
mGixs->timeStampKey(metaData.mAuthorId,RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_VALIDATION,
metaData.mGroupId,
metaData.mMsgId,
metaData.mParentId,
metaData.mThreadId)) ;
}
else
{
@ -949,7 +953,12 @@ int RsGenExchange::validateMsg(RsNxsMsg *msg, const uint32_t& grpFlag, const uin
{
std::list<RsPeerId> peers;
peers.push_back(msg->PeerId());
mGixs->requestKey(metaData.mAuthorId, peers, RsIdentityUsage(serviceType(),RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId,metaData.mMsgId));
mGixs->requestKey(metaData.mAuthorId, peers, RsIdentityUsage((RsServiceType)serviceType(),
RsIdentityUsage::MESSAGE_AUTHOR_SIGNATURE_VALIDATION,
metaData.mGroupId,
metaData.mMsgId,
metaData.mParentId,
metaData.mThreadId));
#ifdef GEN_EXCH_DEBUG
std::cerr << ", Key missing. Retry later." << std::endl;
@ -1026,7 +1035,7 @@ int RsGenExchange::validateGrp(RsNxsGrp* grp)
#ifdef GEN_EXCH_DEBUG
std::cerr << " key ID validation result: " << idValidate << std::endl;
#endif
mGixs->timeStampKey(metaData.mAuthorId,RsIdentityUsage(mServType,RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId));
mGixs->timeStampKey(metaData.mAuthorId,RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId));
}
else
{
@ -1044,7 +1053,7 @@ int RsGenExchange::validateGrp(RsNxsGrp* grp)
#endif
std::list<RsPeerId> peers;
peers.push_back(grp->PeerId());
mGixs->requestKey(metaData.mAuthorId, peers,RsIdentityUsage(mServType,RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId));
mGixs->requestKey(metaData.mAuthorId, peers,RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::GROUP_AUTHOR_SIGNATURE_VALIDATION,metaData.mGroupId));
return VALIDATE_FAIL_TRY_LATER;
}
}
@ -3346,7 +3355,7 @@ bool RsGenExchange::updateValid(const RsGxsGrpMetaData& oldGrpMeta, const RsNxsG
// also check this is the latest published group
bool latest = newGrp.metaData->mPublishTs > oldGrpMeta.mPublishTs;
mGixs->timeStampKey(newGrp.metaData->mAuthorId, RsIdentityUsage(mServType,RsIdentityUsage::GROUP_ADMIN_SIGNATURE_CREATION, oldGrpMeta.mGroupId)) ;
mGixs->timeStampKey(newGrp.metaData->mAuthorId, RsIdentityUsage(RsServiceType(mServType),RsIdentityUsage::GROUP_ADMIN_SIGNATURE_CREATION, oldGrpMeta.mGroupId)) ;
return GxsSecurity::validateNxsGrp(newGrp, adminSign, keyMit->second) && latest;
}

View File

@ -1046,9 +1046,9 @@ bool RsGxsDataAccess::getMsgMetaDataList( const GxsMsgReq& msgIds, const RsTokRe
// Now loop once over message Metas and see if they have a parent. If yes, then mark the parent to be discarded.
for(uint32_t i=0;i<metaV.size();++i)
if(!metaV[i]->mParentId.isNull() && metaV[i]->mParentId != metaV[i]->mMsgId) // this one is a follow up
if(!metaV[i]->mOrigMsgId.isNull() && metaV[i]->mOrigMsgId != metaV[i]->mMsgId) // this one is a follow up
{
auto it = index_in_metaV.find(metaV[i]->mParentId);
auto it = index_in_metaV.find(metaV[i]->mOrigMsgId);
if(it != index_in_metaV.end())
keep[it->second] = false;
@ -1240,61 +1240,42 @@ bool RsGxsDataAccess::getMsgRelatedInfo(MsgRelatedInfoReq *req)
onlyThreadMsgs = true;
}
if (onlyAllVersions && onlyChildMsgs)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() ERROR Incompatible FLAGS (VERSIONS & PARENT)" << std::endl;
#endif
if(onlyAllVersions && onlyChildMsgs)
{
RS_ERR("Incompatible FLAGS (VERSIONS & PARENT)");
return false;
}
return false;
}
if(onlyAllVersions && onlyThreadMsgs)
{
RS_ERR("Incompatible FLAGS (VERSIONS & THREAD)");
return false;
}
if (onlyAllVersions && onlyThreadMsgs)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() ERROR Incompatible FLAGS (VERSIONS & THREAD)" << std::endl;
#endif
if((!onlyLatestMsgs) && onlyChildMsgs)
{
RS_ERR("Incompatible FLAGS (!LATEST & PARENT)");
return false;
}
return false;
}
if((!onlyLatestMsgs) && onlyThreadMsgs)
{
RS_ERR("Incompatible FLAGS (!LATEST & THREAD)");
return false;
}
if ((!onlyLatestMsgs) && onlyChildMsgs)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() ERROR Incompatible FLAGS (!LATEST & PARENT)" << std::endl;
#endif
if(onlyChildMsgs && onlyThreadMsgs)
{
RS_ERR("Incompatible FLAGS (PARENT & THREAD)");
return false;
}
return false;
}
if ((!onlyLatestMsgs) && onlyThreadMsgs)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() ERROR Incompatible FLAGS (!LATEST & THREAD)" << std::endl;
#endif
return false;
}
if (onlyChildMsgs && onlyThreadMsgs)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() ERROR Incompatible FLAGS (PARENT & THREAD)" << std::endl;
#endif
return false;
}
/* FALL BACK OPTION */
if ((!onlyLatestMsgs) && (!onlyAllVersions) && (!onlyChildMsgs) && (!onlyThreadMsgs))
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedList() FALLBACK -> NO FLAGS -> SIMPLY RETURN nothing" << std::endl;
#endif
return true;
}
if( (!onlyLatestMsgs) && (!onlyAllVersions) && (!onlyChildMsgs) &&
(!onlyThreadMsgs) )
{
RS_WARN("NO FLAGS -> SIMPLY RETURN nothing");
return true;
}
for(auto vit_msgIds(req->mMsgIds.begin()); vit_msgIds != req->mMsgIds.end(); ++vit_msgIds)
{
@ -1330,14 +1311,11 @@ bool RsGxsDataAccess::getMsgRelatedInfo(MsgRelatedInfoReq *req)
}
}
if(!origMeta)
{
#ifdef DATA_DEBUG
RsDbg() << "RsGxsDataAccess::getMsgRelatedInfo(): Cannot find meta of msgId (to relate to)!"
<< std::endl;
#endif
return false;
}
if(!origMeta)
{
RS_ERR("Cannot find meta of msgId: ", msgId, " to relate to");
return false;
}
const RsGxsMessageId& origMsgId = origMeta->mOrigMsgId;
std::map<RsGxsMessageId, const RsGxsMsgMetaData*>& metaMap = filterMap[grpId];

View File

@ -275,7 +275,7 @@
NXS_NET_DEBUG_9 gxs distant search
***/
#define NXS_NET_DEBUG_0 1
//#define NXS_NET_DEBUG_0 1
//#define NXS_NET_DEBUG_1 1
//#define NXS_NET_DEBUG_2 1
//#define NXS_NET_DEBUG_3 1
@ -324,8 +324,8 @@ static const uint32_t RS_NXS_ITEM_ENCRYPTION_STATUS_GXS_KEY_MISSING = 0x05 ;
|| defined(NXS_NET_DEBUG_8) || defined(NXS_NET_DEBUG_9)
static const RsPeerId peer_to_print = RsPeerId();//std::string("a97fef0e2dc82ddb19200fb30f9ac575")) ;
static const RsGxsGroupId group_id_to_print = RsGxsGroupId(std::string("66052380f5d1d0c5992e2b55dc402ce6")) ; // use this to allow to this group id only, or "" for all IDs
static const uint32_t service_to_print = RS_SERVICE_GXS_TYPE_GXSCIRCLE; // use this to allow to this service id only, or 0 for all services
static const RsGxsGroupId group_id_to_print = RsGxsGroupId();//std::string("66052380f5d1d0c5992e2b55dc402ce6")) ; // use this to allow to this group id only, or "" for all IDs
static const uint32_t service_to_print = RS_SERVICE_GXS_TYPE_GXSID; // use this to allow to this service id only, or 0 for all services
// warning. Numbers should be SERVICE IDS (see serialiser/rsserviceids.h. E.g. 0x0215 for forums)
class nullstream: public std::ostream {};
@ -593,32 +593,30 @@ void RsGxsNetService::syncWithPeers()
return;
}
std::set<RsPeerId>::iterator sit = peers.begin();
// for now just grps
for(auto sit = peers.begin(); sit != peers.end(); ++sit)
{
// for now just grps
for(; sit != peers.end(); ++sit)
{
const RsPeerId peerId = *sit;
const RsPeerId peerId = *sit;
ClientGrpMap::const_iterator cit = mClientGrpUpdateMap.find(peerId);
uint32_t updateTS = 0;
ClientGrpMap::const_iterator cit = mClientGrpUpdateMap.find(peerId);
uint32_t updateTS = 0;
if(cit != mClientGrpUpdateMap.end())
{
const RsGxsGrpUpdate *gui = &cit->second;
updateTS = gui->grpUpdateTS;
}
RsNxsSyncGrpReqItem *grp = new RsNxsSyncGrpReqItem(mServType);
grp->clear();
grp->PeerId(*sit);
grp->updateTS = updateTS;
if(cit != mClientGrpUpdateMap.end())
{
const RsGxsGrpUpdate *gui = &cit->second;
updateTS = gui->grpUpdateTS;
}
RsNxsSyncGrpReqItem *grp = new RsNxsSyncGrpReqItem(mServType);
grp->clear();
grp->PeerId(*sit);
grp->updateTS = updateTS;
#ifdef NXS_NET_DEBUG_5
GXSNETDEBUG_P_(*sit) << "Service "<< std::hex << ((mServiceInfo.mServiceType >> 8)& 0xffff) << std::dec << " sending global group TS of peer id: " << *sit << " ts=" << nice_time_stamp(time(NULL),updateTS) << " (secs ago) to himself" << std::endl;
GXSNETDEBUG_P_(*sit) << "Service "<< std::hex << ((mServiceInfo.mServiceType >> 8)& 0xffff) << std::dec << " sending global group TS of peer id: " << *sit << " ts=" << nice_time_stamp(time(NULL),updateTS) << " (secs ago) to himself" << std::endl;
#endif
generic_sendItem(grp);
}
generic_sendItem(grp);
}
if(!mAllowMsgSync)
return ;
@ -644,15 +642,13 @@ void RsGxsNetService::syncWithPeers()
}
}
sit = peers.begin();
// Synchronise group msg for groups which we're subscribed to
// For each peer and each group, we send to the peer the time stamp of the most
// recent modification the peer has sent. If the peer has more recent messages he will send them, because its latest
// modifications will be more recent. This ensures that we always compare timestamps all taken in the same
// computer (the peer's computer in this case)
for(; sit != peers.end(); ++sit)
for(auto sit = peers.begin(); sit != peers.end(); ++sit)
{
const RsPeerId& peerId = *sit;
@ -3183,7 +3179,8 @@ void RsGxsNetService::locked_genReqGrpTransaction(NxsTransaction* tr)
{
grpItemL.push_back(item);
grpMetaMap[item->grpId] = NULL;
}else
}
else
{
#ifdef NXS_NET_DEBUG_0
GXSNETDEBUG_PG(tr->mTransaction->PeerId(),item->grpId) << "RsGxsNetService::genReqGrpTransaction(): item failed to caste to RsNxsSyncMsgItem* " << std::endl;
@ -3226,7 +3223,7 @@ void RsGxsNetService::locked_genReqGrpTransaction(NxsTransaction* tr)
RsNxsSyncGrpItem*& grpSyncItem = *llit;
const RsGxsGroupId& grpId = grpSyncItem->grpId;
std::map<RsGxsGroupId, RsGxsGrpMetaData*>::const_iterator metaIter = grpMetaMap.find(grpId);
std::map<RsGxsGroupId, RsGxsGrpMetaData*>::const_iterator metaIter = grpMetaMap.find(grpId);
bool haveItem = false;
bool latestVersion = false;
@ -3237,19 +3234,21 @@ void RsGxsNetService::locked_genReqGrpTransaction(NxsTransaction* tr)
}
// FIXTESTS global variable rsReputations not available in unittests!
#warning csoler 2016-12-23: Update the code below to correctly send/recv dependign on reputation
if( !grpSyncItem->authorId.isNull() &&
mReputations->overallReputationLevel(grpSyncItem->authorId) ==
RsReputationLevel::LOCALLY_NEGATIVE )
if( mReputations->overallReputationLevel(RsGxsId(grpSyncItem->grpId)) == RsReputationLevel::LOCALLY_NEGATIVE )
{
#ifdef NXS_NET_DEBUG_0
GXSNETDEBUG_PG(tr->mTransaction->PeerId(),grpId) << " Identity " << grpSyncItem->authorId << " is banned. Not syncing group." << std::endl;
GXSNETDEBUG_PG(tr->mTransaction->PeerId(),grpId) << " Identity " << grpSyncItem->grpId << " is banned. Not GXS-syncing group." << std::endl;
#endif
continue ;
}
if( (mGrpAutoSync && !haveItem) || latestVersion)
{
#ifdef NXS_NET_DEBUG_0
GXSNETDEBUG_PG(tr->mTransaction->PeerId(),grpId) << " Identity " << grpId << " will be sync-ed using GXS. mGrpAutoSync:" << mGrpAutoSync << " haveItem:" << haveItem << " latest_version: " << latestVersion << std::endl;
#endif
addGroupItemToList(tr, grpId, transN, reqList);
}
}
if(!reqList.empty())

View File

@ -215,7 +215,8 @@ bool RsGxsIntegrityCheck::check()
rsReputations->overallReputationLevel(
grp->metaData->mAuthorId ) >
RsReputationLevel::LOCALLY_NEGATIVE )
used_gxs_ids.insert(std::make_pair(grp->metaData->mAuthorId, RsIdentityUsage(mGenExchangeClient->serviceType(), RsIdentityUsage::GROUP_AUTHOR_KEEP_ALIVE,grp->grpId)));
used_gxs_ids.insert(std::make_pair(grp->metaData->mAuthorId, RsIdentityUsage(RsServiceType(mGenExchangeClient->serviceType()),
RsIdentityUsage::GROUP_AUTHOR_KEEP_ALIVE,grp->grpId)));
}
}
}
@ -404,7 +405,12 @@ bool RsGxsIntegrityCheck::check()
rsReputations->overallReputationLevel(
msg->metaData->mAuthorId ) >
RsReputationLevel::LOCALLY_NEGATIVE )
used_gxs_ids.insert(std::make_pair(msg->metaData->mAuthorId,RsIdentityUsage(mGenExchangeClient->serviceType(),RsIdentityUsage::MESSAGE_AUTHOR_KEEP_ALIVE,msg->metaData->mGroupId,msg->metaData->mMsgId))) ;
used_gxs_ids.insert(std::make_pair(msg->metaData->mAuthorId,RsIdentityUsage(RsServiceType(mGenExchangeClient->serviceType()),
RsIdentityUsage::MESSAGE_AUTHOR_KEEP_ALIVE,
msg->metaData->mGroupId,
msg->metaData->mMsgId,
msg->metaData->mParentId,
msg->metaData->mThreadId))) ;
}
}

View File

@ -976,7 +976,7 @@ void p3GxsTunnelService::handleRecvDHPublicKey(RsGxsTunnelDHPublicKeyItem *item)
std::cerr << "(SS) Signature was verified and it doesn't check! This is a security issue!" << std::endl;
return ;
}
mGixs->timeStampKey(item->signature.keyId,RsIdentityUsage(RS_SERVICE_TYPE_GXS_TUNNEL,RsIdentityUsage::GXS_TUNNEL_DH_SIGNATURE_CHECK));
mGixs->timeStampKey(item->signature.keyId,RsIdentityUsage(RsServiceType::GXS_TUNNEL,RsIdentityUsage::GXS_TUNNEL_DH_SIGNATURE_CHECK));
#ifdef DEBUG_GXS_TUNNEL
std::cerr << " Signature checks! Sender's ID = " << senders_id << std::endl;

View File

@ -238,7 +238,7 @@ win32-x-g++ {
}
################################# Windows ##########################################
win32-g++ {
win32-g++|win32-clang-g++ {
QMAKE_CC = $${QMAKE_CXX}
OBJECTS_DIR = temp/obj
MOC_DIR = temp/moc
@ -852,23 +852,41 @@ rs_jsonapi {
no_rs_cross_compiling {
DUMMYRESTBEDINPUT = FORCE
CMAKE_GENERATOR_OVERRIDE=""
win32-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\""
win32-g++|win32-clang-g++ {
isEmpty(QMAKE_SH) {
CMAKE_GENERATOR_OVERRIDE="-G \"MinGW Makefiles\""
} else {
CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\""
}
}
genrestbedlib.name = Generating librestbed.
genrestbedlib.input = DUMMYRESTBEDINPUT
genrestbedlib.output = $$clean_path($${RESTBED_BUILD_PATH}/librestbed.a)
genrestbedlib.CONFIG += target_predeps combine
genrestbedlib.variable_out = PRE_TARGETDEPS
genrestbedlib.commands = \
cd $${RS_SRC_PATH} && ( \
git submodule update --init supportlibs/restbed ; \
cd $${RESTBED_SRC_PATH} ; \
git submodule update --init dependency/asio ; \
git submodule update --init dependency/catch ; \
git submodule update --init dependency/kashmir ; \
true ) && \
mkdir -p $${RESTBED_BUILD_PATH} && cd $${RESTBED_BUILD_PATH} && \
win32-g++:isEmpty(QMAKE_SH) {
genrestbedlib.commands = \
cd $$shell_path($${RS_SRC_PATH}) && git submodule update --init supportlibs/restbed || cd . $$escape_expand(\\n\\t) \
cd $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/asio || cd . $$escape_expand(\\n\\t) \
cd $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/catch || cd . $$escape_expand(\\n\\t )\
cd $$shell_path($${RESTBED_SRC_PATH}) && git submodule update --init dependency/kashmir || cd . $$escape_expand(\\n\\t) \
$(CHK_DIR_EXISTS) $$shell_path($$UDP_DISCOVERY_BUILD_PATH) $(MKDIR) $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) $$escape_expand(\\n\\t)
} else {
genrestbedlib.commands = \
cd $${RS_SRC_PATH} && ( \
git submodule update --init supportlibs/restbed ; \
cd $${RESTBED_SRC_PATH} ; \
git submodule update --init dependency/asio ; \
git submodule update --init dependency/catch ; \
git submodule update --init dependency/kashmir ; \
true ) && \
mkdir -p $${RESTBED_BUILD_PATH} &&
}
genrestbedlib.commands += \
cd $$shell_path($${RESTBED_BUILD_PATH}) && \
cmake \
-DCMAKE_CXX_COMPILER=$$QMAKE_CXX \
\"-DCMAKE_CXX_FLAGS=$${QMAKE_CXXFLAGS}\" \
$${CMAKE_GENERATOR_OVERRIDE} -DBUILD_SSL=OFF \
-DCMAKE_INSTALL_PREFIX=. -B. \
-H$$shell_path($${RESTBED_SRC_PATH}) && \
@ -881,7 +899,7 @@ rs_jsonapi {
genrestbedheader.output = $${RESTBED_HEADER_FILE}
genrestbedheader.CONFIG += target_predeps no_link
genrestbedheader.variable_out = HEADERS
genrestbedheader.commands = cd $${RESTBED_BUILD_PATH} && $(MAKE) install
genrestbedheader.commands = cd $$shell_path($${RESTBED_BUILD_PATH}) && $(MAKE) install
QMAKE_EXTRA_COMPILERS += genrestbedheader
}
@ -897,13 +915,19 @@ rs_jsonapi {
genjsonapi.clean = $${WRAPPERS_INCL_FILE} $${WRAPPERS_REG_FILE}
genjsonapi.CONFIG += target_predeps combine no_link
genjsonapi.variable_out = HEADERS
genjsonapi.commands = \
mkdir -p $${JSONAPI_GENERATOR_OUT} && \
cp $${DOXIGEN_CONFIG_SRC} $${DOXIGEN_CONFIG_OUT} && \
echo OUTPUT_DIRECTORY=$${JSONAPI_GENERATOR_OUT} >> $${DOXIGEN_CONFIG_OUT} && \
echo INPUT=$${DOXIGEN_INPUT_DIRECTORY} >> $${DOXIGEN_CONFIG_OUT} && \
doxygen $${DOXIGEN_CONFIG_OUT} && \
$${JSONAPI_GENERATOR_EXE} $${JSONAPI_GENERATOR_SRC} $${JSONAPI_GENERATOR_OUT};
win32-g++:isEmpty(QMAKE_SH) {
genjsonapi.commands = \
$(CHK_DIR_EXISTS) $$shell_path($$JSONAPI_GENERATOR_OUT) $(MKDIR) $$shell_path($${JSONAPI_GENERATOR_OUT}) $$escape_expand(\\n\\t)
} else {
genjsonapi.commands = \
mkdir -p $${JSONAPI_GENERATOR_OUT} && \
cp $${DOXIGEN_CONFIG_SRC} $${DOXIGEN_CONFIG_OUT} && \
echo OUTPUT_DIRECTORY=$${JSONAPI_GENERATOR_OUT} >> $${DOXIGEN_CONFIG_OUT} && \
echo INPUT=$${DOXIGEN_INPUT_DIRECTORY} >> $${DOXIGEN_CONFIG_OUT} && \
doxygen $${DOXIGEN_CONFIG_OUT} &&
}
genjsonapi.commands += \
$${JSONAPI_GENERATOR_EXE} $${JSONAPI_GENERATOR_SRC} $${JSONAPI_GENERATOR_OUT}
QMAKE_EXTRA_COMPILERS += genjsonapi
# Force recalculation of libretroshare dependencies see https://stackoverflow.com/a/47884045
@ -949,20 +973,34 @@ rs_broadcast_discovery {
no_rs_cross_compiling {
DUMMYQMAKECOMPILERINPUT = FORCE
CMAKE_GENERATOR_OVERRIDE=""
win32-g++:CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\""
win32-g++|win32-clang-g++ {
isEmpty(QMAKE_SH) {
CMAKE_GENERATOR_OVERRIDE="-G \"MinGW Makefiles\""
} else {
CMAKE_GENERATOR_OVERRIDE="-G \"MSYS Makefiles\""
}
}
udpdiscoverycpplib.name = Generating libudp-discovery.a.
udpdiscoverycpplib.input = DUMMYQMAKECOMPILERINPUT
udpdiscoverycpplib.output = $$clean_path($${UDP_DISCOVERY_BUILD_PATH}/libudp-discovery.a)
udpdiscoverycpplib.CONFIG += target_predeps combine
udpdiscoverycpplib.variable_out = PRE_TARGETDEPS
udpdiscoverycpplib.commands = \
cd $${RS_SRC_PATH} && ( \
git submodule update --init supportlibs/udp-discovery-cpp || \
true ) && \
mkdir -p $${UDP_DISCOVERY_BUILD_PATH} && \
cd $${UDP_DISCOVERY_BUILD_PATH} && \
win32-g++:isEmpty(QMAKE_SH) {
udpdiscoverycpplib.commands = \
cd $$shell_path($${RS_SRC_PATH}) && git submodule update --init supportlibs/udp-discovery-cpp || cd . $$escape_expand(\\n\\t) \
$(CHK_DIR_EXISTS) $$shell_path($$UDP_DISCOVERY_BUILD_PATH) $(MKDIR) $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) $$escape_expand(\\n\\t)
} else {
udpdiscoverycpplib.commands = \
cd $${RS_SRC_PATH} && ( \
git submodule update --init supportlibs/udp-discovery-cpp || \
true ) && \
mkdir -p $${UDP_DISCOVERY_BUILD_PATH} &&
}
udpdiscoverycpplib.commands += \
cd $$shell_path($${UDP_DISCOVERY_BUILD_PATH}) && \
cmake -DCMAKE_C_COMPILER=$$fixQmakeCC($$QMAKE_CC) \
-DCMAKE_CXX_COMPILER=$$QMAKE_CXX \
\"-DCMAKE_CXX_FLAGS=$${QMAKE_CXXFLAGS}\" \
$${CMAKE_GENERATOR_OVERRIDE} \
-DBUILD_EXAMPLE=OFF -DBUILD_TOOL=OFF \
-DCMAKE_INSTALL_PREFIX=. -B. \

View File

@ -4,7 +4,8 @@
* libretroshare: retroshare core library *
* *
* Copyright (C) 2012-2014 Robert Fernie <retroshare@lunamutt.com> *
* Copyright (C) 2018-2019 Gioacchino Mazzurco <gio@eigenlab.org> *
* Copyright (C) 2018-2020 Gioacchino Mazzurco <gio@eigenlab.org> *
* Copyright (C) 2019-2020 Asociación Civil Altermundi <info@altermundi.net> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
@ -25,6 +26,7 @@
#include <cstdint>
#include <string>
#include <list>
#include <system_error>
#include "retroshare/rstokenservice.h"
#include "retroshare/rsgxsifacehelper.h"
@ -353,6 +355,19 @@ public:
RsGxsGroupId& forumId = RS_DEFAULT_STORAGE_PARAM(RsGxsGroupId),
std::string& errMsg = RS_DEFAULT_STORAGE_PARAM(std::string) ) = 0;
/**
* @brief Get posts related to the given post.
* If the set is empty, nothing is returned.
* @jsonapi{development}
* @param[in] forumId id of the forum of which the content is requested
* @param[in] parentId id of the post of which child posts (aka replies)
* are requested.
* @param[out] childPosts storage for the child posts
* @return false if something failed, true otherwhise
*/
virtual std::error_condition getChildPosts(
const RsGxsGroupId& forumId, const RsGxsMessageId& parentId,
std::vector<RsGxsForumMsg>& childPosts ) = 0;
/**
* @brief Create forum. Blocking API.

Some files were not shown because too many files have changed in this diff Show More