diff --git a/build/build64.cmd b/build/build64.cmd
new file mode 100644
index 0000000..061189e
--- /dev/null
+++ b/build/build64.cmd
@@ -0,0 +1,17 @@
+SET ARCH=X64
+SET SDK=MSVC2013
+SET PG_MAJOR_VERSION=12
+SET PG_PATCH_VERSION=2.1
+SET PRODUCT_NAME=PostgresProEnterprise
+rem SET PRODUCT_NAME=PostgreSQL 1C
+rem SET ONE_C=YES
+rem SET PGURL=http://repo.postgrespro.ru/1c-10-beta/src/postgrespro-1c-10.3.tar.bz2
+rem SET GIT_PATH=https://git.postgrespro.ru/pgpro-dev/postgrespro.git
+rem GIT_BRANCH=PGPROEE12_DEV
+SET PERL5LIB=.
+SET MSBFLAGS=/m
+SET WITHTAPTESTS=1
+SET NOLOAD_SRC=
+rem SET ISDEV=0
+rem SET BUILD_TYPE=dev
+call run.cmd %1
diff --git a/build/helpers/dependencies.cmd b/build/helpers/dependencies.cmd
old mode 100644
new mode 100755
index 39efb08..80f409f
--- a/build/helpers/dependencies.cmd
+++ b/build/helpers/dependencies.cmd
@@ -10,38 +10,176 @@ rm -rf %DEPENDENCIES_SRC_DIR%
MKDIR %DEPENDENCIES_SRC_DIR%
MKDIR %DOWNLOADS_DIR%
+IF %SDK% == MSVC2015 (
+SET WindowsTargetPlatformVersion=%WindowsSDKVersion%
+)
+IF %SDK% == MSVC2017 (
+SET WindowsTargetPlatformVersion=%WindowsSDKVersion%
+)
+IF %SDK% == MSVC2019 (
+SET WindowsTargetPlatformVersion=%WindowsSDKVersion%
+)
+IF %SDK% == MSVC2022 (
+SET WindowsTargetPlatformVersion=%WindowsSDKVersion%
+)
+
+rem GOTO :BUILD_ICONV
+rem GOTO :BUILD_ICU
+if "%PRODUCT_NAME%" == "PostgreSQL" goto :SKIP_ZSTD
+if "%PRODUCT_NAME%" == "PostgresPro" goto :SKIP_ZSTD
+
+
+:ZSTD
+TITLE "Building libzstd"
+IF "%ZSTD_RELEASE%" == "" set ZSTD_RELEASE=1.4.4
+CD /D %DOWNLOADS_DIR%
+rem wget -O zstd-%ZSTD_RELEASE%.zip --no-check-certificate -c https://github.com/facebook/zstd/archive/v%ZSTD_RELEASE%.zip
+
+wget -O zstd-%ZSTD_RELEASE%.tar.gz --no-check-certificate -c http://repo.postgrespro.ru/depends/zstd-%ZSTD_RELEASE%.tar.gz
+rm -rf %DEPENDENCIES_SRC_DIR%/zstd-%ZSTD_RELEASE%
+MKDIR %DEPENDENCIES_SRC_DIR%\zstd-%ZSTD_RELEASE%
+rem 7z x %DOWNLOADS_DIR%\zstd-%ZSTD_RELEASE%.zip
+tar xf zstd-%ZSTD_RELEASE%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+CD %DEPENDENCIES_SRC_DIR%\zstd-%ZSTD_RELEASE%
+
+CD build/VS2010
+msbuild zstd.sln /m /t:Clean,Build /p:Configuration=Release /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+CD ../..
+
+rem Not working on 1.4.4, problem with /p:OutDir: fatal error LNK1181: cannot open input file 'libzstd.lib' for fullbench-dll.vcxproj
+rem call build/VS_Scripts/build.VS%REDIST_YEAR%.cmd || GOTO :ERROR
+
+
+MKDIR %DEPENDENCIES_BIN_DIR%\zstd
+cp lib\zstd.h %DEPENDENCIES_BIN_DIR%\zstd
+MKDIR %DEPENDENCIES_BIN_DIR%\zstd\include
+MKDIR %DEPENDENCIES_BIN_DIR%\zstd\lib
+cp lib\zstd.h %DEPENDENCIES_BIN_DIR%\zstd\include
+if %ARCH% == X86 (
+ cp -va build/VS2010/bin/Win32_Release/libzstd* %DEPENDENCIES_BIN_DIR%\zstd
+ cp -va build/VS2010/bin/Win32_Release/libzstd* %DEPENDENCIES_BIN_DIR%\zstd\lib
+) else (
+ cp -va build/VS2010/bin/x64_Release/libzstd* %DEPENDENCIES_BIN_DIR%\zstd
+ cp -va build/VS2010/bin/x64_Release/libzstd* %DEPENDENCIES_BIN_DIR%\zstd\lib
+)
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\zstd
+
+:SKIP_ZSTD
+
+:LZ4
+TITLE "Building lz4"
+IF "%LZ4_RELEASE%" == "" set LZ4_RELEASE=1.9.3
+CD /D %DOWNLOADS_DIR%
+wget -O lz4-%LZ4_RELEASE%.tar.gz --no-check-certificate -c http://repo.postgrespro.ru/depends/lz4-%LZ4_RELEASE%.tar.gz
+rm -rf %DEPENDENCIES_SRC_DIR%/lz4-%LZ4_RELEASE%
+MKDIR %DEPENDENCIES_SRC_DIR%\lz4-%LZ4_RELEASE%
+tar xf lz4-%LZ4_RELEASE%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+CD %DEPENDENCIES_SRC_DIR%\lz4-%LZ4_RELEASE%
+CD build/VS2017
+SET INCLUDE=%DEPENDENCIES_SRC_DIR%\lz4-%LZ4_RELEASE%\lib;%DEPENDENCIES_SRC_DIR%\lz4-%LZ4_RELEASE%\programs;%INCLUDE%
+rem set UseEnv=true for using INCLUDE variable
+msbuild lz4.sln /m /p:Configuration=Release /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% /p:WindowsTargetPlatformVersion=%WindowsSDKVersion% /p:RunCodeAnalysis=false /p:UseEnv=true || GOTO :ERROR
+CD ../..
+
+MKDIR %DEPENDENCIES_BIN_DIR%\lz4
+MKDIR %DEPENDENCIES_BIN_DIR%\lz4\include
+MKDIR %DEPENDENCIES_BIN_DIR%\lz4\lib
+cp lib/*.h %DEPENDENCIES_BIN_DIR%\lz4\include
+if %ARCH% == X86 (
+ cp -va build/VS2017/bin/Win32_Release/liblz4* %DEPENDENCIES_BIN_DIR%\lz4\lib
+) else (
+ cp -va build/VS2017/bin/x64_Release/liblz4* %DEPENDENCIES_BIN_DIR%\lz4\lib
+)
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\lz4
+
+REM TO-DO: overwrite to build rules
+
+:DOWNLOAD_MSYS_UTILS
+TITLE Download msys utils...
+CD /D %DOWNLOADS_DIR%
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/mingw_min/min_msys_X86.zip -O min_msys_%ARCH%.zip
+
+:BUILD_LESS
+TITLE "Building less"
+CD /D %DOWNLOADS_DIR%
+wget -O less.zip --no-check-certificate -c https://github.com/vbwagner/less/archive/master.zip
+rm -rf %DEPENDENCIES_SRC_DIR%\less-master %DEPENDENCIES_BIN_DIR%\less
+MKDIR %DEPENDENCIES_SRC_DIR%\less-master
+CD /D %DEPENDENCIES_SRC_DIR%
+7z x %DOWNLOADS_DIR%\less.zip
+
+
+CD /D %DEPENDENCIES_SRC_DIR%\less-master
+IF %ARCH% == X86 (
+ nmake -f Makefile.wnm || GOTO :ERROR
+) ELSE (
+ nmake -f Makefile.wnm ARCH=%ARCH%|| GOTO :ERROR
+)
+MKDIR %DEPENDENCIES_BIN_DIR%\less
+cp -va *.exe %DEPENDENCIES_BIN_DIR%\less
+
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\less
+
+:BUILD_WINLIBEDIT
+TITLE Build winlibedit
+CD /D %DOWNLOADS_DIR%
+REM wget --no-check-certificate -c http://downloads.sourceforge.net/project/mingweditline/wineditline-%EDITLINE_VER%.zip
+rem wget --no-check-certificate -c http://repo.l.postgrespro.ru/depends/wineditline-%EDITLINE_VER%.zip
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/wineditline-%EDITLINE_VER%.zip
+CD /D %DEPENDENCIES_SRC_DIR%
+7z x %DOWNLOADS_DIR%\wineditline-%EDITLINE_VER%.zip
+CD /D wineditline-%EDITLINE_VER%\src
+patch -p2 < %ROOT%/patches/wineditline/clipboard_paste.patch || goto :ERROR
+CL -I. /MD -c history.c editline.c fn_complete.c || goto :ERROR
+LIB /out:edit.lib *.obj || goto :ERROR
+MKDIR %DEPENDENCIES_BIN_DIR%\wineditline
+MKDIR %DEPENDENCIES_BIN_DIR%\wineditline\include
+MKDIR %DEPENDENCIES_BIN_DIR%\wineditline\include\editline
+if %ARCH% == X64 (
+ MKDIR %DEPENDENCIES_BIN_DIR%\wineditline\lib64
+ COPY edit.lib %DEPENDENCIES_BIN_DIR%\wineditline\lib64
+) else (
+ MKDIR %DEPENDENCIES_BIN_DIR%\wineditline\lib32
+ COPY edit.lib %DEPENDENCIES_BIN_DIR%\wineditline\lib32
+)
+COPY editline\readline.h %DEPENDENCIES_BIN_DIR%\wineditline\include\editline
+
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\wineditline
+
:BUILD_ICONV
TITLE Building iconv...
CD /D %DOWNLOADS_DIR%
-wget --no-check-certificate -c http://ftp.gnu.org/gnu/libiconv/libiconv-%ICONV_VER%.tar.gz -O libiconv-%ICONV_VER%.tar.gz
+rem wget --no-check-certificate -c http://ftp.gnu.org/gnu/libiconv/libiconv-%ICONV_VER%.tar.gz -O libiconv-%ICONV_VER%.tar.gz
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/libiconv-%ICONV_VER%.tar.gz -O libiconv-%ICONV_VER%.tar.gz
rm -rf %DEPENDENCIES_BIN_DIR%\iconv %DEPENDENCIES_SRC_DIR%\libiconv-*
MKDIR %DEPENDENCIES_BIN_DIR%\iconv
-tar xf libiconv-%ICONV_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
-CD /D %DEPENDENCIES_SRC_DIR%\libiconv-%ICONV_VER%*
+tar xf libiconv-%ICONV_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+CD /D %DEPENDENCIES_SRC_DIR%\libiconv-%ICONV_VER%*
cp -v %ROOT%/patches/libiconv/libiconv-%ICONV_VER%-%SDK%.patch libiconv.patch
+
patch -f -p0 < libiconv.patch || GOTO :ERROR
-IF %ARCH% == X64 msbuild libiconv.vcxproj /m /p:Configuration=Release /p:Platform=x64 /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
-IF %ARCH% == X86 msbuild libiconv.vcxproj /m /p:Configuration=Release /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+
+msbuild libiconv.vcxproj /m /p:Configuration=Release /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+
cp -av include %DEPENDENCIES_BIN_DIR%\iconv || GOTO :ERROR
-cp -av iconv.h %DEPENDENCIES_BIN_DIR%\iconv\include || GOTO :ERROR
-cp -av config.h %DEPENDENCIES_BIN_DIR%\iconv\include || GOTO :ERROR
+cp -av iconv.h %DEPENDENCIES_BIN_DIR%\iconv\include
+cp -av config.h %DEPENDENCIES_BIN_DIR%\iconv\include
MKDIR %DEPENDENCIES_BIN_DIR%\iconv\lib
-cp -av Release*/*.dll %DEPENDENCIES_BIN_DIR%\iconv\lib || GOTO :ERROR
-cp -av Release*/libiconv.dll %DEPENDENCIES_BIN_DIR%\iconv\lib\iconv.dll || GOTO :ERROR
-cp -av Release*/*.lib %DEPENDENCIES_BIN_DIR%\iconv\lib || GOTO :ERROR
-cp -av Release*/libiconv.lib %DEPENDENCIES_BIN_DIR%\iconv\lib\iconv.lib || GOTO :ERROR
+cp -av %Platform%/Release*/*.dll %DEPENDENCIES_BIN_DIR%\iconv\lib || GOTO :ERROR
+cp -av %Platform%/Release*/libiconv.dll %DEPENDENCIES_BIN_DIR%\iconv\lib\iconv.dll || GOTO :ERROR
+cp -av %Platform%/Release*/*.lib %DEPENDENCIES_BIN_DIR%\iconv\lib || GOTO :ERROR
+cp -av %Platform%/Release*/libiconv.lib %DEPENDENCIES_BIN_DIR%\iconv\lib\iconv.lib || GOTO :ERROR
cp -av lib %DEPENDENCIES_BIN_DIR%\iconv\libiconv || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\iconv
-
:BUILD_ZLIB
TITLE Building zlib...
CD /D %DOWNLOADS_DIR%
wget -c http://zlib.net/zlib-%ZLIB_VER%.tar.gz -O zlib-%ZLIB_VER%.tar.gz
-rm -rf "%DEPENDENCIES_BIN_DIR%\zlib %DEPENDENCIES_SRC_DIR%\zlib*
-MKDIR "%DEPENDENCIES_BIN_DIR%\zlib
-tar xf zlib-%ZLIB_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
+rm -rf %DEPENDENCIES_BIN_DIR%\zlib %DEPENDENCIES_SRC_DIR%\zlib*
+MKDIR %DEPENDENCIES_BIN_DIR%\zlib
+tar xf zlib-%ZLIB_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
CD /D %DEPENDENCIES_SRC_DIR%\zlib*
set CL=/MP
nmake -f win32/Makefile.msc || GOTO :ERROR
@@ -57,17 +195,18 @@ CD /D %DOWNLOADS_DIR%
:BUILD_UUID
TITLE Building uuid...
CD /D %DOWNLOADS_DIR%
-wget -c http://netcologne.dl.sourceforge.net/project/osspuuidwin32/src/ossp_uuid_1.6.2_win32_source_120608.7z -O ossp_uuid_1.6.2_win32_source_120608.7z
+rem wget -c http://netcologne.dl.sourceforge.net/project/osspuuidwin32/src/ossp_uuid_1.6.2_win32_source_120608.7z -O ossp_uuid_1.6.2_win32_source_120608.7z
+wget -c http://repo.postgrespro.ru/depends/ossp_uuid_1.6.2_win32_source_120608.7z -O ossp_uuid_1.6.2_win32_source_120608.7z
rm -rf %DEPENDENCIES_BIN_DIR%\uuid %DEPENDENCIES_SRC_DIR%\ossp_uuid
MKDIR %DEPENDENCIES_BIN_DIR%\uuid
7z x %DOWNLOADS_DIR%\ossp_uuid_1.6.2_win32_source_120608.7z -o%DEPENDENCIES_SRC_DIR%\ -y || GOTO :ERROR
CD /D %DEPENDENCIES_SRC_DIR%\ossp_uuid
+patch -p1 < %ROOT%/patches/uuid/oosp_uuid.patch || goto :ERROR
IF %ARCH% == X64 sed -i 's/Win32/x64/g' ossp_uuid.sln || GOTO :ERROR
IF %ARCH% == X64 sed -i 's/Win32/x64/g' ossp_uuid\ossp_uuid.vcxproj || GOTO :ERROR
IF %ARCH% == X64 sed -i 's/Win32/x64/g' example\example.vcxproj || GOTO :ERROR
IF %ARCH% == X64 sed -i 's/Win32/x64/g' uuid_cli\uuid_cli.vcxproj || GOTO :ERROR
-IF %ARCH% == X64 msbuild ossp_uuid.sln /m /p:Configuration=Release /p:Platform=x64 || GOTO :ERROR
-IF %ARCH% == X86 msbuild ossp_uuid.sln /m /p:Configuration=Release || GOTO :ERROR
+msbuild ossp_uuid.sln /m /p:Configuration=Release /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
MKDIR %DEPENDENCIES_BIN_DIR%\uuid\lib
cp -av include %DEPENDENCIES_BIN_DIR%\uuid || GOTO :ERROR
IF %ARCH% == X64 cp -av x64\Release\ossp_uuid.lib %DEPENDENCIES_BIN_DIR%\uuid\lib\uuid.lib || GOTO :ERROR
@@ -79,19 +218,28 @@ CD /D %DOWNLOADS_DIR%
:BUILD_XML
TITLE Building xml...
CD /D %DOWNLOADS_DIR%
-wget -c ftp://xmlsoft.org/libxml2/libxml2-%XML_VER%.tar.gz -O libxml2-%XML_VER%.tar.gz
-rm -rf %DEPENDENCIES_BIN_DIR%\libxml2 %DEPENDENCIES_SRC_DIR%\libxml2-
+REM wget -c ftp://xmlsoft.org/libxml2/libxml2-%XML_VER%.tar.gz -O libxml2-%XML_VER%.tar.gz
+wget -c http://repo.postgrespro.ru/depends/libxml2-v%XML_VER%.tar.gz -O libxml2-%XML_VER%.tar.gz
+rm -rf %DEPENDENCIES_BIN_DIR%\libxml2 %DEPENDENCIES_SRC_DIR%\libxml2-*
MKDIR %DEPENDENCIES_BIN_DIR%\libxml2
-tar xf libxml2-%XML_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
+rem problem with symlink on first tar run : /ambig_name-class.rng: Cannot create symlink to "tutorA.rng"
+tar xf libxml2-%XML_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR%
+tar xf libxml2-%XML_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+CD /D %DEPENDENCIES_SRC_DIR%\libxml2-*
+rem libxml2 2.9.7 doesn't need this patch
+rem patch -f -p1 < %ROOT%/patches/libxml2/libxml2.patch || GOTO :ERROR
CD /D %DEPENDENCIES_SRC_DIR%\libxml2-*\win32
cscript configure.js compiler=msvc include=%DEPENDENCIES_BIN_DIR%\iconv\include lib=%DEPENDENCIES_BIN_DIR%\iconv\lib
sed -i /NOWIN98/d Makefile.msvc
set CL=/MP
nmake /f Makefile.msvc || GOTO :ERROR
nmake /f Makefile.msvc install || GOTO :ERROR
+rem "override old libxml2.dll location with freshly build dll"
+cp bin\libxml2.dll lib || GOTO :ERROR
cp -av bin %DEPENDENCIES_BIN_DIR%\libxml2 || GOTO :ERROR
cp -av lib %DEPENDENCIES_BIN_DIR%\libxml2 || GOTO :ERROR
-cp -av include %DEPENDENCIES_BIN_DIR%\libxml2 || GOTO :ERROR
+MKDIR %DEPENDENCIES_BIN_DIR%\libxml2\include || GOTO :ERROR
+cp -av include\libxml2\libxml %DEPENDENCIES_BIN_DIR%\libxml2\include || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\libxml2 -y
@@ -99,10 +247,18 @@ CD /D %DOWNLOADS_DIR%
:BUILD_XSLT
TITLE Building xslt...
CD /D %DOWNLOADS_DIR%
-wget -c ftp://xmlsoft.org/libxslt/libxslt-%XSLT_VER%.tar.gz -O libxslt-%XSLT_VER%.tar.gz
+REM wget -c ftp://xmlsoft.org/libxslt/libxslt-%XSLT_VER%.tar.gz -O libxslt-%XSLT_VER%.tar.gz
+wget -c http://repo.postgrespro.ru/depends/libxslt-v%XSLT_VER%.tar.gz -O libxslt-%XSLT_VER%.tar.gz
rm -rf %DEPENDENCIES_BIN_DIR%\libxslt %DEPENDENCIES_SRC_DIR%\libxslt-*
MKDIR %DEPENDENCIES_BIN_DIR%\libxslt
-tar xf libxslt-%XSLT_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
+tar xf libxslt-%XSLT_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+
+IF EXIST %ROOT%/patches/libxslt/libxslt-%XSLT_VER%.patch (
+CD /D %DEPENDENCIES_SRC_DIR%\libxslt-%XSLT_VER%*
+cp -v %ROOT%/patches/libxslt/libxslt-%XSLT_VER%.patch libxslt.patch
+patch -f -p1 < libxslt.patch || GOTO :ERROR
+)
+
CD /D %DEPENDENCIES_SRC_DIR%\libxslt-*\win32
cscript configure.js compiler=msvc zlib=yes iconv=yes include=%DEPENDENCIES_BIN_DIR%\iconv\include;%DEPENDENCIES_BIN_DIR%\libxml2\include;%DEPENDENCIES_BIN_DIR%\zlib\include lib=%DEPENDENCIES_BIN_DIR%\iconv\lib;%DEPENDENCIES_BIN_DIR%\libxml2\lib;%DEPENDENCIES_BIN_DIR%\zlib\lib
sed -i /NOWIN98/d Makefile.msvc
@@ -115,21 +271,29 @@ cp -av include %DEPENDENCIES_BIN_DIR%\libxslt || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\libxslt -y
-
:BUILD_OPENSSL
TITLE Building OpenSSL...
CD /D %DOWNLOADS_DIR%
-wget --no-check-certificate -c https://www.openssl.org/source/openssl-%OPENSSL_VER%.tar.gz -O openssl-%OPENSSL_VER%.tar.gz
+rem wget --no-check-certificate -c https://www.openssl.org/source/openssl-%OPENSSL_VER%.tar.gz -O openssl-%OPENSSL_VER%.tar.gz
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/openssl-%OPENSSL_VER%.tar.gz -O openssl-%OPENSSL_VER%.tar.gz
+
rm -rf %DEPENDENCIES_BIN_DIR%\openssl %DEPENDENCIES_SRC_DIR%\openssl-*
MKDIR %DEPENDENCIES_BIN_DIR%\openssl
-tar zxf openssl-%OPENSSL_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR%
+tar zxf openssl-%OPENSSL_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR%
CD /D %DEPENDENCIES_SRC_DIR%\openssl-*
-IF %ARCH% == X86 perl Configure VC-WIN32 no-asm || GOTO :ERROR
-IF %ARCH% == X64 perl Configure VC-WIN64A no-asm || GOTO :ERROR
-IF %ARCH% == X86 call ms\do_ms
-IF %ARCH% == X64 call ms\do_win64a.bat
-set CL=/MP
-nmake -f ms\ntdll.mak || GOTO :ERROR
+IF %ARCH% == X86 perl Configure VC-WIN32 no-asm --prefix=%DEPENDENCIES_BIN_DIR%\openssl\ --openssldir=%DEPENDENCIES_BIN_DIR%\openssldir\ || GOTO :ERROR
+IF %ARCH% == X64 perl Configure VC-WIN64A no-asm --prefix=%DEPENDENCIES_BIN_DIR%\openssl\ --openssldir=%DEPENDENCIES_BIN_DIR%\openssldir\ || GOTO :ERROR
+rem IF %ARCH% == X86 call ms\do_ms
+rem IF %ARCH% == X64 call ms\do_win64a.bat
+rem set CL=/MP
+rem nmake -f ms\ntdll.mak || GOTO :ERROR
+nmake || GOTO :ERROR
+TITLE Installing OpenSSL...
+nmake install || GOTO :ERROR
+CD /D %DOWNLOADS_DIR%
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\openssl -y
+GOTO :BUILD_GETTEXT
+
MKDIR %DEPENDENCIES_BIN_DIR%\openssl\lib
MKDIR %DEPENDENCIES_BIN_DIR%\openssl\include
cp -av out32dll/* %DEPENDENCIES_BIN_DIR%\openssl\lib || GOTO :ERROR
@@ -138,6 +302,9 @@ MKDIR %DEPENDENCIES_BIN_DIR%\openssl\lib\VC
cp -av out32dll/* %DEPENDENCIES_BIN_DIR%\openssl\lib\VC || GOTO :ERROR
cp -v out32dll/ssleay32.lib %DEPENDENCIES_BIN_DIR%\openssl\lib\VC\ssleay32MD.lib || GOTO :ERROR
cp -v out32dll/libeay32.lib %DEPENDENCIES_BIN_DIR%\openssl\lib\VC\libeay32MD.lib || GOTO :ERROR
+MKDIR %DEPENDENCIES_BIN_DIR%\openssl\bin
+cp -av out32dll/openssl.exe %DEPENDENCIES_BIN_DIR%\openssl\bin || GOTO :ERROR
+cp -av out32dll/*32.dll %DEPENDENCIES_BIN_DIR%\openssl\bin || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\openssl -y
@@ -145,15 +312,15 @@ CD /D %DOWNLOADS_DIR%
:BUILD_GETTEXT
TITLE Building gettext...
CD /D %DOWNLOADS_DIR%
-wget --no-check-certificate -c http://ftp.gnu.org/gnu/gettext/gettext-%GETTEXT_VER%.tar.gz -O gettext-%GETTEXT_VER%.tar.gz
+rem wget --no-check-certificate -c http://ftp.gnu.org/gnu/gettext/gettext-%GETTEXT_VER%.tar.gz -O gettext-%GETTEXT_VER%.tar.gz
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/gettext-%GETTEXT_VER%.tar.gz -O gettext-%GETTEXT_VER%.tar.gz
rm -rf %DEPENDENCIES_BIN_DIR%\libintl %DEPENDENCIES_SRC_DIR%\gettext-*
MKDIR %DEPENDENCIES_BIN_DIR%\libintl
-tar xf gettext-%GETTEXT_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
+tar xf gettext-%GETTEXT_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
CD /D %DEPENDENCIES_SRC_DIR%\gettext-*
cp -v %ROOT%/patches/gettext/gettext-%GETTEXT_VER%-%SDK%.patch gettext.patch
patch -f -p0 < gettext.patch || GOTO :ERROR
-IF %ARCH% == X64 msbuild libintl.vcxproj /m /p:Configuration=Release /p:Platform=x64 /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
-IF %ARCH% == X86 msbuild libintl.vcxproj /m /p:Configuration=Release /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+msbuild libintl.vcxproj /m /p:Configuration=Release /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
MKDIR %DEPENDENCIES_BIN_DIR%\libintl\lib %DEPENDENCIES_BIN_DIR%\libintl\include
cp -v Release*/*.dll %DEPENDENCIES_BIN_DIR%\libintl\lib || GOTO :ERROR
cp -v Release*/*.lib %DEPENDENCIES_BIN_DIR%\libintl\lib || GOTO :ERROR
@@ -163,50 +330,61 @@ MKDIR %DEPENDENCIES_BIN_DIR%\libintl\bin
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\libintl -y
-
+rem LIBSSH2 not used for PostgresPro
+GOTO :BUILD_ICU
:BUILD_LIBSSH2
TITLE Building libssh2...
CD /D %DOWNLOADS_DIR%
wget --no-check-certificate -c http://www.libssh2.org/download/libssh2-%LIBSSH2_VER%.tar.gz -O libssh2-%LIBSSH2_VER%.tar.gz
-rm -rf %DEPENDENCIES_BIN_DIR%\libssh2 %DEPENDENCIES_SRC_DIR%/libssh2-*
+rm -rf %DEPENDENCIES_BIN_UDIR%/libssh2 %DEPENDENCIES_SRC_UDIR%/libssh2-*
MKDIR %DEPENDENCIES_BIN_DIR%\libssh2
-tar xf libssh2-%LIBSSH2_VER%.tar.gz -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
-cp -va %DEPENDENCIES_SRC_DIR%/libssh2-*/include %DEPENDENCIES_BIN_DIR%\libssh2\include || GOTO :ERROR
-cp -va %DEPENDENCIES_SRC_DIR%/libssh2-*/win32/libssh2_config.h %DEPENDENCIES_BIN_DIR%\libssh2\include || GOTO :ERROR
+tar xf libssh2-%LIBSSH2_VER%.tar.gz -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
+cp -va %DEPENDENCIES_SRC_UDIR%/libssh2-*/include %DEPENDENCIES_BIN_UDIR%/libssh2/include || GOTO :ERROR
+cp -va %DEPENDENCIES_SRC_UDIR%/libssh2-*/win32/libssh2_config.h %DEPENDENCIES_BIN_UDIR%/libssh2/include || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\libssh2 -y
:BUILD_ICU
TITLE Building icu...
+echo on
CD /D %DOWNLOADS_DIR%
-wget --no-check-certificate -c http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-src.zip -O icu4c-56_1-src.zip
-rm -rf %DEPENDENCIES_BIN_DIR%\icu %DEPENDENCIES_SRC_DIR%\icu
-MKDIR %DEPENDENCIES_BIN_DIR%\icu
-7z x icu4c-56_1-src.zip -o%DEPENDENCIES_SRC_DIR% -y
-CD /D %DEPENDENCIES_SRC_DIR%\icu
-IF %ARCH% == X86 msbuild source\allinone\allinone.sln /m /p:Configuration="Release" /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
-IF %ARCH% == X64 msbuild source\allinone\allinone.sln /m /p:Configuration="Release" /p:Platform=x64 /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+rem wget --no-check-certificate -c https://github.com/unicode-org/icu/releases/download/release-56-2/icu4c-56_2-src.zip -O icu4c-56_2-src.zip
+wget --no-check-certificate -c http://repo.postgrespro.ru/depends/icu4c-%ICU_VER%-src.zip -O icu4c-%ICU_VER%-src.zip
+rm -rf %DEPENDENCIES_BIN_DIR%\icu%ICU_VER% %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%
+MKDIR %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%
+7z x icu4c-%ICU_VER%-src.zip -o%DEPENDENCIES_SRC_DIR% -y
+mv %DEPENDENCIES_SRC_DIR%\icu %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%
+CD /D %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%
+IF %SDK% == MSVC2013 (
+ msbuild source\allinone\allinone.sln /m /p:Configuration="Release" /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% || GOTO :ERROR
+) ELSE (
+ msbuild source\allinone\allinone.sln /m /p:Configuration="Release" /p:Platform=%Platform% /p:PlatformToolset=%PlatformToolset% /p:WindowsTargetPlatformVersion=%WindowsSDKVersion% /p:SkipUWP=true || GOTO :ERROR
+)
+
IF %ARCH% == X64 (
- cp -va %DEPENDENCIES_SRC_DIR%\icu\bin64 %DEPENDENCIES_BIN_DIR%\icu\bin || GOTO :ERROR
- cp -va %DEPENDENCIES_SRC_DIR%\icu\lib64 %DEPENDENCIES_BIN_DIR%\icu\lib || GOTO :ERROR
+ cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\bin64 %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\bin || GOTO :ERROR
+ cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\lib64 %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\lib || GOTO :ERROR
+ cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\lib64 %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\lib64 || GOTO :ERROR
) ELSE (
- cp -va %DEPENDENCIES_SRC_DIR%\icu\bin %DEPENDENCIES_BIN_DIR%\icu\bin || GOTO :ERROR
- cp -va %DEPENDENCIES_SRC_DIR%\icu\lib %DEPENDENCIES_BIN_DIR%\icu\lib || GOTO :ERROR
+ cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\bin %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\bin || GOTO :ERROR
+ cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\lib %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\lib || GOTO :ERROR
)
-cp -va %DEPENDENCIES_SRC_DIR%\icu\include %DEPENDENCIES_BIN_DIR%\icu\include || GOTO :ERROR
+cp -va %DEPENDENCIES_SRC_DIR%\icu%ICU_VER%\include %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%\include || GOTO :ERROR
CD /D %DOWNLOADS_DIR%
-7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\icu
+7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\icu%ICU_VER%
+IF "%ICU_VER%" NEQ "56_2" (
+SET ICU_VER=56_2
+goto :BUILD_ICU
+)
REM If everything is compiled OK go to DONE
GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/genlists.py b/build/helpers/genlists.py
new file mode 100644
index 0000000..f741528
--- /dev/null
+++ b/build/helpers/genlists.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+"""
+This script reads list of glob patterns from files, specified in the
+command-line and generates lists of files for each pattern
+"""
+from __future__ import print_function
+import sys
+import fnmatch
+import os
+import os.path
+
+#pylint: disable=invalid-name
+filelist_name = sys.argv.pop(1)
+if os.path.isdir(filelist_name):
+ # Generate filelist ourselves
+ pwd = os.getcwd()
+ os.chdir(filelist_name)
+ filelist = set()
+ for dirname, subdirlist, files in os.walk("."):
+ dirname = dirname.replace("\\", "/")
+ for f in files:
+ filelist.add(dirname + "/" + f)
+ os.chdir(pwd)
+else:
+ with open(filelist_name, "r") as f:
+ filelist = set(map(lambda x: x.strip(), f.readlines()))
+
+for module in sys.argv[1:]:
+ modname = module[:module.find(".")]
+ print("Processing module ", modname, file=sys.stderr)
+ with open(module, "r") as f:
+ patterns = [x.strip() for x in f.readlines()]
+ for p in patterns:
+ if p.startswith("./bin/") and not p.endswith(".dll"):
+ patterns.append("./share/locale/*/LC_MESSAGES/" +
+ p[6:p.rfind(".")] + "*.mo")
+ found = set()
+ for p in patterns:
+ if p.startswith("#"):
+ continue
+ for f in filelist:
+ if fnmatch.fnmatch(f, p):
+ found.add(f)
+ filelist -= found
+ with open(modname + "_list.nsi", "w") as out:
+ curdir = ""
+ for f in sorted(found):
+ filedir = os.path.dirname(f)
+ if filedir != curdir:
+ print("SetOutPath $INSTDIR" + filedir[1:].replace("/", "\\"),
+ file=out)
+ curdir = filedir
+ print("File ${PG_INS_SOURCE_DIR}" + f[1:].replace("/", "\\"),
+ file=out)
+
+# When all module files are processed:
+if filelist:
+ print("Following unprocessed files found:\n", ", ".join(sorted(filelist)),
+ file=sys.stderr)
+ sys.exit(1)
diff --git a/build/helpers/make_zip.cmd b/build/helpers/make_zip.cmd
index a099687..1df3934 100644
--- a/build/helpers/make_zip.cmd
+++ b/build/helpers/make_zip.cmd
@@ -3,8 +3,8 @@ CALL %ROOT%\build\helpers\setvars.cmd
REM Make ZIP of binaries
TITLE Make PostgreSQL and PgAdmin3 archives
IF %ONE_C% == YES (
- 7z a "c:\pg\installers\postgrespro-1c-%ARCH%-%PG_DEF_VERSION%.zip" "c:\pg\distr_%ARCH%_%PG_DEF_VERSION%\postgresql" || EXIT /b %errorlevel%
+ 7z a "%BUILD_DIR%\installers\postgrespro-1c-%ARCH%-%PG_DEF_VERSION%.zip" "%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\postgresql" || EXIT /b %errorlevel%
) ELSE (
- 7z a "c:\pg\installers\postgresql-%ARCH%-%PG_DEF_VERSION%.zip" "c:\pg\distr_%ARCH%_%PG_DEF_VERSION%\postgresql" || EXIT /b %errorlevel%
+ 7z a "%BUILD_DIR%\installers\postgresql-%ARCH%-%PG_DEF_VERSION%.zip" "%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\postgresql" || EXIT /b %errorlevel%
)
-7z a "c:\pg\installers\pgAdmin3-%ARCH%-%PG_DEF_VERSION%.zip" "c:\pg\distr_%ARCH%_%PG_DEF_VERSION%\pgadmin" || EXIT /b %errorlevel%
+7z a "%BUILD_DIR%\installers\pgAdmin3-%ARCH%-%PG_DEF_VERSION%.zip" "%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\pgadmin" || EXIT /b %errorlevel%
diff --git a/build/helpers/pgadmin.cmd b/build/helpers/pgadmin.cmd
index 7172a4c..566560c 100644
--- a/build/helpers/pgadmin.cmd
+++ b/build/helpers/pgadmin.cmd
@@ -1,8 +1,8 @@
CALL %ROOT%\build\helpers\setvars.cmd
rm -rf %DEPENDENCIES_BIN_DIR%
-IF EXIST %DOWNLOADS_DIR%\deps-SDK71-%ARCH%.zip (
- 7z x %DOWNLOADS_DIR%\deps-SDK71-%ARCH%.zip -o%DEPENDENCIES_BIN_DIR% -y
+IF EXIST %DOWNLOADS_DIR%\deps-%SDK%-%ARCH%.zip (
+ 7z x %DOWNLOADS_DIR%\deps-%SDK%-%ARCH%.zip -o%DEPENDENCIES_BIN_DIR% -y
) ELSE (
ECHO "You need to build PostgreSQL dependencies first!"
EXIT /B 1 || GOTO :ERROR
@@ -24,7 +24,7 @@ CD /D %DOWNLOADS_DIR%
wget --no-check-certificate -c https://sourceforge.net/projects/wxwindows/files/%WXWIDGETS_VER%/wxWidgets-%WXWIDGETS_VER%.tar.bz2 -O wxWidgets-%WXWIDGETS_VER%.tar.bz2
rm -rf %DEPENDENCIES_BIN_DIR%\wxwidgets %DEPENDENCIES_SRC_DIR%\wxWidgets-*
MKDIR %DEPENDENCIES_BIN_DIR%\wxwidgets
-tar xf wxWidgets-%WXWIDGETS_VER%.tar.bz2 -C %DEPENDENCIES_SRC_DIR% || GOTO :ERROR
+tar xf wxWidgets-%WXWIDGETS_VER%.tar.bz2 -C %DEPENDENCIES_SRC_UDIR% || GOTO :ERROR
CD /D %DEPENDENCIES_SRC_DIR%\wxWidgets-*
cp -v %ROOT%/patches/wxWidgets/wxWidgets-%WXWIDGETS_VER%-%SDK%.patch wxWidgets.patch
@@ -60,8 +60,8 @@ IF %SDK% == MSVC2015 (
cp -va %DEPENDENCIES_SRC_DIR%/wxWidgets-3*/lib %DEPENDENCIES_BIN_DIR%\wxwidgets || GOTO :ERROR
cp -va %DEPENDENCIES_SRC_DIR%/wxWidgets-3*/utils %DEPENDENCIES_BIN_DIR%\wxwidgets || GOTO :ERROR
IF %ARCH% == X64 (
- mv -v %DEPENDENCIES_BIN_DIR%/wxwidgets/lib/vc_*dll %DEPENDENCIES_BIN_DIR%\wxwidgets\lib\vc_dll || GOTO :ERROR
- mv -v %DEPENDENCIES_BIN_DIR%/wxwidgets/lib/vc_*lib %DEPENDENCIES_BIN_DIR%\wxwidgets\lib\vc_lib || GOTO :ERROR
+rem mv -v %DEPENDENCIES_BIN_DIR%/wxwidgets/lib/vc_*dll %DEPENDENCIES_BIN_DIR%\wxwidgets\lib\vc_dll || GOTO :ERROR
+rem mv -v %DEPENDENCIES_BIN_DIR%/wxwidgets/lib/vc_*_lib/* %DEPENDENCIES_BIN_DIR%\wxwidgets\lib\vc_lib || GOTO :ERROR
)
cp -va %DEPENDENCIES_SRC_DIR%/wxWidgets-3*/include %DEPENDENCIES_BIN_DIR%\wxwidgets\include || GOTO :ERROR
@@ -86,6 +86,12 @@ IF NOT EXIST libssh2.patch GOTO :DONE_PGADMIN_LIBSSH2_PATCH
patch -f -p0 < libssh2.patch || GOTO :ERROR
:DONE_PGADMIN_LIBSSH2_PATCH
+REM Update RU po
+wget --no-check-certificate -c https://repo.l.postgrespro.ru/depends/pgadmin3-%PGADMIN_VERSION%.po -O i18n/ru_RU/pgadmin3.po
+wget --no-check-certificate -c https://repo.l.postgrespro.ru/depends/pgadmin3-%PGADMIN_VERSION%-ru_RU.tar.bz2 -O docs/ru_RU.tar.bz2
+tar xf docs/ru_RU.tar.bz2 -C docs || GOTO :ERROR
+rm -f docs/ru_RU.tar.bz2
+
IF %ARCH% == X64 sed -i 's/Win32/x64/g' xtra\png2c\png2c.vcxproj
IF %ARCH% == X64 sed -i 's/Win32/x64/g' pgadmin\pgAdmin3.vcxproj
sed -i "//,/<\/Bscmake>/d" pgadmin\pgAdmin3.vcxproj
@@ -101,8 +107,8 @@ REM msbuild docs/Docs.vcxproj /m /p:Configuration="All" /p:Platform="Win32" || G
rm -rf %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin
MKDIR %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\bin %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\lib
cp -va pgadmin/Release*/*.exe %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\bin || GOTO :ERROR
-cp -va i18n c:/pg/distr_%ARCH%_%PGVER%/pgadmin/bin || GOTO :ERROR
-cp -va c:/pg/distr_%ARCH%_%PGVER%/postgresql/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\bin || GOTO :ERROR
+cp -va i18n %BUILD_DIR%/distr_%ARCH%_%PGVER%/pgadmin/bin || GOTO :ERROR
+cp -va %BUILD_DIR%/distr_%ARCH%_%PGVER%/postgresql/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\bin || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/wxwidgets/lib/vc_dll/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\pgadmin\bin || GOTO :ERROR
@@ -110,9 +116,7 @@ GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/pgadmin_installer.cmd b/build/helpers/pgadmin_installer.cmd
index e06ba83..dbb982d 100644
--- a/build/helpers/pgadmin_installer.cmd
+++ b/build/helpers/pgadmin_installer.cmd
@@ -10,13 +10,13 @@ REM 6. 7z for making ZIP files
REM Download VC Redistibutable packages
TITLE Downloading VC Redistibutable packages
-MKDIR "c:\pg\vcredist"
+MKDIR "%BUILD_DIR%\vcredist"
-wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe -O "c:\pg\vcredist\vcredist_x86_2015.exe" || GOTO :ERROR
-wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe -O "c:\pg\vcredist\vcredist_x64_2015.exe" || GOTO :ERROR
+wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe -O "%BUILD_DIR%\vcredist\vcredist_x86_2015.exe" || GOTO :ERROR
+wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe -O "%BUILD_DIR%\vcredist\vcredist_x64_2015.exe" || GOTO :ERROR
REM Make directory for installers
-MKDIR "c:\pg\installers"
+MKDIR "%BUILD_DIR%\installers"
TITLE Making NSIS installers
call %ROOT%\build\helpers\pgadmin_nsis_installer.cmd || GOTO :ERROR
@@ -25,9 +25,7 @@ GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/pgadmin_nsis_installer.cmd b/build/helpers/pgadmin_nsis_installer.cmd
index 2992019..3c253c8 100644
--- a/build/helpers/pgadmin_nsis_installer.cmd
+++ b/build/helpers/pgadmin_nsis_installer.cmd
@@ -19,7 +19,7 @@ SET ADMIN_DEF_VERSION="%PGADMIN_VERSION%"
SET PRODUCT_DIR_REGKEY="Software\%COMPANY_NAME%\%PRODUCT_NAME%\%PGADMIN_VERSION%"
SET ADMIN_REG_KEY="SOFTWARE\%COMPANY_NAME%\%PRODUCT_NAME%\%PGADMIN_VERSION%\Installations\"
SET ADMIN_INS_SUFFIX="%ARCH%bit_Setup.exe"
-SET ADMIN_INS_SOURCE_DIR="C:\pg\distr_%ARCH%_%PG_DEF_VERSION%\pgadmin\*.*"
+SET ADMIN_INS_SOURCE_DIR="%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\pgadmin\*.*"
>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define PRODUCT_NAME "%PRODUCT_NAME%"
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define PRODUCT_VERSION "%PGADMIN_VERSION%"
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define PRODUCT_PUBLISHER %PRODUCT_PUBLISHER%
@@ -31,20 +31,19 @@ SET ADMIN_INS_SOURCE_DIR="C:\pg\distr_%ARCH%_%PG_DEF_VERSION%\pgadmin\*.*"
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define ADMIN_INS_SUFFIX %ADMIN_INS_SUFFIX%
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define ADMIN_INS_SOURCE_DIR %ADMIN_INS_SOURCE_DIR%
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define REDIST_YEAR %REDIST_YEAR%
+>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define BUILD_DIR %BUILD_DIR%
IF "%ARCH%" == "X64" (
>>%NSIS_RES_DIR%\pgadmin.def.nsh ECHO !define Admin64
)
-CD %NSIS_RES_DIR% || GOTO :ERROR
+CD /D %NSIS_RES_DIR% || GOTO :ERROR
makensis pgadmin.nsi || GOTO :ERROR
GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/pgbouncer.cmd b/build/helpers/pgbouncer.cmd
index 9adb23e..0573dc6 100644
--- a/build/helpers/pgbouncer.cmd
+++ b/build/helpers/pgbouncer.cmd
@@ -27,9 +27,7 @@ GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/pgodbc.cmd b/build/helpers/pgodbc.cmd
new file mode 100644
index 0000000..86c32a7
--- /dev/null
+++ b/build/helpers/pgodbc.cmd
@@ -0,0 +1,38 @@
+CALL %ROOT%\build\helpers\setvars.cmd
+
+IF EXIST %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql (
+ ECHO "PostgreSQL version %PGVER% already build"
+) ELSE (
+ IF EXIST %DOWNLOADS_DIR%\pgsql_%ARCH%_%PGVER%.zip (
+ 7z x %DOWNLOADS_DIR%\pgsql_%ARCH%_%PGVER%.zip -o%BUILD_DIR%\distr_%ARCH%_%PGVER% -y
+ ) ELSE (
+ ECHO "You need to build PostgreSQL first!"
+ EXIT /B 1 || GOTO :ERROR
+ )
+)
+
+:BUILD_PGODBC
+TITLE Building PgODBC...
+CD /D %DOWNLOADS_DIR%
+wget --no-check-certificate -c https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-%PG_ODBC_VERSION%.tar.gz
+rm -rf %BUILD_DIR%\pgodbc
+MKDIR %BUILD_DIR%\pgodbc
+tar xf psqlodbc-%PG_ODBC_VERSION%.tar.gz -C %BUILD_UDIR%/pgodbc
+CD /D %BUILD_DIR%\pgodbc\psqlodbc-%PG_ODBC_VERSION%
+
+>>windows-local.mak ECHO PG_INC=%BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include
+>>windows-local.mak ECHO PG_LIB=%BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib
+>>windows-local.mak ECHO TARGET_CPU=%ARCH%
+
+nmake -f win64.mak || GOTO :ERROR
+
+GOTO :DONE
+
+:ERROR
+ECHO Failed with error #%errorlevel%.
+PAUSE
+EXIT /b %errorlevel%
+
+:DONE
+ECHO Done.
+PAUSE
diff --git a/build/helpers/pgodbc_nsis_installer.cmd b/build/helpers/pgodbc_nsis_installer.cmd
new file mode 100644
index 0000000..9034846
--- /dev/null
+++ b/build/helpers/pgodbc_nsis_installer.cmd
@@ -0,0 +1,56 @@
+CALL %ROOT%\build\helpers\setvars.cmd
+
+REM ----------------------------------------------------------------------------
+REM Assume, you have your PostgreSQL build in C:\pg\distr_X.._9.6...
+REM For PostgreSQL you have 'postgresql' directory and
+REM for psqlODBC you have 'C:\pg\pgodbc\psqlodbc-%VERSION%' directory
+REM ----------------------------------------------------------------------------
+
+SET PRODUCT_PUBLISHER="Postgres Professional Russia"
+SET COMPANY_NAME=PostgresPro
+SET PRODUCT_WEB_SITE="http://postgrespro.ru"
+
+SET NSIS_RES_DIR=%~dp0
+SET NSIS_RES_DIR=%NSIS_RES_DIR:~0,-1%
+SET NSIS_RES_DIR=%NSIS_RES_DIR%\..\..\nsis
+
+REM psqlODBC Section
+SET PRODUCT_NAME=psqlODBC
+SET ADMIN_DEF_BRANDING="%PRODUCT_NAME% %PG_ODBC_VERSION%"
+SET ADMIN_DEF_VERSION="%PG_ODBC_VERSION%"
+SET PRODUCT_DIR_REGKEY="Software\%COMPANY_NAME%\%PRODUCT_NAME%\%PG_ODBC_VERSION%"
+SET ADMIN_REG_KEY="SOFTWARE\%COMPANY_NAME%\%PRODUCT_NAME%\%PG_ODBC_VERSION%\Installations\"
+SET ADMIN_INS_SUFFIX="%ARCH%bit_Setup.exe"
+SET ADMIN_INS_SOURCE_DIR="%BUILD_DIR%\pgodbc\psqlodbc-%PG_ODBC_VERSION%\%ARCH%_Unicode_Release\"
+SET PG_INS_SOURCE_DIR="%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\postgresql\"
+
+>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PRODUCT_NAME "%PRODUCT_NAME%"
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PRODUCT_VERSION "%PG_ODBC_VERSION%"
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PRODUCT_PUBLISHER %PRODUCT_PUBLISHER%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PRODUCT_WEB_SITE %PRODUCT_WEB_SITE%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PRODUCT_DIR_REGKEY %PRODUCT_DIR_REGKEY%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define ADMIN_REG_KEY %ADMIN_REG_KEY%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define ADMIN_DEF_VERSION %ADMIN_DEF_VERSION%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define ADMIN_DEF_BRANDING %ADMIN_DEF_BRANDING%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define ADMIN_INS_SUFFIX %ADMIN_INS_SUFFIX%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define ADMIN_INS_SOURCE_DIR %ADMIN_INS_SOURCE_DIR%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define REDIST_YEAR %REDIST_YEAR%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define BUILD_DIR %BUILD_DIR%
+>>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define PG_INS_SOURCE_DIR %PG_INS_SOURCE_DIR%
+IF "%ARCH%" == "X64" (
+ >>%NSIS_RES_DIR%\pgodbc.def.nsh ECHO !define Admin64
+)
+
+CD %NSIS_RES_DIR% || GOTO :ERROR
+makensis pgodbc.nsi || GOTO :ERROR
+
+GOTO :DONE
+
+:ERROR
+ECHO Failed with error #%errorlevel%.
+PAUSE
+EXIT /b %errorlevel%
+
+:DONE
+ECHO Done.
+PAUSE
diff --git a/build/helpers/postgres.cmd b/build/helpers/postgres.cmd
old mode 100644
new mode 100755
index 99671e9..17cb964
--- a/build/helpers/postgres.cmd
+++ b/build/helpers/postgres.cmd
@@ -1,25 +1,45 @@
CALL %ROOT%\build\helpers\setvars.cmd
-
IF EXIST %DOWNLOADS_DIR%\%DEPS_ZIP% (
7z x %DOWNLOADS_DIR%\%DEPS_ZIP% -o%DEPENDENCIES_BIN_DIR% -y
REM Go to last build
GOTO :BUILD_ALL
) ELSE (
ECHO "You need to build dependencies first!"
- EXIT /B 1 || GOTO :ERROR
+ GOTO :ERROR
)
:BUILD_ALL
+IF NOT "%NOLOAD_SRC%"=="" (
+CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR
+GOTO :NOLOAD
+)
+
+
:BUILD_POSTGRESQL
TITLE Building PostgreSQL...
CD /D %DOWNLOADS_DIR%
+IF "%GIT_PATH%"=="" (
+SET GIT_PATH=git://git.postgresql.org/git/postgresql.git
+)
+
+IF NOT "%GIT_BRANCH%"=="" (
+rm -rf %BUILD_DIR%\postgresql
+MKDIR %BUILD_DIR%\postgresql
+MKDIR %BUILD_DIR%\postgresql\postgresql-%PGVER%
+git clone -b %GIT_BRANCH% %GIT_PATH% %BUILD_DIR%\postgresql\postgresql-%PGVER%
+rem --depth 1 to save traffic
+CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR
+GOTO :NOTAR
+)
+
wget --no-check-certificate %PGURL% -O postgresql-%PGVER%.tar.bz2 || GOTO :ERROR
rm -rf %BUILD_DIR%\postgresql
MKDIR %BUILD_DIR%\postgresql
-tar xf postgresql-%PGVER%.tar.bz2 -C %BUILD_DIR%\postgresql
-CD /D %BUILD_DIR%\postgresql\*%PGVER%*
+%MSYS2_PATH%\tar xf postgres*-%PGVER%.tar.bz2 -C %BUILD_UDIR%/postgresql || GOTO :ERROR
+CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR
+:NOTAR
IF %ONE_C% == YES (
cp -va %ROOT%/patches/postgresql/%PGVER%/series.for1c .
IF NOT EXIST series.for1c GOTO :ERROR
@@ -30,15 +50,38 @@ IF %ONE_C% == YES (
)
)
-cp -va %ROOT%/patches/postgresql/%PGVER%/series .
-IF NOT EXIST series GOTO :DONE_POSTGRESQL_PATCH
-FOR /F %%I IN (series) do (
- ECHO %%I
- cp -va %ROOT%/patches/postgresql/%PGVER%/%%I .
- patch -p1 < %%I || GOTO :ERROR
+if "%PRODUCT_NAME%" == "PostgreSQL" (
+ cp -va %ROOT%/patches/postgresql/%PG_MAJOR_VERSION%/series .
+ IF NOT EXIST series GOTO :DONE_POSTGRESQL_PATCH
+ FOR /F %%I IN (series) do (
+ ECHO %%I
+ cp -va %ROOT%/patches/postgresql/%PG_MAJOR_VERSION%/%%I .
+ patch -p1 < %%I || GOTO :ERROR
+ )
)
:DONE_POSTGRESQL_PATCH
+IF "%SDK%" == "MSVC2017" (
+ cp -va %ROOT%/patches/postgresql/2017.patch .
+ rem patch -p1 < 2017.patch || GOTO :ERROR
+
+ rem cp -va %ROOT%/patches/postgresql/perl.5.30.patch .
+ rem patch -p1 < perl.5.30.patch || GOTO :ERROR
+
+)
+
+IF "%SDK%" == "MSVC2019" (
+ cp -va %ROOT%/patches/postgresql/2017.patch .
+ rem patch -p1 < 2017.patch || GOTO :ERROR
+
+ rem cp -va %ROOT%/patches/postgresql/perl.5.30.patch .
+ rem patch -p1 < perl.5.30.patch || GOTO :ERROR
+
+)
+
+IF "%PG_MAJOR_VERSION%" LSS "13" SET ICU_VER=56_2
+IF "%PG_MAJOR_VERSION%" == "9.6" SET ICU_VER=56_2
+
>src\tools\msvc\config.pl ECHO use strict;
>>src\tools\msvc\config.pl ECHO use warnings;
>>src\tools\msvc\config.pl ECHO our $config = {
@@ -52,8 +95,14 @@ FOR /F %%I IN (series) do (
>>src\tools\msvc\config.pl ECHO ldap ^=^> 1,
>>src\tools\msvc\config.pl ECHO nls ^=^> '%DEPENDENCIES_BIN_DIR%\libintl',
>>src\tools\msvc\config.pl ECHO tcl ^=^> undef,
-IF %ARCH% == X64 (>>src\tools\msvc\config.pl ECHO perl ^=^> '%PERL64_PATH%', )
+IF %SDK% == SDK71 GOTO :DISABLE_PERL
+rem IF %ARCH% == X86 GOTO :DISABLE_PERL
IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO perl ^=^> '%PERL32_PATH%', )
+IF %ARCH% == X64 (>>src\tools\msvc\config.pl ECHO perl ^=^> '%PERL64_PATH%', )
+GOTO :PERL_CONF_DONE
+:DISABLE_PERL
+IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO perl ^=^> undef, )
+:PERL_CONF_DONE
IF %ARCH% == X64 (>>src\tools\msvc\config.pl ECHO python ^=^> '%PYTHON64_PATH%', )
IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO python ^=^> '%PYTHON32_PATH%', )
>>src\tools\msvc\config.pl ECHO openssl ^=^> '%DEPENDENCIES_BIN_DIR%\openssl',
@@ -62,40 +111,90 @@ IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO python ^=^> '%PYTHON32_PATH%'
>>src\tools\msvc\config.pl ECHO xslt ^=^> '%DEPENDENCIES_BIN_DIR%\libxslt',
>>src\tools\msvc\config.pl ECHO iconv ^=^> '%DEPENDENCIES_BIN_DIR%\iconv',
>>src\tools\msvc\config.pl ECHO zlib ^=^> '%DEPENDENCIES_BIN_DIR%\zlib',
->>src\tools\msvc\config.pl ECHO icu ^=^> '%DEPENDENCIES_BIN_DIR%\icu'
+if "%PRODUCT_NAME%" == "PostgresProEnterprise" >>src\tools\msvc\config.pl ECHO zstd ^=^> '%DEPENDENCIES_BIN_DIR%\zstd',
+if "%PRODUCT_NAME%" == "PostgresProEnterprise" >>src\tools\msvc\config.pl ECHO lz4 ^=^> '%DEPENDENCIES_BIN_DIR%\lz4',
+>>src\tools\msvc\config.pl ECHO icu ^=^> '%DEPENDENCIES_BIN_DIR%\icu%ICU_VER%',
+IF "%WITHTAPTESTS%" == "1" >>src\tools\msvc\config.pl ECHO tap_tests ^=^> 1,
+>>src\tools\msvc\config.pl ECHO libedit ^=^> '%DEPENDENCIES_BIN_DIR%\wineditline'
+
>>src\tools\msvc\config.pl ECHO ^};
>>src\tools\msvc\config.pl ECHO 1^;
+rem Setting pager
+>>src\include\pg_config.h.win32 ECHO #define DEFAULT_PAGER "less -XE"
+
+
+
IF %ONE_C% == YES (
mv -v contrib\fulleq\fulleq.sql.in.in contrib\fulleq\fulleq.sql.in || GOTO :ERROR
+rem With PostgresPro we'll use ICU libraries without copiing them
+rem cp -va %DEPENDENCIES_BIN_DIR%/icu/include/* src\include\ || GOTO :ERROR
+rem cp -va %DEPENDENCIES_BIN_DIR%/icu/lib/* . || GOTO :ERROR
+
)
+:NOLOAD
+IF %ARCH% == X86 SET PERL5LIB=%PERL32_PATH%\lib;src\tools\msvc;.
+IF %ARCH% == X64 SET PERL5LIB=%PERL64_PATH%\lib;src\tools\msvc;.
-cp -va %DEPENDENCIES_BIN_DIR%/icu/include/* src\include\ || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/icu/lib/* . || GOTO :ERROR
+rem CD /D %BUILD_DIR%\postgresql\*%PGVER%*\src\tools\msvc || GOTO :ERROR
+rem %PERL_EXE% build.pl || GOTO :ERROR
+%PERL_EXE% src\tools\msvc\build.pl || GOTO :ERROR
+CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR
+IF EXIST contrib\pg_probackup\gen_probackup_project.pl %PERL_EXE% contrib\pg_probackup\gen_probackup_project.pl || GOTO :ERROR
-perl src\tools\msvc\build.pl || GOTO :ERROR
-IF %ARCH% == X86 SET PERL5LIB=%PERL32_PATH%\lib;src\tools\msvc
-IF %ARCH% == X64 SET PERL5LIB=%PERL64_PATH%\lib;src\tools\msvc
rm -rf %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql
MKDIR %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql
-CD %BUILD_DIR%\postgresql\*%PGVER%*\src\tools\msvc
+CD /D %BUILD_DIR%\postgresql\*%PGVER%*\src\tools\msvc
+
+
+rem We need ICONV and LibIntl DLLS available during install for ZIC to work
+rem no need to copy them, just add to PATH
+PATH %PATH%;%DEPENDENCIES_BIN_DIR%\libintl\lib;%DEPENDENCIES_BIN_DIR%\iconv\lib
+%PERL_EXE% install.pl %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql || GOTO :ERROR
+
+REM remove test_* extensions after install
+rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/share/extension/test_* || GOTO :ERROR
+rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/lib/test_* || GOTO :ERROR
+rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/symbols/test_* || GOTO :ERROR
+
+REM remove python3 extensions
+rem rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/share/extension/*python3* || GOTO :ERROR
+rem rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/lib/*python3* || GOTO :ERROR
-REM xcopy /Y %DEPENDENCIES_BIN_DIR%\libintl\lib\*.dll %BUILD_DIR%\postgresql\*%PGVER%*\ || GOTO :ERROR
-REM xcopy /Y %DEPENDENCIES_BIN_DIR%\iconv\lib\*.dll %BUILD_DIR%\postgresql\*%PGVER%*\ || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%\libintl\lib\libintl.dll %BUILD_DIR%\postgresql\postgresql-%PGVER%\ || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%\iconv\lib\libiconv.dll %BUILD_DIR%\postgresql\postgresql-%PGVER%\ || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%\iconv\lib\iconv.dll %BUILD_DIR%\postgresql\postgresql-%PGVER%\ || GOTO :ERROR
+REM remove test binaries
+rm -f %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/bin/test_plan_lru.exe || GOTO :ERROR
+
+IF EXIST ..\..\..\doc\buildinfo.txt COPY ..\..\..\doc\buildinfo.txt %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\doc
+rem now actually copy DLLs of dependencies into our bindir
+
+SET DEPENDENCIES_BIN_DIR=%DEPENDENCIES_BIN_DIR:\=/%
+
+rem SET PRO_BACKUP=%BUILD_DIR%\postgresql\*%PGVER%*\Release\pg_probackup\pg_probackup.exe
+rem SET PRO_BACKUP=%PRO_BACKUP:\=/%
+
+rem cp -va %PRO_BACKUP% %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin
-perl install.pl %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/libintl/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/libintl/lib/*.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/iconv/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/libxml2/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/libxslt/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/VC/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/zlib/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-cp -va %DEPENDENCIES_BIN_DIR%/icu/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/libxml2/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/libxslt/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin
+cp -va %DEPENDENCIES_BIN_DIR%/libxslt/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
-REM Copy libraries headers to "include" directory for a God sake
+rem cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/VC/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+rem cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/VC/openssl.exe %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/openssl/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/openssl/bin/openssl.exe %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+
+cp -va %DEPENDENCIES_BIN_DIR%/zlib/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+if "%PRODUCT_NAME%" == "PostgresProEnterprise" cp -va %DEPENDENCIES_BIN_DIR%/zstd/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+if "%PRODUCT_NAME%" == "PostgresProEnterprise" cp -va %DEPENDENCIES_BIN_DIR%/lz4/lib/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/icu%ICU_VER%/bin/*.dll %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+REM Copy needed executables
+rem cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/VC/openssl.exe %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/less/*.exe %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin || GOTO :ERROR
+
+REM Copy libraries headers to "include" directory for a God sake
cp -va %DEPENDENCIES_BIN_DIR%/libintl/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/iconv/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/libxml2/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
@@ -103,19 +202,54 @@ cp -va %DEPENDENCIES_BIN_DIR%/libxslt/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER
cp -va %DEPENDENCIES_BIN_DIR%/openssl/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/zlib/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
cp -va %DEPENDENCIES_BIN_DIR%/uuid/include/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\include || GOTO :ERROR
-
-CD %BUILD_DIR%\postgresql\*%PGVER%*\doc\src\sgml
-cp -va html/* %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\doc
-
+REM Copy import libraries to "lib' directory
+cp -va %DEPENDENCIES_BIN_DIR%/libintl/lib/*.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/iconv/lib/*.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/libxml2/lib/libxml2.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/libxslt/lib/*t.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+rem cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/VC/*eay32.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/libssl.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/openssl/lib/libcrypto.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/zlib/lib/zdll.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+cp -va %DEPENDENCIES_BIN_DIR%/uuid/lib/uuid.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib || GOTO :ERROR
+
+cp -va %BUILD_DIR%/postgresql/*%PGVER%*/Release/libpgfeutils/libpgfeutils.lib %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\lib
+
+rem Copy msys shell and sed
+CD /D %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\bin
+if exist pgpro_upgrade 7z x %DOWNLOADS_DIR%\min_msys_%ARCH%.zip
+
+SET WGET=wget -N --no-check-certificate
+
+rem download help sources
+CD /D %DOWNLOADS_DIR%
+rem SET DOCURL=http://localrepo.l.postgrespro.ru/%BUILD_TYPE%/doc
+rem cut tar.bz2 extension from PGURL
+SET HELPURL=%PGURL:~0,-8%
+%WGET% -O help-sources-en.zip %HELPURL%.help.en.zip || GOTO :ERROR
+%WGET% -O help-sources-ru.zip %HELPURL%.help.ru.zip || GOTO :ERROR
+
+rem building help files
+CD /D %BUILD_DIR%\postgresql
+mkdir help-ru
+mkdir help-en
+CD help-ru
+7z x %DOWNLOADS_DIR%\help-sources-ru.zip
+CD help-ru
+"C:\Program Files (x86)\HTML Help Workshop\hhc" htmlhelp.hhp
+cp htmlhelp.chm %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\doc\postgresql-ru.chm
+CD ..\help-en
+7z x %DOWNLOADS_DIR%\help-sources-en.zip
+CD help-en
+"C:\Program Files (x86)\HTML Help Workshop\hhc" htmlhelp.hhp
+cp htmlhelp.chm %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql\doc\postgresql-en.chm
7z a -r %DOWNLOADS_DIR%\pgsql_%ARCH%_%PGVER%.zip %BUILD_DIR%\distr_%ARCH%_%PGVER%\postgresql
GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/postgres_installer.cmd b/build/helpers/postgres_installer.cmd
index 23bd390..c442b45 100644
--- a/build/helpers/postgres_installer.cmd
+++ b/build/helpers/postgres_installer.cmd
@@ -10,13 +10,42 @@ REM 6. 7z for making ZIP files
REM Download VC Redistibutable packages
TITLE Downloading VC Redistibutable packages
-MKDIR "c:\pg\vcredist"
-
-wget -c https://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe -O "c:\pg\vcredist\vcredist_x86_2010.exe" || GOTO :ERROR
-wget -c https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe -O "c:\pg\vcredist\vcredist_x64_2010.exe" || GOTO :ERROR
+MKDIR "%BUILD_DIR%\vcredist"
+IF %REDIST_YEAR% == 2010 (
+wget -c https://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe -O "%BUILD_DIR%\vcredist\vcredist_x86_2010.exe" || GOTO :ERROR
+wget -c https://download.microsoft.com/download/3/2/2/3224B87F-CFA0-4E70-BDA3-3DE650EFEBA5/vcredist_x64.exe -O "%BUILD_DIR%\vcredist\vcredist_x64_2010.exe" || GOTO :ERROR
+)
+
+IF %REDIST_YEAR% == 2013 (
+wget -c https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe -O "%BUILD_DIR%\vcredist\vcredist_x86_2013.exe" || GOTO :ERROR
+wget -c https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe -O "%BUILD_DIR%\vcredist\vcredist_x64_2013.exe" || GOTO :ERROR
+)
+
+IF %REDIST_YEAR% == 2015 (
+wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe -O "%BUILD_DIR%\vcredist\vcredist_x86_2015.exe" || GOTO :ERROR
+wget -c https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe -O "%BUILD_DIR%\vcredist\vcredist_x64_2015.exe" || GOTO :ERROR
+)
+
+IF %REDIST_YEAR% == 2017 (
+rem wget -c https://download.visualstudio.microsoft.com/download/pr/11100229/78c1e864d806e36f6035d80a0e80399e/VC_redist.x86.exe -O "%BUILD_DIR%\vcredist\vcredist_x86_2017.exe" || GOTO :ERROR
+rem wget -c https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe -O "%BUILD_DIR%\vcredist\vcredist_x64_2017.exe" || GOTO :ERROR
+rem VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\
+cp "%VCToolsRedistDir%vc_redist.x86.exe" "%BUILD_DIR%\vcredist\vcredist_x86_2017.exe"
+cp "%VCToolsRedistDir%vc_redist.x64.exe" "%BUILD_DIR%\vcredist\vcredist_x64_2017.exe"
+)
+
+IF %REDIST_YEAR% == 2019 (
+cp "%VCToolsRedistDir%vc_redist.x86.exe" "%BUILD_DIR%\vcredist\vcredist_x86_2019.exe"
+cp "%VCToolsRedistDir%vc_redist.x64.exe" "%BUILD_DIR%\vcredist\vcredist_x64_2019.exe"
+)
+
+IF %REDIST_YEAR% == 2022 (
+cp "%VCToolsRedistDir%vc_redist.x86.exe" "%BUILD_DIR%\vcredist\vcredist_x86_2022.exe"
+cp "%VCToolsRedistDir%vc_redist.x64.exe" "%BUILD_DIR%\vcredist\vcredist_x64_2022.exe"
+)
REM Make directory for installers
-MKDIR "c:\pg\installers"
+MKDIR "%BUILD_DIR%\installers"
TITLE Making NSIS installers
call %ROOT%\build\helpers\postgres_nsis_installer.cmd || GOTO :ERROR
@@ -25,9 +54,7 @@ GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/postgres_nsis_installer.cmd b/build/helpers/postgres_nsis_installer.cmd
old mode 100644
new mode 100755
index 3ee8220..e95d433
--- a/build/helpers/postgres_nsis_installer.cmd
+++ b/build/helpers/postgres_nsis_installer.cmd
@@ -1,5 +1,5 @@
REM ----------------------------------------------------------------------------
-REM Assume, you have your PostgreSQL and PgAdmin3 build in C:\pg\distr_X.._9.4...
+REM Assume, you have your PostgreSQL and PgAdmin3 build in %BUILD_DIR%\distr_X.._9.4...
REM For PostgreSQL you have 'postgresql' directory and
REM for PgAdmin3 you have 'pgadmin' directory
REM ----------------------------------------------------------------------------
@@ -12,29 +12,61 @@ SET PRODUCT_PUBLISHER="Postgres Professional Russia"
SET COMPANY_NAME=PostgresPro
SET PRODUCT_WEB_SITE="http://postgrespro.ru"
+IF "%PRODUCT_NAME%" == "" SET PRODUCT_NAME=PostgresPro
+
+SET PRODUCT_DIR_REGKEY=SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%
+SET PREV_PRODUCT_DIR_REGKEY=SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_PREV_MAJOR_VERSION%
+REM The OLD_* variables used for upgrade from old installers, which was built without PRODUCT_NAME.
+SET OLD_PRODUCT_DIR_REGKEY=SOFTWARE\%COMPANY_NAME%\%ARCH%\%PG_MAJOR_VERSION%
+SET OLD_PREV_PRODUCT_DIR_REGKEY=SOFTWARE\%COMPANY_NAME%\%ARCH%\%PG_PREV_MAJOR_VERSION%
+
+IF %ARCH% == X86 (
+ SET BITS=32bit
+) else (
+ SET BITS=64bit
+)
+
+REM Set Service-Id
+SET PG_DEF_SERVICEID="postgresql-%ARCH%-%PG_MAJOR_VERSION%"
+IF "%PRODUCT_NAME%" == "PostgreSQL" (
+ SET PG_DEF_SERVICEID="postgresql-%ARCH%-%PG_MAJOR_VERSION%"
+ IF %BITS%==32bit SET PG_DEF_SERVICEID=postgresql-%PG_MAJOR_VERSION%-%BITS%
+)
+IF "%PRODUCT_NAME%" == "PostgresPro" SET PG_DEF_SERVICEID="postgrespro-%ARCH%-%PG_MAJOR_VERSION%"
+IF "%PRODUCT_NAME%" == "PostgresProEnterprise" SET PG_DEF_SERVICEID="postgrespro-enterprise-%ARCH%-%PG_MAJOR_VERSION%"
+
+
IF %ONE_C% == YES (
- SET PRODUCT_NAME=PostgresPro 1C
- SET PG_DEF_SERVICEID="postgrespro-1C-${PRODUCT_VERSION}"
+ SET PRODUCT_NAME=PostgreSQL 1C
+ rem SET PG_DEF_SERVICEID="postgrespro-1C-${PRODUCT_VERSION}"
+ IF %BITS%==32bit SET PG_DEF_SERVICEID=postgresql-1c-%PG_MAJOR_VERSION%-%BITS%
+ IF %BITS%==64bit SET PG_DEF_SERVICEID=postgresql-1c-%PG_MAJOR_VERSION%
SET PG_INS_SUFFIX="%ARCH%bit_1C_Setup.exe"
SET PG_REG_KEY="Software\Postgres Professional\${PRODUCT_NAME}\Installations\postgresql-${PRODUCT_VERSION}"
SET PG_REG_SERVICE_KEY="Software\Postgres Professional\${PRODUCT_NAME}\Services\postgresql-${PRODUCT_VERSION}"
SET PRODUCT_DIR_REGKEY="Software\Postgres Professional\${PRODUCT_NAME}\${PRODUCT_VERSION}"
SET PRODUCT_VERSION="%PG_MAJOR_VERSION%"
+ SET WITH_1C="TRUE"
) ELSE (
- SET PRODUCT_NAME=PostgreSQL
- SET PG_DEF_SERVICEID="postgresql-%ARCH%-%PG_MAJOR_VERSION%"
- SET PG_INS_SUFFIX="%ARCH%bit_Setup.exe"
- SET PG_REG_KEY="SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%\Installations\postgresql-%PG_MAJOR_VERSION%"
- SET PG_REG_SERVICE_KEY="SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%\Services\postgresql-%PG_MAJOR_VERSION%"
- SET PRODUCT_DIR_REGKEY="SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%"
- SET PRODUCT_VERSION="%PG_MAJOR_VERSION% (%ARCH%)"
+ SET PG_INS_SUFFIX="%BITS%_Setup.exe"
+ SET PRODUCT_VERSION="%PG_MAJOR_VERSION% (%BITS%)"
+ SET PG_REG_KEY="%PRODUCT_DIR_REGKEY%\Installations\postgresql-%PG_MAJOR_VERSION%"
+ SET PG_REG_SERVICE_KEY="%PRODUCT_DIR_REGKEY%\Services\postgresql-%PG_MAJOR_VERSION%"
+ SET PG_PREV_REG_KEY="%PREV_PRODUCT_DIR_REGKEY%\Installations\postgresql-%PG_PREV_MAJOR_VERSION%"
+ SET PG_PREV_REG_SERVICE_KEY="%PREV_PRODUCT_DIR_REGKEY%\Services\postgresql-%PG_PREV_MAJOR_VERSION%"
+ SET PG_OLD_REG_KEY="%OLD_PRODUCT_DIR_REGKEY%\Installations\postgresql-%PG_MAJOR_VERSION%"
+ SET PG_OLD_REG_SERVICE_KEY="%OLD_PRODUCT_DIR_REGKEY%\Services\postgresql-%PG_MAJOR_VERSION%"
+ SET PG_OLD_PREV_REG_KEY="%OLD_PREV_PRODUCT_DIR_REGKEY%\Installations\postgresql-%PG_PREV_MAJOR_VERSION%"
+ SET PG_OLD_PREV_REG_SERVICE_KEY="%OLD_PREV_PRODUCT_DIR_REGKEY%\Services\postgresql-%PG_PREV_MAJOR_VERSION%"
+ SET WITH_1C="FALSE"
)
SET PG_DEF_PORT="%DEFAULT_PORT%"
SET PG_DEF_SUPERUSER="%DEFAULT_USER%"
SET PG_DEF_SERVICEACCOUNT="NT AUTHORITY\NetworkService"
-SET PG_DEF_BRANDING="%PRODUCT_NAME% %PG_MAJOR_VERSION% (%ARCH%)"
-SET PG_INS_SOURCE_DIR="C:\pg\distr_%ARCH%_%PG_DEF_VERSION%\postgresql\*.*"
+SET PG_DEF_BRANDING="%PRODUCT_NAME% %PG_MAJOR_VERSION% (%BITS%)"
+rem SET PG_INS_SOURCE_DIR="%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\postgresql\*.*"
+SET PG_INS_SOURCE_DIR="%BUILD_DIR%\distr_%ARCH%_%PG_DEF_VERSION%\postgresql"
SET NSIS_RES_DIR=%~dp0
SET NSIS_RES_DIR=%NSIS_RES_DIR:~0,-1%
@@ -45,9 +77,16 @@ REM PostgreSQL Section
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_VERSION %PRODUCT_VERSION%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_PUBLISHER %PRODUCT_PUBLISHER%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_WEB_SITE %PRODUCT_WEB_SITE%
->>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_DIR_REGKEY %PRODUCT_DIR_REGKEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_DIR_REGKEY "%PRODUCT_DIR_REGKEY%"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define OLD_PRODUCT_DIR_REGKEY "%OLD_PRODUCT_DIR_REGKEY%"
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_REG_KEY %PG_REG_KEY%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_REG_SERVICE_KEY %PG_REG_SERVICE_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_PREV_REG_KEY %PG_PREV_REG_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_PREV_REG_SERVICE_KEY %PG_PREV_REG_SERVICE_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_OLD_REG_KEY %PG_OLD_REG_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_OLD_REG_SERVICE_KEY %PG_OLD_REG_SERVICE_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_OLD_PREV_REG_KEY %PG_OLD_PREV_REG_KEY%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_OLD_PREV_REG_SERVICE_KEY %PG_OLD_PREV_REG_SERVICE_KEY%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_DEF_PORT %PG_DEF_PORT%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_DEF_SUPERUSER %PG_DEF_SUPERUSER%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_DEF_SERVICEACCOUNT %PG_DEF_SERVICEACCOUNT%
@@ -58,21 +97,72 @@ REM PostgreSQL Section
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_INS_SUFFIX %PG_INS_SUFFIX%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_INS_SOURCE_DIR %PG_INS_SOURCE_DIR%
>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define REDIST_YEAR %REDIST_YEAR%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define WITH_1C %WITH_1C%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define BUILD_DIR %BUILD_DIR%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define SDK %SDK%
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !addplugindir Plugins
+
IF "%ARCH%" == "X64" (
- >>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_64bit
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PG_64bit
+)
+
+IF "%PRODUCT_NAME%" == "PostgreSQL" (
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_ru "license.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_en "license.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_NAME_SHORT "PostgreSQL"
+GOTO :ENDLIC
+)
+IF "%PRODUCT_NAME%" == "PostgresPro" (
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_ru "license_std_ru.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_en "license_std_en.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_NAME_SHORT "Postgres Pro"
+GOTO :ENDLIC
+)
+IF "%PRODUCT_NAME%" == "PostgresProEnterprise" (
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_ru "license_ee_ru.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_en "license_ee_en.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_NAME_SHORT "Postgres Pro"
+GOTO :ENDLIC
+)
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_ru "license.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define myLicenseFile_en "license.txt"
+>>%NSIS_RES_DIR%\postgres.def.nsh ECHO !define PRODUCT_NAME_SHORT "PostgreSQL"
+
+:ENDLIC
+
+CD /D %NSIS_RES_DIR% || GOTO :ERROR
+rem Genarate file lists
+rem Remove old filelists first
+rm -f *_list.nsi
+rem tune pattern lists to major version and product
+IF "%PG_MAJOR_VERSION%" == "9.6" (
+ sed "s/wal/xlog/" server.files > allserver.files
+ sed "s/wal/xlog/" client.files > allclient.files
+ echo ./bin/createlang.* >> allclient.files
+ echo ./bin/droplang.* >> allclient.files
+) ELSE (
+ cat server.files > allserver.files
+ type client.files > allclient.files
)
+IF NOT "%PG_MAJOR_VERSION%" == "9.6" GOTO :NO_PGPRO_UPGRADE
+IF "%PRODUCT_NAME%" == "PostgresPro" GOTO :ADD_PGPRO_UPGRADE
+IF "%PRODUCT_NAME%" == "PostgresProEnterprise" GOTO :ADD_PGPRO_UPGRADE
+GOTO :NO_PGPRO_UPGRADE
+:ADD_PGPRO_UPGRADE
+type pgpro_upgrade.files >> allserver.files
+:NO_PGPRO_UPGRADE
+rem expand pattern lists to actual file lists
+%PYTHON64_PATH%/python %ROOT%/build/helpers/genlists.py %PG_INS_SOURCE_DIR% allclient.files devel.files plperl.files plpython2.files plpython3.files unneeded.files allserver.files || GOTO :ERROR
-CD %NSIS_RES_DIR% || GOTO :ERROR
+rem generate installer itself
makensis postgresql.nsi || GOTO :ERROR
GOTO :DONE
:ERROR
ECHO Failed with error #%errorlevel%.
-PAUSE
EXIT /b %errorlevel%
:DONE
ECHO Done.
-PAUSE
diff --git a/build/helpers/setvars.cmd b/build/helpers/setvars.cmd
index 9ca910d..d499ec2 100644
--- a/build/helpers/setvars.cmd
+++ b/build/helpers/setvars.cmd
@@ -1,12 +1,16 @@
REM LIBRARY VERSIONS
-SET ICONV_VER=1.14
-SET XSLT_VER=1.1.28
-SET ZLIB_VER=1.2.8
-SET XML_VER=2.7.3
-SET OPENSSL_VER=1.0.2g
-SET GETTEXT_VER=0.19.4
-SET LIBSSH2_VER=1.6.0
+SET ICONV_VER=1.17
+SET XSLT_VER=1.1.36
+SET ZLIB_VER=1.2.12
+SET XML_VER=2.10.0
+SET OPENSSL_VER=1.1.1q
+SET GETTEXT_VER=0.21
+SET LIBSSH2_VER=1.10.0
+SET ZSTD_RELEASE=1.5.2
SET WXWIDGETS_VER=3.0.2
+SET EDITLINE_VER=2.205
+SET ICU_VER=56_2
+SET LZ4_RELEASE=1.9.3
REM Path vars
SET PERL32_PATH=C:\Perl
@@ -14,19 +18,28 @@ SET PERL64_PATH=C:\Perl64
SET PERL32_BIN=%PERL32_PATH%\bin
SET PERL64_BIN=%PERL64_PATH%\bin
SET PYTHON32_PATH=C:\Python27x86
-SET PYTHON64_PATH=C:\Python27x64
+rem SET PYTHON64_PATH=C:\Python27x64
+SET PYTHON64_PATH=C:\Python310
SET ZIP_PATH=C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip
SET NSIS_PATH=C:\Program Files (x86)\NSIS
-SET MSYS2_PATH=C:\msys32\usr\bin;C:\msys64\usr\bin
+SET MSYS2_PATH=C:\msys64\usr\bin
+rem C:\msys32\usr\bin
SET PATH=%PATH%;%ZIP_PATH%;%MSYS2_PATH%;%NSIS_PATH%
+SET PERL5LIB=.
IF %ARCH% == X86 SET PATH=%PERL32_BIN%;%PATH%
-IF %ARCH% == X64 SET PATH=%PERL64_BIN%;%PATH%
+IF %ARCH% == X86 SET PERL_EXE=%PERL32_BIN%\perl.exe
+IF %ARCH% == X86 GOTO :NOT64
+
+IF EXIST "%PERL64_BIN%" SET PATH=%PERL64_BIN%;%PATH%
+IF EXIST "%PERL64_BIN%" SET PERL_EXE=%PERL64_BIN%\perl.exe
+
+:NOT64
IF %SDK% == SDK71 (
SET REDIST_YEAR=2010
SET PlatformToolset=v100
- CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv" /%ARCH% || GOTO :ERROR
+ CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv" /xp /%ARCH% || GOTO :ERROR
ECHO ON
)
@@ -40,6 +53,7 @@ IF %SDK% == MSVC2013 (
)
IF %SDK% == MSVC2015 (
+ SET ICU_VER=67_1
SET REDIST_YEAR=2015
SET PlatformToolset=v140
IF %ARCH% == X86 CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall" x86 || GOTO :ERROR
@@ -47,6 +61,36 @@ IF %SDK% == MSVC2015 (
IF %ARCH% == X64 CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall" amd64 || GOTO :ERROR
ECHO ON
)
+IF %SDK% == MSVC2017 (
+ SET ICU_VER=67_1
+ SET REDIST_YEAR=2017
+ SET PlatformToolset=v141
+ IF %ARCH% == X86 CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 || GOTO :ERROR
+ ECHO ON
+ IF %ARCH% == X64 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 || GOTO :ERROR
+)
+IF %SDK% == MSVC2019 (
+ SET ICU_VER=67_1
+ SET REDIST_YEAR=2019
+ SET PlatformToolset=v142
+ IF %ARCH% == X86 CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 || GOTO :ERROR
+ ECHO ON
+ IF %ARCH% == X64 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 || GOTO :ERROR
+)
+IF %SDK% == MSVC2022 (
+ SET ICU_VER=67_1
+ SET REDIST_YEAR=2022
+ SET PlatformToolset=v143
+ IF %ARCH% == X86 CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 || GOTO :ERROR
+ ECHO ON
+ IF %ARCH% == X64 call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 || GOTO :ERROR
+ SET PlatformToolset=v143
+)
+
+rem vcvarsall of VS 2019 rewrite this variable
+IF %ARCH% == X86 SET Platform=Win32
+IF %ARCH% == X64 SET Platform=X64
+
REM As we use Msys2 for build we need to install useful packages we will use
@ECHO "Current PATH is:"
@@ -59,15 +103,31 @@ ECHO %PG_PATCH_VERSION% | grep "^[0-9]." > nul && (
SET PG_DEF_VERSION=%PG_MAJOR_VERSION%%PG_PATCH_VERSION%
)
+IF "%ISDEV%"=="1" SET BUILD_TYPE=dev
+IF "%ISDEV%"=="0" SET BUILD_TYPE=stable
+
+if "%BUILD_TYPE%"=="" SET BUILD_TYPE=dev
+
SET PGVER=%PG_DEF_VERSION%
-IF "%PGURL%"=="" SET PGURL="https://ftp.postgresql.org/pub/source/v%PGVER%/postgresql-%PGVER%.tar.bz2"
+IF "%PGURL%"=="" (
+ IF "%PRODUCT_NAME%"=="" SET PGURL=https://ftp.postgresql.org/pub/source/v%PGVER%/postgresql-%PGVER%.tar.bz2
+ IF "%PRODUCT_NAME%"=="PostgreSQL" SET PGURL=https://ftp.postgresql.org/pub/source/v%PGVER%/postgresql-%PGVER%.tar.bz2
+ IF "%PRODUCT_NAME%"=="PostgresPro" SET PGURL=http://localrepo.l.postgrespro.ru/%BUILD_TYPE%/src/postgrespro-standard-%PGVER%.tar.bz2
+ IF "%PRODUCT_NAME%"=="PostgresProEnterprise" SET PGURL=http://localrepo.l.postgrespro.ru/%BUILD_TYPE%/src/postgrespro-enterprise-%PGVER%.tar.bz2
+)
REM Set useful directories paths so they're used in scripts
-SET BUILD_DIR=c:\pg
+SET BUILD_DIR=%ROOT%\builddir
SET DEPENDENCIES_SRC_DIR=%BUILD_DIR%\dependencies_src
SET DEPENDENCIES_BIN_DIR=%BUILD_DIR%\dependencies
SET DEPS_ZIP=deps-%SDK%-%ARCH%.zip
SET DOWNLOADS_DIR=%BUILD_DIR%\downloads
+
+REM Convert paths for Unix utilites
+SET BUILD_UDIR=%BUILD_DIR:\=/%
+SET DEPENDENCIES_SRC_UDIR=%DEPENDENCIES_SRC_DIR:\=/%
+SET DEPENDENCIES_BIN_UDIR=%DEPENDENCIES_BIN_DIR:\=/%
+
REM Magic to set root directory of those scripts (Where Readme.md lies)
REM Let's use MP for nmake for parallel build
diff --git a/build/run.cmd b/build/run.cmd
index d2284d4..9c2ecf2 100644
--- a/build/run.cmd
+++ b/build/run.cmd
@@ -14,6 +14,10 @@ IF "%~1" == "4" GOTO :OK
IF "%~1" == "5" GOTO :OK
IF "%~1" == "6" GOTO :OK
IF "%~1" == "7" GOTO :OK
+IF "%~1" == "8" GOTO :OK
+IF "%~1" == "9" GOTO :OK
+IF "%~1" == "12" GOTO :OK
+IF "%~1" == "13" GOTO :OK
SET USG=1
@@ -27,6 +31,10 @@ IF DEFINED USG (
ECHO 5: Build installer PgAdmin3
ECHO 6: Make PostgreSQL and PgAdmin3 archives
ECHO 7: Build pgbouncer
+ ECHO 8: Build psqlODBC
+ ECHO 9: Build psqlODBC installer
+ ECHO 12: Build PostgresPro
+ ECHO 13: Build installer PostgresPro
PAUSE
EXIT /b 1
)
@@ -34,8 +42,8 @@ IF DEFINED USG (
:OK
REM Set PostgreSQL version
-IF "%PG_MAJOR_VERSION%"=="" SET PG_MAJOR_VERSION=9.5
-IF "%PG_PATCH_VERSION%"=="" SET PG_PATCH_VERSION=1
+IF "%PG_PREV_MAJOR_VERSION%"=="" SET PG_PREV_MAJOR_VERSION=9.6
+IF "%PG_MAJOR_VERSION%"=="" SET PG_MAJOR_VERSION=10
REM Set PgAdmin3 Version
SET PGADMIN_VERSION=1.22.1
@@ -52,45 +60,85 @@ IF "%ARCH%"=="x64" SET ARCH=X64
REM Set PGBouner Version
SET PGBOUNCER_VERSION=1.7
+REM Set PgODBC Version
+IF "%PG_ODBC_VERSION%"=="" SET PG_ODBC_VERSION=09.05.0400
+
@echo off&setlocal
FOR %%i in ("%~dp0..") do set "ROOT=%%~fi"
IF "%~1"=="1" (
TITLE Building dependencies
IF "%SDK%"=="" SET SDK=SDK71
- CMD.EXE /C %ROOT%\build\helpers\dependencies.cmd
+ CMD.EXE /C %ROOT%\build\helpers\dependencies.cmd || GOTO :ERROR
)
IF "%~1"=="2" (
TITLE Building PostgreSQL
IF "%SDK%"=="" SET SDK=SDK71
- CMD.EXE /C %ROOT%\build\helpers\postgres.cmd
+ IF "%PG_PATCH_VERSION%"=="" SET PG_PATCH_VERSION=1
+ CMD.EXE /C %ROOT%\build\helpers\postgres.cmd || GOTO :ERROR
+)
+
+IF "%~1"=="12" (
+ TITLE Building PostgresPro
+ IF "%SDK%"=="" SET SDK=SDK71
+ IF "%PRODUCT_NAME%"=="" SET PRODUCT_NAME=PostgresPro
+ IF "%PG_PATCH_VERSION%"=="" SET PG_PATCH_VERSION=1.1
+ CMD.EXE /C %ROOT%\build\helpers\postgres.cmd || GOTO :ERROR
)
IF "%~1"=="3" (
TITLE Building PostgreSQL installer
IF "%SDK%"=="" SET SDK=SDK71
- CMD.EXE /C %ROOT%\build\helpers\postgres_installer.cmd
+ IF "%PG_PATCH_VERSION%"=="" SET PG_PATCH_VERSION=1
+ CMD.EXE /C %ROOT%\build\helpers\postgres_installer.cmd || GOTO :ERROR
+)
+
+IF "%~1"=="13" (
+ TITLE Building PostgresPro installer
+ IF "%SDK%"=="" SET SDK=SDK71
+ IF "%PRODUCT_NAME%"=="" SET PRODUCT_NAME=PostgresPro
+ IF "%PG_PATCH_VERSION%"=="" SET PG_PATCH_VERSION=1.1
+ CMD.EXE /C %ROOT%\build\helpers\postgres_installer.cmd || GOTO :ERROR
)
IF "%~1"=="4" (
TITLE Building PgAdmin
- IF "%SDK%"=="" SET SDK=MSVC2015
- CMD.EXE /C %ROOT%\build\helpers\pgadmin.cmd
+ IF "%SDK%"=="" SET SDK=SDK71
+ CMD.EXE /C %ROOT%\build\helpers\pgadmin.cmd || GOTO :ERROR
)
IF "%~1"=="5" (
TITLE Building PgAdmin installer
- IF "%SDK%"=="" SET SDK=MSVC2015
- CMD.EXE /C %ROOT%\build\helpers\pgadmin_installer.cmd
+ IF "%SDK%"=="" SET SDK=SDK71
+ CMD.EXE /C %ROOT%\build\helpers\pgadmin_installer.cmd || GOTO :ERROR
)
IF "%~1"=="6" (
TITLE Making Archives
- CMD.EXE /C %ROOT%\build\helpers\make_zip.cmd
+ CMD.EXE /C %ROOT%\build\helpers\make_zip.cmd || GOTO :ERROR
)
IF "%~1"=="7" (
TITLE Build PGBouncer
- CMD.EXE /C %ROOT%\build\helpers\pgbouncer.cmd
+ CMD.EXE /C %ROOT%\build\helpers\pgbouncer.cmd || GOTO :ERROR
+)
+
+IF "%~1"=="8" (
+ TITLE Build psqlODBC
+ CMD.EXE /C %ROOT%\build\helpers\pgodbc.cmd || GOTO :ERROR
+)
+
+IF "%~1"=="9" (
+ TITLE Build psqlODBC installer
+ CMD.EXE /C %ROOT%\build\helpers\pgodbc_nsis_installer.cmd || GOTO :ERROR
)
+
+GOTO :DONE
+
+:ERROR
+ECHO Failed with error #%errorlevel%.
+EXIT /b %errorlevel%
+
+:DONE
+ECHO Done.
diff --git a/nsis/Plugins/RunAs.dll b/nsis/Plugins/RunAs.dll
new file mode 100644
index 0000000..e59f2b1
Binary files /dev/null and b/nsis/Plugins/RunAs.dll differ
diff --git a/nsis/Plugins/nsisFirewall.dll b/nsis/Plugins/nsisFirewall.dll
new file mode 100644
index 0000000..69f6d1e
Binary files /dev/null and b/nsis/Plugins/nsisFirewall.dll differ
diff --git a/nsis/Ports.nsh b/nsis/Ports.nsh
new file mode 100644
index 0000000..78b128e
--- /dev/null
+++ b/nsis/Ports.nsh
@@ -0,0 +1,123 @@
+# Usage:
+# Push "Tcp" or "Udp"
+# Push "port_number"
+# Call IsPortOpen
+# Pop $0 ; "open" or "closed" or anything else for error
+#
+# Or with the LogicLib
+# ${If} ${TCPPortOpen} 80
+# ${EndIf}
+# ${If} ${UDPPortOpen} 137
+# ${EndIf}
+#
+Function IsPortOpen
+
+ Exch $R0 # port to check
+ Exch
+ Exch $R1
+ Push $0
+ Push $1
+ Push $2
+
+ System::Call 'iphlpapi::Get$R1Table(*i.r0, *i .r1, i 1) i .r2'
+ ${If} $2 != 122 # ERROR_INSUFFICIENT_BUFFER
+ StrCpy $R0 ""
+ Pop $2
+ Pop $1
+ Pop $0
+ Exch $R1
+ Exch
+ Exch $R0
+ Return
+ ${EndIf}
+
+ System::Alloc $1
+ Pop $0
+
+ System::Call 'iphlpapi::Get$R1Table(ir0, *i r1, i 1) i .r2'
+ ${If} $2 != 0 # NO_ERROR
+ System::Free $0
+ StrCpy $R0 ""
+ Pop $2
+ Pop $1
+ Pop $0
+ Exch $R1
+ Exch
+ Exch $R0
+ Return
+ ${EndIf}
+
+ Push $3
+ Push $4
+ Push $5
+
+ System::Call *$0(i.r2)
+ IntOp $2 $2 - 1
+ ${For} $3 0 $2
+ IntOp $4 $0 + 4 # skip dwNumEntries
+ ${If} $R1 == "Tcp"
+ IntOp $5 $3 * 20 # sizeof(MIB_TCPROW)
+ IntOp $4 $4 + $5 # skip to entry
+ System::Call *$4(i.r1,i,i.r4,i,i)
+ ${If} $1 <> 2 # $1 = dwState, 2 = MIB_TCP_STATE_LISTEN
+ ${Continue}
+ ${EndIf}
+ ${Else}
+ IntOp $5 $3 * 8 # sizeof(MIB_UDPROW)
+ IntOp $4 $4 + $5 # skip to entry
+ System::Call *$4(i,i.r4)
+ ${EndIf}
+!if "${NSIS_PACKEDVERSION}" >= 50343936 ; v3.3+
+ System::Call ws2_32::ntohs(hr4)h.r4
+!else
+ System::Call ws2_32::ntohs(ir4)i.r4
+ IntOp $4 $4 & 0xffff ; Truncate to 16-bits
+!endif
+
+ ${If} $4 = $R0
+ StrCpy $R0 "open"
+ ${Break}
+ ${EndIf}
+ ${Next}
+
+ ${If} $R0 != "open"
+ StrCpy $R0 "closed"
+ ${EndIf}
+
+ System::Free $0
+
+ Pop $5
+ Pop $4
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+ Exch $R1
+ Exch
+ Exch $R0
+
+FunctionEnd
+
+# LogicLib macros for IsPortOpen
+
+!include LogicLib.nsh
+
+!macro _PortOpen _a _b _t _f
+ !insertmacro _LOGICLIB_TEMP
+ Push `${_a}`
+ Push `${_b}`
+ Call IsPortOpen
+ Pop $_LOGICLIB_TEMP
+ !insertmacro _== $_LOGICLIB_TEMP "open" `${_t}` `${_f}`
+!macroend
+!define PortOpen `PortOpen`
+
+!macro _TCPPortOpen _a _b _t _f
+ !insertmacro _PortOpen Tcp `${_b}` `${_t}` `${_f}`
+!macroend
+!define TCPPortOpen `"" TCPPortOpen`
+
+!macro _UDPPortOpen _a _b _t _f
+ !insertmacro _PortOpen Udp `${_b}` `${_t}` `${_f}`
+!macroend
+!define UDPPortOpen `"" UDPPortOpen`
diff --git a/nsis/StrContains.nsh b/nsis/StrContains.nsh
new file mode 100644
index 0000000..1763b5f
--- /dev/null
+++ b/nsis/StrContains.nsh
@@ -0,0 +1,48 @@
+; StrContains
+; This function does a case sensitive searches for an occurrence of a substring in a string.
+; It returns the substring if it is found.
+; Otherwise it returns null("").
+; Written by kenglish_hi
+; Adapted from StrReplace written by dandaman32
+
+
+Var STR_HAYSTACK
+Var STR_NEEDLE
+Var STR_CONTAINS_VAR_1
+Var STR_CONTAINS_VAR_2
+Var STR_CONTAINS_VAR_3
+Var STR_CONTAINS_VAR_4
+Var STR_RETURN_VAR
+
+Function StrContains
+ Exch $STR_NEEDLE
+ Exch 1
+ Exch $STR_HAYSTACK
+ ; Uncomment to debug
+ ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK '
+ StrCpy $STR_RETURN_VAR ""
+ StrCpy $STR_CONTAINS_VAR_1 -1
+ StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE
+ StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK
+ loop:
+ IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1
+ StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1
+ StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found
+ StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done
+ Goto loop
+ found:
+ StrCpy $STR_RETURN_VAR $STR_NEEDLE
+ Goto done
+ done:
+ Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the
+ Exch $STR_RETURN_VAR
+FunctionEnd
+
+!macro _StrContainsConstructor OUT NEEDLE HAYSTACK
+ Push `${HAYSTACK}`
+ Push `${NEEDLE}`
+ Call StrContains
+ Pop `${OUT}`
+!macroend
+
+!define StrContains '!insertmacro "_StrContainsConstructor"'
diff --git a/nsis/client.files b/nsis/client.files
new file mode 100644
index 0000000..a69fb74
--- /dev/null
+++ b/nsis/client.files
@@ -0,0 +1,37 @@
+./bin/*.dll
+./bin/clusterdb.*
+./bin/createdb.*
+./bin/createuser.*
+./bin/dropdb.*
+./bin/dropuser.*
+./bin/pg_basebackup.*
+./bin/pgbench.*
+./bin/pg_dump.*
+./bin/pg_dumpall.*
+./bin/pg_isready.*
+./bin/pg_receivewal.*
+./bin/pg_recvlogical.*
+./bin/pg_restore.*
+./bin/psql.*
+./bin/reindexdb.*
+./bin/vacuumdb.*
+./bin/oid2name.*
+./bin/vacuumlo.*
+./bin/less.*
+./bin/lesskey.*
+./bin/openssl.*
+./share/psqlrc.sample
+./doc/postgresql-en.chm
+./doc/postgresql-ru.chm
+./share/locale/*/libpq*.mo
+./share/locale/*/pgscripts*.mo
+${if pg_major >= 13}
+./bin/pg_verifybackup.*
+./share/locale/*/LC_MESSAGES/pg_verifybackup*.mo
+${endif}
+${if pg_major >= 14}
+./bin/pg_amcheck.*
+./share/locale/*/LC_MESSAGES/pg_amcheck*.mo
+./bin/libpq_pipeline.*
+./share/locale/*/LC_MESSAGES/libpq_pipeline*.mo
+${endif}
diff --git a/nsis/devel.files b/nsis/devel.files
new file mode 100644
index 0000000..45c8372
--- /dev/null
+++ b/nsis/devel.files
@@ -0,0 +1,6 @@
+./include/*
+./lib/*.lib
+./bin/pg_config.*
+./bin/ecpg.*
+./symbols/*.pdb
+./share/errcodes.txt
diff --git a/nsis/installation-notes-ru.html b/nsis/installation-notes-ru.html
index 6586615..2017861 100644
--- a/nsis/installation-notes-ru.html
+++ b/nsis/installation-notes-ru.html
@@ -32,18 +32,17 @@
-��������� PosgreSQL ��� Windows
+��������� Postgres Pro (PostgreSQL) ��� Windows
��������� �� ���������
�������������� ������������ �������
-������ ������ PostgreSQL ������� �����
-���� ����������� �� ���������� � �� Windows XP SP3
-� ����. 64-��������� ������ PosgreSQL
-������� ����� ���� ����������� ������ �� 64 ��������� ������
-Windows.
+������ ������ Postgres Pro (PostgreSQL) ������� �����
+���� ����������� �� ���������� � �� Windows XP SP3� ����.
+ 64-��������� ������ ������� ����� ���� ����������� ������ �� 64
+ ��������� ������ Windows.
��������� ���������
������� ������������ ������ ��������� ��������� �������. �����
������� ����������, ������� ����� �����������.
-���� ����������, ��� PostgreSQL ������
+
���� ����������, ��� Postgre Pro ������
��� ����������, �� ������������ ���������� ������ � �������� ���. ���
���� ��� ���������� � �������� ����� ���������. ��� �����������
������������� ������� ������������ ������ � ���������� ���������� ��
@@ -70,7 +69,7 @@
������� ������ ������� � Windows
��� ������� ������� ������������ ����������� ���������� �������
������ Windows: 'NT AUTHORITY\NetworkService'.
-������ ������ Postgresql-9.4
+������ ������ postgresql-9.6
�� ������� ������������ ����� ��������� �����
���������, ��������, ����� ��������� «���������� �����������»
� Windows.
@@ -160,7 +159,7 @@
����� �������. ����� � ������� �� ���������. ������������ ����������
�� ���������.
������������ Postgres
-���������������
+����������������
-