Merge remote-tracking branch 'RetroShare/master' into pr_rsconfig

This commit is contained in:
sehraf 2020-10-04 20:25:06 +02:00
commit 26fdd79b50
No known key found for this signature in database
GPG Key ID: DF09F6EAE356B2C6
1146 changed files with 42987 additions and 27130 deletions

53
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,53 @@
image: docker:stable
services:
- docker:stable-dind
workflow:
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_BRANCH
build-and-test:
script:
- >
if [ -n "$CI_MERGE_REQUEST_ID" ]; then
REPO_ARGS="--build-arg REPO_URL=$CI_MERGE_REQUEST_SOURCE_PROJECT_URL" ;
REPO_ARGS="$REPO_ARGS --build-arg REPO_BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ;
else
REPO_ARGS="--build-arg REPO_URL=$CI_REPOSITORY_URL" ;
REPO_ARGS="$REPO_ARGS --build-arg REPO_BRANCH=$CI_COMMIT_BRANCH" ;
fi ;
export REPO_ARGS ;
echo REPO_ARGS=$REPO_ARGS ;
- mkdir Dockercontext
- >
docker build -t retroshare:testing $REPO_ARGS
--file $CI_PROJECT_DIR/build_scripts/GitlabCI/gitlabCI.Dockerfile
Dockercontext
- >
docker run --name retroshare --detach --tty retroshare:testing
retroshare-service --jsonApiPort 9092
- apk add jq
- >
docker exec retroshare
curl --verbose http://127.0.0.1:9092/rsJsonApi/version | jq
- >
docker exec retroshare
curl --verbose http://127.0.0.1:9092/rsLoginHelper/getLocations | jq
- >
docker exec retroshare
curl --verbose --data
'{ "location":{ "mLocationName":"Test 1", "mPgpName":"Test2" },
"password":"Test 3", "caller_data":"Test 5" }'
http://127.0.0.1:9092/rsLoginHelper/createLocation | jq
- >
docker exec retroshare
curl --verbose http://127.0.0.1:9092/rsLoginHelper/getLocations | jq
- >
docker exec retroshare
curl --verbose http://127.0.0.1:9092/rsLoginHelper/isLoggedIn | jq
- >
docker exec retroshare
curl --verbose http://127.0.0.1:9092/rsMsgs/getChatLobbyList | jq
- docker container stop retroshare

View File

@ -57,7 +57,7 @@ before_script:
- if [ $TRAVIS_OS_NAME == linux ]; then qmake; fi
- >
if [ $TRAVIS_OS_NAME == osx ]; then
qmake CONFIG+=rs_macos10.14
qmake CONFIG+=rs_macos10.14 CONFIG+=c++14
INCLUDEPATH+=$(find /usr/local/Cellar/miniupnpc/*/include | head -n 1)
QMAKE_LIBDIR+=$(find /usr/local/Cellar/miniupnpc/*/lib/ | head -n 1)
INCLUDEPATH+=$(find /usr/local/Cellar/openssl*/*/include/ | head -n 1)

1
COPYING Symbolic link
View File

@ -0,0 +1 @@
.reuse/dep5

View File

@ -5,51 +5,52 @@
RetroShare is a decentralized, private, secure, cross-platform, communication
toolkit.
RetroShare provides filesharing, chat, messages, forums, channels and more.
RetroShare provides file sharing, chat, messages, forums, channels and more.
.Build Status
|===============================================================================
|GNU/Linux, MacOS, (via travis-ci) | image:https://travis-ci.org/RetroShare/RetroShare.svg?branch=master[link="https://travis-ci.org/RetroShare/RetroShare"]
|Windows (via appveyor) | image:https://ci.appveyor.com/api/projects/status/github/RetroShare/RetroShare?svg=true[link="https://ci.appveyor.com/project/RetroShare58622/retroshare"]
|GNU/Linux (via Gitlab CI) | image:https://gitlab.com/RetroShare/RetroShare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/RetroShare/-/commits/master",title="pipeline status"]
|GNU/Linux, macOS, (via Travis CI) | image:https://travis-ci.org/RetroShare/RetroShare.svg?branch=master[link="https://travis-ci.org/RetroShare/RetroShare"]
|Windows (via AppVeyor) | image:https://ci.appveyor.com/api/projects/status/github/RetroShare/RetroShare?svg=true[link="https://ci.appveyor.com/project/RetroShare58622/retroshare"]
|===============================================================================
== Compilation
It is very difficult to keep a comprehensive (we support many platforms) and
updated documentation on how to build RetroShare, instead we provide scripts and
recipes that are used to create the packages for the supported platforms and
more in the `build_scripts` directory of this repository.
Short of comprehensive and updated documentation on how to build RetroShare
(for the many supported platforms it runs on), scripts and recipes are provided
in the aim of creating packages for the supported platforms (and more)
in the `build_scripts` directory of this repository.
Those packaging receipts together with the continuous integration files
`.travis.yml` and `appveyor.yml` are a good source of knowledge on how to
compile RetroShare on different platforms.
== Using RetroShare on a headless computer with WebUI
== Using RetroShare on a headless computer with web UI
WARNING: This section is outdated need to be adapted to new WebUI
WARNING: This section is outdated need to be adapted to the new web UI
The webUI needs to be enabled as a parameter option in retroshare-service:
The web UI needs to be enabled as a parameter option to the retroshare-service:
[source,bash]
--------
./retroshare-nogui --webinterface 9090 --docroot /usr/share/retroshare/webui/
--------
The webUI is only accessible on localhost:9090. It is advised to keep it that way so that your RS
The web UI is only accessible on localhost:9090. It is advised to keep it that way so that your RS
cannot be controlled using an untrusted connection.
To access your web UI from a distance, just open a SSH tunnel on it:
To access your web UI from a distance, just open a SSH tunnel to it:
[source,bash]
--------
distant_machine:~/ > ssh rs_host -L 9090:localhost:9090 -N
--------
"rs_host" is the machine running retroshare-nogui. Then on the distant machine, access your webUI on
"rs_host" is the machine running `retroshare-nogui`. Then on the distant machine, access your web UI on
http://localhost:9090
That also works with a retroshare GUI of course.
(This can also be done from the RetroShare GUI.)

View File

@ -19,7 +19,7 @@
# SPDX-FileCopyrightText: Retroshare Team <contact@retroshare.cc>
# SPDX-License-Identifier: LGPL-3.0-or-later
CONFIG += c++11
CONFIG += c++14
!include("retroshare.pri"): error("Could not include file retroshare.pri")

View File

@ -1,8 +1,8 @@
= RetroShare development on Android
// SPDX-FileCopyrightText: RetroShare Team <contact@retroshare.cc>
// SPDX-License-Identifier: CC-BY-SA-4.0
Compile Retroshare for Android
==============================
Compiling an application for Android is not as easy as one would imagine,
expecially one like RetroShare that has a big codebase and is not well
@ -179,7 +179,130 @@ Opening RetroShare android app now should show your old profile.
== Debugging with GDB
QtCreator actually support debugging only for the foreground activity, so to
If building RetroShare Android package seems tricky, setting up a functional
debugging environement for it feels like black magic. This section is meant to
help you doing it with less headache and hopefully in a reproducible way.
Unfortunately at the time of the last update to this guide, Qt build system
strips debugging symbols from the package and from the buildroot also if you
compile with debugging enabled. Fiddling with `qmake` configurations and
variables like `CONFIG+=debug`, `CONFIG+=force_debug_info` or `QMAKE_STRIP`
either as commandline arguments or inside retroshare `.pro` and `.pri` files is
uneffective. IMHO Qt should handle this on itself so it is probably worth
reporting a bug to them. So to workaround this problem you need to fiddle a bit
with the Android NDK. In my case I always keep +Debug+ or +Release+ suffix in
my build directory name depending on what kind of build it is, so I use this
information and modify `llvm-strip` in a way that it will strip only if stripped
file path doesn't contain +Debug+.
.Modify llvm-strip inside Android NDK
--------------------------------------------------------------------------------
## Set ANDROID_NDK_PATH to your Android NDK installation path
export ANDROID_NDK_PATH="/opt/android-ndk/"
## Define a convenience variable with llvm-strip path
export ANDROID_NDK_LLVM_STRIP="${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip"
## If not existing yer create a backup of the original llvm-strip
[ -f "${ANDROID_NDK_LLVM_STRIP}.back" ] ||
cp "${ANDROID_NDK_LLVM_STRIP}" "${ANDROID_NDK_LLVM_STRIP}.back"
## Create a new llvm-strip that does nothing if the argument path contains Debug
cat > "${ANDROID_NDK_LLVM_STRIP}" << LLVMSTRIPTRICK
#!/bin/bash
echo "\${2}" | grep -q Debug ||
"${ANDROID_NDK_LLVM_STRIP}.back" --strip-all "\${2}"
LLVMSTRIPTRICK
## Eventually you can revert back simply by running
# `mv "${ANDROID_NDK_LLVM_STRIP}.back" "${ANDROID_NDK_LLVM_STRIP}"`
--------------------------------------------------------------------------------
To attach to the `retroshare-service` running on Android you need also to pull a
debugging sysroot out of your device first, RetroShare sources provides an
helper script to do that.
.Prepare debugging sysroot with helper script
[source,bash]
--------------------------------------------------------------------------------
## Set RetroShare source path
export RS_SOURCE_DIR="${HOME}/Development/rs-develop"
## Optionally set your device ID first available will be used, you can run
## `adb devices` to list available devices.
#export ANDROID_SERIAL="YT013PSPGK"
## Optionally set a path where to save the debugging sysroot otherwise default
## is used.
#export DEBUG_SYSROOT="${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
## Run the helper script
${RS_SOURCE_DIR}/build_scripts/Android/pull_sysroot.sh
--------------------------------------------------------------------------------
.Prepare Android NDK GDB configurations
[source,bash]
--------------------------------------------------------------------------------
## Optionally set Qt version variable consistently with your installation
export QT_VERSION="5.12.7"
## Optionally set Qt architecture variable consistently with Android device
export QT_ARCH="arm64_v8a"
## Optionally set Qt path variable consistently with your installation
export QT_DIR="/opt/Qt-${QT_VERSION}/${QT_VERSION}/"
## Optionally set RetroShare buildroot path
export RS_BUILD_DIR="${HOME}/Builds/RetroShare-Android_for_${QT_ARCH}_Clang_Qt_${QT_VERSION//./_}_android_${QT_ARCH}-Debug/"
## Optionally set gdb config file path
export GDB_CONFIGS_FILE="${HOME}/Builds/gdb_configs_${QT_ARCH}"
## Generate Android NDK GDB configuration
${RS_SOURCE_DIR}/build_scripts/Android/generate_gdb_init_commands.sh
--------------------------------------------------------------------------------
You will need to run the following steps everytime you want to debug
`retroshare-service` on Android.
Make sure `retroshare-service` is running on your connected Android device.
.Run GDB server on your Android device from your host console
[source,bash]
--------------------------------------------------------------------------------
${RS_SOURCE_DIR}/build_scripts/Android/start_gdbserver.sh
--------------------------------------------------------------------------------
.Run Android NDK GDB on your workstation and attach
[source,bash]
--------------------------------------------------------------------------------
## Start NDK gdb
${ANDROID_NDK_PATH}/prebuilt/linux-x86_64/bin/gdb
## Instruct GDB how and where to find debugging symbols
(gdb) source $GDB_CONFIGS_FILE
## Connect to the gdbserver running on the phone
(gdb) target remote 127.0.01:5039
## Have fun debugging
(gdb)
--------------------------------------------------------------------------------
== Debugging with Qt Creator
WARNING: As of the last update to this guide, debugging retroshare-service
running on Android via Qt creator doesn't wrok even with all the trickery
explained in this section, you better learn how to debug with GDB reading
carefully previous section.
Qt Creator actually support debugging only for the foreground activity, so to
debug what's happening in the core extra trickery is needed.
- Run the App in Debug mode from QtCreator "Start Debugging" button
@ -239,6 +362,17 @@ TIP: Some time WiFi power saving on Android mess with the GDB connection,
to prevent that from appening open another +adb shell+ and live +ping+ toward
your work-station running
== Embedding into other Android packages
As showed by https://elrepo.io/[elRepo.io] developers it is possible and quite
easy to embed `retroshare-service` into other Android packages see description
https://gitlab.com/elRepo.io/elRepo.io-android/-/blob/master/README.adoc
And implementation details
https://gitlab.com/elRepo.io/elRepo.io-android/-/blob/master/android/app/build.gradle
== Furter Readings
@ -254,3 +388,12 @@ your work-station running
- link:https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html[]
- link:https://fragglet.livejournal.com/19646.html[]
- link:https://github.com/android-ndk/ndk/issues/773[How to build without using standalone toolchain?]
== License
Copyright (C) 2016-2020 Gioacchino Mazzurco <gio@eigenlab.org> +
Copyright (C) 2020 Asociación Civil Altermundi <info@altermundi.net> +
This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.
image::https://i.creativecommons.org/l/by-sa/4.0/88x31.png[Creative Commons License, link=http://creativecommons.org/licenses/by-sa/4.0/]

View File

@ -0,0 +1,85 @@
#!/bin/bash
# Script to prepare Android NDK GDB configurations to debug retroshare-service
#
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
# Copyright (C) 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 Affero General Public License as published by the
# Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>
## Define default value for variable, take two arguments, $1 variable name,
## $2 default variable value, if the variable is not already define define it
## with default value.
function define_default_value()
{
VAR_NAME="${1}"
DEFAULT_VALUE="${2}"
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
}
define_default_value QT_VERSION "5.12.4"
define_default_value QT_ARCH "arm64_v8a"
define_default_value QT_DIR "/opt/Qt-${QT_VERSION}/${QT_VERSION}/"
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
define_default_value RS_BUILD_DIR "${HOME}/Builds/RetroShare-Android_for_${QT_ARCH}_Clang_Qt_${QT_VERSION//./_}_android_${QT_ARCH}-Debug/"
define_default_value RS_SOURCE_DIR "${HOME}/Development/rs-develop/"
define_default_value DEBUG_SYSROOT "${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
define_default_value GDB_CONFIGS_FILE "${HOME}/Builds/gdb_configs_${QT_ARCH}"
scanDir()
{
find "$1" -type d -not -path '*/\.git/*' | tr '\n' ':' >> $GDB_CONFIGS_FILE
}
putSeparator()
{
echo >> $GDB_CONFIGS_FILE
echo >> $GDB_CONFIGS_FILE
}
echo "set sysroot ${DEBUG_SYSROOT}" > $GDB_CONFIGS_FILE
putSeparator
echo "set auto-solib-add on" >> $GDB_CONFIGS_FILE
echo -n "set solib-search-path " >> $GDB_CONFIGS_FILE
scanDir "${RS_BUILD_DIR}"
scanDir "${DEBUG_SYSROOT}"
scanDir "${QT_DIR}/android_${QT_ARCH}/lib/"
scanDir "${QT_DIR}/android_${QT_ARCH}/plugins/"
scanDir "${QT_DIR}/android_${QT_ARCH}/qml/"
putSeparator
echo -n "directory " >> $GDB_CONFIGS_FILE
scanDir ${RS_SOURCE_DIR}/jsonapi-generator/src
scanDir ${RS_SOURCE_DIR}/libbitdht/src
scanDir ${RS_SOURCE_DIR}/openpgpsdk/src
scanDir ${RS_SOURCE_DIR}/libretroshare/src
scanDir ${RS_SOURCE_DIR}/retroshare-service/src
scanDir ${RS_SOURCE_DIR}/supportlibs/rapidjson/include/
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/source/
scanDir ${RS_SOURCE_DIR}/supportlibs/udp-discovery-cpp/
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/dependency/asio/asio/include/
scanDir ${RS_SOURCE_DIR}/supportlibs/restbed/dependency/catch/include/
putSeparator
## see https://stackoverflow.com/questions/28972367/gdb-backtrace-without-stopping
echo "catch signal SIGSEGV" >> $GDB_CONFIGS_FILE
echo "commands
bt
continue
end" >> $GDB_CONFIGS_FILE
putSeparator
echo GDB_CONFIGS_FILE=$GDB_CONFIGS_FILE

View File

@ -2,7 +2,7 @@
# Script to prepare RetroShare Android package building toolchain
#
# Copyright (C) 2016-2019 Gioacchino Mazzurco <gio@eigenlab.org>
# Copyright (C) 2016-2020 Gioacchino Mazzurco <gio@eigenlab.org>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the

View File

@ -0,0 +1,90 @@
#!/bin/bash
# Script to pull debugging sysroot from Android devices
#
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
# Copyright (C) 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 Affero General Public License as published by the
# Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>
<<"ASCIIDOC"
Pull files from Android device to prepare a debugging sysroot
Inspired by:
https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html
The goal is to have a local copy of the sysroot of the connected device.
For that we use the command `adb pull <remote_dir_or_file> <local_dir_or_file>`
We will get a copy of:
- `/system/lib/`
- `/vendor/lib/`
- `libc.so`
- `libcutils.so`
As well as the binaries `linker` and `app_process`
IMPORTANT:
from one device to another, the remote file `app_process` can be a binary file
or a symlink to a binary file - which is NOT ok for us.
That's so we will try to pull every known possible variants of `app_process`,
e.g. `app_process32` or `app_process_init`
ASCIIDOC
## Define default value for variable, take two arguments, $1 variable name,
## $2 default variable value, if the variable is not already define define it
## with default value.
function define_default_value()
{
VAR_NAME="${1}"
DEFAULT_VALUE="${2}"
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${DEFAULT_VALUE}"
}
define_default_value ANDROID_SERIAL "$(adb devices | head -n 2 | tail -n 1 | awk '{print $1}')"
define_default_value DEBUG_SYSROOT "${HOME}/Builds/debug_sysroot/${ANDROID_SERIAL}/"
rm -rf "${DEBUG_SYSROOT}"
for mDir in "/system/lib/" "/vendor/lib/"; do
mkdir -p "${DEBUG_SYSROOT}/${mDir}"
# adb pull doesn't behave like rsync dirA/ dirB/ so avoid nesting the
# directory by deleting last one before copying
rmdir "${DEBUG_SYSROOT}/${mDir}"
adb pull "${mDir}" "${DEBUG_SYSROOT}/${mDir}"
done
# Retrieve the specific binaries - some of these adb commands will fail, since
# some files may not exist, but that's ok.
mkdir -p "${DEBUG_SYSROOT}/system/bin/"
for mBin in "/system/bin/linker" "/system/bin/app_process" \
"/system/bin/app_process_init" "/system/bin/app_process32" \
"/system/bin/app_process64" ; do
adb pull "${mBin}" "${DEBUG_SYSROOT}/${mBin}"
done
# Verify which variants of the specific binaries could be pulled
echo
echo "Found the following specific binaries:"
echo
ls -1 "${DEBUG_SYSROOT}/system/bin/"*
ls -1 "${DEBUG_SYSROOT}/system/lib/libc.so"*
ls -1 "${DEBUG_SYSROOT}/system/lib/libcutils.so"*
echo
echo DEBUG_SYSROOT="${DEBUG_SYSROOT}"

View File

@ -0,0 +1,116 @@
#!/bin/bash
# Script to start gdbserver on Android device and attach to retroshare-service
#
# Copyright (C) 2020 Gioacchino Mazzurco <gio@eigenlab.org>
# Copyright (C) 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 Affero General Public License as published by the
# Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>
<<"ASCIIDOC"
Start gdbserver on Android device and attach it to the retroshare service
process
Inspired by:
https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html
ASCIIDOC
## Define default value for variable, take two arguments, $1 variable name,
## $2 default variable value, if the variable is not already define define it
## with default value.
function define_default_value()
{
VAR_NAME="${1}"
DEFAULT_VALUE="${2}"
[ -z "${!VAR_NAME}" ] && export ${VAR_NAME}="${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_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 APK
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
{
for mUsualPath in \
"${ANDROID_INSTALL_PATH}/lib/libgdbserver.so" \
"${ANDROID_INSTALL_PATH}/lib/arm64/libgdbserver.so"
do
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 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_ushell find ${ANDROID_INSTALL_PATH} -type f -name 'libgdbserver.so' | \
tee "${tFile}"
LIB_GDB_SERVER_PATH="$(head -n 1 "${tFile}")"
rm "${tFile}"
}
[ -z "${LIB_GDB_SERVER_PATH}" ] &&
{
echo "Cannot find libgdbserver.so, are you sure your package ships it?"
exit -1
}
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?"
exit -2
}
## Establish port forwarding so we can connect to gdbserver with gdb
adb forward tcp:${GDB_SERVER_PORT} tcp:${GDB_SERVER_PORT}
((adb_ushell ${LIB_GDB_SERVER_PATH} 127.0.0.1:${GDB_SERVER_PORT} --attach ${mPid})&)

View File

@ -0,0 +1,43 @@
## Add +--build-arg FRESHCLONE=$(date +%s)+ to docker build commandline to
## force cloning a new
## To prepare an image suitable as base for Gitlab CI use
# docker build -t "${CI_REGISTRY_IMAGE}:base" --build-arg KEEP_SOURCE=true --build-arg REPO_DEPTH="" -f base.Dockerfile .
## Now you need to tag it so you can later push it
# docker tag ${ID_OF_THE_CREATED_IMAGE} registry.gitlab.com/retroshare/${CI_REGISTRY_IMAGE}:base
## To push it to gitlab CI registry you need first to login and the to push
# docker login registry.gitlab.com
# docker push registry.gitlab.com/retroshare/${CI_REGISTRY_IMAGE}:base
## To run the container
# docker run -it -p 127.0.0.1:9092:9092 "${CI_REGISTRY_IMAGE}:base" retroshare-service --jsonApiPort 9092 --jsonApiBindAddress 0.0.0.0
FROM ubuntu
ARG CACHEBUST=0
RUN \
apt-get update -y && apt-get upgrade -y && \
apt-get install -y build-essential libssl-dev libbz2-dev libsqlite3-dev \
libsqlcipher-dev libupnp-dev pkg-config libz-dev \
qt5-default libxapian-dev qttools5-dev doxygen rapidjson-dev \
git cmake curl
ARG FRESHCLONE=0
ARG REPO_URL=https://gitlab.com/RetroShare/RetroShare.git
ARG REPO_BRANCH=master
ARG REPO_DEPTH="--depth 2000"
ARG KEEP_SOURCE=false
RUN apt-get update -y && apt-get upgrade -y
RUN git clone $REPO_DEPTH $REPO_URL -b $REPO_BRANCH && cd RetroShare && \
git fetch --tags && cd ..
RUN \
mkdir RetroShare-build && cd RetroShare-build && \
qmake ../RetroShare \
CONFIG+=no_retroshare_plugins CONFIG+=ipv6 \
CONFIG+=retroshare_service CONFIG+=no_retroshare_gui \
CONFIG+=rs_jsonapi CONFIG+=rs_deep_search && \
(make -j$(nproc) || make -j$(nproc) || make) && make install && \
cd .. && rm -rf RetroShare-build && ($KEEP_SOURCE || rm -rf RetroShare)

View File

@ -0,0 +1,18 @@
FROM registry.gitlab.com/retroshare/retroshare:base
RUN apt-get update -y && apt-get upgrade -y
ARG REPO_URL=https://gitlab.com/RetroShare/RetroShare.git
ARG REPO_BRANCH=master
RUN \
cd RetroShare && git remote add testing $REPO_URL && \
git fetch --tags testing $REPO_BRANCH && \
git reset --hard testing/$REPO_BRANCH && \
git --no-pager log --max-count 1
RUN \
mkdir RetroShare-build && cd RetroShare-build && \
qmake ../RetroShare CONFIG+=no_retroshare_gui \
CONFIG+=retroshare_service \
CONFIG+=rs_jsonapi CONFIG+=rs_deep_search && \
(make -j$(nproc) || make -j$(nproc) || make) && make install && \
cd .. && rm -rf RetroShare-build

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

View File

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

View File

@ -8,7 +8,15 @@ Requirements: about 12 GB of free space
The resulting binary is a 32-bit build of Retroshare which will also work
fine on a 64-bit system.
### MSYS2 INSTALLATION
**If you want to make complet solution without debugging it, prefer to use \build_scripts\Windows-msys2\build.bat**
This batch will install and build all for you.
You only have to clone this repository (with [git for windows](https://gitforwindows.org/)) to a local folder, then start it in a terminal.
At the end, you'll get at ..\\*-msys2\deploy\ the Portable 7zip file.
### MSYS2 INSTALLATION (for editing or debugging)
Download MSYS2 from [MSYS2](http://www.msys2.org/). Get the i686 version
if you run a 32-bit Windows or the x86_64 if you run a 64-bit Windows.
@ -49,6 +57,12 @@ Install all needed dependencies:
pacman -S mingw32/mingw-w64-i686-cmake
pacman -S mingw-w64-i686-rapidjson
If you want to use QtCreator as IDE, prefer using this one publish by MSYS2 as all build Kit are already setted.
pacman -S mingw-w64-i686-qt-creator
*You can start it from MSYS2 terminal.*
We're done installing MSYS2, close the shell terminal.
### BUILDING RETROSHARE

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

@ -0,0 +1,35 @@
@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 base environment
call "%~dp0env-base.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
:: Initialize environment
call "%~dp0env.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
call "%~dp0..\tools\webui.bat"
:error
title %COMSPEC%
if errorlevel 1 echo.& echo Webui generation failed& echo.
exit /B %ERRORLEVEL%
: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
@ -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%-libmicrohttpd 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" %*
@ -52,9 +61,20 @@ set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=%RsBuildConfig%"
if "%ParamAutologin%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=rs_autologin"
if "%ParamPlugins%"=="1" set RS_QMAKE_CONFIG=%RS_QMAKE_CONFIG% "CONFIG+=retroshare_plugins"
:: Dump the active build config into a file
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.
@ -63,7 +83,13 @@ 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" (
call "%~dp0..\tools\webui.bat"
)
:error
popd

View File

@ -6,6 +6,11 @@ set ParamDebug=0
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
@ -25,6 +30,16 @@ if "%~1" NEQ "" (
set ParamPlugins=1
) else if "%%~a"=="tor" (
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 (
@ -55,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" (
@ -75,12 +96,19 @@ if "%ParamTor%"=="1" (
set RsType=
)
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]
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
@ -89,6 +117,12 @@ echo.
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,10 +16,11 @@ 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
if not exist "%~dp0env-mod.bat" goto no_mod
call "%~dp0env-mod.bat"

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\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,6 +17,16 @@ call "%~dp0env.bat" %*
if errorlevel 2 exit /B 2
if errorlevel 1 goto error_env
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%"
@ -24,7 +34,7 @@ if exist "%RsDeployPath%" rmdir /S /Q "%RsDeployPath%"
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
set GetRsVersion=%SourcePath%\build_scripts\Windows-msys2\tools\get-rs-version.bat
if not exist "%GetRsVersion%" (
%cecho% error "File not found"
echo %GetRsVersion%
@ -50,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%\
@ -69,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%"
@ -93,6 +95,7 @@ mkdir "%RsDeployPath%\qss"
mkdir "%RsDeployPath%\stylesheets"
mkdir "%RsDeployPath%\sounds"
mkdir "%RsDeployPath%\translations"
mkdir "%RsDeployPath%\license"
copy nul "%RsDeployPath%\portable" %Quite%
@ -100,16 +103,13 @@ 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-service\src\%RsBuildConfig%\retroshare*-service.exe" "%RsDeployPath%" %Quite%
copy "%RsBuildPath%\supportlibs\cmark\build\src\libcmark.dll" "%RsDeployPath%" %Quite%
echo copy extensions
for /D %%D in ("%RsBuildPath%\plugins\*") do (
call :copy_extension "%%D" "%RsDeployPath%\Data\%Extensions%"
call :copy_dependencies "%RsDeployPath%\Data\%Extensions%\%%~nxD.dll" "%RsDeployPath%"
)
echo copy dependencies
call :copy_dependencies "%RsDeployPath%\retroshare.exe" "%RsDeployPath%"
echo copy Qt DLL's
copy "%RsMinGWPath%\bin\Qt%QtMainVersion1%Svg%QtMainVersion2%.dll" "%RsDeployPath%" %Quite%
@ -121,14 +121,22 @@ 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%
)
copy "%QtSharePath%\plugins\imageformats\*.dll" "%RsDeployPath%\imageformats" %Quite%
del /Q "%RsDeployPath%\imageformats\*d?.dll" %Quite%
for %%D in ("%RsDeployPath%\imageformats\*.dll") do (
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%"
)
@ -144,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%
@ -158,18 +169,21 @@ 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"
if exist "%SourcePath%\libresapi\src\webui" (
echo copy webui
mkdir "%RsDeployPath%\webui"
xcopy /S "%SourcePath%\libresapi\src\webui" "%RsDeployPath%\webui" %Quite%
)
echo copy buildinfo.txt
copy "%RsBuildPath%\buildinfo.txt" "%RsDeployPath%" %Quite%
if "%ParamTor%"=="1" (
echo copy tor
echo n | copy /-y "%EnvDownloadPath%\tor\Tor\*.*" "%RsDeployPath%" %Quite%
if "%ParamWebui%"=="1" (
if exist "%RsWebuiPath%\webui" (
echo copy webui
mkdir "%RsDeployPath%\webui"
xcopy /S "%RsWebuiPath%\webui" "%RsDeployPath%\webui" %Quite%
) else (
%cecho% error "Webui is enabled, but no webui data found at %RsWebuiPath%\webui"
goto error
)
)
rem pack files
@ -204,14 +218,11 @@ if exist "%~1\%RsBuildConfig%\%~n1.dll" (
goto :EOF
:copy_dependencies
set CopyDependenciesCopiedSomething=0
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat list %1`) do (
for /F "usebackq" %%A in (`%ToolsPath%\depends.bat %1`) do (
if not exist "%~2\%%A" (
if exist "%RsMinGWPath%\bin\%%A" (
set CopyDependenciesCopiedSomething=1
copy "%RsMinGWPath%\bin\%%A" %2 %Quite%
)
)
)
if "%CopyDependenciesCopiedSomething%"=="1" goto copy_dependencies
goto :EOF

View File

@ -7,9 +7,7 @@ set EnvToolsPath=%EnvRootPath%\tools
set EnvTempPath=%EnvRootPath%\tmp
set EnvDownloadPath=%EnvRootPath%\download
set EnvWgetExe=%EnvToolsPath%\wget.exe
set EnvSevenZipExe=%EnvToolsPath%\7z.exe
set EnvDependsExe=%EnvToolsPath%\depends.exe
set EnvCEchoExe=%EnvToolsPath%\cecho.exe
set cecho=call "%ToolsPath%\cecho.bat"

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"

View File

@ -6,22 +6,6 @@ set CEchoUrl=https://github.com/lordmulder/cecho/releases/download/2015-10-10/ce
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 WgetUrl=https://eternallybored.org/misc/wget/1.19.4/32/wget.exe
set WgetInstall=wget.exe
set DependsUrl=http://www.dependencywalker.com/depends22_x86.zip
set DependsInstall=depends22_x86.zip
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%"
)
if not exist "%EnvToolsPath%\7z.exe" (
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
@ -56,32 +40,6 @@ if not exist "%EnvToolsPath%\cecho.exe" (
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%" %cecho% error "Cannot download Dependendy Walker installation" & goto error
%cecho% info "Unpack Dependency Walker"
"%EnvSevenZipExe%" x -o"%EnvTempPath%" "%EnvDownloadPath%\%DependsInstall%"
copy "%EnvTempPath%\*" "%EnvToolsPath%"
call "%ToolsPath%\remove-dir.bat" "%EnvTempPath%"
)
if not exist "%EnvToolsPath%\sigcheck.exe" (
%cecho% info "Download Sigcheck 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
%cecho% info "Unpack Sigcheck"
"%EnvSevenZipExe%" x -o"%EnvToolsPath%" "%EnvDownloadPath%\%SigcheckInstall%" sigcheck.exe
)
:exit
endlocal
exit /B 0

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,481 +1,445 @@
; Script generated with the Venis Install Wizard & modified by defnax
; Reworked by Thunder
!include ifexist.nsh
# Needed defines
;!define REVISION ""
;!define RELEASEDIR ""
;!define QTDIR ""
;!define MINGWDIR ""
# Optional defines
;!define OUTDIR ""
# Check needed defines
!ifndef RELEASEDIR
!error "RELEASEDIR is not defined"
!endif
!ifndef QTDIR
!error "QTDIR is not defined"
!endif
!ifndef MINGWDIR
!error "MINGWDIR is not defined"
!endif
# Check optional defines
!ifdef OUTDIR
!define OUTDIR_ "${OUTDIR}\"
!else
!define OUTDIR ""
!define OUTDIR_ ""
!endif
!ifndef INSTALLERADD
!define INSTALLERADD ""
!endif
# Source directory
!define SOURCEDIR "..\..\.."
# Get version from executable
!GetDllVersion "${RELEASEDIR}\retroshare-gui\src\release\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"
!endif
# Date
!define /date Date "%Y%m%d"
# 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}"
!define DATADIR_PORTABLE "$INSTDIR\Data"
# Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-Qt-${QTVERSION}${INSTALLERADD}-setup.exe"
BrandingText "${APPNAMEANDVERSION}"
RequestExecutionlevel highest
# Use compression
SetCompressor /SOLID LZMA
# Global variables
Var PortableMode
Var InstDirNormal
Var InstDirPortable
Var DataDir
Var StyleSheetDir
# Modern interface settings
!include Sections.nsh
!include nsDialogs.nsh
!include "MUI.nsh"
# Interface Settings
!define MUI_ABORTWARNING
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows\installer\HeaderImage.bmp"
;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp"
# MUI defines
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
!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_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
;!define MUI_LANGDLL_REGISTRY_ROOT HKLM
;!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
;!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage
# Defines the un-/installer logo of RetroShare
!insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
!insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
# Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(myLicenseData)"
Page Custom PortableModePageCreate PortableModePageLeave
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE dir_leave
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
# Set languages (first is default language)
!insertmacro MUI_RESERVEFILE_LANGDLL
# Installer languages
!define MUI_LANGDLL_ALLLANGUAGES
# Translations
!macro LANG_LOAD LANGUAGE LANGCODE LANGID LICENCEFILE
!insertmacro MUI_LANGUAGE "${LANGUAGE}"
; !verbose off
!define LANG "${LANGUAGE}"
!include "lang\${LANGCODE}.nsh"
LangString LANGUAGEID "${LANG_${LANG}}" "1031"
LicenseLangString myLicenseData ${LANGCODE} ${LICENCEFILE}
; !verbose on
!undef LANG
!macroend
!macro LANG_STRING NAME VALUE
LangString "${NAME}" "${LANG_${LANG}}" "${VALUE}"
!macroend
!insertmacro LANG_LOAD "English" "en" "1033" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "French" "fr" "1036" "${SOURCEDIR}\retroshare-gui\src\license\license-FR.txt"
!insertmacro LANG_LOAD "German" "de" "1031" "${SOURCEDIR}\retroshare-gui\src\license\license-GER.txt"
!insertmacro LANG_LOAD "Turkish" "tr" "1055" "${SOURCEDIR}\retroshare-gui\src\license\license-TR.txt"
!insertmacro LANG_LOAD "SimpChinese" "zh_CN" "2052" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Polish" "pl" "1045" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Spanish" "es" "1034" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Russian" "ru" "1049" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Catalan" "ca_ES" "1027" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
LicenseData $(myLicenseData)
# Main binaries
Section $(Section_Main) Section_Main
;Set Section required
SectionIn RO
; Set Section properties
SetOverwrite on
; 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\*.*"
SectionEnd
# Plugins
${!defineifexist} PLUGIN_FEEDREADER_EXISTS "${RELEASEDIR}\plugins\FeedReader\release\FeedReader.dll"
${!defineifexist} PLUGIN_VOIP_EXISTS "${RELEASEDIR}\plugins\VOIP\release\VOIP.dll"
!ifdef PLUGIN_FEEDREADER_EXISTS
!define /ifndef PLUGIN_EXISTS
!endif
!ifdef PLUGIN_VOIP_EXISTS
!define /ifndef PLUGIN_EXISTS
!endif
!ifdef PLUGIN_EXISTS
SectionGroup $(Section_Plugins) Section_Plugins
!ifdef PLUGIN_FEEDREADER_EXISTS
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
SetOutPath "$DataDir\extensions6"
File "${RELEASEDIR}\plugins\FeedReader\release\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"
SectionEnd
!endif
SectionGroupEnd
!endif
# Data (Styles)
Section $(Section_Data) Section_Data
; Set Section properties
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\*.*"
; Stylesheets
SetOutPath "$INSTDIR\qss"
File /r "${SOURCEDIR}\retroshare-gui\src\qss\*.*"
SectionEnd
;Section $(Section_Link) Section_Link
; Delete any existing keys
; Write the file association
; WriteRegStr HKCR .pqi "" retroshare
; WriteRegStr HKCR retroshare "" "PQI File"
; WriteRegBin HKCR retroshare EditFlags 00000100
; WriteRegStr HKCR "retroshare\shell" "" open
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\retroshare.exe" "%1"`
;SectionEnd
# Shortcuts
SectionGroup $(Section_Shortcuts) Section_Shortcuts
Section $(Section_StartMenu) Section_StartMenu
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(Link_Uninstall).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
Section $(Section_Desktop) Section_Desktop
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
Section $(Section_QuickLaunch) Section_QuickLaunch
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
SectionGroupEnd
Section $(Section_AutoStart) Section_AutoStart
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\retroshare.exe -m"
SectionEnd
;Section $(Section_AutoStart) Section_AutoStart
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe -m" 0
;SectionEnd
Section -FinishSection
${If} $PortableMode = 0
WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\retroshare.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
${Else}
; Create the file the application uses to detect portable mode
FileOpen $0 "$INSTDIR\portable" w
FileClose $0
${EndIf}
SectionEnd
# Descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Main} $(Section_Main_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Data} $(Section_Data_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Shortcuts} $(Section_Shortcuts_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_StartMenu} $(Section_StartMenu_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Desktop} $(Section_Desktop_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_QuickLaunch} $(Section_QuickLaunch_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugins} $(Section_Plugins_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugin_FeedReader} $(Section_Plugin_FeedReader_Desc)
!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_FUNCTION_DESCRIPTION_END
# Uninstall
Section "Uninstall"
; Remove file association registry keys
; DeleteRegKey HKCR .pqi
DeleteRegKey HKCR RetroShare
; Remove program/uninstall regsitry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
DeleteRegKey HKLM SOFTWARE\${APPNAME}
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare"
; Remove shortcuts, if any
Delete "$SMPROGRAMS\${APPNAME}\*.*"
; Remove desktop shortcut
Delete "$DESKTOP\${APPNAME}.lnk"
; Remove Quicklaunch shortcut
Delete "$QUICKLAUNCH\${APPNAME}.lnk"
; Remove Autstart
Delete "$SMSTARTUP\${APPNAME}.lnk"
; Remove directories used
RMDir "$SMPROGRAMS\${APPNAME}"
RMDir /r "$INSTDIR"
; Don't remove the directory, otherwise
; we lose the XPGP keys.
; Should make this an option though...
RMDir /r "${DATADIR_NORMAL}\extensions6"
RMDir /r "${DATADIR_NORMAL}\stylesheets"
SectionEnd
Function .onInit
StrCpy $InstDirNormal "${INSTDIR_NORMAL}"
StrCpy $InstDirPortable "${INSTDIR_PORTABLE}"
StrCpy $PortableMode 0
StrCpy $INSTDIR "$InstDirNormal"
StrCpy $DataDir "${DATADIR_NORMAL}"
InitPluginsDir
Push $R1
File /oname=$PLUGINSDIR\spltmp.bmp "${SOURCEDIR}\retroshare-gui\src\gui\images\logo\logo_splash.png"
advsplash::show 1200 1000 1000 -1 $PLUGINSDIR\spltmp
Pop $R1
Pop $R1
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
# Installation mode
Function RequireAdmin
UserInfo::GetAccountType
Pop $8
${If} $8 != "admin"
MessageBox MB_ICONSTOP "You need administrator rights to install ${APPNAME}"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Abort
${EndIf}
FunctionEnd
Function SetModeDestinationFromInstdir
${If} $PortableMode = 0
StrCpy $InstDirNormal $INSTDIR
${Else}
StrCpy $InstDirPortable $INSTDIR
${EndIf}
FunctionEnd
Function PortableModePageCreate
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page we will remember their mode specific directory
!insertmacro MUI_HEADER_TEXT $(Page_InstallMode) $(Page_InstallMode_Desc)
nsDialogs::Create 1018
Pop $0
${NSD_CreateRadioButton} 5u 25u -10u 8u $(Page_InstallMode_Standard)
Pop $1
${NSD_CreateLabel} 18u 40u -10u 24u $(Page_InstallMode_Standard_Desc)
Pop $0
${NSD_CreateRadioButton} 5u 75u -10u 8u $(Page_InstallMode_Portable)
Pop $2
${NSD_CreateLabel} 18u 90u -10u 24u $(Page_InstallMode_Portable_Desc)
Pop $0
${If} $PortableMode = 0
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
${Else}
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
${EndIf}
nsDialogs::Show
FunctionEnd
Function PortableModePageLeave
${NSD_GetState} $1 $0
${If} $0 <> ${BST_UNCHECKED}
StrCpy $PortableMode 0
StrCpy $INSTDIR $InstDirNormal
Call RequireAdmin
; Enable sections
SectionSetText ${Section_Shortcuts} $(Section_Shortcuts)
SectionSetText ${Section_StartMenu} $(Section_StartMenu)
SectionSetText ${Section_Desktop} $(Section_Desktop)
SectionSetText ${Section_QuickLaunch} $(Section_QuickLaunch)
SectionSetText ${Section_AutoStart} $(Section_AutoStart)
!insertmacro SelectSection ${Section_Shortcuts}
!insertmacro SelectSection ${Section_AutoStart}
!insertmacro SelectSection ${Section_StartMenu}
!insertmacro SelectSection ${Section_Desktop}
!insertmacro SelectSection ${Section_QuickLaunch}
${Else}
StrCpy $PortableMode 1
StrCpy $INSTDIR $InstDirPortable
; Disable sections
!insertmacro UnselectSection ${Section_Shortcuts}
!insertmacro UnselectSection ${Section_AutoStart}
!insertmacro UnselectSection ${Section_StartMenu}
!insertmacro UnselectSection ${Section_Desktop}
!insertmacro UnselectSection ${Section_QuickLaunch}
SectionSetText ${Section_Shortcuts} ""
SectionSetText ${Section_StartMenu} ""
SectionSetText ${Section_Desktop} ""
SectionSetText ${Section_QuickLaunch} ""
SectionSetText ${Section_AutoStart} ""
${EndIf}
FunctionEnd
Function dir_leave
${If} $PortableMode = 0
StrCpy $DataDir "${DATADIR_NORMAL}"
StrCpy $StyleSheetDir $DataDir
${Else}
StrCpy $DataDir "${DATADIR_PORTABLE}"
StrCpy $StyleSheetDir $INSTDIR
${EndIf}
FunctionEnd
; 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 DEPLOYDIR ""
;!define ARCHITECTURE ""
# Optional defines
;!define OUTDIR ""
;!define INSTALLERADD ""
# Check needed defines
!ifndef DEPLOYDIR
!error "DEPLOYDIR is not defined"
!endif
!ifndef ARCHITECTURE
!error "ARCHITECTURE is not defined"
!endif
# Check optional defines
!ifdef OUTDIR
!define OUTDIR_ "${OUTDIR}\"
!else
!define OUTDIR ""
!define OUTDIR_ ""
!endif
!ifndef INSTALLERADD
!define INSTALLERADD ""
!endif
# Source directory
!define SOURCEDIR "..\..\.."
# Get version from executable
!GetDllVersion "${DEPLOYDIR}\retroshare.exe" VERSION_
!define VERSION ${VERSION_1}.${VERSION_2}.${VERSION_3}
;!define REVISION ${VERSION_4}
# Check version
!ifndef REVISION
!error "REVISION is not defined"
!endif
# 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_PORTABLE "$Desktop\${APPNAME}"
!define DATADIR_NORMAL "$APPDATA\${APPNAME}"
!define DATADIR_PORTABLE "$INSTDIR\Data"
# Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "${OUTDIR_}RetroShare-${VERSION}-${Date}-${REVISION}-${ARCHITECTURE}${RSTYPE}${INSTALLERADD}-setup.exe"
BrandingText "${APPNAMEANDVERSION}"
RequestExecutionlevel highest
# Use compression
SetCompressor /SOLID LZMA
# Global variables
Var PortableMode
Var InstDirNormal
Var InstDirPortable
Var DataDir
Var StyleSheetDir
# Modern interface settings
!include Sections.nsh
!include nsDialogs.nsh
!include "MUI.nsh"
# Interface Settings
!define MUI_ABORTWARNING
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${SOURCEDIR}\build_scripts\Windows-msys2\installer\HeaderImage.bmp"
;!define MUI_WELCOMEFINISHPAGE_BITMAP "...bmp"
# MUI defines
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
!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_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
;!define MUI_LANGDLL_REGISTRY_ROOT HKLM
;!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
;!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage
# Defines the un-/installer logo of RetroShare
!insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp"
!insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp"
# Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(myLicenseData)"
Page Custom PortableModePageCreate PortableModePageLeave
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE dir_leave
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
# Set languages (first is default language)
!insertmacro MUI_RESERVEFILE_LANGDLL
# Installer languages
!define MUI_LANGDLL_ALLLANGUAGES
# Translations
!macro LANG_LOAD LANGUAGE LANGCODE LANGID LICENCEFILE
!insertmacro MUI_LANGUAGE "${LANGUAGE}"
; !verbose off
!define LANG "${LANGUAGE}"
!include "lang\${LANGCODE}.nsh"
LangString LANGUAGEID "${LANG_${LANG}}" "1031"
LicenseLangString myLicenseData ${LANGCODE} ${LICENCEFILE}
; !verbose on
!undef LANG
!macroend
!macro LANG_STRING NAME VALUE
LangString "${NAME}" "${LANG_${LANG}}" "${VALUE}"
!macroend
!insertmacro LANG_LOAD "English" "en" "1033" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "French" "fr" "1036" "${SOURCEDIR}\retroshare-gui\src\license\license-FR.txt"
!insertmacro LANG_LOAD "German" "de" "1031" "${SOURCEDIR}\retroshare-gui\src\license\license-GER.txt"
!insertmacro LANG_LOAD "Turkish" "tr" "1055" "${SOURCEDIR}\retroshare-gui\src\license\license-TR.txt"
!insertmacro LANG_LOAD "SimpChinese" "zh_CN" "2052" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Polish" "pl" "1045" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Spanish" "es" "1034" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Russian" "ru" "1049" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
!insertmacro LANG_LOAD "Catalan" "ca_ES" "1027" "${SOURCEDIR}\retroshare-gui\src\license\license.txt"
LicenseData $(myLicenseData)
# Main binaries
Section $(Section_Main) Section_Main
;Set Section required
SectionIn RO
; Set Section properties
SetOverwrite on
; Clears previous error logs
; Delete "$INSTDIR\*.log"
SetOutPath "$INSTDIR"
File /r /x Data /x stylesheets /x qss /x portable "${DEPLOYDIR}\*.*"
SectionEnd
# Plugins
${!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
!endif
!ifdef PLUGIN_VOIP_EXISTS
!define /ifndef PLUGIN_EXISTS
!endif
!ifdef PLUGIN_EXISTS
SectionGroup $(Section_Plugins) Section_Plugins
!ifdef PLUGIN_FEEDREADER_EXISTS
Section $(Section_Plugin_FeedReader) Section_Plugin_FeedReader
SetOutPath "$DataDir\extensions6"
File "${DEPLOYDIR}\Data\extensions6\FeedReader.dll"
SectionEnd
!endif
!ifdef PLUGIN_VOIP_EXISTS
Section $(Section_Plugin_VOIP) Section_Plugin_VOIP
SetOutPath "$DataDir\extensions6"
File "${DEPLOYDIR}\Data\extensions6\VOIP.dll"
SectionEnd
!endif
SectionGroupEnd
!endif
# Data (Styles)
Section $(Section_Data) Section_Data
; Set Section properties
SetOverwrite on
; Chat style
SetOutPath "$StyleSheetDir\stylesheets"
File /r "${DEPLOYDIR}\stylesheets\*.*"
; Stylesheets
SetOutPath "$INSTDIR\qss"
File /r "${DEPLOYDIR}\qss\*.*"
SectionEnd
;Section $(Section_Link) Section_Link
; Delete any existing keys
; Write the file association
; WriteRegStr HKCR .pqi "" retroshare
; WriteRegStr HKCR retroshare "" "PQI File"
; WriteRegBin HKCR retroshare EditFlags 00000100
; WriteRegStr HKCR "retroshare\shell" "" open
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\retroshare.exe" "%1"`
;SectionEnd
# Shortcuts
SectionGroup $(Section_Shortcuts) Section_Shortcuts
Section $(Section_StartMenu) Section_StartMenu
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(Link_Uninstall).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
Section $(Section_Desktop) Section_Desktop
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
Section $(Section_QuickLaunch) Section_QuickLaunch
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe" 0
SectionEnd
SectionGroupEnd
Section $(Section_AutoStart) Section_AutoStart
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\retroshare.exe -m"
SectionEnd
;Section $(Section_AutoStart) Section_AutoStart
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\retroshare.exe" "" "$INSTDIR\retroshare.exe -m" 0
;SectionEnd
Section -FinishSection
${If} $PortableMode = 0
WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\retroshare.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
${Else}
; Create the file the application uses to detect portable mode
FileOpen $0 "$INSTDIR\portable" w
FileClose $0
${EndIf}
SectionEnd
# Descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Main} $(Section_Main_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Data} $(Section_Data_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Shortcuts} $(Section_Shortcuts_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_StartMenu} $(Section_StartMenu_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Desktop} $(Section_Desktop_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_QuickLaunch} $(Section_QuickLaunch_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugins} $(Section_Plugins_Desc)
!insertmacro MUI_DESCRIPTION_TEXT ${Section_Plugin_FeedReader} $(Section_Plugin_FeedReader_Desc)
!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_FUNCTION_DESCRIPTION_END
# Uninstall
Section "Uninstall"
; Remove file association registry keys
; DeleteRegKey HKCR .pqi
DeleteRegKey HKCR RetroShare
; Remove program/uninstall regsitry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
DeleteRegKey HKLM SOFTWARE\${APPNAME}
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare"
; Remove shortcuts, if any
Delete "$SMPROGRAMS\${APPNAME}\*.*"
; Remove desktop shortcut
Delete "$DESKTOP\${APPNAME}.lnk"
; Remove Quicklaunch shortcut
Delete "$QUICKLAUNCH\${APPNAME}.lnk"
; Remove Autstart
Delete "$SMSTARTUP\${APPNAME}.lnk"
; Remove directories used
RMDir "$SMPROGRAMS\${APPNAME}"
RMDir /r "$INSTDIR"
; Don't remove the directory, otherwise
; we lose the XPGP keys.
; Should make this an option though...
RMDir /r "${DATADIR_NORMAL}\extensions6"
RMDir /r "${DATADIR_NORMAL}\stylesheets"
SectionEnd
Function .onInit
; 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
StrCpy $INSTDIR "$InstDirNormal"
StrCpy $DataDir "${DATADIR_NORMAL}"
InitPluginsDir
Push $R1
File /oname=$PLUGINSDIR\spltmp.bmp "${SOURCEDIR}\retroshare-gui\src\gui\images\logo\logo_splash.png"
advsplash::show 1200 1000 1000 -1 $PLUGINSDIR\spltmp
Pop $R1
Pop $R1
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
# Installation mode
Function RequireAdmin
UserInfo::GetAccountType
Pop $8
${If} $8 != "admin"
MessageBox MB_ICONSTOP "You need administrator rights to install ${APPNAME}"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Abort
${EndIf}
FunctionEnd
Function SetModeDestinationFromInstdir
${If} $PortableMode = 0
StrCpy $InstDirNormal $INSTDIR
${Else}
StrCpy $InstDirPortable $INSTDIR
${EndIf}
FunctionEnd
Function PortableModePageCreate
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page we will remember their mode specific directory
!insertmacro MUI_HEADER_TEXT $(Page_InstallMode) $(Page_InstallMode_Desc)
nsDialogs::Create 1018
Pop $0
${NSD_CreateRadioButton} 5u 25u -10u 8u $(Page_InstallMode_Standard)
Pop $1
${NSD_CreateLabel} 18u 40u -10u 24u $(Page_InstallMode_Standard_Desc)
Pop $0
${NSD_CreateRadioButton} 5u 75u -10u 8u $(Page_InstallMode_Portable)
Pop $2
${NSD_CreateLabel} 18u 90u -10u 24u $(Page_InstallMode_Portable_Desc)
Pop $0
${If} $PortableMode = 0
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
${Else}
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
${EndIf}
nsDialogs::Show
FunctionEnd
Function PortableModePageLeave
${NSD_GetState} $1 $0
${If} $0 <> ${BST_UNCHECKED}
StrCpy $PortableMode 0
StrCpy $INSTDIR $InstDirNormal
Call RequireAdmin
; Enable sections
SectionSetText ${Section_Shortcuts} $(Section_Shortcuts)
SectionSetText ${Section_StartMenu} $(Section_StartMenu)
SectionSetText ${Section_Desktop} $(Section_Desktop)
SectionSetText ${Section_QuickLaunch} $(Section_QuickLaunch)
SectionSetText ${Section_AutoStart} $(Section_AutoStart)
!insertmacro SelectSection ${Section_Shortcuts}
!insertmacro SelectSection ${Section_AutoStart}
!insertmacro SelectSection ${Section_StartMenu}
!insertmacro SelectSection ${Section_Desktop}
!insertmacro SelectSection ${Section_QuickLaunch}
${Else}
StrCpy $PortableMode 1
StrCpy $INSTDIR $InstDirPortable
; Disable sections
!insertmacro UnselectSection ${Section_Shortcuts}
!insertmacro UnselectSection ${Section_AutoStart}
!insertmacro UnselectSection ${Section_StartMenu}
!insertmacro UnselectSection ${Section_Desktop}
!insertmacro UnselectSection ${Section_QuickLaunch}
SectionSetText ${Section_Shortcuts} ""
SectionSetText ${Section_StartMenu} ""
SectionSetText ${Section_Desktop} ""
SectionSetText ${Section_QuickLaunch} ""
SectionSetText ${Section_AutoStart} ""
${EndIf}
FunctionEnd
Function dir_leave
${If} $PortableMode = 0
StrCpy $DataDir "${DATADIR_NORMAL}"
StrCpy $StyleSheetDir $DataDir
${Else}
StrCpy $DataDir "${DATADIR_PORTABLE}"
StrCpy $StyleSheetDir $INSTDIR
${EndIf}
FunctionEnd

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

@ -1,40 +1,22 @@
:: Usage:
:: call depends.bat [list^|missing] file
:: call depends.bat file
if "%2"=="" (
echo Usage: %~nx0 [list^|missing] File
if "%1"=="" (
echo Usage: %~nx0 File
exit /B 1
)
setlocal
pushd %~dp1
if not exist "%EnvDependsExe%" echo depends.exe not found in %EnvToolsPath%.& exit /B 1
%EnvMSYS2Cmd% "ntldd --recursive $0 | cut -f1 -d"=" | awk '{$1=$1};1'" %~nx1 > %~sdp0depends.tmp
set CutPath=
call "%ToolsPath%\find-in-path.bat" CutPath cut.exe
if "%CutPath%"=="" echo cut.exe not found in PATH.& exit /B 1
start /wait "" "%EnvDependsExe%" /c /oc:"%~dp0depends.tmp" %2
if "%1"=="missing" (
cut.exe --delimiter=, --fields=1,2 "%~dp0depends.tmp" >"%~dp0depends1.tmp"
for /F "tokens=1,2 delims=," %%A in (%~sdp0depends1.tmp) do (
if "%%A"=="?" (
echo %%~B
)
)
)
if "%1"=="list" (
cut.exe --delimiter=, --fields=2 "%~dp0depends.tmp" >"%~dp0depends1.tmp"
for /F "tokens=1 delims=," %%A in (%~sdp0depends1.tmp) do (
if "%%A" NEQ "Module" (
echo %%~A
)
)
for /F %%A in (%~sdp0depends.tmp) do (
echo %%~A
)
if exist "%~dp0depends.tmp" del /Q "%~dp0depends.tmp"
if exist "%~dp0depends1.tmp" del /Q "%~dp0depends1.tmp"
popd
endlocal
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

@ -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

@ -0,0 +1,22 @@
setlocal
echo.
echo === webui
echo.
title Build webui
if not exist "%RsWebuiPath%" (
echo Checking out webui source into %RsWebuiPath%
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%
)
pushd "%RsWebuiPath%\webui-src\make-src"
%EnvMSYS2Cmd% "sh build.sh"
popd
endlocal

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();

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

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