From: Ben Soares Date: Mon, 1 Apr 2019 16:04:56 +0000 (+0100) Subject: JAL-3130 JAL-3007 Added gradle build for Java 11. Now in root jalview dir X-Git-Tag: Release_2_11_0~17^2~7^2~51 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=c6153fe9672b467fe579dfc4e8b7a827586d2d36;p=jalview.git JAL-3130 JAL-3007 Added gradle build for Java 11. Now in root jalview dir --- diff --git a/.gitignore b/.gitignore index eea1c5e..4f76c04 100644 --- a/.gitignore +++ b/.gitignore @@ -17,9 +17,8 @@ TESTNG /benchmarking/lib *.class /site -/gradle/jalview/build -/gradle/jalview/.gradle /.gradle +/build /utils/HelpLinksChecker.out /.settings /getdown/website diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..ec8267a --- /dev/null +++ b/build.gradle @@ -0,0 +1,481 @@ +import org.apache.tools.ant.filters.ReplaceTokens +import org.gradle.internal.os.OperatingSystem + + +buildscript { + dependencies { + //classpath files("$gradlePluginsDir/gradle-macappbundle-2.3.0-patched-2.3.0.jar") + } +} + +plugins { + id 'java' + id 'application' + id 'com.github.johnrengelman.shadow' version '4.0.3' + id 'com.install4j.gradle' version '7.0.9' +} + +repositories { + jcenter() + mavenCentral() + flatDir { + dirs gradlePluginsDir + } +} + +mainClassName = launcherClass + +sourceSets { + + main { + java { + srcDirs "$jalviewDir/$sourceDir" + outputDir = file("$jalviewDir/$classesDir") + } + + resources { + srcDirs "$jalviewDir/$resourceDir" + srcDirs "$jalviewDir/$libDir" + } + + jar.destinationDir = file("$jalviewDir/$packageDir") + + compileClasspath = files(sourceSets.main.java.outputDir) + compileClasspath += fileTree(dir: "$jalviewDir/$libDir", include: ["*.jar"]) + //compileClasspath += fileTree(dir: "$jalviewDir/$j11libDir", include: ["*.jar"]) + + runtimeClasspath = compileClasspath + } + + test { + java { + srcDirs "$jalviewDir/$testSourceDir" + outputDir = file("$jalviewDir/$testOutputDir") + } + + resources { + srcDirs = sourceSets.main.resources.srcDirs + } + + compileClasspath = sourceSets.main.compileClasspath + compileClasspath += files( sourceSets.test.java.outputDir ) + compileClasspath += fileTree(dir: "$jalviewDir/$utilsDir", include: ["**/*.jar"]) + + runtimeClasspath = compileClasspath + } + + modules { + compileClasspath = fileTree(dir: "$jalviewDir/$j11libDir", include: ["*.jar"]) + + runtimeClasspath = compileClasspath + } + +} + +compileJava { + + doFirst { + if (JAVA_VERSION.equals("1.8")) { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } else if (JAVA_VERSION.equals("11")) { + sourceCompatibility = 11 + targetCompatibility = 11 + + options.compilerArgs = [ + '--module-path', sourceSets.modules.compileClasspath.asPath, + '--add-modules', j11modules + ] + } + } + +} + +clean { + delete sourceSets.main.java.outputDir +} + +cleanTest { + delete sourceSets.test.java.outputDir +} + +def getDate(format) { + def date = new Date() + //return date.format("dd MMMM yyyy") + return date.format(format) +} + +def getGitHash() { + def stdout = new ByteArrayOutputStream() + exec { + commandLine "git", "rev-parse", "--short", "HEAD" + standardOutput = stdout + workingDir = jalviewDir + } + return stdout.toString().trim() +} + +def getGitBranch() { + def stdout = new ByteArrayOutputStream() + exec { + commandLine "git", "rev-parse", "--abbrev-ref", "HEAD" + standardOutput = stdout + workingDir = jalviewDir + } + return stdout.toString().trim() +} + +task createBuildProperties(type: WriteProperties) { + inputs.dir("$jalviewDir/$sourceDir") + inputs.dir("$jalviewDir/$resourceDir") + outputFile "$jalviewDir/$classesDir/$buildPropertiesFile" + /* taking time/date specific comment out to allow better incremental builds */ + //comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd HH:mm:ss") + comment "--Jalview Build Details--\n"+getDate("yyyy-MM-dd") + property "BUILD_DATE", getDate("dd MMMM yyyy") + property "VERSION", JALVIEW_VERSION + property "INSTALLATION", INSTALLATION+" git-commit:"+getGitHash()+" ["+getGitBranch()+"]" + outputs.file(outputFile) + outputs.dir("$jalviewDir/$classesDir") +} + +task syncDocs(type: Sync) { + def syncDir = "$jalviewDir/$classesDir/$docDir" + from fileTree("$jalviewDir/$docDir") + into syncDir + +} + +def helpFile = "$jalviewDir/$classesDir/$helpDir/help.jhm" +task syncHelp(type: Sync) { + inputs.files("$jalviewDir/$helpDir") + outputs.files(helpFile) + + def syncDir = "$jalviewDir/$classesDir/$helpDir" + from fileTree("$jalviewDir/$helpDir") + into syncDir +} + +task copyHelp(type: Copy) { + def inputDir = "$jalviewDir/$helpDir" + def outputDir = "$jalviewDir/$classesDir/$helpDir" + from inputDir + into outputDir + filter(ReplaceTokens, beginToken: '$$', endToken: '$$', tokens: ['Version-Rel': "USING_FILTER"]) + inputs.dir(inputDir) + outputs.files(helpFile) + outputs.dir(outputDir) +} + +task syncLib(type: Sync) { + def syncDir = "$jalviewDir/$classesDir/$libDir" + from fileTree("$jalviewDir/$libDir") + into syncDir +} + +task syncResources(type: Sync) { + from "$jalviewDir/$resourceDir" + include "**/*.*" + into "$jalviewDir/$classesDir" + preserve { + include "**" + } +} + +task prepare { + dependsOn syncResources + dependsOn syncDocs + dependsOn copyHelp +} + +//testReportDirName = "test-reports" // note that test workingDir will be $jalviewDir +test { + dependsOn prepare + dependsOn compileJava + useTestNG { + includeGroups testngGroups + } + workingDir = jalviewDir + //systemProperties 'clover.jar' System.properties.clover.jar +} + +task buildIndices(type: JavaExec) { + dependsOn copyHelp + classpath = sourceSets.main.compileClasspath + main = "com.sun.java.help.search.Indexer" + workingDir = "$jalviewDir/$classesDir/$helpDir" + def argDir = "html" + args = [ argDir ] + inputs.dir("$workingDir/$argDir") + + outputs.dir("$jalviewDir/$classesDir/doc") + outputs.dir("$jalviewDir/$classesDir/help") + outputs.file("$workingDir/JavaHelpSearch/DOCS") + outputs.file("$workingDir/JavaHelpSearch/DOCS.TAB") + outputs.file("$workingDir/JavaHelpSearch/OFFSETS") + outputs.file("$workingDir/JavaHelpSearch/POSITIONS") + outputs.file("$workingDir/JavaHelpSearch/SCHEMA") + outputs.file("$workingDir/JavaHelpSearch/TMAP") +} + +task compileLinkCheck(type: JavaCompile) { + options.fork = true + classpath = files("$jalviewDir/$utilsDir") + destinationDir = file("$jalviewDir/$utilsDir") + source = fileTree(dir: "$jalviewDir/$utilsDir", include: ["HelpLinksChecker.java", "BufferedLineReader.java"]) + + outputs.file("$jalviewDir/$utilsDir/HelpLinksChecker.class") + outputs.file("$jalviewDir/$utilsDir/BufferedLineReader.class") +} + +task linkCheck(type: JavaExec) { + dependsOn prepare, compileLinkCheck + classpath = files("$jalviewDir/$utilsDir") + main = "HelpLinksChecker" + workingDir = "$jalviewDir" + args = [ "$classesDir/$helpDir", "-nointernet" ] + + doFirst { + standardOutput new FileOutputStream("$jalviewDir/$utilsDir/HelpLinksChecker.out") + } + + outputs.file("$jalviewDir/$utilsDir/HelpLinksChecker.out") +} + +task cleanPackageDir(type: Delete) { + delete fileTree("$jalviewDir/$packageDir").include("*.jar") +} + +jar { + dependsOn linkCheck + dependsOn buildIndices + dependsOn createBuildProperties + + manifest { + attributes "Main-Class": mainClass, + "Permissions": "all-permissions", + "Application-Name": "Jalview Desktop", + "Codebase": application_codebase + } + + destinationDir = file("$jalviewDir/$packageDir") + archiveName = rootProject.name+".jar" + + exclude "cache*/**" + exclude "*.jar" + exclude "*.jar.*" + exclude "**/*.jar" + exclude "**/*.jar.*" + + inputs.dir("$jalviewDir/$classesDir") + outputs.file("$jalviewDir/$packageDir/$archiveName") +} + +task copyJars(type: Copy) { + from fileTree("$jalviewDir/$classesDir").include("**/*.jar").include("*.jar").files + into "$jalviewDir/$packageDir" +} + +// doing a Sync instead of Copy as Copy doesn't deal with "outputs" very well +task syncJars(type: Sync) { + from fileTree("$jalviewDir/$libDir").include("**/*.jar").include("*.jar").files + into "$jalviewDir/$packageDir" + preserve { + include jar.archiveName + } +} + +task makeDist { + // order of "cleanPackageDir", "copyJars", "jar" important! + jar.mustRunAfter cleanPackageDir + syncJars.mustRunAfter cleanPackageDir + dependsOn cleanPackageDir + dependsOn syncJars + dependsOn jar + outputs.dir("$jalviewDir/$packageDir") +} + +task cleanDist { + dependsOn cleanPackageDir + dependsOn cleanTest + dependsOn clean +} + +shadowJar { + dependsOn makeDist + if (JAVA_VERSION.equals("11")) { + from ("$jalviewDir/$j11libDir") { + include("*.jar") + } + } + mainClassName = shadowJarMainClass + mergeServiceFiles() + classifier = "all" + minimize() +} + +ext { + getdownWebsiteDir = jalviewDir + '/' + getdown_website_dir + getdownAppDir = getdownWebsiteDir + '/' + getdown_app_dir + getdownJ11libDir = getdownWebsiteDir + '/' + getdown_j11lib_dir + getdownResourceDir = getdownWebsiteDir + '/' + getdown_resource_dir + getdownLauncher = jalviewDir + '/' + getdown_launcher + getdownFilesDir = jalviewDir + '/' + getdown_files_dir +} + +task getdownWebsite() { + dependsOn makeDist + def getdownWebsiteResourceFilenames = [] + def getdownTextString = "" + def getdownResourceDir = project.ext.getdownResourceDir + def getdownAppDir = project.ext.getdownAppDir + def getdownResourceFilenames = [] + doFirst { + // go through properties looking for getdown_txt_... + def props = project.properties.sort { it.key } + if (JAVA_VERSION.equals("11")) { + props.put("getdown_txt_java_min_version", getdown_alt_java11_min_version) + } else { + props.put("getdown_txt_java_min_version", getdown_alt_java8_min_version) + } + props.each{ prop, val -> + if (prop.startsWith("getdown_txt_") && val != null) { + // file values rationalised + if (val.indexOf('/') > -1) { + def r = null + if (val.indexOf('/') == 0) { + // absolute path + r = file(val) + } else if (val.indexOf('/') > 0) { + // relative path (relative to jalviewDir) + r = file( jalviewDir + '/' + val ) + } + if (r.exists()) { + val = getdown_resource_dir + '/' + r.getName() + getdownWebsiteResourceFilenames += val + getdownResourceFilenames += r.getPath() + } + } + def line = prop.substring(12) + " = " + val + "\n" + getdownTextString += line + } + } + + getdownWebsiteResourceFilenames.each{ filename -> + getdownTextString += "resource = "+filename+"\n" + } + getdownResourceFilenames.each{ filename -> + copy { + from filename + into project.ext.getdownResourceDir + } + } + + def codeFiles = [] + makeDist.outputs.files.each{ f -> + if (f.isDirectory()) { + def files = fileTree(dir: f, include: ["*"]).getFiles() + codeFiles += files + } else if (f.exists()) { + codeFiles += f + } + } + codeFiles.sort().each{f -> + def line = "code = " + getdown_app_dir + '/' + f.getName() + "\n" + getdownTextString += line + copy { + from f.getPath() + into project.ext.getdownAppDir + } + } + + if (JAVA_VERSION.equals("11")) { + def j11libFiles = fileTree(dir: "$jalviewDir/$j11libDir", include: ["*.jar"]).getFiles() + j11libFiles.sort().each{f -> + def line = "code = " + getdown_j11lib_dir + '/' + f.getName() + "\n" + getdownTextString += line + copy { + from f.getPath() + into project.ext.getdownJ11libDir + } + } + } + + getdownTextString += "code = " + file(getdownLauncher).getName() + "\n" + getdownTextString += "class = " + mainClass + "\n" + + def getdown_txt = file(project.ext.getdownWebsiteDir + "/getdown.txt") + getdown_txt.write(getdownTextString) + + copy { + from getdown_txt + into project.ext.getdownFilesDir + } + + copy { + from getdownLauncher + into project.ext.getdownWebsiteDir + } + + copy { + from getdownLauncher + into project.ext.getdownFilesDir + } + + copy { + from jalviewDir + '/' + project.getProperty('getdown_txt_ui.background_image') + from jalviewDir + '/' + project.getProperty('getdown_txt_ui.error_background') + from jalviewDir + '/' + project.getProperty('getdown_txt_ui.progress_image') + from jalviewDir + '/' + project.getProperty('getdown_txt_ui.icon') + from jalviewDir + '/' + project.getProperty('getdown_txt_ui.mac_dock_icon') + into project.ext.getdownFilesDir + '/' + getdown_resource_dir + } + } + + inputs.dir(jalviewDir + '/' + packageDir) + outputs.dir(project.ext.getdownWebsiteDir) + outputs.dir(project.ext.getdownFilesDir) +} + +task getdownDigest(type: JavaExec) { + dependsOn getdownWebsite + classpath = files(jalviewDir + '/' + getdown_core) + main = "com.threerings.getdown.tools.Digester" + args project.ext.getdownWebsiteDir + outputs.file(project.ext.getdownWebsiteDir + '/' + "digest2.txt") +} + +task getdown() { + dependsOn getdownDigest +} + +clean { + delete project.ext.getdownWebsiteDir + delete project.ext.getdownFilesDir +} + +install4j { + def install4jHomeDir = "/opt/install4j" + def hostname = "hostname".execute().text.trim() + if (hostname.equals("jv-bamboo")) { + install4jHomeDir = System.getProperty("user.home")+"/buildtools/install4j" + } else if (OperatingSystem.current().isMacOsX()) { + install4jHomeDir = '/Applications/install4j.app/Contents/Resources/app' + if (! file(install4jHomeDir).exists()) { + install4jHomeDir = System.getProperty("user.home")+install4jHomeDir + } + } else if (OperatingSystem.current().isLinux()) { + install4jHomeDir = System.getProperty("user.home")+"/buildtools/install4j" + } + installDir = file(install4jHomeDir) +} + +task installers(type: com.install4j.gradle.Install4jTask) { + dependsOn getdown + projectFile = "$jalviewDir/$install4jResourceDir/$install4jConf" + variables = [majorVersion: version.substring(2, 11), build: 001] + destination = "$jalviewDir/$install4jBuildDir" + buildSelected = true + inputs.dir(project.ext.getdownWebsiteDir) + outputs.dir("$jalviewDir/$install4jBuildDir") +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..867449f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,90 @@ +#org.gradle.java.home = /Users/bsoares/Java/installs/OpenJDK8U-jdk_x64_mac_hotspot_8u192b12/jdk8u192-b12/Contents/Home +jalviewDir = . + +JAVA_VERSION = 11 +JALVIEW_VERSION = DEVELOPMENT +INSTALLATION = Source +jalview_keystore = keys/.keystore +jalview_keystore.pass = alignmentisfun +jalview_key = jalview +jalview_key.pass = alignmentisfun +jalview_tsaurl = +proxyPort = 80 +proxyHost = sqid +jalview_keyalg = SHA1withRSA +jalview_keydig = SHA1 + +testngGroups = Functional + +javac_source = 11 +javac_target = 11 + +libDir = lib +resourceDir = resources +helpDir = help +docDir = doc +sourceDir = src +schemaDir = schemas +classesDir = classes +clover.classesDir = cloverclasses +packageDir = dist +outputJar = jalview.jar + +testSourceDir = test +testOutputDir = tests +utilsDir = utils + +buildPropertiesFile = .build_properties +application_codebase = *.jalview.org +mainClass = jalview.bin.Jalview +shadowJarMainClass = jalview.bin.Launcher +launcherClass = jalview.bin.Jalview + +gradlePluginsDir = gradle/plugins + +getdown_website_dir = getdown/website +getdown_resource_dir = resource +getdown_app_dir = dist +getdown_j11lib_dir = j11lib +getdown_files_dir = getdown/files +getdown_launcher = getdown/lib/getdown-launcher.jar +getdown_core = getdown/lib/getdown-core-1.8.3-SNAPSHOT.jar +getdown_base_txt = getdown/files/getdown.txt +getdown_txt_title = Jalview +getdown_txt_appbase = http://www.compbio.dundee.ac.uk/user/bsoares/getdown/jalview/DEMO +getdown_txt_allow_offline = true +getdown_txt_jvmmempc = 95 +getdown_txt_strict_comments = true +getdown_txt_title = Jalview +getdown_txt_ui.name = Jalview +getdown_txt_ui.background = FFFFFF +getdown_txt_ui.background_image = resources/images/jalview_logo_background_getdown-640x480.png +getdown_txt_ui.error_background = resources/images/jetset_jalview_splash.png +getdown_txt_ui.progress_image = resources/images/jalview_logo_background_getdown-progress.png +getdown_txt_ui.icon = resources/images/JalviewLogo_Huge.png +getdown_txt_ui.progress = 20, 440, 600, 22 +getdown_txt_ui.progress_bar = AAAAFF +getdown_txt_ui.progress_text = 000000 +getdown_txt_ui.status = 20, 380, 600, 58 +getdown_txt_ui.status_text = 000066 +getdown_txt_ui.text_shadow = EEEEFF +getdown_txt_ui.install_error = http://www.jalview.org/download/error +getdown_txt_ui.mac_dock_icon = resources/images/jalview_logos.ico +getdown_alt_java8_min_version = 1080202 +getdown_alt_java11_min_version = 11000028 + + +JRE_installs = /Users/bsoares/Java/installs +Windows_JRE8 = OpenJDK8U-jdk_x64_windows_hotspot_8u202b08/jdk8u202-b08 +Mac_JRE8 = OpenJDK8U-jre_x64_mac_hotspot_8u202b08/jdk8u202-b08-jre/Contents/Home +Linux_JRE8 = OpenJDK8U-jre_x64_linux_hotspot_8u202b08/jdk8u202-b08-jre +Windows_JRE11 = OpenJDK11-jre_x64_windows_hotspot_11_28/jdk-11+28-jre +Mac_JRE11 = OpenJDK11-jre_x64_mac_hotspot_11_28/jdk-11+28-jre/Contents/Home +Linux_JRE11 = OpenJDK11-jre_x64_linux_hotspot_11_28/jdk-11+28-jre + +j11libDir = j11lib +j11modules = com.sun.istack.runtime,com.sun.xml.bind,com.sun.xml.fastinfoset,com.sun.xml.streambuffer,com.sun.xml.txw2,com.sun.xml.ws.policy,java.activation,java.annotation,java.base,java.compiler,java.datatransfer,java.desktop,java.logging,java.management,java.management.rmi,java.naming,java.prefs,java.rmi,java.scripting,java.security.sasl,java.sql,java.xml,java.xml.bind,java.xml.soap,java.xml.ws,javax.jws,jdk.httpserver,jdk.jsobject,jdk.unsupported,jdk.xml.dom,org.jvnet.mimepull,org.jvnet.staxex,javax.servlet.api,java.ws.rs + +install4jResourceDir = resources/install4j +install4jConf = jalview_getdown.install4j +install4jBuildDir = build/install4j diff --git a/resources/install4j/jalview_dmg_background.png b/resources/install4j/jalview_dmg_background.png index 139fb2b..cfd924d 100644 Binary files a/resources/install4j/jalview_dmg_background.png and b/resources/install4j/jalview_dmg_background.png differ diff --git a/resources/install4j/jalview_dmg_background1.png b/resources/install4j/jalview_dmg_background1.png new file mode 100644 index 0000000..139fb2b Binary files /dev/null and b/resources/install4j/jalview_dmg_background1.png differ diff --git a/resources/install4j/jalview_dmg_background.xcf b/resources/install4j/jalview_dmg_background1.xcf similarity index 100% rename from resources/install4j/jalview_dmg_background.xcf rename to resources/install4j/jalview_dmg_background1.xcf diff --git a/resources/install4j/jalview_dmg_background2.png b/resources/install4j/jalview_dmg_background2.png new file mode 100644 index 0000000..081e93b Binary files /dev/null and b/resources/install4j/jalview_dmg_background2.png differ diff --git a/resources/install4j/jalview_dmg_background3.png b/resources/install4j/jalview_dmg_background3.png new file mode 100644 index 0000000..cfd924d Binary files /dev/null and b/resources/install4j/jalview_dmg_background3.png differ diff --git a/resources/install4j/jalview_getdown.install4j b/resources/install4j/jalview_getdown.install4j new file mode 100644 index 0000000..1cdd1c5 --- /dev/null +++ b/resources/install4j/jalview_getdown.install4j @@ -0,0 +1,1665 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + 255 + 255 + 255 + 255 + + + + + + true + + + + + + 255 + 255 + 255 + 255 + + + + true + + + + ../../resources/images/jalview_logo_background_fade-640x480.png + + + + + 5 + 10 + 10 + 10 + + + + + + + + imageAnchor + imageEdgeBackgroundColor + imageFile + + + + + + + + + + false + + + install4j + + + + + + + + labelText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 255 + 255 + 255 + 255 + + + + + + true + + + + + + 25 + 143 + 220 + 255 + + + + true + + + + ../../resources/images/jalview_logo_background_fade-640x480.png + + + + + 5 + 10 + 10 + 10 + + + + + + + + imageAnchor + imageEdgeBackgroundColor + imageFile + + + + + + + + + + + + + + + + + sys.installationDir + + + + + + + context.getBooleanVariable("sys.confirmedUpdateInstallation") + + + + + + + + + ${form:welcomeMessage} + + + + + + !context.isConsole() + + + + + + + + + + String message = context.getMessage("ConsoleWelcomeLabel", context.getApplicationName()); +return console.askOkCancel(message, true); + + + + + + + + + + + + + + + + + + + + + updateCheck + + + + + + + + ${i18n:ClickNext} + + + + + + + + + + + + + + + + + + !context.getBooleanVariable("sys.confirmedUpdateInstallation") + + + + + + + + + + + + sys.installationDir + + + + + + + context.getVariable("sys.responseFile") == null + + + + + + + + + ${i18n:SelectDirLabel(${compiler:sys.fullName})} + + + + + + + + + + + + + + true + + + + + + + + suggestAppDir + validateApplicationId + existingDirWarning + checkWritable + manualEntryAllowed + checkFreeSpace + showRequiredDiskSpace + showFreeDiskSpace + allowSpacesOnUnix + validationScript + standardValidation + + + + + + + + + + + + + + + + + + + + + + + ${i18n:SelectComponentsLabel2} + + + + + + !context.isConsole() + + + + + + + + true + + + + + + + + selectionChangedScript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${i18n:UninstallerMenuEntry(${compiler:sys.fullName})} + + + + + !context.getBooleanVariable("sys.programGroupDisabled") + + + + + + + ${compiler:sys.fullName} ${compiler:sys.version} + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 121 + + + + + + + + + + + + + + + + + ${i18n:WizardPreparing} + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${compiler:sys.fullName} + + + + + context.getBooleanVariable("createDesktopLinkAction") + + + + + + + + + + + + + + + + context.getBooleanVariable("addToDockAction") + + + + + + + Jalview Project File + + + jvp + + + 121 + + + + ../../resources/images/file.png + + + + + com.install4j.runtime.beans.actions.desktop.MacAssociationRole + EDITOR + + + + + ../../resources/images/file.png + + + + + + + + + + + + + + + ${form:finishedMessage} + + + + + + + + + + + + + + ${i18n:CreateDesktopIcon} + + + true + + + createDesktopLinkAction + + + + + + + + + + + + + + ${i18n:AddToDock} + + + true + + + addToDockAction + + + + + + Util.isMacOS() + + + + + + + + + + + + ${i18n:UninstallerMenuEntry(${compiler:sys.fullName})} + + + true + + + + + + + + + + + + + 255 + 255 + 255 + 255 + + + + + + true + + + + + + 192 + 192 + 192 + 255 + + + + true + + + + ../../resources/images/jalview_logo_background_fade-640x480.png + + + + + 5 + 10 + 10 + 10 + + + + + + + + imageAnchor + imageEdgeBackgroundColor + imageFile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${form:welcomeMessage} + + + + + + !context.isConsole() + + + + + + + + + + String message = context.getMessage("ConfirmUninstall", context.getApplicationName()); +return console.askYesNo(message, true); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.install4j.runtime.beans.actions.control.ProgressChangeType + SET_INDETERMINATE + + + + + + + + + + + + + + + + + + + + + 100 + + + + + + + + + + + + + + ${i18n:UninstallerPreparing} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${form:successMessage} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +