Skip to content

Commit 8110dfa

Browse files
committed
rcedit command use refactored
1 parent 364a666 commit 8110dfa

File tree

4 files changed

+74
-26
lines changed

4 files changed

+74
-26
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,5 @@ public File createWindowsExe(WindowsPackager packager) throws Exception {
122122
}
123123
return null;
124124
}
125-
126-
127125

128126
}

src/main/java/io/github/fvarrui/javapackager/packagers/CreateWindowsExeWhy.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import io.github.fvarrui.javapackager.model.Platform;
66
import io.github.fvarrui.javapackager.model.WindowsConfig;
77
import io.github.fvarrui.javapackager.model.WindowsExeCreationTool;
8-
import io.github.fvarrui.javapackager.utils.CommandUtils;
98
import io.github.fvarrui.javapackager.utils.FileUtils;
109
import io.github.fvarrui.javapackager.utils.Logger;
10+
import io.github.fvarrui.javapackager.utils.RcEdit;
1111
import io.github.fvarrui.javapackager.utils.VelocityUtils;
1212

1313
/**
@@ -56,25 +56,22 @@ protected File doApply(WindowsPackager packager) throws Exception {
5656
// creates generic exe
5757
FileUtils.copyResourceToFile("/windows/JavaLauncher.exe", getGenericExe(), packager.getAssetsDir());
5858

59-
// copies rcedit command line tool (needed to manipulate exe)
60-
File rcedit = new File(getOutputFolder(), "rcedit.exe");
61-
FileUtils.copyResourceToFile("/windows/rcedit-x64.exe", rcedit);
62-
6359
// generates ini file
6460
File genericIni = new File(getOutputFolder(), "launcher.ini");
6561
VelocityUtils.render("windows/why-ini.vtl", genericIni, packager);
6662
Logger.info("INI file generated in " + genericIni.getAbsolutePath() + "!");
6763

68-
// process EXE with rcedit-x64.exe
69-
CommandUtils.execute(rcedit, getGenericExe(), "--set-icon", getGenericIcon());
70-
CommandUtils.execute(rcedit, getGenericExe(), "--application-manifest", getGenericManifest());
71-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "FileDescription", name);
72-
CommandUtils.execute(rcedit, getGenericExe(), "--set-file-version", winConfig.getFileVersion());
73-
CommandUtils.execute(rcedit, getGenericExe(), "--set-product-version", winConfig.getProductVersion());
74-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "CompanyName", winConfig.getCompanyName());
75-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "InternalName", winConfig.getInternalName());
76-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "OriginalFilename",winConfig.getOriginalFilename());
77-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "ProductName", winConfig.getProductName());
64+
// set exe metadata with rcedit
65+
RcEdit rcedit = new RcEdit(getOutputFolder());
66+
rcedit.setIcon(getGenericExe(), getGenericIcon());
67+
rcedit.setManifest(getGenericExe(), getGenericManifest());
68+
rcedit.setFileVersion(getGenericExe(), winConfig.getFileVersion());
69+
rcedit.setProductVersion(getGenericExe(), winConfig.getProductVersion());
70+
rcedit.setVersionString(getGenericExe(), "FileDescription", name);
71+
rcedit.setVersionString(getGenericExe(), "CompanyName", winConfig.getCompanyName());
72+
rcedit.setVersionString(getGenericExe(), "InternalName", winConfig.getInternalName());
73+
rcedit.setVersionString(getGenericExe(), "OriginalFilename", winConfig.getOriginalFilename());
74+
rcedit.setVersionString(getGenericExe(), "ProductName", winConfig.getProductName());
7875

7976
// copies JAR to app folder
8077
FileUtils.copyFileToFolder(jarFile, appFolder);

src/main/java/io/github/fvarrui/javapackager/packagers/CreateWindowsExeWinRun4j.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
import io.github.fvarrui.javapackager.model.Platform;
1313
import io.github.fvarrui.javapackager.model.WindowsConfig;
1414
import io.github.fvarrui.javapackager.model.WindowsExeCreationTool;
15-
import io.github.fvarrui.javapackager.utils.CommandUtils;
1615
import io.github.fvarrui.javapackager.utils.FileUtils;
1716
import io.github.fvarrui.javapackager.utils.JarUtils;
1817
import io.github.fvarrui.javapackager.utils.Logger;
18+
import io.github.fvarrui.javapackager.utils.RcEdit;
1919
import io.github.fvarrui.javapackager.utils.VelocityUtils;
2020

2121
/**
@@ -74,10 +74,6 @@ protected File doApply(WindowsPackager packager) throws Exception {
7474
// creates generic exe
7575
FileUtils.copyResourceToFile("/windows/WinRun4J64.exe", getGenericExe());
7676

77-
// copies rcedit command line tool (needed to manipulate exe)
78-
File rcedit = new File(getOutputFolder(), "rcedit.exe");
79-
FileUtils.copyResourceToFile("/windows/rcedit-x64.exe", rcedit);
80-
8177
// uses vmLocation only if a JRE is bundled
8278
if (bundleJre) {
8379

@@ -124,10 +120,17 @@ protected File doApply(WindowsPackager packager) throws Exception {
124120
VelocityUtils.render("windows/ini.vtl", genericIni, packager);
125121
Logger.info("INI file generated in " + genericIni.getAbsolutePath() + "!");
126122

127-
// process EXE with rcedit-x64.exe
128-
CommandUtils.execute(rcedit, getGenericExe(), "--set-icon", getGenericIcon());
129-
CommandUtils.execute(rcedit, getGenericExe(), "--application-manifest", getGenericManifest());
130-
CommandUtils.execute(rcedit, getGenericExe(), "--set-version-string", "FileDescription", name);
123+
// set exe metadata with rcedit
124+
RcEdit rcedit = new RcEdit(getOutputFolder());
125+
rcedit.setIcon(getGenericExe(), getGenericIcon());
126+
rcedit.setManifest(getGenericExe(), getGenericManifest());
127+
rcedit.setFileVersion(getGenericExe(), winConfig.getFileVersion());
128+
rcedit.setProductVersion(getGenericExe(), winConfig.getProductVersion());
129+
rcedit.setVersionString(getGenericExe(), "FileDescription", name);
130+
rcedit.setVersionString(getGenericExe(), "CompanyName", winConfig.getCompanyName());
131+
rcedit.setVersionString(getGenericExe(), "InternalName", winConfig.getInternalName());
132+
rcedit.setVersionString(getGenericExe(), "OriginalFilename", winConfig.getOriginalFilename());
133+
rcedit.setVersionString(getGenericExe(), "ProductName", winConfig.getProductName());
131134

132135
// copies JAR to libs folder
133136
FileUtils.copyFileToFolder(jarFile, appFolder);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.github.fvarrui.javapackager.utils;
2+
3+
import java.io.File;
4+
5+
import static io.github.fvarrui.javapackager.utils.CommandUtils.execute;
6+
7+
public class RcEdit {
8+
9+
private File rcedit;
10+
11+
public RcEdit(File outputDir) throws Exception {
12+
rcedit = new File(outputDir, "rcedit.exe");
13+
if (!rcedit.exists()) {
14+
FileUtils.copyResourceToFile("/windows/rcedit-x64.exe", rcedit);
15+
}
16+
}
17+
18+
public RcEdit() throws Exception {
19+
this(new File(System.getProperty("java.io.tmpdir")));
20+
}
21+
22+
private void setExeMetadata(File executable, String option, String key, Object value) throws Exception {
23+
execute(rcedit, executable, option, key, value);
24+
}
25+
26+
private void setExeMetadata(File executable, String option, Object value) throws Exception {
27+
execute(rcedit, executable, option, value);
28+
}
29+
30+
public void setIcon(File executable, File icon) throws Exception {
31+
setExeMetadata(executable, "--set-icon", icon);
32+
}
33+
34+
public void setManifest(File executable, File manifest) throws Exception {
35+
setExeMetadata(executable, "--application-manifest", manifest);
36+
}
37+
38+
public void setFileVersion(File executable, String fileVersion) throws Exception {
39+
setExeMetadata(executable, "--set-file-version", fileVersion);
40+
}
41+
42+
public void setProductVersion(File executable, String productVersion) throws Exception {
43+
setExeMetadata(executable, "--set-product-version", productVersion);
44+
}
45+
46+
public void setVersionString(File executable, String key, String value) throws Exception {
47+
setExeMetadata(executable, "--set-version-string", key, value);
48+
}
49+
50+
}

0 commit comments

Comments
 (0)