mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-15 01:01:26 +00:00
Compare commits
7 Commits
develop
...
feature/jd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
602c206dae | ||
|
|
426b33ae1a | ||
|
|
8e52161fa4 | ||
|
|
f1540e13eb | ||
|
|
2c2165cb22 | ||
|
|
03cb5f6be9 | ||
|
|
8a98048835 |
28
.github/workflows/win-exe.yml
vendored
28
.github/workflows/win-exe.yml
vendored
@@ -82,8 +82,8 @@ jobs:
|
||||
include:
|
||||
- arch: x64
|
||||
os: windows-latest
|
||||
java-dist: 'zulu' #cannot use temurin, see https://github.com/cryptomator/cryptomator/issues/3824#issuecomment-2829827427
|
||||
java-version: '25.0.1+8'
|
||||
java-dist: 'temurin'
|
||||
java-version: '26.0.1+8'
|
||||
java-package: 'jdk'
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
@@ -220,12 +220,10 @@ jobs:
|
||||
}
|
||||
$jar.Dispose()
|
||||
}
|
||||
- name: Extract wixhelper.dll for Codesigning #see https://github.com/cryptomator/cryptomator/issues/3130
|
||||
shell: pwsh
|
||||
- name: Get msi helper dll for code signing
|
||||
run: |
|
||||
New-Item -Path appdir/jpackage-jmod -ItemType Directory
|
||||
& $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod"
|
||||
Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir"
|
||||
${JAVA_HOME}/bin/jpackage --type msi --win-upgrade-uuid bda45523-42b1-4cae-9354-a45475ed4775 --app-image appdir/Cryptomator --dest /tmp/ --name Test --vendor Test --copyright "None" --app-version "1.0" --temp msi-helper
|
||||
find ./msi-helper/ -type f -name msica.dll -exec mv {} ./appdir \;
|
||||
- name: Sign DLLs with Azure Trusted Signing
|
||||
if: inputs.sign || github.event_name == 'schedule'
|
||||
uses: ./.github/actions/win-sign-action
|
||||
@@ -261,6 +259,16 @@ jobs:
|
||||
"-Dlicense.failOnMissing=true"
|
||||
"-Dlicense.licenseMergesUrl=file:///${{ github.workspace }}/license/merges"
|
||||
shell: pwsh
|
||||
- name: Create file association file from template
|
||||
working-directory: dist/win
|
||||
run: |
|
||||
$Env:JP_WIXWIZARD_RESOURCES_PROPERTIES_FORMAT = "${Env:JP_WIXWIZARD_RESOURCES}".Replace('\', '\\');
|
||||
Get-Content .\resources\FAvaultFile.template.properties `
|
||||
| ForEach-Object { $ExecutionContext.InvokeCommand.ExpandString($_) } `
|
||||
| Out-File -FilePath .\resources\FAvaultFile.properties
|
||||
env:
|
||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources/ # requires abs path, used in resources/main.wxs
|
||||
shell: pwsh
|
||||
- name: Create MSI
|
||||
run: >
|
||||
${JAVA_HOME}/bin/jpackage
|
||||
@@ -276,14 +284,14 @@ jobs:
|
||||
--win-menu
|
||||
--win-dir-chooser
|
||||
--win-shortcut-prompt
|
||||
--win-update-url "https:\\cryptomator.org\downloads"
|
||||
--win-update-url "https://cryptomator.org/downloads"
|
||||
--win-menu-group Cryptomator
|
||||
--resource-dir dist/win/resources
|
||||
--license-file dist/win/resources/license.rtf
|
||||
--file-associations dist/win/resources/FAvaultFile.properties
|
||||
env:
|
||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
||||
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
|
||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources/ # requires abs path, used in resources/main.wxs
|
||||
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir\
|
||||
- name: Sign MSI with Azure Trusted Signing
|
||||
if: inputs.sign || github.event_name == 'schedule'
|
||||
uses: ./.github/actions/win-sign-action
|
||||
|
||||
152
dist/win/build.ps1
vendored
152
dist/win/build.ps1
vendored
@@ -16,6 +16,19 @@ Param(
|
||||
# Function Definitions Section
|
||||
# ============================
|
||||
|
||||
function Invoke-CommandWithExitCheck {
|
||||
param (
|
||||
[string]$Command,
|
||||
[string[]]$Arguments
|
||||
)
|
||||
|
||||
& $Command @Arguments
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "Command '$Command' failed with exit code $LASTEXITCODE"
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
}
|
||||
|
||||
function Main {
|
||||
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
@@ -65,7 +78,8 @@ Write-Host "`$Env:JAVA_HOME=$Env:JAVA_HOME"
|
||||
$copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
|
||||
|
||||
# compile
|
||||
&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "clean", "package", "-DskipTests", "-Pwin")
|
||||
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
|
||||
|
||||
# add runtime
|
||||
@@ -129,16 +143,18 @@ if ((& "$Env:JAVA_HOME\bin\jlink" --help | Select-String -Pattern "Linking from
|
||||
}
|
||||
|
||||
### create runtime
|
||||
& "$Env:JAVA_HOME\bin\jlink" `
|
||||
--verbose `
|
||||
--output runtime `
|
||||
--module-path $jmodPaths `
|
||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.crypto.mscapi,java.compiler,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
|
||||
--strip-native-commands `
|
||||
--no-header-files `
|
||||
--no-man-pages `
|
||||
--strip-debug `
|
||||
--compress "zip-0" #do not compress and use msi compression
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"$Env:JAVA_HOME\bin\jlink" -Arguments @(
|
||||
"--verbose",
|
||||
"--output", "runtime",
|
||||
"--module-path", $jmodPaths,
|
||||
"--add-modules", "java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.crypto.mscapi,java.compiler,javafx.base,javafx.graphics,javafx.controls,javafx.fxml",
|
||||
"--strip-native-commands",
|
||||
"--no-header-files",
|
||||
"--no-man-pages",
|
||||
"--strip-debug",
|
||||
"--compress", "zip-0" #do not compress and use msi compression
|
||||
)
|
||||
|
||||
$appPath = ".\$AppName"
|
||||
if ($clean -and (Test-Path -Path $appPath)) {
|
||||
@@ -195,14 +211,15 @@ if ($LASTEXITCODE -ne 0) {
|
||||
}
|
||||
|
||||
#Create RTF license for msi
|
||||
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
|
||||
"-Dlicense.thirdPartyFilename=license.rtf" `
|
||||
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl" `
|
||||
"-Dlicense.outputDirectory=$buildDir\resources\" `
|
||||
"-Dlicense.includedScopes=compile" `
|
||||
"-Dlicense.excludedGroups=^org\.cryptomator" `
|
||||
"-Dlicense.failOnMissing=true" `
|
||||
"-Dlicense.licenseMergesUrl=file:///$buildDir/../../license/merges"
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
||||
"-Dlicense.thirdPartyFilename=license.rtf", `
|
||||
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl", `
|
||||
"-Dlicense.outputDirectory=$buildDir\resources\", `
|
||||
"-Dlicense.includedScopes=compile", `
|
||||
"-Dlicense.excludedGroups=^org\.cryptomator", `
|
||||
"-Dlicense.failOnMissing=true", `
|
||||
"-Dlicense.licenseMergesUrl=file:///$buildDir/../../license/merges")
|
||||
|
||||
# patch app dir
|
||||
Copy-Item "contrib\*" -Destination "$AppName"
|
||||
@@ -210,42 +227,46 @@ attrib -r "$AppName\$AppName.exe"
|
||||
attrib -r "$AppName\${AppName} (Debug).exe"
|
||||
|
||||
# create .msi
|
||||
$Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
|
||||
$Env:JP_WIXHELPER_DIR = "."
|
||||
& "$Env:JAVA_HOME\bin\jpackage" `
|
||||
--verbose `
|
||||
--type msi `
|
||||
--win-upgrade-uuid $UpgradeUUID `
|
||||
--app-image $AppName `
|
||||
--dest installer `
|
||||
--name $AppName `
|
||||
--vendor $Vendor `
|
||||
--copyright $copyright `
|
||||
--app-version "$semVerNo.$revisionNo" `
|
||||
--win-menu `
|
||||
--win-dir-chooser `
|
||||
--win-shortcut-prompt `
|
||||
--win-menu-group $AppName `
|
||||
--resource-dir resources `
|
||||
--license-file resources/license.rtf `
|
||||
--win-update-url $UpdateUrl `
|
||||
--about-url $AboutUrl `
|
||||
--file-associations resources/FAvaultFile.properties
|
||||
$Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources\"
|
||||
$Env:JP_WIXWIZARD_RESOURCES_PROPERTIES_FORMAT = "${Env:JP_WIXWIZARD_RESOURCES}".Replace('\', '\\');
|
||||
$Env:JP_WIXHELPER_DIR = ""
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "jpackage MSI failed with exit code $LASTEXITCODE"
|
||||
return 1;
|
||||
}
|
||||
Get-Content .\resources\FAvaultFile.template.properties ` # Similar to envsubst
|
||||
| ForEach-Object { $ExecutionContext.InvokeCommand.ExpandString($_) } `
|
||||
| Out-File -FilePath .\resources\FAvaultFile.properties
|
||||
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"$Env:JAVA_HOME\bin\jpackage" -Arguments @(
|
||||
"--verbose",
|
||||
"--type", "msi",
|
||||
"--win-upgrade-uuid", $UpgradeUUID,
|
||||
"--app-image", $AppName,
|
||||
"--dest", "installer",
|
||||
"--name", $AppName,
|
||||
"--vendor", $Vendor,
|
||||
"--copyright", $copyright,
|
||||
"--app-version", "$semVerNo.$revisionNo",
|
||||
"--win-menu",
|
||||
"--win-dir-chooser",
|
||||
"--win-shortcut-prompt",
|
||||
"--win-menu-group", $AppName,
|
||||
"--resource-dir", "resources",
|
||||
"--license-file", "resources/license.rtf",
|
||||
"--win-update-url", $UpdateUrl,
|
||||
"--about-url", $AboutUrl,
|
||||
"--file-associations", "resources/FAvaultFile.properties"
|
||||
)
|
||||
|
||||
#Create RTF license for bundle
|
||||
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
|
||||
"-Dlicense.thirdPartyFilename=license.rtf" `
|
||||
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl" `
|
||||
"-Dlicense.outputDirectory=$buildDir\bundle\resources\" `
|
||||
"-Dlicense.includedScopes=compile" `
|
||||
"-Dlicense.excludedGroups=^org\.cryptomator" `
|
||||
"-Dlicense.failOnMissing=true" `
|
||||
"-Dlicense.licenseMergesUrl=file:///$buildDir/../../license/merges"
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
||||
"-Dlicense.thirdPartyFilename=license.rtf", `
|
||||
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl", `
|
||||
"-Dlicense.outputDirectory=$buildDir\bundle\resources\", `
|
||||
"-Dlicense.includedScopes=compile", `
|
||||
"-Dlicense.excludedGroups=^org\.cryptomator", `
|
||||
"-Dlicense.failOnMissing=true", `
|
||||
"-Dlicense.licenseMergesUrl=file:///$buildDir/../../license/merges")
|
||||
|
||||
# download Winfsp
|
||||
$winfspMsiUrl= 'https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi'
|
||||
@@ -271,18 +292,21 @@ Invoke-WebRequest $winfspUninstaller -OutFile ".\bundle\resources\winfsp-uninsta
|
||||
Copy-Item ".\installer\$AppName-*.msi" -Destination ".\bundle\resources\$AppName.msi" -Force
|
||||
|
||||
# create bundle including winfsp
|
||||
& wix build `
|
||||
-define BundleName="$AppName" `
|
||||
-define BundleVersion="$semVerNo.$revisionNo" `
|
||||
-define BundleVendor="$Vendor" `
|
||||
-define BundleCopyright="$copyright" `
|
||||
-define AboutUrl="$AboutUrl" `
|
||||
-define HelpUrl="$HelpUrl" `
|
||||
-define UpdateUrl="$UpdateUrl" `
|
||||
-ext "WixToolset.Util.wixext" `
|
||||
-ext "WixToolset.BootstrapperApplications.wixext" `
|
||||
.\bundle\bundleWithWinfsp.wxs `
|
||||
-out "installer\$AppName-Installer.exe"
|
||||
Invoke-CommandWithExitCheck -Command `
|
||||
"wix" -Arguments @(
|
||||
"build",
|
||||
"-define", "BundleName=$AppName",
|
||||
"-define", "BundleVersion=$semVerNo.$revisionNo",
|
||||
"-define", "BundleVendor=$Vendor",
|
||||
"-define", "BundleCopyright=$copyright",
|
||||
"-define", "AboutUrl=$AboutUrl",
|
||||
"-define", "HelpUrl=$HelpUrl",
|
||||
"-define", "UpdateUrl=$UpdateUrl",
|
||||
"-ext", "WixToolset.Util.wixext",
|
||||
"-ext", "WixToolset.BootstrapperApplications.wixext",
|
||||
".\bundle\bundleWithWinfsp.wxs",
|
||||
"-out", ".\installer\$AppName-Installer.exe"
|
||||
)
|
||||
|
||||
Write-Host "Created EXE installer .\installer\$AppName-Installer.exe"
|
||||
return 0;
|
||||
|
||||
2
dist/win/resources/FAvaultFile.properties
vendored
2
dist/win/resources/FAvaultFile.properties
vendored
@@ -1,4 +1,4 @@
|
||||
mime-type=application/vnd.cryptomator.vault
|
||||
extension=cryptomator
|
||||
description=Cryptomator Vault File
|
||||
icon=resources/Cryptomator-Vault.ico
|
||||
icon=C:\\Users\\Arbeit\\Skymatic\\cryptomator-jdk26-jpackage\\dist\\win\\resources\\Cryptomator-Vault.ico
|
||||
|
||||
4
dist/win/resources/FAvaultFile.template.properties
vendored
Normal file
4
dist/win/resources/FAvaultFile.template.properties
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
mime-type=application/vnd.cryptomator.vault
|
||||
extension=cryptomator
|
||||
description=Cryptomator Vault File
|
||||
icon=${env:JP_WIXWIZARD_RESOURCES_PROPERTIES_FORMAT}Cryptomator-Vault.ico
|
||||
6
dist/win/resources/main.wxs
vendored
6
dist/win/resources/main.wxs
vendored
@@ -68,7 +68,7 @@
|
||||
<?endif?>
|
||||
|
||||
<!-- TODO: how does this work again? -->
|
||||
<ns0:Binary Id="JpCaDll" SourceFile="$(env.JP_WIXHELPER_DIR)\wixhelper.dll" />
|
||||
<ns0:Binary Id="JpCaDll" SourceFile="$(env.JP_WIXHELPER_DIR)msica.dll"></ns0:Binary>
|
||||
<ns0:CustomAction Id="JpFindRelatedProducts" BinaryRef="JpCaDll" DllEntry="FindRelatedProductsEx" />
|
||||
|
||||
<?ifndef SkipCryptomatorLegacyCheck ?>
|
||||
@@ -225,7 +225,7 @@
|
||||
<ns0:Custom Action="JpFindRelatedProducts" After="FindRelatedProducts"/>
|
||||
</ns0:InstallUISequence>
|
||||
|
||||
<ns0:WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\banner.bmp" />
|
||||
<ns0:WixVariable Id="WixUIDialogBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\background.bmp" />
|
||||
<ns0:WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)banner.bmp" />
|
||||
<ns0:WixVariable Id="WixUIDialogBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)background.bmp" />
|
||||
</ns0:Package>
|
||||
</ns0:Wix>
|
||||
|
||||
Reference in New Issue
Block a user