我正在努力获得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文件的启动器(带有我的图标)添加到开始菜单?
答案 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可执行文件也将具有图标。