public inbox for [email protected]  
help / color / mirror / Atom feed
From: Paresh More <[email protected]>
To: Dave Page <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Cc: Sandeep Thakkar <[email protected]>
Cc: Hamid Quddus <[email protected]>
Subject: Re: PATCH: pgAdmin4 windows installer
Date: Mon, 6 Jun 2016 22:45:29 +0530
Message-ID: <CAAgiCNEOAZJKMHzcQzSSFELEz8oDiQTOEw1k9QLUdx=bTxkEHg@mail.gmail.com> (raw)
In-Reply-To: <CA+OCxoxrAh+Y=FLV9PoWdkseKCd6tecxTz+gHfWQ6RWSXiOUpg@mail.gmail.com>
References: <CAAgiCNHk3BKirjx=RrCzVtXWPAESVyCjvFfJ2hBKWXi8yz5VHQ@mail.gmail.com>
	<CA+OCxoxjzNG4L8OFhwfP_x9eUiS2SW09r5wmr1EMxr6GGZugbw@mail.gmail.com>
	<CAAgiCNHuAaJRSeVg39R3LfJ8eu5=X2Ljn1DjPoB=XmXwwCMqRw@mail.gmail.com>
	<CA+OCxoz8Cui4eHVSyaCqh++_xKMrcQkKB8Rc0pjqEdzg0Un79w@mail.gmail.com>
	<CAAgiCNEF4_=Q=58tC78eXozoBRHiWsRdU=W_BY3ubhrKwyG1-g@mail.gmail.com>
	<CA+OCxoxXq2bWG+EQjMKDNH-we2VJcKzPGMub=SVVfjdfum+PHA@mail.gmail.com>
	<CAAgiCNFL6v=Fb9KDacY2o-KvL3zb4C4MMaTPp4Tzk=-6CYbc=w@mail.gmail.com>
	<CAAgiCNF6+kc=ZODe7OSUQ2iS8u0O6UCeg3t_gEL78b92h42xBw@mail.gmail.com>
	<CA+OCxoxhF0wLw131aBMNBLabNsV=wRS9OV7zv54w+97TOPa_Ag@mail.gmail.com>
	<CA+OCxoztEfCmDLYYiETwZEkhzwJa72kVgNKHh9nh9Z6rrMj7rQ@mail.gmail.com>
	<CAAgiCNFRtpWqtW7Ka_rjCgTLmH3jEBA-kr-ph_GnpqFJxshHdQ@mail.gmail.com>
	<CA+OCxox=i5VvgG=rThPPbu9uhECNhS7mYjtS2mSqeN9inAXfag@mail.gmail.com>
	<CAAgiCNEU7tXBJWD=N9dM9uW+bJzVe_MY-hjAm38WhiL0gPvVsA@mail.gmail.com>
	<CA+OCxoxrAh+Y=FLV9PoWdkseKCd6tecxTz+gHfWQ6RWSXiOUpg@mail.gmail.com>
List-Unsubscribe:  <mailto:[email protected]?body=unsub%20pgadmin-hackers>

Hello Dave,

Windows batch has problem with file search and replace when it comes to
white spaces. Now the search and replace code is change to python.

So the installer creation issue is resolve.

Attached is the updated patch.


On Mon, Jun 6, 2016 at 2:51 PM, Dave Page <[email protected]> wrote:

> Hi,
>
> On Fri, Jun 3, 2016 at 9:30 PM, Paresh More <[email protected]>
> wrote:
>
>> Hello Dave.
>>
>> There was problem with the Make.bat file ^M characters which is been
>> removed.
>>
>> Issues are fixed along with some code and README tidied
>>
>
> I'm still seeing the same error:
>
> copy "C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss.in"
> "C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss"
>         1 file(s) copied.
> Error on line 113 in
> C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss: Column 3:
> Semicolon (';') expected.
> Compile aborted.
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>



-- 

Thanks & Regards

*Paresh More*

[image: NEW-EDB-logo-4c]

Pune, India.
Cell :  +919922000564 |  www.enterprisedb.com


-- 
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers


Attachments:

  [application/octet-stream] pgadmin4_window_6_June_16.patch (96.6K, 3-pgadmin4_window_6_June_16.patch)
  download | inline diff:
diff --git a/.gitignore b/.gitignore
index 0386e03..843ae7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,7 @@ pgadmin4.log
 /mac-build
 /src-build
 /dist
+/win-build
+runtime/Makefile.Debug
+runtime/Makefile.Release
+runtime/release/
diff --git a/Make.bat b/Make.bat
new file mode 100755
index 0000000..ba33ad1
--- /dev/null
+++ b/Make.bat
@@ -0,0 +1,449 @@
+@ECHO off
+SETLOCAL
+REM
+REM ****************************************************************
+SET WD=%CD%
+SET "PGBUILDPATH=%WD%\win-build"
+SET CMDOPTION=""
+IF "%1" == "clean"  SET CMDOPTION="VALID"
+IF "%1" == "x86"    SET CMDOPTION="VALID"
+IF "%1" == "amd64"  SET CMDOPTION="VALID"
+
+IF NOT %CMDOPTION%=="VALID"  ( GOTO USAGE )
+SET ARCHITECTURE=%1
+
+IF "%ARCHITECTURE%"=="clean" (
+    GOTO CLEAN_RELEASE
+    goto:exit
+)
+
+REM Main Functions
+
+call :SET_PGADMIN4_ENVIRONMENT
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CLEAN_RELEASE
+
+call :CREATE_VIRTUAL_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_RUNTIME_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_PYTHON_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CLEANUP_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_INSTALLER
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+CD %WD%
+goto:EXIT
+REM Main function Ends
+
+:SET_PGADMIN4_ENVIRONMENT
+   REM Check os architecture x86 or amd64
+   SET RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
+   REG.exe Query %RegQry% > checkOS.txt
+   Find /i "x86" < CheckOS.txt > StringCheck.txt
+   SET OSTYPE=""
+   IF %ERRORLEVEL% == 0 (
+        SET OSTYPE=x86
+    ) else (
+        SET OSTYPE=amd64
+    )
+    DEL CheckOS.txt StringCheck.txt
+    SET OSVALUE=""
+    IF "%OSTYPE%"=="x86" (
+        IF "%ARCHITECTURE%"=="amd64" (
+            ECHO ARCHITECTURE - %ARCHITECTURE% cannot be run on 32 bit machine
+            goto:exit
+        )
+        OSVALUE=%OSTYPE%
+    )
+
+    REM Check IF its is windows 32 bit machine and selected architecture is x86
+    IF %OSVALUE%=="x86" (
+        IF "%PYTHON_HOME%" == ""   SET "PYTHON_HOME=C:\Python27123"
+        IF "%PYTHON_DLL%" == ""    SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
+        IF "%QTDIR%" == ""         SET "QTDIR=C:\Qt\Qt5.5.1\5.5\msvc2013"
+        IF "%PGDIR%" == ""         SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+        IF "%INNOTOOL%" == ""      SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+        IF "%VCDIR%" == ""         SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+        goto SKIPARCVALIDATION
+    )
+
+    REM Check IF its is windows 64 bit machine and selected architecture is x86 or amd64
+    IF "%ARCHITECTURE%"=="x86" (
+        IF "%PYTHON_HOME%" == ""   SET "PYTHON_HOME=C:\Python27"
+        IF "%PYTHON_DLL%" == ""    SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
+        IF "%QTDIR%" == ""         SET "QTDIR=C:\Qt\Qt5.5.1\5.5\msvc2013"
+        IF "%PGDIR%" == ""         SET "PGDIR=C:\Program Files (x86)\PostgreSQL\9.5"
+        IF "%INNOTOOL%" == ""      SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5"
+        IF "%VCDIR%" == ""         SET "VCDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC"
+    )
+
+    IF "%ARCHITECTURE%"=="amd64" (
+        IF "%PYTHON_HOME%" == ""   SET "PYTHON_HOME=C:\Python27-x64"
+        IF "%PYTHON_DLL%" == ""    SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
+        IF "%QTDIR%" == ""         SET "QTDIR=C:\Qt\5.5\msvc2013"
+        IF "%PGDIR%" == ""         SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+        IF "%INNOTOOL%" == ""      SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+        IF "%VCDIR%" == ""         SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+    )
+
+    :SKIPARCVALIDATION
+    REM SET the variables IF not availalbe in windows enviroment
+    SET VCVAR=%VCDIR%\vcvarsall.bat
+    SET VCNMAKE=%VCDIR%\bin\nmake.exe
+    SET QMAKE=%QTDIR%\bin\qmake.exe
+    SET VIRTUALENV=ve_python
+    SET TARGETINSTALLER=%WD%\dist
+
+    FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py')    DO SET APP_RELEASE=%%a
+    FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py')   DO SET APP_REVISION_VERSION=%%a
+    FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py')     DO SET APP_SUFFIX_VERSION=%%a
+    REM remove single quote from the string
+    SET APP_SUFFIX_VERSION=%APP_SUFFIX_VERSION:'=%
+    SET APP_NAME=""
+    FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py')   DO SET APP_NAME=%%a
+    SET INSTALLERNAME=%APP_NAME%-v%APP_RELEASE%.%APP_REVISION_VERSION%-%APP_SUFFIX_VERSION%-%ARCHITECTURE%.exe
+
+    SET PGADMIN4_VERSION=v%APP_RELEASE%
+    SET PGADMIN4_APP_VERSION=%APP_RELEASE%.%APP_REVISION_VERSION%
+
+    ECHO ****************************************************************
+    ECHO                        S U M M A R Y
+    ECHO ****************************************************************
+    ECHO Target mode = %ARCHITECTURE%
+    ECHO INNOTOOL    = %INNOTOOL%
+    ECHO VCDIR       = %VCDIR%
+    ECHO NMAKE       = %VCNMAKE%
+    ECHO QTDIR       = %QTDIR%
+    ECHO QMAKE       = %QMAKE%
+    ECHO PYTHON_HOME = %PYTHON_HOME%
+    ECHO PYTHON_DLL  = %PYTHON_DLL%
+    ECHO PGDIR       = %PGDIR%
+    ECHO ****************************************************************
+
+    REM Check IF path SET in enviroments really exist or not ?
+    IF NOT EXIST "%INNOTOOL%"          GOTO err_handle_inno
+    IF NOT EXIST "%VCDIR%"             GOTO err_handle_visualstudio
+    IF NOT EXIST "%VCVAR%"             GOTO err_handle_visualstudio
+    IF NOT EXIST "%VCNMAKE%"           GOTO err_handle_visualstudio
+    IF NOT EXIST "%QTDIR%"             GOTO err_handle_qt
+    IF NOT EXIST "%QMAKE%"             GOTO err_handle_qt
+    IF NOT EXIST "%PYTHON_HOME%"       GOTO err_handle_python
+    IF NOT EXIST "%PYTHON_DLL%"        GOTO err_handle_python
+    IF NOT EXIST "%PGDIR%"             GOTO err_handle_pg
+
+    REM Check for QT and VC dependences
+    FOR /L %%G IN (15,1,19) DO "%VCDIR%\bin\cl.exe" /? 2>&1 | findstr /C:"Version %%G" > nul && SET MSVC_MAJOR_VERSION=%%G && GOTO QT_MSVC
+
+    :QT_MSVC
+    IF %MSVC_MAJOR_VERSION%==19     SET QT_MSVC_PATH=msvc2015
+    IF %MSVC_MAJOR_VERSION%==18     SET QT_MSVC_PATH=msvc2013
+    IF %MSVC_MAJOR_VERSION%==17     SET QT_MSVC_PATH=msvc2012
+    IF %MSVC_MAJOR_VERSION%==16     SET QT_MSVC_PATH=msvc2010
+    IF %MSVC_MAJOR_VERSION%==15     SET QT_MSVC_PATH=msvc2008
+
+    REM on 64 bit machine if x86 is selected and QTDIR is set to 64 bit is should not allow
+    IF "%OSTYPE%"=="amd64" (
+        IF "%ARCHITECTURE%"=="x86" (
+         echo "%QTDIR%" | findstr /C:"_64" > nul && ( GOTO err_handle_qt_compactissue )
+        )
+    )
+
+    IF "%ARCHITECTURE%"=="amd64" (
+        SET QT_MSVC_PATH=%QT_MSVC_PATH%_64
+    )
+
+    IF NOT EXIST "%QTDIR%\..\%QT_MSVC_PATH%"       GOTO err_handle_qt_mismatch
+
+    REM get Python version ex. 2.7.1 will get as 27
+    for /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print sys.version.split(' ')[0]"') DO SET PYTHON_MAJOR=%%G
+    for /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print sys.version.split(' ')[0]"') DO SET PYTHON_MINOR=%%G
+    SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
+
+    IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" GOTO err_handle_pythonvirtualenv
+
+    SET REQUIRMENTTXT=""
+    IF "%PYTHON_MAJOR%"=="2" SET REQUIRMENTTXT=requirements_py2.txt
+    IF "%PYTHON_MAJOR%"=="3" SET REQUIRMENTTXT=requirements_py3.txt
+    IF %REQUIRMENTTXT% == ""           GOTO err_handle_pythonversion
+    SET PATH=%PGDIR%;%PGDIR%\bin;%PATH%
+goto:EXIT
+
+
+:CLEAN_RELEASE
+    ECHO Calling Clean Release...
+    IF EXIST "%PGBUILDPATH%" rmdir /s /q "%PGBUILDPATH%" > nul
+    for /R "%WD%" %%f in (*.pyc) do DEL /q "%%f" > nul
+    IF EXIST "%WD%\pkg\win32\Output" rmdir /s /q "%WD%\pkg\win32\Output" > nul
+    DEL /q "%WD%\pkg\win32\installer.iss" > nul
+    CD %WD%
+GOTO:EOF
+
+:CREATE_VIRTUAL_ENV
+    ECHO Creating Virtual Enviroment...
+    IF NOT EXIST "%PGBUILDPATH%"  MKDIR "%PGBUILDPATH%"
+
+    CD "%PGBUILDPATH%"
+    "%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    ECHO Activating Virtual Enviroment -  %PGBUILDPATH%\%VIRTUALENV%\Scripts\activate...
+    CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate"
+    SET PATH=%PGDIR%\bin;%PATH%
+
+    ECHO Installing dependencies...
+    pip install -r "%WD%\%REQUIRMENTTXT%"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    REM This is required because windows only work with 2.6.1 version
+    pip  install psycopg2 -U
+    ECHO Virtual Enviroment created successfully.
+
+    ECHO Deactivating Virtual Enviroment - %PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate...
+    CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate"
+
+    CD %WD%
+GOTO:EOF
+
+:CREATE_RUNTIME_ENV
+    ECHO Compiling source code...
+    MKDIR "%PGBUILDPATH%\runtime" > nul
+
+    REM --- Processing WEB ---
+    CD "%WD%"
+    CD web
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    REM Clean up .pyc, pgadmin4.db, config_local.py
+    for /R "%PGBUILDPATH%\web" %%f in (*.pyc) do DEL /q "%%f"
+    DEL /s "%PGBUILDPATH%\web\pgadmin4.db" > nul
+    DEL /s "%PGBUILDPATH%\web\config_local.py" > nul
+    ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_local.py"
+    ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%PGBUILDPATH%\web\config_local.py"
+    ECHO MINIFY_HTML = False >> "%PGBUILDPATH%\web\config_local.py"
+    REM Compile doc folder
+    MKDIR "%PGBUILDPATH%\docs\en_US\html"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    REM compile docs - web
+    "%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe"   "%WD%\docs\en_US" "%PGBUILDPATH%\docs\en_US\html"
+
+    REM --- Processing RUNTIME ---
+    CD "%WD%"
+    CD runtime
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    call "%VCVAR%" %ARCHITECTURE%
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    ECHO Calling -  call "%VCVAR%" %ARCHITECTURE%
+
+    call "%QMAKE%"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    call "%VCNMAKE%" clean
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    call "%VCNMAKE%"
+    IF ERRORLEVEL 1 GOTO ERR_HANDLER
+    REM Copy binary to Release Folder
+    copy "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime"
+    IF ERRORLEVEL 1 GOTO ERR_HANDLER
+
+    REM Copy QTP dependences
+    copy "%QTDIR%\bin\icudt54.dll"   "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\icuin54.dll"   "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\icuuc54.dll"   "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Core.dll"   "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Sql.dll"    "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Gui.dll"    "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Qml.dll"    "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5OpenGL.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Quick.dll"  "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Sensors.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5WebKit.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Multimedia.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5WebChannel.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5Positioning.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5PrintSupport.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5WebKitWidgets.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    copy "%QTDIR%\bin\Qt5MultimediaWidgets.dll" "%PGBUILDPATH%\runtime"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    MKDIR "%PGBUILDPATH%\runtime\platforms"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    copy "%QTDIR%\plugins\platforms\qwindows.dll" "%PGBUILDPATH%\runtime\platforms" > nul
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
+    ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
+    ECHO Runtime source code built successfully.
+
+    CD %WD%
+GOTO:EOF
+
+:CREATE_PYTHON_ENV
+    copy %PYTHON_DLL% "%PGBUILDPATH%\runtime"  > nul
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs" "%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib" > nul
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    CD %WD%
+GOTO:EOF
+
+:CREATE_INSTALLER
+    ECHO Preparing for creation of windows installer...
+    IF NOT EXIST "%TARGETINSTALLER%" MKDIR "%TARGETINSTALLER%"
+
+    copy "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    REM search and replace string from config.py and copy to config_local.py
+    CD "%WD%"
+    CD pkg
+    CD win32
+
+    "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
+    "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%PGADMIN4_APP_VERSION%"""
+    "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """%PGADMIN4_VERSION%"""
+
+    set ARCMODE=
+    IF "%ARCHITECTURE%"=="amd64" (
+        set ARCMODE="x64"
+    )
+    "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
+    DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
+    ECHO Creating windows installer... using INNO tool
+    ECHO "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss"
+    CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+    ECHO move "%WD%\pkg\win32\Output\Setup.exe" "%TARGETINSTALLER%\%INSTALLERNAME%"
+    MOVE "%WD%\pkg\win32\Output\Setup.exe" "%TARGETINSTALLER%\%INSTALLERNAME%"
+    IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+    ECHO "Location - %TARGETINSTALLER%\%INSTALLERNAME%"
+    ECHO Installer generated successfully.
+    GOTO CLEAN_RELEASE
+    CD %WD%
+GOTO:EOF
+
+:CLEANUP_ENV
+    rd "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q
+    rd "%PGBUILDPATH%\%VIRTUALENV%\Scripts" /S /Q
+    DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json"
+
+    ECHO Cleaned up private environment successfully.
+    CD %WD%
+GOTO:EOF
+
+:err_handle_inno
+    ECHO %INNOTOOL% does not exist
+    ECHO Please Install Innotool and SET INNOTOOL enviroment Variable.
+    ECHO SET "INNOTOOL=<PATH>"
+    exit /B 1
+goto EXIT
+
+:err_handle_visualstudio
+    ECHO %VCDIR% does not exist, or
+    ECHO %VCVAR% does not exist, or
+    ECHO %VCNMAKE% does not exist.
+    ECHO Please Install Microsoft Visual studio and SET the VCDIR enviroment Variable.
+    ECHO SET "VCDIR%=<PATH>"
+    ECHO SET "VCVAR%=<PATH>"
+    ECHO SET "VCNMAKE%=<PATH>"
+    exit /B 1
+goto EXIT
+
+:err_handle_python
+    ECHO %PYTHON_HOME% does not exist, or
+    ECHO PYTHON_VERSION is not SET, or
+    ECHO %PYTHON_DLL% does not exist.
+    ECHO Please install Python and SET the PYTHON_HOME enviroment Variable.
+    ECHO SET "PYTHON_VERSION=<VERSION NUMBER>"
+    ECHO SET "PYTHON_HOME=<PATH>"
+    ECHO SET "PYTHON_DLL=<PATH>"
+    exit /B 1
+goto EXIT
+
+:err_handle_qt
+    ECHO %QTDIR% does not exist.
+    ECHO Please Install QT SDK and SET the QTDIR enviroment variable.
+    ECHO SET "QTDIR=<PATH>"
+    exit /B 1
+goto EXIT
+
+:err_handle_qt_mismatch
+    ECHO %QTDIR%\..\%QT_MSVC_PATH%" does not match with your current Visual Studio, version %QT_MSVC_PATH%
+    ECHO Your current QT installation willraise a linking error with an MSVC version mismatch.
+    ECHO Please use a valid QT installation with a folder %QT_MSVC_PATH%. You can use the Qt Maintenance
+    ECHO Tool to add or remove compiler kits.
+    exit /B 1
+goto EXIT
+
+:err_handle_qt_compactissue
+    ECHO %QTDIR%" does support the current architecture selected %ARCHITECTURE%
+    ECHO Please use a valid QT installation with a folder %QT_MSVC_PATH%. You can use the Qt Maintenance
+    ECHO Tool to add or remove compiler kits.
+    exit /B 1
+goto EXIT
+
+:err_handle_pg
+    ECHO %PGDIR% does not exist.
+    ECHO Please Install Postgres and SET enviroment Variable
+    ECHO SET "PGDIR=<PATH>"
+    exit /B 1
+goto EXIT
+
+:err_handle_pythonversion
+    ECHO Python version supported Above 2.6, 2.xx and 3.xx only
+    exit /B 1
+goto EXIT
+
+:err_handle_pythonvirtualenv
+    ECHO Python virtualenv is missing @ location - %PYTHON_HOME%\Scripts\virtualenv.exe
+    exit /B 1
+goto EXIT
+
+:ERR_HANDLER
+    ECHO.
+    ECHO Aborting build!
+    CD %WD%
+    exit /B 1
+GOTO:EOF
+
+:USAGE
+    ECHO Invalid command line options....
+    ECHO Usage: "Make.bat <x86 | amd64 | clean>"
+    ECHO.
+    exit /B 1
+GOTO EXIT
+
+:EXIT
+     endlocal
+    exit /B 0
diff --git a/pkg/win32/README.txt b/pkg/win32/README.txt
new file mode 100755
index 0000000..b66addb
--- /dev/null
+++ b/pkg/win32/README.txt
@@ -0,0 +1,46 @@
+Building pgAdmin windows installer on windows
+=================================
+
+To generate a pgAdmin 4 installer for Windows bit, the following packages must be installed:
+
+1. Python installation
+  - Python 2.6 or above from https://www.python.org/
+
+2. QT installation
+  - Qt 4.6 through 5.5 from http://www.qt.io/
+
+3. PostgreSQL installation
+  - PostgreSQL 9.1 or above from http://www.postgresql.org/
+
+4. Inno Setup Installer
+   - 5.0 and above from http://www.jrsoftware.org/isdl.php
+
+5. Microsoft visual studio (2008 and above)
+
+Building: Depending upon the archicture of the OS(x86|amd64) set then environment variables.
+
+1. Set the PYTHON environment variable to the Python root installation directory, e.g. for x86
+
+   SET "PYTHON_HOME=C:\Python27"
+   SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
+
+2. Set the QTDIR environment variable to the QT root installation directory, e.g. for x86
+
+   SET "QTDIR=C:\Qt\Qt5.5.1\5.5\msvc2013"
+
+3. Set the PGDIR environment variable to the PostgreSQL installation directory, e.g. for x86
+
+   SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+
+4. Set the Inno Setup Installer environment variable to the Inno root installation directory, e.g. for x86
+
+   SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+
+5. Set the Miscrosoft Visual studio environment variable to the Visual studio root installation directory, e.g. for x86
+
+   SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+
+6. To build, go to pgAdmin4 source root directory and execute "Make.bat x86|amd64". Based on x86|amd64, this will
+   create the python virtual environment and install all the required python modules mentioned in the
+   requirements file using pip, build the runtime code and finally create the windows installer x86|amd64 in ./dist directory
+
diff --git a/pkg/win32/Resources/SplashScreen.bmp b/pkg/win32/Resources/SplashScreen.bmp
new file mode 100755
index 0000000000000000000000000000000000000000..c2407307ef3ba7d4093c7a0762cd94cbc84316cc
GIT binary patch
literal 196662
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
P38)fKC7?>+J(R$|!7~Vf

literal 0
HcmV?d00001

diff --git a/pkg/win32/Resources/license.rtf b/pkg/win32/Resources/license.rtf
new file mode 100755
index 0000000000000000000000000000000000000000..40555108fa0575040cd3d8bb06da301fea2dd2a6
GIT binary patch
literal 1262
zcmaKq&2HN|5QV$WQw+N5E!;p>|IrmK(J=u@R7EO90BvZCve|2kDn-W#g1mc&a+0=-
zb|aEQ&6zXb@V;@rn>VT-&Ggv}+j;yxZd%=SQPbO_+1SINd<g7Szm22!AD{M}4yXI3
zv%UB0J#M0=8&75&n{IGF;-=f|lpD2=fH<S}UmhMV?wi-mR`=Q|Zyi)-v(s%H!H3KE
z@^c(T56!L7r~gggzH5$~`9(7**PeCbPfai|kKVq8VN2SB>ERvLn|}&FT{P=yN$hav
z%y#GDRq`L8VhnF^nSYpp-0A1URNv~o9S*wpAhkL)>u5@UEcoL)l-eDz6JvYu7LKEy
z!3MQwaImfEa8-Q^tr@*D>!a7;cV>jqcK)QCo-U0ap|zW1D5882>ab<i-@$NngAIx&
z<9GJxq0@K>f=>YjCuh9ZJ*chIdh&_-JMHxP4z^D9UbizCoV_)zZn3)Z_`$+!d#fj>
zX9~UbW^?v4IYd;bsD|BCE@X6ezqcpTZ^54|Jl~I?hCwR_h*|CTLDJ~)^2|B_X9W}-
z=rt`Qh!x2)kShx16-jfvO7SA&Wgc!NB{?i8WQ;5_3X%gUZlENUyn!XJAY~Oz<P2Ex
zv=b#w7|B8?VJT{aJ^q>SLeQ@@2JjYAl9MYcroXZ}WyKX_Tu3M@zGM>Pq+%jOc`bo2
zCx5k|=PeT;_)>l&6-7HKU;?B(se@x8882p2Z@|uZf9-2U1olP?An7#|G<_;mav|7)
zWel6d+M-TYkA{C^_)lUJge6N5?F}*#Nk&*MCU)q$A_(D+=4Y_LJ_{}pbj~DNksMz=
z4u$1q#_;?rEm+EFm8?*OJh}`NkXu28n8re;5wWDsNCjnGVMp|G(t8Gnq_1&4DXeHk
z>msEUAXkns3V4ZNn0N^bB3PIOs{gay01_V*Uu5iR8h{8d<*@?fgcXt&q)6xtVU{JY
i@Ws?+N@RdQ3+yDJVR(4Lmy+|81$JSQ;!OPE;>AzwW`ocG

literal 0
HcmV?d00001

diff --git a/pkg/win32/Resources/pgAdmin4.ico b/pkg/win32/Resources/pgAdmin4.ico
new file mode 100755
index 0000000000000000000000000000000000000000..3fcebafdc9c16dedaf800066f84a3fb91a226ec1
GIT binary patch
literal 35147
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
NUx1Z5xNhk0{{S#nc=-ST

literal 0
HcmV?d00001

diff --git a/pkg/win32/installer.iss.in b/pkg/win32/installer.iss.in
new file mode 100755
index 0000000..8ca0006
--- /dev/null
+++ b/pkg/win32/installer.iss.in
@@ -0,0 +1,116 @@
+#define MyAppName MYAPP_NAME
+#define MyAppVersion MYAPP_VERSION
+#define MyAppPublisher "The pgAdmin Development Team"
+#define MyAppURL "www.pgadmin.org"
+#define MyAppExeName "pgAdmin4.exe"
+#define MyAppID "C14F64E7-DCB9-4DE1-8560-16F08FCFF64E"
+#define MyAppFullVersion MYAPP_FULLVERSION
+#define MyAppArchitecturesMode MYAPP_ARCHITECTURESMODE
+[Setup]
+AppId={#MyAppName}{#MyAppVersion}
+AppName={#MyAppName}
+AppVersion={#MyAppFullVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion}
+DisableWelcomePage=no
+DisableProgramGroupPage=yes
+LicenseFile=Resources\license.rtf
+OutputBaseFilename=setup
+SetupIconFile=Resources\pgAdmin4.ico
+Compression=lzma
+SolidCompression=yes
+PrivilegesRequired=admin
+ChangesEnvironment=yes
+;UninstallFilesDir={app}\{#MyAppVersion}
+ArchitecturesInstallIn64BitMode={#MyAppArchitecturesMode}
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Icons]
+Name: {group}\{#MyAppName}; Filename: {app}\runtime\{#MyAppExeName}; IconFilename: {app}\pgAdmin4.ico; WorkingDir: {app}; Comment: "{#MyAppName}";
+Name: {commondesktop}\{#MyAppName}; Filename: {app}\runtime\{#MyAppExeName}; IconFilename: {app}\pgAdmin4.ico; WorkingDir: {app}; Comment: "{#MyAppName}";
+
+[Files]
+Source: "Resources\SplashScreen.bmp"; DestDir: {tmp}; Flags: dontcopy
+Source: "..\..\win-build\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
+
+[Run]
+Filename: "{app}\runtime\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: runascurrentuser nowait postinstall skipifsilent
+
+[CustomMessages]
+english.NewerVersionExists=A newer version of {#MyAppName}
+
+[Registry]
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; Flags: uninsdeletekey
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; ValueType: string; ValueName: "Version"; ValueData: "{#MyAppFullVersion}"
+
+[Code]
+var
+  // Required for Splash Screen.
+  Splash  : TSetupForm;
+
+procedure CurStepChanged(CurStep: TSetupStep);
+var
+ value : string;
+ begin
+   if CurStep = ssInstall then begin
+     value := ExpandConstant('{app}') + '\ve_python\Lib\site-packages' + ';' +
+     ExpandConstant('{app}') + '\ve_python\Lib' + ';' +
+     ExpandConstant('{app}') + '\ve_python\Lib\lib-tk' + ';' +
+     ExpandConstant('{app}') + '\ve_python\DLLs';
+     RegWriteStringValue(HKEY_CURRENT_USER,'Software\pgAdmin Development Team\pgAdmin 4', 'PythonPath', value);
+ end;
+end;
+
+// find current version before installation
+function InitializeSetup: Boolean;
+var
+  Version: String;
+  BitmapImage1 : TBitmapImage;
+begin
+  Splash := CreateCustomForm;
+  Splash.BorderStyle := bsNone;
+  BitmapImage1 := TBitmapImage.Create(Splash);
+  BitmapImage1.AutoSize := True;
+  BitmapImage1.Align := alClient;
+  BitmapImage1.Left := 0;
+  BitmapImage1.Top := 0;
+  BitmapImage1.stretch := True;
+  BitmapImage1.Parent := Splash;
+  ExtractTemporaryFile('SplashScreen.bmp');
+  BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\SplashScreen.bmp');
+  Splash.Width := BitmapImage1.Width;
+  Splash.Height := BitmapImage1.Height;
+  Splash.Center;
+  Splash.Show;
+  BitmapImage1.Refresh;
+  Sleep(3000);
+
+  if RegValueExists(HKEY_LOCAL_MACHINE,'Software\{#MyAppName}\{#MyAppVersion}', 'Version') then
+    begin
+      RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\{#MyAppName}\{#MyAppVersion}', 'Version', Version);
+      if Version > '{#MyAppFullVersion}' then
+        begin
+          MsgBox(ExpandConstant('{cm:NewerVersionExists}' + '(v' + Version + ') is already installed' ), mbInformation, MB_OK);
+          Result := False;
+        end
+      else
+        begin
+          Result := True;
+        end
+    end
+  else
+    begin
+      Result := True;
+    end
+
+  Splash.Close;
+end;
+
+// End of program
\ No newline at end of file
diff --git a/pkg/win32/replace.py b/pkg/win32/replace.py
new file mode 100755
index 0000000..3ec67e1
--- /dev/null
+++ b/pkg/win32/replace.py
@@ -0,0 +1,34 @@
+import fileinput
+import sys, getopt
+
+# Store input and output file names
+infile=''
+outfile=''
+searchExp=''
+replaceExp=''
+# Read command line args
+myopts, args = getopt.getopt(sys.argv[1:],"i:o:s:r:")
+###############################
+# o == option
+# a == argument passed to the o
+###############################
+for o, a in myopts:
+    if o == '-i':
+        infile=a
+    elif o == '-o':
+        outfile=a
+    elif o == '-s':
+        searchExp=a
+    elif o == '-r':
+        replaceExp=a
+    else:
+        print("Usage: %s -i input -o output" % sys.argv[0])
+
+# Display input and output file name passed as the args
+
+f1 = open(infile, 'r')
+f2 = open(outfile, 'w')
+for line in f1:
+    f2.write(line.replace(searchExp,replaceExp))
+f1.close()
+f2.close()


view thread (20+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: PATCH: pgAdmin4 windows installer
  In-Reply-To: <CAAgiCNEOAZJKMHzcQzSSFELEz8oDiQTOEw1k9QLUdx=bTxkEHg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox