diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a15801f43..7bb53965a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -440,6 +440,11 @@ jobs: timestampUrl: 'http://timestamp.digicert.com' folder: appdir/Cryptomator recursive: true + - name: Prepare env for building msi + run: | + $path = (Get-Location).Path + "\dist\win\resources" + [Environment]::SetEnvironmentVariable("JpackageWixWizardResources", $path, 'Machine') + shell: pwsh - name: Create MSI run: > ${JAVA_HOME}/bin/jpackage @@ -452,6 +457,11 @@ jobs: --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2021 Skymatic GmbH" --app-version "${{ needs.metadata.outputs.versionNum }}" + --win-shortcut + --win-menu + --win-dir-chooser + --resource-dir dist/win/resources + --license-file dist/win/resources/license.rtf - name: Codesign MSI uses: skymatic/code-sign-action@v1.0.1 with: diff --git a/dist/win/resources/Cryptomator.ico b/dist/win/resources/Cryptomator.ico deleted file mode 100644 index 7d1d8be88..000000000 Binary files a/dist/win/resources/Cryptomator.ico and /dev/null differ diff --git a/dist/win/resources/background.bmp b/dist/win/resources/background.bmp new file mode 100644 index 000000000..19b1511ed Binary files /dev/null and b/dist/win/resources/background.bmp differ diff --git a/dist/win/resources/banner.bmp b/dist/win/resources/banner.bmp new file mode 100644 index 000000000..64381ac18 Binary files /dev/null and b/dist/win/resources/banner.bmp differ diff --git a/dist/win/resources/customWizard.wxi b/dist/win/resources/customWizard.wxi new file mode 100644 index 000000000..432681246 --- /dev/null +++ b/dist/win/resources/customWizard.wxi @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + 1 + "1"]]> + + + 1 + + NOT Installed + Installed AND PATCH + + 1 + LicenseAccepted = "1" + + 1 + 1 + NOT WIXUI_DONTVALIDATEPATH + "1"]]> + WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1" + 1 + 1 + + NOT Installed + Installed AND NOT PATCH + Installed AND PATCH + + 1 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + We recommend for the best user experience to download and install one of the following third party Windows drivers: + + + Homepage)]]> + + + Homepage)]]> + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dist/win/resources/license.rtf b/dist/win/resources/license.rtf new file mode 100644 index 000000000..e6c902c23 --- /dev/null +++ b/dist/win/resources/license.rtf @@ -0,0 +1,92 @@ +{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Arial;}} +{\colortbl ;\red0\green0\blue255;} +{\*\generator Riched20 10.0.17134}\viewkind4\uc1 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\b\fs16\lang7 Cryptomator is distributed under the GPLv3 License, found below. Please see the bottom of this document for any other license applicable to code used within Cryptomator.\b0\par +\par +\b\'a9 2016 \endash 2021 Skymatic GmbH\b0\par +\par +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\par +\par +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\par +\par +You should have received a copy of the GNU General Public License along with this program. If not, see {{\field{\*\fldinst{HYPERLINK http://www.gnu.org/licenses/ }}{\fldrslt{http://www.gnu.org/licenses/\ul0\cf0}}}}\f0\fs16 .\par +\par +\b Cryptomator uses 49 third-party dependencies under the following licenses:\b0\par +\tab Apache License v2.0:\par +\tab\tab - HKDF-RFC5869 (at.favre.lib:hkdf:1.0.2 - {{\field{\*\fldinst{HYPERLINK https://github.com/patrickfav/hkdf }}{\fldrslt{https://github.com/patrickfav/hkdf\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jffi (com.github.jnr:jffi:1.2.23 - {{\field{\*\fldinst{HYPERLINK http://github.com/jnr/jffi }}{\fldrslt{http://github.com/jnr/jffi\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-a64asm (com.github.jnr:jnr-a64asm:1.0.0 - {{\field{\*\fldinst{HYPERLINK http://nexus.sonatype.org/oss-repository-hosting.html/jnr-a64asm }}{\fldrslt{http://nexus.sonatype.org/oss-repository-hosting.html/jnr-a64asm\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-constants (com.github.jnr:jnr-constants:0.9.15 - {{\field{\*\fldinst{HYPERLINK http://github.com/jnr/jnr-constants }}{\fldrslt{http://github.com/jnr/jnr-constants\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-ffi (com.github.jnr:jnr-ffi:2.1.12 - {{\field{\*\fldinst{HYPERLINK http://github.com/jnr/jnr-ffi }}{\fldrslt{http://github.com/jnr/jnr-ffi\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.2 - {{\field{\*\fldinst{HYPERLINK http://findbugs.sourceforge.net/ }}{\fldrslt{http://findbugs.sourceforge.net/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Gson (com.google.code.gson:gson:2.8.6 - {{\field{\*\fldinst{HYPERLINK https://github.com/google/gson/gson }}{\fldrslt{https://github.com/google/gson/gson\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Dagger (com.google.dagger:dagger:2.27 - {{\field{\*\fldinst{HYPERLINK https://github.com/google/dagger }}{\fldrslt{https://github.com/google/dagger\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - error-prone annotations (com.google.errorprone:error_prone_annotations:2.3.4 - {{\field{\*\fldinst{HYPERLINK http://nexus.sonatype.org/oss-repository-hosting.html/error_prone_parent/error_prone_annotations }}{\fldrslt{http://nexus.sonatype.org/oss-repository-hosting.html/error_prone_parent/error_prone_annotations\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Guava InternalFutureFailureAccess and InternalFutures (com.google.guava:failureaccess:1.0.1 - {{\field{\*\fldinst{HYPERLINK https://github.com/google/guava/failureaccess }}{\fldrslt{https://github.com/google/guava/failureaccess\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Guava: Google Core Libraries for Java (com.google.guava:guava:28.2-jre - {{\field{\*\fldinst{HYPERLINK https://github.com/google/guava/guava }}{\fldrslt{https://github.com/google/guava/guava\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Guava ListenableFuture only (com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava - {{\field{\*\fldinst{HYPERLINK https://github.com/google/guava/listenablefuture }}{\fldrslt{https://github.com/google/guava/listenablefuture\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - J2ObjC Annotations (com.google.j2objc:j2objc-annotations:1.3 - {{\field{\*\fldinst{HYPERLINK https://github.com/google/j2objc/ }}{\fldrslt{https://github.com/google/j2objc/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Apache Commons CLI (commons-cli:commons-cli:1.4 - {{\field{\*\fldinst{HYPERLINK http://commons.apache.org/proper/commons-cli/ }}{\fldrslt{http://commons.apache.org/proper/commons-cli/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - javax.inject (javax.inject:javax.inject:1 - {{\field{\*\fldinst{HYPERLINK http://code.google.com/p/atinject/ }}{\fldrslt{http://code.google.com/p/atinject/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Java Native Access (net.java.dev.jna:jna:5.1.0 - {{\field{\*\fldinst{HYPERLINK https://github.com/java-native-access/jna }}{\fldrslt{https://github.com/java-native-access/jna\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Java Native Access Platform (net.java.dev.jna:jna-platform:5.1.0 - {{\field{\*\fldinst{HYPERLINK https://github.com/java-native-access/jna }}{\fldrslt{https://github.com/java-native-access/jna\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Apache Commons Lang (org.apache.commons:commons-lang3:3.9 - {{\field{\*\fldinst{HYPERLINK http://commons.apache.org/proper/commons-lang/ }}{\fldrslt{http://commons.apache.org/proper/commons-lang/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jackrabbit WebDAV Library (org.apache.jackrabbit:jackrabbit-webdav:2.19.0 - {{\field{\*\fldinst{HYPERLINK http://jackrabbit.apache.org/jackrabbit-webdav/ }}{\fldrslt{http://jackrabbit.apache.org/jackrabbit-webdav/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Http Utility (org.eclipse.jetty:jetty-http:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: IO Utility (org.eclipse.jetty:jetty-io:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Security (org.eclipse.jetty:jetty-security:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Server Core (org.eclipse.jetty:jetty-server:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Servlet Handling (org.eclipse.jetty:jetty-servlet:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Utilities (org.eclipse.jetty:jetty-util:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Utilities :: Ajax(JSON) (org.eclipse.jetty:jetty-util-ajax:9.4.35.v20201120 - {{\field{\*\fldinst{HYPERLINK https://eclipse.org/jetty/jetty-util-ajax }}{\fldrslt{{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Webapp Application Support (org.eclipse.jetty:jetty-webapp:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: XML utilities (org.eclipse.jetty:jetty-xml:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab BSD:\par +\tab\tab - asm (org.ow2.asm:asm:7.1 - {{\field{\*\fldinst{HYPERLINK http://asm.ow2.org/ }}{\fldrslt{http://asm.ow2.org/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - asm-analysis (org.ow2.asm:asm-analysis:7.1 - {{\field{\*\fldinst{HYPERLINK http://asm.ow2.org/ }}{\fldrslt{http://asm.ow2.org/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - asm-commons (org.ow2.asm:asm-commons:7.1 - {{\field{\*\fldinst{HYPERLINK http://asm.ow2.org/ }}{\fldrslt{http://asm.ow2.org/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - asm-tree (org.ow2.asm:asm-tree:7.1 - {{\field{\*\fldinst{HYPERLINK http://asm.ow2.org/ }}{\fldrslt{http://asm.ow2.org/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - asm-util (org.ow2.asm:asm-util:7.1 - {{\field{\*\fldinst{HYPERLINK http://asm.ow2.org/ }}{\fldrslt{http://asm.ow2.org/\ul0\cf0}}}}\f0\fs16 )\par +\tab Eclipse Public License - Version 1.0:\par +\tab\tab - Jetty :: Http Utility (org.eclipse.jetty:jetty-http:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: IO Utility (org.eclipse.jetty:jetty-io:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Security (org.eclipse.jetty:jetty-security:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Server Core (org.eclipse.jetty:jetty-server:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Servlet Handling (org.eclipse.jetty:jetty-servlet:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Utilities (org.eclipse.jetty:jetty-util:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Utilities :: Ajax(JSON) (org.eclipse.jetty:jetty-util-ajax:9.4.35.v20201120 - {{\field{\*\fldinst{HYPERLINK https://eclipse.org/jetty/jetty-util-ajax }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}}\f0\fs16 )\par +\tab\tab - Jetty :: Webapp Application Support (org.eclipse.jetty:jetty-webapp:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Jetty :: XML utilities (org.eclipse.jetty:jetty-xml:9.4.17.v20190418 - {{\field{\*\fldinst{HYPERLINK http://www.eclipse.org/jetty }}{\fldrslt{http://www.eclipse.org/jetty\ul0\cf0}}}}\f0\fs16 )\par +\tab Eclipse Public License - v 2.0:\par +\tab\tab - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - {{\field{\*\fldinst{HYPERLINK http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix }}{\fldrslt{http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix\ul0\cf0}}}}\f0\fs16 )\par +\tab GPLv2:\par +\tab\tab - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - {{\field{\*\fldinst{HYPERLINK http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix }}{\fldrslt{http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix\ul0\cf0}}}}\f0\fs16 )\par +\tab GPLv2+CE:\par +\tab\tab - Java Servlet API (javax.servlet:javax.servlet-api:3.1.0 - {{\field{\*\fldinst{HYPERLINK http://servlet-spec.java.net }}{\fldrslt{http://servlet-spec.java.net\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - javafx-base (org.openjfx:javafx-base:14 - {{\field{\*\fldinst{HYPERLINK https://openjdk.java.net/projects/openjfx/javafx-base/ }}{\fldrslt{https://openjdk.java.net/projects/openjfx/javafx-base/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - javafx-controls (org.openjfx:javafx-controls:14 - {{\field{\*\fldinst{HYPERLINK https://openjdk.java.net/projects/openjfx/javafx-controls/ }}{\fldrslt{https://openjdk.java.net/projects/openjfx/javafx-controls/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - javafx-fxml (org.openjfx:javafx-fxml:14 - {{\field{\*\fldinst{HYPERLINK https://openjdk.java.net/projects/openjfx/javafx-fxml/ }}{\fldrslt{https://openjdk.java.net/projects/openjfx/javafx-fxml/\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - javafx-graphics (org.openjfx:javafx-graphics:14 - {{\field{\*\fldinst{HYPERLINK https://openjdk.java.net/projects/openjfx/javafx-graphics/ }}{\fldrslt{https://openjdk.java.net/projects/openjfx/javafx-graphics/\ul0\cf0}}}}\f0\fs16 )\par +\tab LGPL 2.1:\par +\tab\tab - dbus-java (com.github.hypfvieh:dbus-java:3.0.2 - {{\field{\*\fldinst{HYPERLINK https://github.com/hypfvieh/dbus-java/dbus-java }}{\fldrslt{https://github.com/hypfvieh/dbus-java/dbus-java\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-posix (com.github.jnr:jnr-posix:3.0.54 - {{\field{\*\fldinst{HYPERLINK http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix }}{\fldrslt{http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Java Native Access (net.java.dev.jna:jna:5.1.0 - {{\field{\*\fldinst{HYPERLINK https://github.com/java-native-access/jna }}{\fldrslt{https://github.com/java-native-access/jna\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Java Native Access Platform (net.java.dev.jna:jna-platform:5.1.0 - {{\field{\*\fldinst{HYPERLINK https://github.com/java-native-access/jna }}{\fldrslt{https://github.com/java-native-access/jna\ul0\cf0}}}}\f0\fs16 )\par +\tab MIT License:\par +\tab\tab - java jwt (com.auth0:java-jwt:3.10.2 - {{\field{\*\fldinst{HYPERLINK https://github.com/auth0/java-jwt }}{\fldrslt{https://github.com/auth0/java-jwt\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - java-utils (com.github.hypfvieh:java-utils:1.0.5 - {{\field{\*\fldinst{HYPERLINK https://github.com/hypfvieh/java-utils }}{\fldrslt{https://github.com/hypfvieh/java-utils\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-x86asm (com.github.jnr:jnr-x86asm:1.0.2 - {{\field{\*\fldinst{HYPERLINK http://github.com/jnr/jnr-x86asm }}{\fldrslt{http://github.com/jnr/jnr-x86asm\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - jnr-fuse (com.github.serceman:jnr-fuse:0.5.4 - no url defined)\par +\tab\tab - zxcvbn4j (com.nulab-inc:zxcvbn:1.3.0 - {{\field{\*\fldinst{HYPERLINK https://github.com/nulab/zxcvbn4j }}{\fldrslt{https://github.com/nulab/zxcvbn4j\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - secret-service (de.swiesend:secret-service:1.0.0-RC.3 - {{\field{\*\fldinst{HYPERLINK https://github.com/swiesend/secret-service }}{\fldrslt{https://github.com/swiesend/secret-service\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - Checker Qual (org.checkerframework:checker-qual:2.10.0 - {{\field{\*\fldinst{HYPERLINK https://checkerframework.org }}{\fldrslt{https://checkerframework.org\ul0\cf0}}}}\f0\fs16 )\par +\tab\tab - SLF4J API Module (org.slf4j:slf4j-api:1.7.30 - {{\field{\*\fldinst{HYPERLINK http://www.slf4j.org }}{\fldrslt{http://www.slf4j.org\ul0\cf0}}}}\f0\fs16 )\par +\tab The BSD 2-Clause License:\par +\tab\tab - EasyBind (org.fxmisc.easybind:easybind:1.0.3 - {{\field{\*\fldinst{HYPERLINK http://www.fxmisc.org/easybind/ }}{\fldrslt{http://www.fxmisc.org/easybind/\ul0\cf0}}}}\f0\fs16 )\par +\par +\b Cryptomator uses other third-party assets under the following licenses:\b0\par +\tab SIL OFL 1.1 License:\par +\tab\tab - Font Awesome 5.12.0 ({{\field{\*\fldinst{HYPERLINK https://fontawesome.com/ }}{\fldrslt{https://fontawesome.com/\ul0\cf0}}}}\f0\fs16 )\par +\par +} + \ No newline at end of file diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs new file mode 100644 index 000000000..684d58284 --- /dev/null +++ b/dist/win/resources/main.wxs @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + 1 + + + !(loc.message.install.dir.exist) + + + + + + + + 1 + INSTALLDIR_VALID="0" + INSTALLDIR_VALID="1" + + + + 1 + 1 + + + + + + + + + + + + + + + + + Not Installed + + JP_UPGRADABLE_FOUND + + + JP_DOWNGRADABLE_FOUND + + + + + + + + + +