Skip to content

Commit 2b84058

Browse files
committed
Merge branch 'issue-302' into devel
2 parents 1ec35ea + e646001 commit 2b84058

File tree

6 files changed

+44
-13
lines changed

6 files changed

+44
-13
lines changed

src/main/java/io/github/fvarrui/javapackager/model/LinuxConfig.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.Arrays;
66
import java.util.List;
77

8+
import org.apache.commons.lang3.ObjectUtils;
9+
810
import io.github.fvarrui.javapackager.packagers.Packager;
911

1012
/**
@@ -19,6 +21,7 @@ public class LinuxConfig implements Serializable {
1921
private boolean generateAppImage = true;
2022
private File pngFile;
2123
private boolean wrapJar = true;
24+
private File installationPath;
2225

2326
public void setCategories(List<String> categories) {
2427
this.categories = categories;
@@ -67,11 +70,20 @@ public boolean isWrapJar() {
6770
public void setWrapJar(boolean wrapJar) {
6871
this.wrapJar = wrapJar;
6972
}
73+
74+
public File getInstallationPath() {
75+
return installationPath;
76+
}
77+
78+
public void setInstallationPath(File installationPath) {
79+
this.installationPath = installationPath;
80+
}
7081

7182
@Override
7283
public String toString() {
7384
return "LinuxConfig [categories=" + categories + ", generateDeb=" + generateDeb + ", generateRpm=" + generateRpm
74-
+ ", generateAppImage=" + generateAppImage + ", pngFile=" + pngFile + ", wrapJar=" + wrapJar + "]";
85+
+ ", generateAppImage=" + generateAppImage + ", pngFile=" + pngFile + ", wrapJar=" + wrapJar
86+
+ ", installationPath=" + installationPath + "]";
7587
}
7688

7789
/**
@@ -81,6 +93,7 @@ public String toString() {
8193
*/
8294
public void setDefaults(Packager packager) {
8395
this.setCategories((categories == null || categories.isEmpty()) ? Arrays.asList("Utility") : categories);
96+
this.setInstallationPath(ObjectUtils.defaultIfNull(installationPath, new File("/opt")));
8497
}
8598

8699
}

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ protected File doApply(LinuxPackager packager) throws Exception {
6464
File executable = packager.getExecutable();
6565
File javaFile = new File(appFolder, jreDirectoryName + "/bin/java");
6666
File mimeXmlFile = packager.getMimeXmlFile();
67+
File installationPath = packager.getLinuxConfig().getInstallationPath();
68+
File appPath = new File(installationPath, name);
6769

6870
// generates desktop file from velocity template
6971
File desktopFile = new File(assetsFolder, name + ".desktop");
@@ -87,7 +89,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
8789

8890
Mapper appFolderMapper = new Mapper();
8991
appFolderMapper.setType("perm");
90-
appFolderMapper.setPrefix("/opt/" + name);
92+
appFolderMapper.setPrefix(appPath.getAbsolutePath());
9193
appFolderMapper.setFileMode("644");
9294

9395
Data appFolderData = new Data();
@@ -102,12 +104,12 @@ protected File doApply(LinuxPackager packager) throws Exception {
102104

103105
Mapper executableMapper = new Mapper();
104106
executableMapper.setType("perm");
105-
executableMapper.setPrefix("/opt/" + name);
107+
executableMapper.setPrefix(appPath.getAbsolutePath());
106108
executableMapper.setFileMode("755");
107109

108110
Data executableData = new Data();
109111
executableData.setType("file");
110-
executableData.setSrc(new File(appFolder.getAbsolutePath() + "/" + name));
112+
executableData.setSrc(executable);
111113
executableData.addMapper(executableMapper);
112114

113115
dataProducers.add(executableData);
@@ -150,7 +152,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
150152
Mapper javaBinaryMapper = new Mapper();
151153
javaBinaryMapper.setType("perm");
152154
javaBinaryMapper.setFileMode("755");
153-
javaBinaryMapper.setPrefix("/opt/" + name + "/" + jreDirectoryName + "/bin");
155+
javaBinaryMapper.setPrefix(appPath + "/" + jreDirectoryName + "/bin");
154156

155157
Data javaBinaryData = new Data();
156158
javaBinaryData.setType("file");
@@ -168,7 +170,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
168170
Mapper javaSpawnHelperMapper = new Mapper();
169171
javaSpawnHelperMapper.setType("perm");
170172
javaSpawnHelperMapper.setFileMode("755");
171-
javaSpawnHelperMapper.setPrefix("/opt/" + name + "/" + jreDirectoryName + "/lib");
173+
javaSpawnHelperMapper.setPrefix(appPath + "/" + jreDirectoryName + "/lib");
172174

173175
Data javaSpawnHelperData = new Data();
174176
javaSpawnHelperData.setType("file");
@@ -182,7 +184,7 @@ protected File doApply(LinuxPackager packager) throws Exception {
182184

183185
// symbolic link in /usr/local/bin to app binary data producer
184186

185-
DataProducer linkData = createLink("/usr/local/bin/" + name, "/opt/" + name + "/" + name);
187+
DataProducer linkData = createLink("/usr/local/bin/" + executable.getName(), appPath + "/" + executable.getName());
186188

187189
dataProducers.add(linkData);
188190

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,13 @@ protected File doApply(LinuxPackager packager) throws Exception {
4444
String jreDirectoryName = packager.getJreDirectoryName();
4545
Architecture arch = Architecture.valueOf(packager.getArch().getRpm());
4646
File mimeXmlFile = packager.getMimeXmlFile();
47+
File installationPath = packager.getLinuxConfig().getInstallationPath();
48+
File appPath = new File(installationPath, name);
4749

4850
// generates desktop file from velocity template
4951
File desktopFile = new File(assetsFolder, name + ".desktop");
5052
VelocityUtils.render("linux/desktop.vtl", desktopFile, packager);
51-
Logger.info("Rendering desktop file to " + desktopFile.getAbsolutePath());
53+
Logger.info("Desktop file rendered in " + desktopFile.getAbsolutePath());
5254

5355
// copies desktop file to app
5456
FileUtils.copyFileToFolder(desktopFile, appFolder);
@@ -68,17 +70,20 @@ protected File doApply(LinuxPackager packager) throws Exception {
6870
executionPermissions.add(new File(appFolder, jreDirectoryName + "/bin/java"));
6971
executionPermissions.add(new File(appFolder, jreDirectoryName + "/lib/jspawnhelper"));
7072

73+
// add all app files
74+
addDirectoryTree(builder, installationPath.getAbsolutePath(), appFolder, executionPermissions);
75+
7176
// link to desktop file
72-
addLink(builder, "/usr/share/applications/" + desktopFile.getName(), "/opt/" + name + "/" + desktopFile.getName());
77+
addLink(builder, "/usr/share/applications/" + desktopFile.getName(), appPath + "/" + desktopFile.getName());
7378

7479
// copy and link to mime.xml file
7580
if (mimeXmlFile != null) {
7681
FileUtils.copyFileToFolder(mimeXmlFile, appFolder);
77-
addLink(builder, "/usr/share/mime/packages/" + mimeXmlFile.getName(), "/opt/" + name + "/" + mimeXmlFile.getName());
82+
addLink(builder, "/usr/share/mime/packages/" + mimeXmlFile.getName(), appPath + "/" + mimeXmlFile.getName());
7883
}
7984

8085
// link to binary
81-
addLink(builder, "/usr/local/bin/" + executable.getName(), "/opt/" + name + "/" + executable.getName());
86+
addLink(builder, "/usr/local/bin/" + executable.getName(), appPath + "/" + executable.getName());
8287

8388
// add all app files
8489
addDirectory(builder, "/opt", appFolder, executionPermissions);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ public class MacPackager extends Packager {
3434
private File javaFolder;
3535
private File macOSFolder;
3636
private File jreBundleFolder;
37+
38+
public MacPackager() {
39+
super();
40+
platform(Platform.mac);
41+
}
3742

3843
public File getAppFile() {
3944
return appFile;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import org.apache.commons.lang3.StringUtils;
88

9+
import io.github.fvarrui.javapackager.model.Platform;
910
import io.github.fvarrui.javapackager.utils.Logger;
1011
import io.github.fvarrui.javapackager.utils.VelocityUtils;
1112

@@ -28,6 +29,11 @@ public File getMsmFile() {
2829
public void setMsmFile(File msmFile) {
2930
this.msmFile = msmFile;
3031
}
32+
33+
public WindowsPackager() {
34+
super();
35+
platform(Platform.windows);
36+
}
3137

3238
@Override
3339
public void doInit() throws Exception {

src/main/resources/linux/desktop.vtl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
Name=${info.displayName}
44
GenericName=${info.displayName}
55
Comment=${info.description}
6-
Exec=/opt/${info.name}/${info.name} %U
7-
Icon=/opt/${info.name}/${info.name}.png
6+
Exec=${info.linuxConfig.installationPath}/${info.name}/${info.executable.name} %U
7+
Icon=${info.linuxConfig.installationPath}/${info.name}/${info.name}.png
88
Terminal=false
99
Type=Application
1010
StartupNotify=true

0 commit comments

Comments
 (0)