view deploy/win32/build-and-package.bat @ 698:52b8a499f379

Further packaging/signing fixes
author Chris Cannam
date Mon, 10 Dec 2018 17:52:27 +0000
parents 11e9454800cc
children dfabf544f682
line wrap: on
line source
rem  Run this from within the top-level project dir: deploy\win32\build.bat

rem  NB Sip build command, in sip-4.19.13 directory: c:\Python27\python.exe configure.py --sip-module PyQt5.sip --no-tools
rem  NB PyQt5 build command, in PyQt5_gpl-5.11.3 directory: c:\Python27\python.exe configure.py --qmake=c:\qt\5.12.0\msvc2017\bin\qmake.exe --sip=c:\Python27\sip.exe --disable=QtNfc

set STARTPWD=%CD%

if not exist "C:\Program Files (x86)\WiX Toolset v3.11\bin" (
@   echo Could not find WiX Toolset
@   exit /b 2
)

if not exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT" (
@   echo Could not find Windows CRT directory
@   exit /b 2
)

if not exist "C:/Python27/Lib/site-packages/PyQt5/" (
@   echo Could not find PyQt5 directory
@   exit /b 2
)

if not exist "C:/Python27/Lib/site-packages/Crypto/" (
@   echo Could not find PyCrypto directory
@   exit /b 2
)

set ORIGINALPATH=%PATH%
set PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
set CRTDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT
set PYPACKAGEDIR=C:/Python27/Lib/site-packages
set PYQTDIR=%PYPACKAGEDIR%/PyQt5/
set PYCRYPTODIR=%PYPACKAGEDIR%/Crypto/
set NAME=Open Source Developer, Christopher Cannam

set ARG=%1
shift
if "%ARG%" == "sign" (
@   echo NOTE: sign option specified, will attempt to codesign exe and msi
) else (
@   echo NOTE: sign option not specified, will not codesign anything
)

cd %STARTPWD%
del /q /s build_win32
call .\deploy\win32\build.bat
if %errorlevel% neq 0 exit /b %errorlevel%

if not exist mercurial-4.8.0-x86.msi (
     C:\ProgramData\chocolatey\bin\wget https://bitbucket.org/tortoisehg/files/downloads/mercurial-4.8.0-x86.msi
)
if %errorlevel% neq 0 exit /b %errorlevel%

if not exist mercurial-4.8.0-x86 (
     msiexec /a mercurial-4.8.0-x86.msi /qn TARGETDIR=%STARTPWD%\mercurial-4.8.0-x86
)
if %errorlevel% neq 0 exit /b %errorlevel%

set HGDIR=%STARTPWD%\mercurial-4.8.0-x86

cd build_win32\release

copy "%STARTPWD%\easyhg.py" .

copy "%CRTDIR%\concrt140.DLL" .
copy "%CRTDIR%\msvcp140.DLL" .
copy "%CRTDIR%\vccorlib140.DLL" .
copy "%CRTDIR%\vcruntime140.DLL" .

copy "%HGDIR%\PFiles\Mercurial\hg.exe" .
copy "%HGDIR%\PFiles\Mercurial\python27.dll" .

mkdir lib
copy "%HGDIR%\PFiles\Mercurial\lib\*" lib\

copy "%HGDIR%\windows\system32\msvcm90.dll" .
copy "%HGDIR%\windows\system32\msvcp90.dll" .
copy "%HGDIR%\windows\system32\msvcr90.dll" .

mkdir PyQt5
copy "%PYQTDIR%\__init__.py" PyQt5\__init__.py
copy "%PYQTDIR%\Qt.pyd" PyQt5\Qt.pyd
copy "%PYQTDIR%\QtCore.pyd" PyQt5\QtCore.pyd
copy "%PYQTDIR%\QtGui.pyd" PyQt5\QtGui.pyd
copy "%PYQTDIR%\QtWidgets.pyd" PyQt5\QtWidgets.pyd
copy "%PYQTDIR%\sip.pyd" PyQt5\sip.pyd

mkdir enum
copy "%PYPACKAGEDIR%\enum\__init__.py" enum\__init__.py

mkdir Crypto
mkdir Crypto\Cipher
mkdir Crypto\Util

copy "%PYCRYPTODIR%\Cipher\__init__.py" Crypto\Cipher\
copy "%PYCRYPTODIR%\Cipher\_AES.pyd" Crypto\Cipher\
copy "%PYCRYPTODIR%\Cipher\AES.py" Crypto\Cipher\
copy "%PYCRYPTODIR%\Cipher\blockalgo.py" Crypto\Cipher\

copy "%PYCRYPTODIR%\Util\__init__.py" Crypto\Util\
copy "%PYCRYPTODIR%\Util\py3compat.py" Crypto\Util\

copy "%PYCRYPTODIR%\__init__.py" Crypto\

if "%ARG%" == "sign" (
@echo Signing components
signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 *.dll *.exe Crypto\Cipher\*.pyd PyQt5\*.pyd lib\*.pyd
)

set PATH=%PATH%;"C:\Program Files (x86)\WiX Toolset v3.11\bin"

del easyhg.msi
candle -v ..\..\deploy\win32\easyhg.wxs
light -b . -ext WixUIExtension -ext WixUtilExtension -v easyhg.wixobj
if %errorlevel% neq 0 exit /b %errorlevel%

if "%ARG%" == "sign" (
@echo Signing package
signtool sign /v /n "%NAME%" /t http://time.certum.pl /fd sha1 easyhg.msi
signtool verify /pa easyhg.msi
)