Skip to content

Commit fe97405

Browse files
committed
U refactoring and generated shortcut removed
1 parent 4a80df0 commit fe97405

File tree

5 files changed

+133
-153
lines changed

5 files changed

+133
-153
lines changed

build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ dependencies {
5555
implementation 'org.vafer:jdeb:1.9'
5656
implementation 'net.jsign:jsign-core:3.1'
5757
implementation 'org.redline-rpm:redline:1.2.10'
58-
implementation 'com.github.vatbub:mslinks:1.0.6.2'
5958

6059
testImplementation 'junit:junit:4.12'
6160

src/main/java/io/github/fvarrui/javapackager/gradle/CreateWindowsExe.java

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,17 @@
77
import org.apache.commons.lang3.StringUtils;
88

99
import edu.sc.seis.launch4j.tasks.Launch4jLibraryTask;
10-
import io.github.fvarrui.javapackager.model.Platform;
1110
import io.github.fvarrui.javapackager.model.WindowsConfig;
11+
import io.github.fvarrui.javapackager.packagers.AbstractCreateWindowsExe;
1212
import io.github.fvarrui.javapackager.packagers.Context;
13-
import io.github.fvarrui.javapackager.packagers.WindowsArtifactGenerator;
1413
import io.github.fvarrui.javapackager.packagers.WindowsPackager;
1514
import io.github.fvarrui.javapackager.utils.FileUtils;
16-
import io.github.fvarrui.javapackager.utils.VelocityUtils;
1715

1816
/**
1917
* Creates Windows native executable on Gradle context
2018
*/
21-
public class CreateWindowsExe extends WindowsArtifactGenerator {
19+
public class CreateWindowsExe extends AbstractCreateWindowsExe {
2220

23-
private File genericManifest;
24-
private File genericIcon;
25-
private File genericJar;
26-
private File genericExe;
27-
28-
public CreateWindowsExe() {
29-
super("Windows EXE");
30-
}
31-
3221
@Override
3322
protected File doApply(WindowsPackager packager) throws Exception {
3423

@@ -41,8 +30,6 @@ protected File doApply(WindowsPackager packager) throws Exception {
4130
String jreDirectoryName = packager.getJreDirectoryName();
4231
String jreMinVersion = packager.getJreMinVersion();
4332
File jarFile = packager.getJarFile();
44-
File appFolder = packager.getAppFolder();
45-
String name = packager.getName();
4633

4734
try {
4835
// creates a folder only for launch4j assets
@@ -51,16 +38,16 @@ protected File doApply(WindowsPackager packager) throws Exception {
5138
throw new RuntimeException(ex);
5239
}
5340

54-
String jarPath = winConfig.isWrapJar() ? genericJar.getAbsolutePath() : jarFile.getName();
41+
String jarPath = winConfig.isWrapJar() ? getGenericJar().getAbsolutePath() : jarFile.getName();
5542

5643
Launch4jLibraryTask l4jTask = Context.getGradleContext().getLibraryTask();
5744
l4jTask.getOutputs().upToDateWhen(task -> false);
5845
l4jTask.setHeaderType(winConfig.getHeaderType().toString());
5946
l4jTask.setJar(jarPath);
6047
l4jTask.setDontWrapJar(!winConfig.isWrapJar());
61-
l4jTask.setOutfile(genericExe.getName());
62-
l4jTask.setIcon(genericIcon.getAbsolutePath());
63-
l4jTask.setManifest(genericManifest.getAbsolutePath());
48+
l4jTask.setOutfile(getGenericExe().getName());
49+
l4jTask.setIcon(getGenericIcon().getAbsolutePath());
50+
l4jTask.setManifest(getGenericManifest().getAbsolutePath());
6451
l4jTask.setMainClassName(mainClass);
6552
l4jTask.setClasspath(new HashSet<>(packager.getClasspaths()));
6653
l4jTask.setChdir(useResourcesAsWorkingDir ? "." : "");
@@ -83,51 +70,11 @@ protected File doApply(WindowsPackager packager) throws Exception {
8370
//l4jTask.setLibraryDir("");
8471
l4jTask.getActions().forEach(action -> action.execute(l4jTask));
8572

86-
sign(genericExe, packager);
87-
88-
FileUtils.copyFileToFile(genericExe, executable);
89-
90-
// bootstrap script specified
91-
if (FileUtils.exists(packager.getScripts().getBootstrap())) {
92-
93-
// generates startup VBS script file
94-
File vbsFile = new File(appFolder, name + ".vbs");
95-
VelocityUtils.render(Platform.windows + "/startup.vbs.vtl", vbsFile, packager);
96-
97-
// creates shortcut to VBS script
98-
File lnk = new File(appFolder, name + ".lnk");
99-
createShortcut(lnk, vbsFile, executable);
100-
101-
executable = vbsFile;
102-
103-
}
104-
105-
return executable;
106-
}
107-
108-
/**
109-
* Renames assets required for launch4j to avoid unsupported characters (chinese, e.g.)
110-
* @param packager Windows packager
111-
* @throws Exception Something went wrong
112-
*/
113-
private void createAssets(WindowsPackager packager) throws Exception {
73+
sign(getGenericExe(), packager);
11474

115-
File manifestFile = packager.getManifestFile();
116-
File iconFile = packager.getIconFile();
117-
File jarFile = packager.getJarFile();
75+
FileUtils.copyFileToFile(getGenericExe(), executable);
11876

119-
File launch4j = new File(Context.getGradleContext().getProject().getBuildDir(), "launch4j");
120-
FileUtils.mkdir(launch4j);
121-
122-
genericManifest = new File(launch4j, "app.exe.manifest");
123-
genericIcon = new File(launch4j, "app.ico");
124-
genericJar = new File(launch4j, "app.jar");
125-
genericExe = new File(launch4j, "app.exe");
126-
127-
FileUtils.copyFileToFile(manifestFile, genericManifest);
128-
FileUtils.copyFileToFile(iconFile, genericIcon);
129-
FileUtils.copyFileToFile(jarFile, genericJar);
130-
77+
return createBootstrapScript(packager);
13178
}
13279

13380
}

src/main/java/io/github/fvarrui/javapackager/maven/CreateWindowsExe.java

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,17 @@
1717
import org.apache.commons.lang3.StringUtils;
1818
import org.twdata.maven.mojoexecutor.MojoExecutor.Element;
1919

20-
import io.github.fvarrui.javapackager.model.Platform;
2120
import io.github.fvarrui.javapackager.model.WindowsConfig;
21+
import io.github.fvarrui.javapackager.packagers.AbstractCreateWindowsExe;
2222
import io.github.fvarrui.javapackager.packagers.Context;
23-
import io.github.fvarrui.javapackager.packagers.WindowsArtifactGenerator;
2423
import io.github.fvarrui.javapackager.packagers.WindowsPackager;
2524
import io.github.fvarrui.javapackager.utils.FileUtils;
26-
import io.github.fvarrui.javapackager.utils.VelocityUtils;
2725

2826
/**
29-
* Copies all dependencies to app folder on Maven context
27+
* Creates Windows executable with Maven
3028
*/
31-
public class CreateWindowsExe extends WindowsArtifactGenerator {
29+
public class CreateWindowsExe extends AbstractCreateWindowsExe {
3230

33-
private File launch4jFolder;
34-
private File genericManifest;
35-
private File genericIcon;
36-
private File genericJar;
37-
private File genericExe;
38-
39-
public CreateWindowsExe() {
40-
super("Windows EXE");
41-
}
42-
4331
@Override
4432
protected File doApply(WindowsPackager packager) throws Exception {
4533

@@ -53,17 +41,10 @@ protected File doApply(WindowsPackager packager) throws Exception {
5341
String classpath = packager.getClasspath();
5442
String jreMinVersion = packager.getJreMinVersion();
5543
File jarFile = packager.getJarFile();
56-
File appFolder = packager.getAppFolder();
57-
String name = packager.getName();
5844

59-
try {
60-
// creates a folder only for launch4j assets
61-
createAssets(packager);
62-
} catch (Exception ex) {
63-
throw new RuntimeException(ex);
64-
}
45+
createAssets(packager);
6546

66-
String jarPath = winConfig.isWrapJar() ? genericJar.getAbsolutePath() : jarFile.getName();
47+
String jarPath = winConfig.isWrapJar() ? getGenericJar().getAbsolutePath() : jarFile.getName();
6748

6849
List<Element> optsElements = vmArgs.stream().map(arg -> element("opt", arg)).collect(Collectors.toList());
6950

@@ -78,9 +59,9 @@ protected File doApply(WindowsPackager packager) throws Exception {
7859
pluginConfig.add(element("headerType", "" + winConfig.getHeaderType()));
7960
pluginConfig.add(element("jar", jarPath));
8061
pluginConfig.add(element("dontWrapJar", "" + !winConfig.isWrapJar()));
81-
pluginConfig.add(element("outfile", genericExe.getAbsolutePath()));
82-
pluginConfig.add(element("icon", genericIcon.getAbsolutePath()));
83-
pluginConfig.add(element("manifest", genericManifest.getAbsolutePath()));
62+
pluginConfig.add(element("outfile", getGenericExe().getAbsolutePath()));
63+
pluginConfig.add(element("icon", getGenericIcon().getAbsolutePath()));
64+
pluginConfig.add(element("manifest", getGenericManifest().getAbsolutePath()));
8465
pluginConfig.add(
8566
element("classPath",
8667
element("mainClass", mainClass),
@@ -121,51 +102,15 @@ protected File doApply(WindowsPackager packager) throws Exception {
121102
Context.getMavenContext().getEnv()
122103
);
123104

124-
sign(genericExe, packager);
105+
sign(getGenericExe(), packager);
125106

126-
FileUtils.copyFileToFile(genericExe, executable);
107+
FileUtils.copyFileToFile(getGenericExe(), executable);
127108

128109
} catch (Exception ex) {
129110
throw new RuntimeException(ex);
130111
}
131112

132-
// bootstrap script specified
133-
if (FileUtils.exists(packager.getScripts().getBootstrap())) {
134-
135-
// generates startup VBS script file
136-
File vbsFile = new File(appFolder, name + ".vbs");
137-
VelocityUtils.render(Platform.windows + "/startup.vbs.vtl", vbsFile, packager);
138-
139-
// creates shortcut to VBS script
140-
File lnk = new File(appFolder, name + ".lnk");
141-
createShortcut(lnk, vbsFile, executable);
142-
143-
executable = vbsFile;
144-
145-
}
146-
147-
return executable;
148-
}
149-
150-
private void createAssets(WindowsPackager packager) throws Exception {
151-
152-
File assetsFolder = packager.getAssetsFolder();
153-
File manifestFile = packager.getManifestFile();
154-
File iconFile = packager.getIconFile();
155-
File jarFile = packager.getJarFile();
156-
157-
launch4jFolder = new File(assetsFolder, "launch4j");
158-
if (!launch4jFolder.exists()) launch4jFolder.mkdirs();
159-
160-
genericManifest = new File(launch4jFolder, "app.exe.manifest");
161-
genericIcon = new File(launch4jFolder, "app.ico");
162-
genericJar = new File(launch4jFolder, "app.jar");
163-
genericExe = new File(launch4jFolder, "app.exe");
164-
165-
FileUtils.copyFileToFile(manifestFile, genericManifest);
166-
FileUtils.copyFileToFile(iconFile, genericIcon);
167-
FileUtils.copyFileToFile(jarFile, genericJar);
168-
113+
return createBootstrapScript(packager);
169114
}
170115

171116
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package io.github.fvarrui.javapackager.packagers;
2+
3+
import java.io.File;
4+
5+
import io.github.fvarrui.javapackager.model.Platform;
6+
import io.github.fvarrui.javapackager.utils.FileUtils;
7+
import io.github.fvarrui.javapackager.utils.VelocityUtils;
8+
9+
public abstract class AbstractCreateWindowsExe extends WindowsArtifactGenerator {
10+
11+
private File launch4jFolder;
12+
private File genericManifest;
13+
private File genericIcon;
14+
private File genericJar;
15+
private File genericExe;
16+
17+
public AbstractCreateWindowsExe() {
18+
super("Windows EXE");
19+
}
20+
21+
public File getLaunch4jFolder() {
22+
return launch4jFolder;
23+
}
24+
25+
public void setLaunch4jFolder(File launch4jFolder) {
26+
this.launch4jFolder = launch4jFolder;
27+
}
28+
29+
public File getGenericManifest() {
30+
return genericManifest;
31+
}
32+
33+
public void setGenericManifest(File genericManifest) {
34+
this.genericManifest = genericManifest;
35+
}
36+
37+
public File getGenericIcon() {
38+
return genericIcon;
39+
}
40+
41+
public void setGenericIcon(File genericIcon) {
42+
this.genericIcon = genericIcon;
43+
}
44+
45+
public File getGenericJar() {
46+
return genericJar;
47+
}
48+
49+
public void setGenericJar(File genericJar) {
50+
this.genericJar = genericJar;
51+
}
52+
53+
public File getGenericExe() {
54+
return genericExe;
55+
}
56+
57+
public void setGenericExe(File genericExe) {
58+
this.genericExe = genericExe;
59+
}
60+
61+
/**
62+
* Renames assets required for launch4j to avoid unsupported characters
63+
* (chinese, e.g.)
64+
*
65+
* @param packager Windows packager
66+
* @throws Exception Something went wrong
67+
*/
68+
protected void createAssets(WindowsPackager packager) throws Exception {
69+
70+
File manifestFile = packager.getManifestFile();
71+
File iconFile = packager.getIconFile();
72+
File jarFile = packager.getJarFile();
73+
74+
File launch4j = new File(Context.getGradleContext().getProject().getBuildDir(), "launch4j");
75+
FileUtils.mkdir(launch4j);
76+
77+
genericManifest = new File(launch4j, "app.exe.manifest");
78+
genericIcon = new File(launch4j, "app.ico");
79+
genericJar = new File(launch4j, "app.jar");
80+
genericExe = new File(launch4j, "app.exe");
81+
82+
FileUtils.copyFileToFile(manifestFile, genericManifest);
83+
FileUtils.copyFileToFile(iconFile, genericIcon);
84+
FileUtils.copyFileToFile(jarFile, genericJar);
85+
86+
}
87+
88+
/**
89+
* Creates bootstrap script if needed
90+
* @param packager
91+
* @return
92+
* @throws Exception
93+
*/
94+
protected File createBootstrapScript(WindowsPackager packager) throws Exception {
95+
File executable = packager.getExecutable();
96+
97+
if (FileUtils.exists(packager.getScripts().getBootstrap())) {
98+
99+
// generates startup VBS script file
100+
File vbsFile = new File(packager.getAppFolder(), packager.getName() + ".vbs");
101+
VelocityUtils.render(Platform.windows + "/startup.vbs.vtl", vbsFile, packager);
102+
executable = vbsFile;
103+
104+
}
105+
106+
return executable;
107+
}
108+
109+
}

0 commit comments

Comments
 (0)