-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2163 from devinbileck/update-windows-packaging-pr…
…ocess Update windows packaging process
- Loading branch information
Showing
4 changed files
with
201 additions
and
37 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |