diff --git a/desktop/package/windows/64bitBuild.bat b/desktop/package/windows/64bitBuild.bat deleted file mode 100644 index 259a33a17a5..00000000000 --- a/desktop/package/windows/64bitBuild.bat +++ /dev/null @@ -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 diff --git a/desktop/package/windows/Bisq.iss b/desktop/package/windows/Bisq.iss index ad1bfe1a803..2075dbc84d7 100644 --- a/desktop/package/windows/Bisq.iss +++ b/desktop/package/windows/Bisq.iss @@ -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 diff --git a/desktop/package/windows/package.bat b/desktop/package/windows/package.bat new file mode 100644 index 00000000000..ab2af6c8aeb --- /dev/null +++ b/desktop/package/windows/package.bat @@ -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 diff --git a/desktop/package/windows/release.bat b/desktop/package/windows/release.bat new file mode 100644 index 00000000000..4f33cce6604 --- /dev/null +++ b/desktop/package/windows/release.bat @@ -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