Merge pull request #2163 from devinbileck/update-windows-packaging-process

Update windows packaging process
This commit is contained in:
Christoph Atteneder 2019-01-07 14:25:30 +01:00 committed by GitHub
commit 77338c7d32
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 201 additions and 37 deletions

View file

@ -1,29 +0,0 @@
:: Invoke from Bisq home directory
:: edit iss file -> AppVersion
:: edit -> -BappVersion and -srcfiles
:: 64 bit build
:: Needs Inno Setup 5 or later (http://www.jrsoftware.org/isdl.php)
cd ../../
SET version=0.9.1
:: Private setup
::SET outdir=\\VBOXSVR\vm_shared_windows
:: Others might use the following
SET outdir=.
call "%JAVA_HOME%\bin\javapackager.exe" -deploy ^
-BappVersion="%version%" ^
-native exe ^
-name Bisq ^
-title Bisq ^
-vendor Bisq ^
-outdir %outdir% ^
-appclass bisq.desktop.app.BisqAppMain ^
-srcdir %outdir% ^
-srcfiles Bisq.jar ^
-outfile Bisq ^
-Bruntime="%JAVA_HOME%\jre" ^
-v

View file

@ -1,20 +1,26 @@
;This file will be executed next to the application bundle image
;This file will be executed next to the application bundle image
;I.e. current directory will contain folder Bisq with application files
;Note: This file must use UTF-8 encoding with BOM
;Note: This file must use UTF-8 encoding
#define SourceDir GetEnv('package_dir') + '\windows'
#define AppVersion GetEnv('version')
#define FileVersion GetEnv('file_version')
#define AppCopyrightYear GetDateTimeString('yyyy', '-', ':')
[Setup]
AppId={{bisq}}
AppName=Bisq
AppVersion=0.9.1
AppVerName=Bisq
AppVersion={#AppVersion}
AppVerName=Bisq v{#AppVersion}
AppPublisher=Bisq
AppCopyright=Copyright (C) 2018
AppComments={cm:AppComments}
AppCopyright=Copyright (C) {#AppCopyrightYear}
AppPublisherURL=https://bisq.network
AppSupportURL=https://bisq.network
;AppUpdatesURL=http://java.com/
AppSupportURL=https://bisq.community
;AppUpdatesURL=https://github.com/bisq-network/bisq/releases
VersionInfoVersion={#FileVersion}
VersionInfoDescription=Bisq Setup
VersionInfoCopyright=Copyright (C) {#AppCopyrightYear}
DefaultDirName={localappdata}\Bisq
DisableStartupPrompt=Yes
DisableDirPage=Yes
@ -25,9 +31,9 @@ DisableWelcomePage=Yes
DefaultGroupName=Bisq
;Optional License
LicenseFile=
OutputBaseFilename=Bisq
;Windows 7 with Service Pack 1 or above
MinVersion=0,6.1.7601
OutputBaseFilename=Bisq-{#AppVersion}
Compression=lzma
SolidCompression=yes
PrivilegesRequired=lowest

View file

@ -0,0 +1,117 @@
:: Requirements:
:: - Inno Setup unicode installed (http://www.jrsoftware.org/isdl.php)
:: - OracleJDK 10 installed
:: Note: OpenJDK 10 does not have the javapackager util, so must use OracleJDK
:: Prior to running this script:
:: - Update version below
:: - Ensure JAVA_HOME below is pointing to OracleJDK 10 directory
@echo off
set version=0.9.1-SNAPSHOT
set package_dir=%~dp0..
for /F "tokens=1,2,3 delims=.-" %%a in ("%version%") do (
set file_version=%%a.%%b.%%c
)
cd %~dp0..\..\..
if exist "%package_dir%\desktop-%version%-all.jar" (
set jar_dir=%package_dir%
set jar_file=%package_dir%\desktop-%version%-all.jar
set jar_filename=desktop-%version%-all.jar
goto PackageJar
)
echo Building application
call gradlew.bat :desktop:clean :desktop:build -x test shadowJar
if exist "%~dp0..\..\..\desktop\build\libs\desktop-%version%-all.jar" (
set jar_dir=%~dp0..\..\..\desktop\build\libs
set jar_file=%~dp0..\..\..\desktop\build\libs\desktop-%version%-all.jar
set jar_filename=desktop-%version%-all.jar
) else (
echo No jar file available in %~dp0..\..\..\desktop\build\libs
exit /B 1
)
if not exist "%TEMP%\7za920\7za.exe" (
echo Downloading 7zip ^(command line version^) to %TEMP% in order to extract the jar
powershell -Command "Invoke-WebRequest https://www.7-zip.org/a/7za920.zip -OutFile $env:temp\7za920.zip"
powershell -Command "Expand-Archive $env:temp\7za920.zip -DestinationPath $env:temp\7za920 -Force"
)
set tmp_dir=%~dp0..\..\..\desktop\build\libs\tmp
echo Extracting jar file to %tmp_dir%
if exist "%tmp_dir%" (
rmdir /S /Q "%tmp_dir%"
)
md "%tmp_dir%"
"%TEMP%\7za920\7za.exe" x "%jar_file%" -o"%tmp_dir%" -r -y
echo Deleting problematic module config from extracted jar
:: Strip out Java 9 module configuration used in the fontawesomefx library as it causes javapackager to stop
:: because of this existing module information, since it is not used as a module.
:: Sometimes module-info.class does not exist - TODO check why and if still needed
if exist "%tmp_dir%\module-info.class" (
del /Q "%tmp_dir%\module-info.class"
)
echo Zipping jar again without module config
set jar_file=%package_dir%\%jar_filename%
if exist "%jar_file%" (
del /Q "%jar_file%"
)
"%TEMP%\7za920\7za.exe" a -tzip "%jar_file%" "%tmp_dir%\*" -r
rmdir /S /Q "%tmp_dir%"
if exist "%TEMP%\7za920.zip" (
echo Removing downloaded files
del /Q "%TEMP%\7za920.zip"
)
echo SHA256 before stripping jar file:
for /F "delims=" %%h in ('certutil -hashfile "%jar_file%" SHA256 ^| findstr -i -v "SHA256" ^| findstr -i -v "certutil"') do (set hash=%%h)
echo %hash%
echo Making deterministic jar by stripping out parameters and comments that contain dates
:: Jar file created from https://github.com/ManfredKarrer/tools
:: TODO Is this step still necessary? Since we are using preserveFileTimestamps and reproducibleFileOrder in build.gradle
java -jar "%CD%\desktop\package\tools-1.0.jar" "%jar_file%"
echo SHA256 after stripping jar file:
for /F "delims=" %%h in ('certutil -hashfile "%jar_file%" SHA256 ^| findstr -i -v "SHA256" ^| findstr -i -v "certutil"') do (set hash=%%h)
echo %hash%
echo %hash% > "%package_dir%\%jar_filename%.txt"
:PackageJar
if exist "%package_dir%\windows\Bisq-%version%.exe" (
del /Q "%package_dir%\windows\Bisq-%version%.exe"
)
cd desktop
echo Generating packaged executable
call "%JAVA_HOME%\bin\javapackager.exe" -deploy ^
-native exe ^
-name Bisq ^
-title Bisq ^
-vendor Bisq ^
-outdir "%package_dir%\windows" ^
-appclass bisq.desktop.app.BisqAppMain ^
-srcdir "%package_dir%" ^
-srcfiles %jar_filename% ^
-outfile Bisq ^
-v
if not exist "%package_dir%\windows\Bisq-%version%.exe" (
echo No exe file found at %package_dir%\windows\Bisq-%version%.exe
exit /B 2
)
echo SHA256 of %package_dir%\windows\Bisq-%version%.exe:
for /F "delims=" %%h in ('certutil -hashfile "%package_dir%\windows\Bisq-%version%.exe" SHA256 ^| findstr -i -v "SHA256" ^| findstr -i -v "certutil"') do (set hash=%%h)
echo %hash%
echo %hash% > "%package_dir%\windows\Bisq-%version%.exe.txt"
echo Done!
pause

View file

@ -0,0 +1,70 @@
:: Requirements:
:: - GPG installed (https://gpg4win.org/get-gpg4win.html)
:: - GPG key has been created
:: Prior to running this script:
:: - Update version below
@echo off
set version=0.9.1-SNAPSHOT
set release_dir=%~dp0..\..\..\releases\%version%
set package_dir=%~dp0..
set dmg=Bisq-%version%.dmg
set deb=Bisq-%version%.deb
set exe=Bisq-%version%.exe
set /P gpg_user="Enter email address used for gpg signing: "
echo Creating release directory
if exist "%release_dir%" (
rmdir /S /Q "%release_dir%"
)
md "%release_dir%"
echo Copying files to release folder
:: sig key mkarrer
xcopy /Y "%~dp0..\F379A1C6.asc" "%release_dir%"
:: sig key cbeams
xcopy /Y "%~dp0..\5BC5ED73.asc" "%release_dir%"
:: sig key Christoph Atteneder
xcopy /Y "%~dp0..\29CDFD3B.asc" "%release_dir%"
:: signing key
xcopy /Y "%~dp0..\signingkey.asc" "%release_dir%"
if exist "%package_dir%\macosx\%dmg%" (
xcopy /Y "%package_dir%\macosx\%dmg%" "%release_dir%"
xcopy /Y "%package_dir%\macosx\%dmg%.txt" "%release_dir%"
)
if exist "%package_dir%\linux\%deb%" (
xcopy /Y "%package_dir%\linux\%deb%" "%release_dir%"
xcopy /Y "%package_dir%\linux\%deb%.txt" "%release_dir%"
)
if exist "%package_dir%\windows\%exe%" (
xcopy /Y "%package_dir%\windows\%exe%" "%release_dir%"
xcopy /Y "%package_dir%\windows\%exe%.txt" "%release_dir%"
)
echo Creating signatures
if exist "%release_dir%\%dmg%" (
gpg --digest-algo SHA256 --local-user %gpg_user% --output "%release_dir%\%dmg%.asc" --detach-sig --armor "%release_dir%\%dmg%"
)
if exist "%release_dir%\%deb%" (
gpg --digest-algo SHA256 --local-user %gpg_user% --output "%release_dir%\%deb%.asc" --detach-sig --armor "%release_dir%\%deb%"
)
if exist "%release_dir%\%exe%" (
gpg --digest-algo SHA256 --local-user %gpg_user% --output "%release_dir%\%exe%.asc" --detach-sig --armor "%release_dir%\%exe%"
)
echo Verifying signatures
if exist "%release_dir%\%dmg%" (
gpg --digest-algo SHA256 --verify "%release_dir%\%dmg%.asc"
)
if exist "%release_dir%\%deb%" (
gpg --digest-algo SHA256 --verify "%release_dir%\%deb%.asc"
)
if exist "%release_dir%\%exe%" (
gpg --digest-algo SHA256 --verify "%release_dir%\%exe%.asc"
)
echo Done!
pause