From 71a575e0792ae2c3569533733a0ace03a4c6edf5 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 10 Nov 2021 16:08:11 +0100 Subject: [PATCH] add build scripts for windows [ci skip] --- dist/win/.gitignore | 3 ++ dist/win/build.bat | 2 + dist/win/build.ps1 | 91 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 dist/win/.gitignore create mode 100644 dist/win/build.bat create mode 100644 dist/win/build.ps1 diff --git a/dist/win/.gitignore b/dist/win/.gitignore new file mode 100644 index 000000000..2b66ddbed --- /dev/null +++ b/dist/win/.gitignore @@ -0,0 +1,3 @@ +runtime +Cryptomator +installer \ No newline at end of file diff --git a/dist/win/build.bat b/dist/win/build.bat new file mode 100644 index 000000000..ebfe2aa0b --- /dev/null +++ b/dist/win/build.bat @@ -0,0 +1,2 @@ +@echo off +powershell -NoExit -ExecutionPolicy Unrestricted -Command .\build.ps1 \ No newline at end of file diff --git a/dist/win/build.ps1 b/dist/win/build.ps1 new file mode 100644 index 000000000..e4024d46d --- /dev/null +++ b/dist/win/build.ps1 @@ -0,0 +1,91 @@ +# check preconditions +if ((Get-Command "git" -ErrorAction SilentlyContinue) -eq $null) +{ + Write-Host "Unable to find git.exe in your PATH (try: choco install git)" + exit 1 +} +if ((Get-Command "mvn" -ErrorAction SilentlyContinue) -eq $null) +{ + Write-Host "Unable to find mvn.cmd in your PATH (try: choco install maven)" + exit 1 +} + +$buildDir = Split-Path -Parent $PSCommandPath +$version = $(mvn -f $buildDir/../../pom.xml help:evaluate -Dexpression="project.version" -q -DforceStdout) +$semVerNo = $version -replace '(\d\.\d\.\d).*','$1' +$revisionNo = $(git rev-list --count HEAD) + +Write-Output "`$version=$version" +Write-Output "`$semVerNo=$semVerNo" +Write-Output "`$revisionNo=$revisionNo" +Write-Output "`$buildDir=$buildDir" +Write-Output "`$Env:JAVA_HOME=$Env:JAVA_HOME" + +# compile +&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin +Copy-Item "$buildDir\..\..\target\cryptomator-*.jar" -Destination "$buildDir\..\..\target\mods" + +# add runtime +& "$Env:JAVA_HOME\bin\jlink" ` + --verbose ` + --output runtime ` + --module-path "$Env:JAVA_HOME/jmods" ` + --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility ` + --no-header-files ` + --no-man-pages ` + --strip-debug ` + --compress=1 + +# create app dir +& "$Env:JAVA_HOME\bin\jpackage" ` + --verbose ` + --type app-image ` + --runtime-image runtime ` + --input ../../target/libs ` + --module-path ../../target/mods ` + --module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator ` + --dest . ` + --name Cryptomator ` + --vendor "Skymatic GmbH" ` + --copyright "(C) 2016 - 2021 Skymatic GmbH" ` + --java-options "-Xss5m" ` + --java-options "-Xmx256m" ` + --java-options "-Dcryptomator.appVersion=`"$semVerNo`"" ` + --app-version "$semVerNo.$revisionNo" ` + --java-options "-Dfile.encoding=`"utf-8`"" ` + --java-options "-Dcryptomator.logDir=`"~/AppData/Roaming/Cryptomator`"" ` + --java-options "-Dcryptomator.pluginDir=`"~/AppData/Roaming/Cryptomator/Plugins`"" ` + --java-options "-Dcryptomator.settingsPath=`"~/AppData/Roaming/Cryptomator/settings.json`"" ` + --java-options "-Dcryptomator.ipcSocketPath=`"~/AppData/Roaming/Cryptomator/ipc.socket`"" ` + --java-options "-Dcryptomator.keychainPath=`"~/AppData/Roaming/Cryptomator/keychain.json`"" ` + --java-options "-Dcryptomator.mountPointsDir=`"~/Cryptomator`"" ` + --java-options "-Dcryptomator.showTrayIcon=true" ` + --java-options "-Dcryptomator.buildNumber=`"msi-$revisionNo`"" ` + --resource-dir resources ` + --icon resources/Cryptomator.ico + +# patch app dir +Copy-Item "contrib\*" -Destination "Cryptomator" +attrib -r "Cryptomator\Cryptomator.exe" + + +# create .msi bundle +$Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources" +& "$Env:JAVA_HOME\bin\jpackage" ` + --verbose ` + --type msi ` + --win-upgrade-uuid bda45523-42b1-4cae-9354-a45475ed4775 ` + --app-image Cryptomator ` + --dest installer ` + --name Cryptomator ` + --vendor "Skymatic GmbH" ` + --copyright "(C) 2016 - 2021 Skymatic GmbH" ` + --app-version "$semVerNo" ` + --win-menu ` + --win-dir-chooser ` + --win-shortcut-prompt ` + --win-update-url "https:\\cryptomator.org" ` + --win-menu-group Cryptomator ` + --resource-dir resources ` + --license-file resources/license.rtf ` + --file-associations resources/FAvaultFile.properties \ No newline at end of file