如何获取setupBuilder gradle插件以在Windows开始菜单

时间:2018-04-17 22:14:35

标签: java gradle

我正在努力获得gradle setupBuilder插件来创建一个安装程序,为我的java我的应用程序添加某种启动器(.bat或.exe文件?)以及我为它创建的漂亮图标,添加到开始菜单在Windows10上。它创建一个msi,在运行时,可以很好地创建一个工作jar文件。我认为setupBuilder已将launch4j包含在内部,以便它创建的msi会创建一个exe或者带有我给它的图标的东西并自动将它放在开始菜单中。我对Windows一点都不熟悉,如果我使用错误的术语,请原谅我。 (使用漂亮的图标在Dock中创建一个Mac应用程序非常简单,我想我必须在某个地方犯一个愚蠢的错误。)

这是我的build.gradle脚本:

plugins {
  //For building windows exes/msis
  id 'de.inetsoftware.setupbuilder' version "4.5.3c"
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'de.inetsoftware.setupbuilder'
apply plugin: 'application'

version = getVersionName()
sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
  mavenCentral()
}

dependencies {
  ... <removed for brevity>
}

sourceSets {
  main {
    java {
      srcDir 'src/main/java/LinkedView/src/'

      ... <removed for brevity>
    }
  }
}

task fatJar(type: Jar) {
  manifest {
    attributes 'Main-Class':'edu.stanford.genetics.treeview.app.TreeView3'
  }
  baseName = project.name + '-all'
  from {configurations.compile.collect {it.isDirectory() ? it : zipTree(it)}}
  with jar
}

def getVersionName() {
    def stdout = new ByteArrayOutputStream()
    exec {
       // might be useful for later version management
       // commandLine 'git', 'describe', '--tags'
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}

//SetupBuilder attempt...
setupBuilder {
    vendor = 'Princeton University Bioinformatics Group'
    application = "TreeView3"
    appIdentifier = "TreeView3"
    description = "Clustering heatmap browser"
    version = '1.0'
    icons = 'src/main/resources/TreeView3.icns'
    licenseFile = 'LICENSES/LICENSE'
    from fatJar.outputs
    bundleJre = 1.7
    mainClass = 'edu.stanford.genetics.treeview.app.TreeView3'
    mainJar = 'TreeView3.jar'
}

msi {

}

如何将jar文件的启动器(带有我的图标)添加到开始菜单?

1 个答案:

答案 0 :(得分:0)

您可以在setupBuilder块中添加desktopStarter块,但是,如果您只想为msi for windows专门执行此操作,可以将它放在msi块中,如下所示:

msi {
    setupBuilder.desktopStarter {
        displayName = 'TreeView3'
        executable = 'treeview3' + '-all-' + getVersionName() + '.jar'
    }
}

关键是将你的jar文件名放在&#39;可执行文件中。变量。这会在开始菜单中使用您的图标创建别名。但是,不会设置任务栏中java可执行文件的图标。您可以使用主JFrame中的以下内容在项目的Java代码中完成此任务:

JFrame appFrame;
appFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("TreeView3.png")));

我使用了PNG。从理论上讲,你应该可以使用.ico文件,但是当我尝试它时,它不会起作用。 (我也试过.icns格式。)

运行msi之后,&#39; TreeView3&#39;使用该图标将出现在开始菜单中,当您运行它时,任务栏中的java可执行文件也将具有图标。