Index: ext/gmock/gmock.vc140.vcxproj
===================================================================
diff -u -rd6c3523b8a96c26c0c448dc35964d172661e9be5 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- ext/gmock/gmock.vc140.vcxproj	(.../gmock.vc140.vcxproj)	(revision d6c3523b8a96c26c0c448dc35964d172661e9be5)
+++ ext/gmock/gmock.vc140.vcxproj	(.../gmock.vc140.vcxproj)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -43,46 +43,46 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Index: ext/sqlite3/sqlite3.vc140.vcxproj
===================================================================
diff -u -rd6c3523b8a96c26c0c448dc35964d172661e9be5 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- ext/sqlite3/sqlite3.vc140.vcxproj	(.../sqlite3.vc140.vcxproj)	(revision d6c3523b8a96c26c0c448dc35964d172661e9be5)
+++ ext/sqlite3/sqlite3.vc140.vcxproj	(.../sqlite3.vc140.vcxproj)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -43,46 +43,46 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
Index: scripts2015/config.bat
===================================================================
diff -u
--- scripts2015/config.bat	(revision 0)
+++ scripts2015/config.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,53 @@
+@echo off
+SET ReposCH=https://svn.copyhandler.com/svn/copyhandler
+SET ReposIcpf=https://svn.copyhandler.com/svn/libicpf
+SET ReposIctranslate=https://svn.copyhandler.com/svn/libictranslate
+
+SET CurrentDir=%CD%
+SET ScriptDir=%CurrentDir%
+SET CHRootDir=%CurrentDir%\..
+SET OutputDir=%CurrentDir%\out
+SET TmpDir=%CurrentDir%\tmp
+
+SET VSInstallDirX64=%ProgramFiles%\Microsoft Visual Studio 14.0
+SET ProgramFilesX86=%ProgramFiles%
+
+SET LC_MESSAGES=en_EN
+
+rem NOTE: Strange construct here because of strange behaviour of %ProgramFiles(x86)% which loses last parenthesis otherwise
+if "%ProgramFiles(x86)%" == "" SET VSInstallDirX86=%ProgramFiles%\Microsoft Visual Studio 14.0
+if NOT "%ProgramFiles(x86)%" == "" SET VSInstallDirX86=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0
+if NOT "%ProgramFiles(x86)%" == "" SET ProgramFilesX86=%ProgramFiles(x86)%
+
+if not exist "%ScriptDir%\config.bat" (
+	echo ERROR: This script needs to be called from its directory.
+	exit /b 1
+)
+
+rem Detect 7-zip location
+SET SEVENZIPEXE=
+for %%X in (7z.exe) do (set SEVENZIPEXE=%%~$PATH:X)
+if "%SEVENZIPEXE%" == "" set SEVENZIPEXE=%ProgramFiles%\7-Zip\7z.exe
+if not exist "%SEVENZIPEXE%" (
+	echo 7-zip executable is not in the PATH nor at its default location. Please install 7-zip.
+	exit /b 1
+)
+
+rem Detect inno setup compiler
+SET ISCCEXE=
+for %%X in (iscc.exe) do (set ISCCEXE=%%~$PATH:X)
+if "%ISCCEXE%" == "" set ISCCEXE=%ProgramFilesX86%\Inno Setup 5\iscc.exe
+if not exist "%ISCCEXE%" (
+	echo Inno setup compiler executable is not in the PATH nor at its default location. Please install Inno Setup.
+	exit /b 1
+)
+
+SET SVNINDEXCMD=
+for %%X in (svnindex.cmd) do (set SVNINDEXCMD=%%~$PATH:X)
+if "%SVNINDEXCMD%" == "" set SVNINDEXCMD=%ProgramFiles%\Windows Kits\8.1\Debuggers\x64\srcsrv\svnindex.cmd
+if not exist "%SVNINDEXCMD%" (
+	echo svnindex.cmd not found in PATH environment variable nor in its default location. Please install Debugging tools for Windows.
+	exit /b 1
+)
+
+exit /b 0
Index: scripts2015/internal/clear_env.bat
===================================================================
diff -u
--- scripts2015/internal/clear_env.bat	(revision 0)
+++ scripts2015/internal/clear_env.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,60 @@
+@echo off
+
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+rem Setup environment
+if exist "%TmpDir%" (
+	echo       * Removing temporary directory...
+
+	cd "%TmpDir%\.."
+
+	rmdir /S /Q "%TmpDir%" >nul
+	if exist "%TmpDir%" (
+		rem Wait for a while for system to delete the files
+		timeout 2 /NOBREAK >nul
+	)
+	if exist "%TmpDir%" (
+		echo ERROR: Deleting the old temporary folder failed.
+		exit /b 1
+	)
+)
+
+if NOT "%1" == "/skip_create" (
+	if exist "%OutputDir%" (
+		echo       * Removing OutputDirectory...
+		rmdir /S /Q "%OutputDir%" >nul
+		if exist "%OutputDir%" (
+			echo ERROR: Deleting the old output folder failed.
+			exit /b 1
+		)
+	)
+
+	mkdir "%TmpDir%"
+	if not exist "%TmpDir%" (
+		echo ERROR: Creating temporary folder failed.
+		exit /b 1
+	)
+
+	mkdir "%OutputDir%"
+	if not exist "%OutputDir%" (
+		echo ERROR: Creating temporary folder failed.
+		exit /b 1
+	)
+
+	mkdir "%TmpDir%\32bit"
+	if not exist "%TmpDir%\32bit" (
+		echo ERROR: Creating temporary 32bit folder failed.
+		goto error
+	)
+
+	mkdir "%TmpDir%\64bit"
+	if not exist "%TmpDir%\64bit" (
+		echo ERROR: Creating temporary 64bit folder failed.
+		goto error
+	)
+)
+
+exit /b 0
Index: scripts2015/internal/detect_incorrect_manifest.bat
===================================================================
diff -u
--- scripts2015/internal/detect_incorrect_manifest.bat	(revision 0)
+++ scripts2015/internal/detect_incorrect_manifest.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,69 @@
+@echo off
+
+setlocal ENABLEDELAYEDEXPANSION
+
+rem Validate input parameters
+if [%1] == [] (
+	echo Usage: detect_incorrect_manifest.bat path_to_exe_dll_file
+	goto end
+)
+
+rem initialize
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+call internal\prepare_env.bat
+if errorlevel 1 (
+	goto error
+)
+
+if not exist "%VS120COMNTOOLS%\vsvars32.bat" (
+	echo ERROR: Can't find the vsvars32.bat file.
+	goto error
+) else (
+	call "%VS120COMNTOOLS%\vsvars32.bat" >nul
+)
+
+rem process input path
+SET InputFile=%~1
+SET TmpManifestLocation=%TmpDir%\extracted.manifest
+
+rem dll or exe?
+if NOT "%InputFile%" == "!InputFile:.dll=dummy!" (
+	rem this is a dll
+	SET ResID=2
+) else if NOT "%InputFile%" == "!InputFile:.exe=dummy!" (
+	rem exe file
+	SET ResID=1
+) else (
+	echo ERROR: Unknown file type encountered.
+	goto error
+)
+
+mt.exe -nologo -inputresource:"%InputFile%";#%ResID% -out:"%TmpManifestLocation%"
+if errorlevel 1 (
+	echo ERROR: cannot extract manifest from file %InputFile%.
+	goto error
+)
+
+SET _command=type "%TmpManifestLocation%"
+
+rem Currently we expect to have only 9.0.30729.5570 referenced in the manifest; if there is any older version, then some library linked with the project uses outdated version (boost?)
+for %%v in ("9.0.21022.8" "9.0.30411" "9.0.30729.1" "9.0.30729.4148") do (
+	for /f %%a in ('%_command% ^| find %%v') do (
+		if NOT "%%a" == "0" (
+			echo       ERROR: %~Nx1 references an old version of MFC ^(%%v^)
+			goto error
+		)
+	)
+)
+
+goto end
+
+:error
+exit /b 1
+
+:end
+exit /b 0
Index: scripts2015/internal/detect_internal_version.bat
===================================================================
diff -u
--- scripts2015/internal/detect_internal_version.bat	(revision 0)
+++ scripts2015/internal/detect_internal_version.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,161 @@
+@echo off
+
+setlocal ENABLEDELAYEDEXPANSION
+
+rem Validate input parameters
+if [%1] == [] (
+	echo Usage: detect_version_internal.bat path
+	goto end
+)
+
+echo       * Detecting type of the working copy
+set _svn_info=svn info "%1"
+for /f "delims=" %%a in ('!_svn_info! ^|find "URL"') do set _SVNUrl=%%a
+if errorlevel 1 (
+	echo Problem with retrieving working copy URL.
+	goto error
+)
+
+if NOT "!_SVNUrl!" == "!_SVNUrl:trunk=dummy!" (
+	SET _ReleaseType=internal
+) else if NOT "!_SVNUrl!" == "!_SVNUrl:tags=dummy!" (
+	SET _ReleaseType=tag
+) else (
+	echo Cannot detect type of the working copy. Directory not under version control system?
+	exit /b 1
+)
+
+rem In case of tagged releases we scan working copy for revision number only to get the modification flag
+echo       * Scanning svn working copy for revision number
+rem Get SVN version
+SET _svn_version=svnversion -n "%1"
+for /f %%a in ('!_svn_version!') do set _SVNCalculatedVersion=%%a
+if errorlevel 1 (
+	echo Problem with scanning svn WC for current version.
+	goto error
+)
+if "!_SVNCalculatedVersion!" == "" (
+	echo Can't get the major version.
+	goto error
+)
+
+rem Which format does svn version have?
+rem When version contain colon, then take only the newer revision from it
+if NOT "!_SVNCalculatedVersion!" == "!_SVNCalculatedVersion::=dummy!" (
+	SET _SVNCalculatedVersion=!_SVNCalculatedVersion:*:=!
+)
+
+rem If svn version contains S (switched), then just ignore this char
+if NOT "!_SVNCalculatedVersion!" == "!_SVNCalculatedVersion:S=dummy!" (
+	SET _SVNCalculatedVersion=!_SVNCalculatedVersion:S=!
+)
+
+rem If we have only partial working copy (P), then fail
+if NOT "!_SVNCalculatedVersion!" == "!_SVNCalculatedVersion:P=dummy!" (
+	echo Only partial working copy detected - cannot detect version.
+	goto error
+)
+
+rem If we have local modifications, then remember it, so we can modify the version number/string later
+if NOT "!_SVNCalculatedVersion!" == "!_SVNCalculatedVersion:M=dummy!" (
+	SET _SVNCalculatedVersion=!_SVNCalculatedVersion:M=!
+	SET _SVNIsModified=1
+) else (
+	SET _SVNIsModified=0
+)
+
+echo       * Detecting version numbers contained in version.h
+set _ver_cmd=type "%1\src\common\version.h"
+
+for /f "tokens=3 delims= " %%a in ('!_ver_cmd! ^|find "define PRODUCT_VERSION1 "') do set _MajorVersion=%%a
+if errorlevel 1 (
+	echo Problem with retrieving _MajorVersion.
+	goto error
+)
+if "!_MajorVersion!" == "" (
+	echo Can't get the major version.
+	goto error
+)
+
+set _ver_cmd=type "%1\src\common\version.h"
+for /f "tokens=3 delims= " %%a in ('!_ver_cmd! ^|find "define PRODUCT_VERSION2 "') do set _MinorVersion=%%a
+if errorlevel 1 (
+	echo Problem with retrieving _MinorVersion.
+	goto error
+)
+if "!_MinorVersion!" == "" (
+	echo Can't get the major version.
+	goto error
+)
+
+if "!_ReleaseType!" == "tag" (
+	rem If handling the tagged revision, overwrite !_SVNVersion!, %_CustomVersion% and !_TextVersion! with the values contained in version.h
+	set _ver_cmd2=type "%1\src\common\version.h"
+	for /f "tokens=3 delims= " %%a in ('!_ver_cmd2! ^|find "define PRODUCT_VERSION3 "') do set _SVNVersion=%%a
+	if errorlevel 1 (
+		echo Problem with retrieving svn version.
+		goto error
+	)
+	if "!_SVNVersion!" == "" (
+		echo Can't get the svn version.
+		goto error
+	)
+	
+	set _ver_cmd2=type "%1\src\common\version.h"
+	for /f "tokens=3 delims= " %%a in ('!_ver_cmd2! ^|find "define PRODUCT_VERSION4 "') do set _CustomVersion=%%a
+	if errorlevel 1 (
+		echo Problem with retrieving custom version.
+		goto error
+	)
+	if "!_CustomVersion!" == "" (
+		echo Can't get the custom version.
+		goto error
+	)
+
+	set _ver_cmd2=type "%1\src\common\version.h"
+	for /f "tokens=3 delims= " %%a in ('!_ver_cmd2! ^|find "define PRODUCT_VERSION "') do set _TextVersion=%%a
+	if errorlevel 1 (
+		echo Problem with retrieving text version.
+		goto error
+	)
+	if "!_TextVersion!" == "" (
+		echo Can't get the text version.
+		goto error
+	)
+	
+	rem Get rid of the '"' characters from the _TextVersion
+	if "!_SVNIsModified!" == "0" (
+		SET _TextVersion=!_TextVersion:"=!
+	) else (
+		SET _TextVersion=!_TextVersion:"=!_M
+	)
+) else (
+	SET _SVNVersion=!_SVNCalculatedVersion!
+	rem For internal version we format the text version on our own
+	if "!_SVNIsModified!" == "0" (
+		SET _TextVersion=!_MajorVersion!.!_MinorVersion!internal-svn!_SVNVersion!
+	) else (
+		SET _TextVersion=!_MajorVersion!.!_MinorVersion!internal-svn!_SVNVersion!_M
+	)
+
+	if "!_TextVersion!" == "" (
+		echo Cannot calculate the text version.
+		goto error
+	)
+)
+
+rem Overwrite %_CustomVersion% with !_SVNIsModified!
+SET _CustomVersion=!_SVNIsModified!
+
+endlocal & call SET CHMajorVersion=%_MajorVersion%& SET CHMinorVersion=%_MinorVersion%& SET CHSVNVersion=%_SVNVersion%& SET CHCustomVersion=%_CustomVersion%& SET CHTextVersion=%_TextVersion%& SET CHReleaseType=%_ReleaseType%
+
+echo       * Detected current working copy (%CHReleaseType%) at %CHMajorVersion%.%CHMinorVersion%.%CHSVNVersion%.%CHCustomVersion% (%CHTextVersion%)
+
+goto end
+
+:error
+rem Get outside of the temp directory to be able to delete it
+exit /b 1
+
+:end
+exit /b 0
Index: scripts2015/internal/embed_srcserver_info.bat
===================================================================
diff -u
--- scripts2015/internal/embed_srcserver_info.bat	(revision 0)
+++ scripts2015/internal/embed_srcserver_info.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,57 @@
+@echo off
+
+setlocal ENABLEDELAYEDEXPANSION
+
+if "%1" == "" (
+	echo Usage: embed_srcserver_info.bat path_to_sources
+	goto end
+)
+
+SET MainProjectDir=%~1
+
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+call internal\prepare_env.bat
+if errorlevel 1 (
+	goto error
+)
+
+SET _command=call "%SVNINDEXCMD%" /debug /source=%MainProjectDir%\src\ictranslate;%MainProjectDir%\src\libictranslate;%MainProjectDir%\src\libicpf;%MainProjectDir%\src;%MainProjectDir%\ext\sqlite3 /symbols=%MainProjectDir%\bin\release
+!_command! >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Error encountered while embedding source server information. See the log below:
+	type "%TmpDir%\command.log"
+	exit /b 1
+)
+
+rem We expect all pdbs to be modified (currently 14 of them - 7/architecture)
+SET IndexRes=Undefined
+SET _command=type "%TmpDir%\command.log" 
+for /f %%a in ('!_command! ^| find /c "wrote"') do set IndexRes=%%a
+if NOT "!IndexRes!" == "14" (
+	echo Some source server information has not been embedded. See the log below:
+	type "%TmpDir%\command.log"
+	exit /b 1
+)
+
+echo       ...embedded information in !IndexRes! files.
+SET _command=type "%TmpDir%\command.log" 
+for /f %%a in ('!_command! ^| find /c "ERROR"') do set IndexRes=%%a
+if NOT "!IndexRes!" == "0" (
+	echo Error encountered when embedding source server information. See the log below:
+	type "%TmpDir%\command.log"
+	exit /b 1
+)
+
+SET _command=type "%TmpDir%\command.log" 
+for /f %%a in ('!_command! ^| find /c "WARNING"') do set IndexRes=%%a
+if NOT "!IndexRes!" == "0" (
+	echo Error encountered when embedding source server information. See the log below:
+	type "%TmpDir%\command.log"
+	exit /b 1
+)
+
+exit /b 0
Index: scripts2015/internal/prepare_env.bat
===================================================================
diff -u
--- scripts2015/internal/prepare_env.bat	(revision 0)
+++ scripts2015/internal/prepare_env.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,43 @@
+@echo off
+
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+rem Setup environment
+if not exist "%TmpDir%" (
+	mkdir "%TmpDir%"
+	if not exist "%TmpDir%" (
+		echo ERROR: Creating temporary folder failed.
+		exit /b 1
+	)
+)
+
+if not exist "%OutputDir%" (
+	mkdir "%OutputDir%"
+	if not exist "%OutputDir%" (
+		echo ERROR: Creating temporary folder failed. See the log below:
+		type "%TmpDir%\command.log"
+		exit /b 1
+	)
+)
+
+rem Prepare directories
+if not exist "%TmpDir%\32bit" (
+	mkdir "%TmpDir%\32bit"
+	if not exist "%TmpDir%\32bit" (
+		echo ERROR: Creating temporary 32bit folder failed.
+		goto error
+	)
+)
+
+if not exist "%TmpDir%\64bit" (
+	mkdir "%TmpDir%\64bit"
+	if not exist "%TmpDir%\64bit" (
+		echo ERROR: Creating temporary 64bit folder failed.
+		goto error
+	)
+)
+
+exit /b 0
Index: scripts2015/internal/replace_version.vbs
===================================================================
diff -u
--- scripts2015/internal/replace_version.vbs	(revision 0)
+++ scripts2015/internal/replace_version.vbs	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,36 @@
+Const ForReading = 1
+Const ForWriting = 2
+
+strOldFileName = Wscript.Arguments(0)
+strNewFileName = Wscript.Arguments(1)
+strMajor = WScript.Arguments(2)
+strMinor = WScript.Arguments(3)
+strSVN = WScript.Arguments(4)
+strCustom = WScript.Arguments(5)
+strTextVersion = WScript.Arguments(6)
+
+' Validate parameters
+if strOldFileName = "" or strNewFileName = "" or strMajor = "" or strMinor = "" or strSVN = "" or strCustom ="" or strTextVersion="" then
+	WScript.echo "Missing input parameters"
+	return 1
+end if
+
+Set objFSO = CreateObject("Scripting.FileSystemObject")
+
+' Read the source file
+Set objFile = objFSO.OpenTextFile(strOldFileName, ForReading)
+
+strText = objFile.ReadAll
+objFile.Close
+
+' Replace the text
+strText = Replace(strText, "{major_version}", strMajor)
+strText = Replace(strText, "{minor_version}", strMinor)
+strText = Replace(strText, "{svn_version}", strSVN)
+strText = Replace(strText, "{custom_version}", strCustom)
+strText = Replace(strText, "{text_version}", strTextVersion)
+
+' And write the text
+Set objFile = objFSO.OpenTextFile(strNewFileName, ForWriting)
+objFile.WriteLine strText
+objFile.Close
Index: scripts2015/internal/svntag_single.bat
===================================================================
diff -u
--- scripts2015/internal/svntag_single.bat	(revision 0)
+++ scripts2015/internal/svntag_single.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,48 @@
+@echo off
+
+setlocal
+
+if [%1] == [] (
+	echo Usage: svntag_single.bat ReposAddress TextVersion 
+	exit /b 1
+)
+
+SET ReposAddress=%1
+SET TextVersion=%2
+
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+rem partial cleanup
+SET CHTmpDir=%TmpDir%\repo-tag-test
+if exist "%CHTmpDir%" (
+	rmdir /S /Q "%CHTmpDir%" >nul
+	if exist "%CHTmpDir%" (
+		echo ERROR: Deleting the old temporary folder failed.
+		exit /b 1
+	)
+)
+
+rem check if the project isn't already tagged
+svn co "%ReposAddress%/tags/%TextVersion%" "%CHTmpDir%" 2>nul
+if errorlevel 1 (
+	rem when error, it probably means that the tag does not exist
+	goto create
+)
+
+rem if we're here, then the tag already exist
+echo    * The repository already had a tag %TextVersion%. Skipping tagging.
+exit /b 0
+
+:create
+echo    * Tagging %ReposAddress% as %TextVersion%...
+svn cp -m "Tagged project to %TextVersion%" "%ReposAddress%/trunk/" "%ReposAddress%/tags/%TextVersion%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while tagging %ReposAddress% project. See the log below:
+	type "%TmpDir%\command.log"
+	exit /b 1
+)
+
+exit /b 0
Index: scripts2015/internal/symsrv_add_single_package.bat
===================================================================
diff -u
--- scripts2015/internal/symsrv_add_single_package.bat	(revision 0)
+++ scripts2015/internal/symsrv_add_single_package.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,71 @@
+@echo off
+
+rem Mark the changes as local ones
+setlocal
+
+if [%1] == [] (
+	echo "Usage: symsrv.bat package_path symsrv_path"
+	goto end
+)
+
+if [%2] == [] (
+	echo "Usage: symsrv.bat package_path symsrv_path"
+	goto end
+)
+
+echo --- Initializing -----------------------------------------------
+echo    * Reading configuration...
+call config.bat
+if errorlevel 1 (
+	goto error
+)
+echo    * Preparing environment...
+call internal\prepare_env.bat
+if errorlevel 1 (
+	goto error
+)
+
+echo --- Processing files --------------------------------------------
+echo    * Extracting files...
+
+SET OutDir=%TmpDir%\symbols
+if exist "%OutDir%" (
+	rmdir /S /Q "%OutDir%" >nul
+	if exist "%OutDir%" (
+		echo ERROR: Deleting the temporary folder failed.
+		exit /b 1
+	)
+)
+
+mkdir "%OutDir%"
+if errorlevel 1 (
+	echo ERROR: Creating temporary directory failed.
+	goto error
+)
+
+rem Unpack archive
+7z x -o%OutDir% %1 >nul
+if errorlevel 1 (
+	echo ERROR: Unpacking archive failed.
+	goto error
+)
+
+echo    * Adding files to symbol server directory...
+
+symstore add /r /f "%OutDir%" /s "%~2" /t "Copy Handler" /v "%~1"
+if errorlevel 1 (
+	echo ERROR: Storing symbols failed.
+	goto error
+)
+
+echo    * Cleaning up files...
+rmdir /S /Q "%OutDir%"
+
+echo    * Done
+
+goto end
+
+:error
+echo    * Error processing files.
+
+:end
Index: scripts2015/make_existing_release.bat
===================================================================
diff -u
--- scripts2015/make_existing_release.bat	(revision 0)
+++ scripts2015/make_existing_release.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,238 @@
+@echo off
+
+rem Script prepares all packages based on the source code in which this script is placed.
+
+rem Mark the changes as local ones
+setlocal ENABLEDELAYEDEXPANSION
+
+echo --- Initializing ----------------------------------------------------
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+echo    * Clearing environment...
+call internal\clear_env.bat
+if errorlevel 1 (
+	goto error
+)
+
+echo    * Initializing MSBuild environment
+if not exist "%VS140COMNTOOLS%\VsMSBuildCmd.bat" (
+	echo ERROR: Can't find the vsvars32.bat file.
+	goto error
+) else (
+	call "%VS140COMNTOOLS%\VsMSBuildCmd.bat" >nul
+)
+
+set MainProjectDir=%CHRootDir%
+
+rem Update the version string in the version.h for trunk
+echo    * Detecting current version information...
+call internal\detect_internal_version.bat "%MainProjectDir%"
+if errorlevel 1 (
+	goto error
+)
+
+if "%CHReleaseType%" == "internal" (
+	echo    * Updating version information in version.h for the internal release...
+	cscript //NoLogo internal\replace_version.vbs "%MainProjectDir%\src\common\version.h.template" "%MainProjectDir%\src\common\version.h" !CHMajorVersion! !CHMinorVersion! !CHSVNVersion! !CHCustomVersion! !CHTextVersion! >"%TmpDir%\command.log"
+	if errorlevel 1 (
+		echo ERROR: encountered a problem while updating version information. See the log below:
+		type "%TmpDir%\command.log"
+		goto error
+	)
+)
+
+echo --- Building solutions ----------------------------------------------
+rem cd "%MainProjectDir%"
+echo    * Building release...
+msbuild "..\msbuild.proj" /t:Release /m:4 >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Build process failed. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo --- Verifying build -------------------------------------------------
+cd %MainProjectDir%
+if not exist bin\release (
+	echo ERROR: The bin\release directory does not exist.
+	goto error
+)
+
+cd %MainProjectDir%\scripts
+
+SET FoundWrongManifest=0
+for %%v in (%MainProjectDir%\bin\release\*.dll %MainProjectDir%\bin\release\*.exe) do (
+	echo    * Verifying %%~nv%%~xv...
+ 	call internal\detect_incorrect_manifest.bat "%%v"
+	if errorlevel 1 (
+    SET FoundWrongManifest=1
+    )
+)
+
+if "!FoundWrongManifest!" == "1" (
+	echo ERROR: Incorrect manifest detected in one or more executables.
+	goto error
+)
+
+if NOT "%SKIPCHSIGNING%" == "1" (
+	echo --- Signing executables ---------------------------------------------
+	signtool sign /t http://time.certum.pl /a "%MainProjectDir%\bin\release\*.dll" "%MainProjectDir%\bin\release\*.exe" 2>"%TmpDir%\command-err.log"
+	if errorlevel 1 (
+		echo ERROR: Cannot sign executables! See the log below:
+		type "%TmpDir%\command-err.log"
+		goto error
+	)
+) else (
+	echo WARNING: Signing executables was disabled.
+)
+
+echo --- Preparing packages ----------------------------------------------
+echo    * Create source package for version %CHTextVersion%...
+
+rem Export the current working copy to a separate directory to avoid including unnecessary files in the source archive
+SET CHSrcDir="%TmpDir%\ch-src"
+svn export "%MainProjectDir%" "%CHSrcDir%" >"%TmpDir%\command.log" 2>"%TmpDir%\command-err.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while exporting local sources to a separate location. See the log below:
+	type "%TmpDir%\command-err.log"
+	goto error
+)
+
+cd %CHSrcDir%
+
+"%SEVENZIPEXE%" a "%OutputDir%\chsrc-%CHTextVersion%.zip" -tzip -x^^!"scripts\*.bat" -xr^^!".svn" . >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Preparation of the sources failed. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Preparing the symbols package...
+
+cd %MainProjectDir%\scripts
+if "%CHCustomVersion%" == "1" (
+	if "%CHReleaseType%" == "internal" (
+		echo    * WARNING: Skipping embedding source server info in PDB files due to local sources modifications...
+	) else (
+		echo    * ERROR: Tagged sources contains local modifications - cannot embed source server info in PDB files...
+		goto error
+	)
+) else (
+	echo    * Embedding source server info in PDB files...
+	call internal\embed_srcserver_info.bat "%MainProjectDir%"
+
+	if errorlevel 1 (
+		echo ERROR: encountered a problem while embedding source server information in debug symbols.
+		goto error
+	)
+)
+
+cd %MainProjectDir%\bin\release
+
+"%SEVENZIPEXE%" a "%OutputDir%\ch_symbols-%CHTextVersion%.zip" -tzip "*.pdb"  >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Could not create symbols archive. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Preparing the installer package...
+cd %MainProjectDir%
+if not exist scripts (
+	echo ERROR: The scripts directory does not exist.
+	goto error
+)
+
+cd %MainProjectDir%\scripts
+
+"%ISCCEXE%" setup.iss /o%OutputDir%  >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Preparation of the installer version failed. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+if NOT "%SKIPCHSIGNING%" == "1" (
+	echo    * Signing installer package...
+	signtool sign /t http://time.certum.pl /a "%OutputDir%\*.exe" 2>"%TmpDir%\command-err.log"
+	if errorlevel 1 (
+		echo ERROR: Cannot sign executables! See the log below:
+		type "%TmpDir%\command-err.log"
+		goto error
+	)
+) else (
+	echo WARNING: Signing executables was disabled.
+)
+
+echo    * Preparing zip package...
+cd %MainProjectDir%
+
+rem Prepare files
+SET Res=0
+xcopy "bin\release\ch.exe" "%TmpDir%\32bit\" >"%TmpDir%\command.log" || SET Res=1
+xcopy "License.txt" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\chext.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libicpf32u.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libchcore32u.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libictranslate32u.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\ictranslate.exe" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\sqlite3_32.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "scripts\portable_config\ch.xml" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%VSInstallDirX86%\VC\redist\x86\Microsoft.VC140.CRT\*" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%VSInstallDirX86%\VC\redist\x86\Microsoft.VC140.MFC\*" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%ProgramFilesX86%\Windows Kits\8.1\Debuggers\x86\dbghelp.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%UniversalCRTSdkDir%\Redist\ucrt\DLLs\x86\*.dll" "%TmpDir%\32bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy /E /I "bin\release\help" "%TmpDir%\32bit\help" >>"%TmpDir%\command.log" || SET Res=1
+xcopy /E /I "bin\release\langs" "%TmpDir%\32bit\langs" >>"%TmpDir%\command.log" || SET Res=1
+
+xcopy "bin\release\ch64.exe" "%TmpDir%\64bit\" >"%TmpDir%\command.log" || SET Res=1
+xcopy "License.txt" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\chext64.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libicpf64u.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libchcore64u.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\libictranslate64u.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\ictranslate64.exe" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "bin\release\sqlite3_64.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "scripts\portable_config\ch.xml" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%VSInstallDirX86%\VC\redist\x64\Microsoft.VC140.CRT\*" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%VSInstallDirX86%\VC\redist\x64\Microsoft.VC140.MFC\*" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%ProgramFilesX86%\Windows Kits\8.1\Debuggers\x64\dbghelp.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy "%UniversalCRTSdkDir%\Redist\ucrt\DLLs\x64\*.dll" "%TmpDir%\64bit\" >>"%TmpDir%\command.log" || SET Res=1
+xcopy /E /I "bin\release\help" "%TmpDir%\64bit\help" >>"%TmpDir%\command.log" || SET Res=1
+xcopy /E /I "bin\release\langs" "%TmpDir%\64bit\langs" >>"%TmpDir%\command.log" || SET Res=1
+
+if %Res% NEQ 0 (
+	echo ERROR: Detected a problem when copying files. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+cd "%TmpDir%\"
+
+"%SEVENZIPEXE%" a -tzip "%OutputDir%\ch-%CHTextVersion%.zip" 32bit 64bit >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Could not create win32 zip archive. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+cd "%ScriptDir%"
+
+echo    * Done...
+
+goto cleanup
+
+:error
+echo    * Clearing environment...
+call internal\clear_env.bat /skip_create
+exit /b 1
+
+:cleanup
+echo    * Clearing environment...
+call internal\clear_env.bat /skip_create
+
+:end
+exit /b 0
Index: scripts2015/make_release.bat
===================================================================
diff -u
--- scripts2015/make_release.bat	(revision 0)
+++ scripts2015/make_release.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,60 @@
+@echo off
+
+rem Scripts checks out trunk or specific tag of CH and launches preparation of the packages for the retrieved version.
+
+rem Mark the changes as local ones
+setlocal
+
+rem Check input parameter
+if [%1] == [] (
+	echo Usage: make_release.bat ^<trunk^|tag_name^>
+	exit /b 1
+)
+
+echo --- Initializing -----------------------------------------------
+echo    * Reading configuration...
+call config.bat
+if errorlevel 1 (
+	goto error
+)
+
+echo    * Preparing environment...
+call internal\prepare_env.bat
+if errorlevel 1 (
+	goto error
+)
+
+echo --- Retrieving code ----------------------------------
+if "%1" == "trunk" (
+	SET CHRepositoryAddress=%ReposCH%/trunk
+) else (
+	SET CHRepositoryAddress=%ReposCH%/tags/%1
+)
+
+echo    * Checking out %CHRepositoryAddress%...
+SET CHTmpDir=%TmpDir%\ch-svn
+svn co "%CHRepositoryAddress%" "%CHTmpDir%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: Could not check out source code. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+rem call the original version of the script that was used to prepare the version (might not work for versions prior to 1.40)
+cd %CHTmpDir%\scripts
+call make_existing_release.bat
+if errorlevel 1 (
+	goto error
+)
+
+goto cleanup
+
+:error
+call internal\clear_env.bat /skip_create
+exit /b 1
+
+:cleanup
+call internal\clear_env.bat /skip_create
+
+:end
+exit /b 0
Index: scripts2015/portable_config/ch.xml
===================================================================
diff -u
--- scripts2015/portable_config/ch.xml	(revision 0)
+++ scripts2015/portable_config/ch.xml	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<CHConfig></CHConfig>
\ No newline at end of file
Index: scripts2015/setup.iss
===================================================================
diff -u
--- scripts2015/setup.iss	(revision 0)
+++ scripts2015/setup.iss	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,171 @@
+; Script generated by the Inno Setup Script Wizard.
+; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
+#define SETUP_COMPILER 1
+#include "../src/common/version.h"
+#define MyAppName PRODUCT_NAME
+#define MyAppVerName PRODUCT_NAME + " " + PRODUCT_VERSION
+#define MyAppPublisher "Józef Starosczyk"
+#define MyAppURL "http://www.copyhandler.com"
+
+#define InstallerFilename "chsetup-" + PRODUCT_VERSION
+
+#define ExeFilename32 "ch.exe"
+#define ExeFilename64 "ch64.exe"
+#define ShellExtFilename32 "chext.dll"
+#define ShellExtFilename64 "chext64.dll"
+#define LibicpfFilename32 "libicpf32u.dll"
+#define LibicpfFilename64 "libicpf64u.dll"
+#define LibCHCoreFilename32 "libchcore32u.dll"
+#define LibCHCoreFilename64 "libchcore64u.dll"
+#define LibictranslateFilename32 "libictranslate32u.dll"
+#define LibictranslateFilename64 "libictranslate64u.dll"
+#define ICTranslateFilename32 "ictranslate.exe"
+#define ICTranslateFilename64 "ictranslate64.exe"
+#define SQLite32 "sqlite3_32.dll"
+#define SQLite64 "sqlite3_64.dll"
+#define MSRedistDir32 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86"
+#define MSRedistDir64 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64"
+#define DbgHelp32 "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86"
+#define DbgHelp64 "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64"
+#define UCrtDir32 "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86"
+#define UCrtDir64 "C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64"
+
+[Setup]
+AppName={#MyAppName}
+AppVerName={#MyAppVerName}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\{#MyAppName}
+DefaultGroupName={#MyAppName}
+AllowNoIcons=true
+LicenseFile=..\License.txt
+OutputDir=.\
+OutputBaseFilename={#InstallerFilename}
+Compression=lzma/ultra
+SolidCompression=true
+AppMutex=_Copy handler_ instance
+ShowLanguageDialog=auto
+AppID={{9CF6A157-F0E8-4216-B229-C0CA8204BE2C}
+InternalCompressLevel=ultra
+AppCopyright={#COPYRIGHT_INFO}
+AppVersion={#PRODUCT_VERSION}
+UninstallDisplayIcon={app}\{#ExeFilename32}
+AppContact=ixen(at)copyhandler(dot)com
+VersionInfoVersion=
+VersionInfoTextVersion={#PRODUCT_VERSION}
+VersionInfoCopyright={#COPYRIGHT_INFO}
+ChangesEnvironment=true
+ArchitecturesInstallIn64BitMode=x64
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
+Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
+Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
+Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
+Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
+Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
+Name: "french"; MessagesFile: "compiler:Languages\French.isl"
+Name: "german"; MessagesFile: "compiler:Languages\German.isl"
+Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
+Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
+Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
+Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
+Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
+Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
+Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
+Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
+Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
+Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
+Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
+Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
+Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
+Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
+
+[Tasks]
+Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
+Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
+Name: startatboot; Description: {cm:StartAtBoot}; Flags: unchecked
+
+[Files]
+Source: "..\bin\release\help\*.chm"; DestDir: "{app}\help"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\bin\release\langs\*.lng"; DestDir: "{app}\langs"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "..\License.txt"; DestDir: "{app}"; Flags: ignoreversion
+
+Source: "..\bin\release\{#ExeFilename32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#ExeFilename64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#ShellExtFilename32}"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete regserver replacesameversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#ShellExtFilename64}"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete regserver replacesameversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#LibicpfFilename32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#LibicpfFilename64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#LibCHCoreFilename32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#LibCHCoreFilename64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#LibictranslateFilename32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#LibictranslateFilename64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#ICTranslateFilename32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#ICTranslateFilename64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "..\bin\release\{#SQLite32}"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "..\bin\release\{#SQLite64}"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+
+Source: "{#MSRedistDir32}\Microsoft.VC140.CRT\*"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "{#MSRedistDir64}\Microsoft.VC140.CRT\*"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "{#MSRedistDir32}\Microsoft.VC140.MFC\*"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "{#MSRedistDir64}\Microsoft.VC140.MFC\*"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+Source: "{#UCrtDir32}\*"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "{#UCrtDir64}\*"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+
+Source: "{#DbgHelp32}\dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: not Is64BitInstallMode
+Source: "{#DbgHelp64}\dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: Is64BitInstallMode
+
+; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+
+[Icons]
+Name: {group}\{#MyAppName}; Filename: {app}\{code:ExpandArch|ExeFilename}; WorkingDir: {app}
+Name: {group}\{cm:TranslateCopyHandler}; Filename: {app}\{code:ExpandArch|ICTranslateFilename}; Parameters: """{app}\langs\english.lng"""; WorkingDir: {app}\lang
+Name: {group}\{cm:UninstallCopyHandler}; Filename: {uninstallexe}; WorkingDir: {app}
+Name: {userdesktop}\{#MyAppName}; Filename: {app}\{code:ExpandArch|ExeFilename}; Tasks: desktopicon; WorkingDir: {app}
+Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\{code:ExpandArch|ExeFilename}; Tasks: quicklaunchicon; WorkingDir: {app}
+
+[Run]
+Filename: "{app}\{code:ExpandArch|ExeFilename}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#MyAppName}}"
+
+[Registry]
+
+Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Copy Handler; Flags: dontcreatekey deletevalue
+Root: HKCU; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Copy Handler; Tasks: startatboot; ValueData: {app}\{code:ExpandArch|ExeFilename}; Flags: uninsdeletevalue
+
+[Dirs]
+Name: {app}\help; Flags: uninsalwaysuninstall
+Name: {app}\langs; Flags: uninsalwaysuninstall
+
+[CustomMessages]
+TranslateCopyHandler=Translate Copy Handler
+polish.TranslateCopyHandler=Przetłumacz program Copy Handler
+UninstallCopyHandler=Uninstall Copy Handler
+polish.UninstallCopyHandler=Odinstaluj program Copy Handler
+StartAtBoot=Run program at system startup
+polish.StartAtBoot=Uruchom program przy starcie systemu
+
+[ThirdParty]
+CompileLogMethod=append
+
+[Code]
+function ExpandArch(ConstantStr: String): String;
+begin
+	if Is64BitInstallMode then
+	begin
+		case ConstantStr of
+			'ExeFilename': Result := '{#ExeFilename64}';
+			'ICTranslateFilename': Result := '{#ICTranslateFilename64}';
+		end;
+	end
+	else
+	begin
+		case ConstantStr of
+			'ExeFilename': Result := '{#ExeFilename32}';
+			'ICTranslateFilename': Result := '{#ICTranslateFilename32}';
+		end;
+	end;
+end;
Index: scripts2015/svntag.bat
===================================================================
diff -u
--- scripts2015/svntag.bat	(revision 0)
+++ scripts2015/svntag.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,146 @@
+@echo off
+
+rem Script creates a tag in svn for the alpha/beta/final release (uses the version.h and svn info as the source of information)
+
+rem Mark the changes as local ones
+setlocal
+
+if [%1] == [] (
+	echo Usage: svntag.bat ^<Alpha^|Beta^|Final^>
+	exit /b 1
+)
+
+rem This script wasn't tested yet (written 2011-10-22 23:04)
+echo --- Initializing ----------------------------------------------------
+
+rem Include config
+call config.bat
+if errorlevel 1 (
+	exit /b 1
+)
+
+call internal\clear_env.bat
+if errorlevel 1 (
+	echo ERROR: Problem with preparing environment.
+	goto error
+)
+
+rem checkout ch project (trunk)
+echo    * Retrieving trunk for CH...
+SET CHTmpTrunkDir=%TmpDir%\ch-trunk
+svn --ignore-externals co "%ReposCH%/trunk" "%CHTmpTrunkDir%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo    ERROR: Cannot checkout trunk. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+rem detect version (for trunk it should get major.minor from version.h, svn rev from svn revision id)
+echo    * Detecting trunk version information...
+call internal\detect_internal_version.bat "%CHTmpTrunkDir%"
+if errorlevel 1 (
+	goto error
+)
+
+rem generate the tag to be created for sources
+SET /a TagSVNRev=%CHSVNVersion%+2
+SET /a NewTrunkMinor=%CHMinorVersion%
+SET /a NewTrunkSVNRev=%TagSVNRev%+1
+SET NewTrunkTextTag=%CHMajorVersion%.%NewTrunkMinor%internal-svn%NewTrunkSVNRev%
+
+if "%1" == "Final" (
+	SET TextTag=%CHMajorVersion%.%CHMinorVersion%Final
+	SET /a NewTrunkMinor=%CHMinorVersion%+1
+) else if "%1" == "Alpha" (
+	SET TextTag=%CHMajorVersion%.%CHMinorVersion%Alpha-svn%TagSVNRev%
+) else if "%1" == "Beta" (
+	SET TextTag=%CHMajorVersion%.%CHMinorVersion%Beta-svn%TagSVNRev%
+) else (
+	echo ERROR: Unknown release type specified.
+	goto error
+)
+
+echo    * Tagging projects with %TextTag%...
+call internal\svntag_single.bat "%ReposIcpf%" %TextTag%
+if errorlevel 1 (
+	goto error
+)
+
+call internal\svntag_single.bat "%ReposIctranslate%" %TextTag%
+if errorlevel 1 (
+	goto error
+)
+
+call internal\svntag_single.bat "%ReposCH%" %TextTag%
+if errorlevel 1 (
+	goto error
+)
+
+echo    * Checking out the tagged ch repository...
+SET CHTmpTagDir=%TmpDir%\ch-tagged
+svn --ignore-externals co "%ReposCH%/tags/%TextTag%" "%CHTmpTagDir%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while checking out copyhandler project. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Creating new svn:externals definition...
+
+echo src/libicpf %ReposIcpf%/tags/%TextTag%/src/libicpf >"%TmpDir%\externals.txt"
+echo src/libictranslate %ReposIctranslate%/tags/%TextTag%/src/libictranslate >>"%TmpDir%\externals.txt"
+echo src/rc2lng %ReposIctranslate%/tags/%TextTag%/src/rc2lng >>"%TmpDir%\externals.txt"
+echo src/ictranslate %ReposIctranslate%/tags/%TextTag%/src/ictranslate >>"%TmpDir%\externals.txt"
+
+svn propedit --editor-cmd "type %TmpDir%\externals.txt >" svn:externals "%CHTmpTagDir%"  >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while checking out copyhandler project. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Updating version information for tagged sources...
+cscript //NoLogo internal\replace_version.vbs "%CHTmpTagDir%\src\common\version.h.template" "%CHTmpTagDir%\src\common\version.h" %CHMajorVersion% %CHMinorVersion% %TagSVNRev% 0 %TextTag% >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while checking out copyhandler project. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Performing commit of the updated version and svn:externals...
+svn commit -m "Updated svn:externals definition" "%CHTmpTagDir%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while committing changes to repository. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Updating version information for trunk sources (%NewTrunkTextTag%)...
+cscript //NoLogo internal\replace_version.vbs "%CHTmpTrunkDir%\src\common\version.h.template" "%CHTmpTrunkDir%\src\common\version.h" %CHMajorVersion% %NewTrunkMinor% %NewTrunkSVNRev% 0 %NewTrunkTextTag% >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while checking out copyhandler project. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+echo    * Performing commit of the updated version...
+svn commit -m "Automatic version bump after tagging %TextTag%" "%CHTmpTrunkDir%" >"%TmpDir%\command.log"
+if errorlevel 1 (
+	echo ERROR: encountered a problem while committing changes to repository. See the log below:
+	type "%TmpDir%\command.log"
+	goto error
+)
+
+goto cleanup
+
+:error
+call internal\clear_env.bat /skip_create
+
+exit /b 1
+
+:cleanup
+echo    * Cleaning up the temporary files...
+call internal\clear_env.bat /skip_create
+
+:end
+exit /b 0
Index: scripts2015/symsrv_add_release.bat
===================================================================
diff -u
--- scripts2015/symsrv_add_release.bat	(revision 0)
+++ scripts2015/symsrv_add_release.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,41 @@
+@echo off
+
+rem Mark the changes as local ones
+setlocal
+
+if [%1] == [] (
+	echo Usage: symsrv_add_release.bat ^<symbol_server_dir^> [dir_with_packages]
+	goto end
+)
+
+echo --- Initializing -----------------------------------------------
+echo    * Reading configuration...
+call config.bat
+if errorlevel 1 (
+	goto error
+)
+
+if NOT [%2] == [] (
+	SET PackagesDir=%2
+) else (
+	SET PackagesDir=%OutputDir%
+)
+
+echo --- Preparing files --------------------------------------------
+echo    * Scanning directory %PackagesDir% for packages...
+for /R %PackagesDir% %%f in (*.zip) do (
+	echo    * Processing package %%f...
+	call internal\symsrv_add_single_package.bat "%%f" "%1"
+	if errorlevel 1 (
+		goto error
+	)
+)
+
+echo    * Done
+
+goto end
+
+:error
+	echo ERROR: encountered an error while processing packages.
+	
+:end
Index: scripts2015/upload_release.bat
===================================================================
diff -u
--- scripts2015/upload_release.bat	(revision 0)
+++ scripts2015/upload_release.bat	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -0,0 +1,31 @@
+@echo off
+
+rem Mark the changes as local ones
+setlocal
+
+echo --- Initializing -----------------------------------------------
+echo    * Reading configuration...
+call config.bat
+if errorlevel 1 (
+	goto error
+)
+
+echo --- Uploading files --------------------------------------------
+echo cd uploads >"%TmpDir%\filelist.txt"
+for %%f in (out\*.*) do echo put %%f >>"%TmpDir%\filelist.txt"
+
+
+psftp -v -b "%TmpDir%\filelist.txt" ixen@frs.sourceforge.net
+if errorlevel 1 (
+	goto error
+)
+
+echo    * Done
+
+goto end
+
+:error
+echo    * Error uploading files.
+del "%TmpDir%\filelist.txt"
+
+:end
Index: src/ch/ch.vc140.vcxproj
===================================================================
diff -u -r1cbea44490be75319be043e12953072020e7d5c0 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/ch/ch.vc140.vcxproj	(.../ch.vc140.vcxproj)	(revision 1cbea44490be75319be043e12953072020e7d5c0)
+++ src/ch/ch.vc140.vcxproj	(.../ch.vc140.vcxproj)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -43,49 +43,49 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>Dynamic</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
Index: src/chext/TLogger.h
===================================================================
diff -u -r3d1de44762647618faf9b5b3a87f89b293899d8d -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/chext/TLogger.h	(.../TLogger.h)	(revision 3d1de44762647618faf9b5b3a87f89b293899d8d)
+++ src/chext/TLogger.h	(.../TLogger.h)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -35,7 +35,7 @@
 // logging helpers
 namespace details
 {
-	constexpr severity_level HRESULT2Severity(HRESULT hResult)
+	inline severity_level HRESULT2Severity(HRESULT hResult)
 	{
 		return (SUCCEEDED(hResult)) ? debug : error;
 	}
Index: src/chext/chext.vc140.vcxproj
===================================================================
diff -u -r3d1de44762647618faf9b5b3a87f89b293899d8d -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/chext/chext.vc140.vcxproj	(.../chext.vc140.vcxproj)	(revision 3d1de44762647618faf9b5b3a87f89b293899d8d)
+++ src/chext/chext.vc140.vcxproj	(.../chext.vc140.vcxproj)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -43,53 +43,53 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <UseOfAtl>false</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <UseOfAtl>false</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <UseOfAtl>false</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <UseOfAtl>false</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
Index: src/libchcore/TCoreException.cpp
===================================================================
diff -u -r0c48142d3db406c32c05d7afdf77da45b2459b34 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TCoreException.cpp	(.../TCoreException.cpp)	(revision 0c48142d3db406c32c05d7afdf77da45b2459b34)
+++ src/libchcore/TCoreException.cpp	(.../TCoreException.cpp)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -21,4 +21,13 @@
 
 namespace chcore
 {
+	TCoreException::TCoreException(EGeneralErrors eErrorCode, const wchar_t* pszMsg, const wchar_t* pszFile, size_t stLineNumber, const wchar_t* pszFunction) :
+		TBaseException(eErrorCode, pszMsg, pszFile, stLineNumber, pszFunction)
+	{
+	}
+
+	TCoreException::TCoreException(EGeneralErrors eErrorCode, const char* pszMsg, const wchar_t* pszFile, size_t stLineNumber, const wchar_t* pszFunction) :
+		TBaseException(eErrorCode, pszMsg, pszFile, stLineNumber, pszFunction)
+	{
+	}
 }
Index: src/libchcore/TCoreException.h
===================================================================
diff -u -r09d769045d1d5c45d8df16d209c754b872348c26 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TCoreException.h	(.../TCoreException.h)	(revision 09d769045d1d5c45d8df16d209c754b872348c26)
+++ src/libchcore/TCoreException.h	(.../TCoreException.h)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -32,11 +32,11 @@
 
 namespace chcore
 {
-
 	class LIBCHCORE_API TCoreException : public TBaseException
 	{
 	public:
-		using TBaseException::TBaseException;
+		TCoreException(EGeneralErrors eErrorCode, const wchar_t* pszMsg, const wchar_t* pszFile, size_t stLineNumber, const wchar_t* pszFunction);
+		TCoreException(EGeneralErrors eErrorCode, const char* pszMsg, const wchar_t* pszFile, size_t stLineNumber, const wchar_t* pszFunction);
 	};
 }
 
Index: src/libchcore/TFilesystemFeedbackWrapper.h
===================================================================
diff -u -r89f857792bba8752de98ddd477949e45cef5ba5a -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TFilesystemFeedbackWrapper.h	(.../TFilesystemFeedbackWrapper.h)	(revision 89f857792bba8752de98ddd477949e45cef5ba5a)
+++ src/libchcore/TFilesystemFeedbackWrapper.h	(.../TFilesystemFeedbackWrapper.h)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -32,6 +32,7 @@
 	{
 	public:
 		TFilesystemFeedbackWrapper(const IFeedbackHandlerPtr& spFeedbackHandler, const IFilesystemPtr& spFilesystem, icpf::log_file& rLog, TWorkerThreadController& rThreadController);
+		TFilesystemFeedbackWrapper& operator=(const TFilesystemFeedbackWrapper&) = delete;
 
 		TSubTaskBase::ESubOperationResult CreateDirectoryFB(const TSmartPath& pathDirectory);
 		TSubTaskBase::ESubOperationResult CheckForFreeSpaceFB(const TSmartPath& pathFirstSrc, const TSmartPath& pathDestination, unsigned long long ullNeededSize);
Index: src/libchcore/TFilesystemFileFeedbackWrapper.h
===================================================================
diff -u -r89f857792bba8752de98ddd477949e45cef5ba5a -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TFilesystemFileFeedbackWrapper.h	(.../TFilesystemFileFeedbackWrapper.h)	(revision 89f857792bba8752de98ddd477949e45cef5ba5a)
+++ src/libchcore/TFilesystemFileFeedbackWrapper.h	(.../TFilesystemFileFeedbackWrapper.h)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -34,6 +34,7 @@
 	{
 	public:
 		TFilesystemFileFeedbackWrapper(const IFeedbackHandlerPtr& spFeedbackHandler, icpf::log_file& rLog, TWorkerThreadController& rThreadController);
+		TFilesystemFileFeedbackWrapper& operator=(const TFilesystemFileFeedbackWrapper&) = delete;
 
 		TSubTaskBase::ESubOperationResult OpenSourceFileFB(const IFilesystemFilePtr& fileSrc);
 		TSubTaskBase::ESubOperationResult OpenExistingDestinationFileFB(const IFilesystemFilePtr& fileDst);
Index: src/libchcore/TLocalFilesystemFile.cpp
===================================================================
diff -u -r41383599835bbab64d854eed179a7db21a59c6bf -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TLocalFilesystemFile.cpp	(.../TLocalFilesystemFile.cpp)	(revision 41383599835bbab64d854eed179a7db21a59c6bf)
+++ src/libchcore/TLocalFilesystemFile.cpp	(.../TLocalFilesystemFile.cpp)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -54,7 +54,7 @@
 		}
 	}
 
-	constexpr DWORD TLocalFilesystemFile::GetFlagsAndAttributes(bool bNoBuffering) const
+	DWORD TLocalFilesystemFile::GetFlagsAndAttributes(bool bNoBuffering) const
 	{
 		return FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_SEQUENTIAL_SCAN | (bNoBuffering ? FILE_FLAG_NO_BUFFERING : 0);
 	}
Index: src/libchcore/TLocalFilesystemFile.h
===================================================================
diff -u -r41383599835bbab64d854eed179a7db21a59c6bf -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/TLocalFilesystemFile.h	(.../TLocalFilesystemFile.h)	(revision 41383599835bbab64d854eed179a7db21a59c6bf)
+++ src/libchcore/TLocalFilesystemFile.h	(.../TLocalFilesystemFile.h)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -55,7 +55,7 @@
 	private:
 		TLocalFilesystemFile(const TSmartPath& pathFile, bool bNoBuffering);
 
-		constexpr DWORD GetFlagsAndAttributes(bool bNoBuffering) const;
+		DWORD GetFlagsAndAttributes(bool bNoBuffering) const;
 
 		void OpenExistingForWriting(bool bNoBuffering);
 
Index: src/libchcore/libchcore.vc140.vcxproj
===================================================================
diff -u -r4d1f8110906889d56552771fb58a6de86bc54a29 -rbfc7a8378a96c5b58def559b343918fca32f05a6
--- src/libchcore/libchcore.vc140.vcxproj	(.../libchcore.vc140.vcxproj)	(revision 4d1f8110906889d56552771fb58a6de86bc54a29)
+++ src/libchcore/libchcore.vc140.vcxproj	(.../libchcore.vc140.vcxproj)	(revision bfc7a8378a96c5b58def559b343918fca32f05a6)
@@ -43,47 +43,47 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Testing Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">