ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/java/installer2/src/net/oni2/aeinstaller/backend/oni/OniLauncher.java
Revision: 1012
Committed: Mon Mar 23 15:06:20 2015 UTC (10 years, 6 months ago) by alloc
Content type: text/x-java
File size: 2629 byte(s)
Log Message:
Fixes #78 (hopefully, untested)

File Contents

# Content
1 package net.oni2.aeinstaller.backend.oni;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.IOException;
6 import java.util.Vector;
7
8 import org.apache.commons.io.FileUtils;
9
10 import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
11 import net.oni2.aeinstaller.backend.Paths;
12 import net.oni2.platformtools.PlatformInformation;
13 import net.oni2.platformtools.PlatformInformation.Platform;
14 import net.oni2.platformtools.applicationinvoker.ApplicationInvoker;
15 import net.oni2.platformtools.applicationinvoker.EExeType;
16 import net.oni2.platformtools.applicationinvoker.ERuntimeNotInstalledException;
17
18 /**
19 * @author Christian Illy
20 */
21 public class OniLauncher {
22
23 private static File getOniExe() throws FileNotFoundException {
24 File exe = null;
25 switch (PlatformInformation.getPlatform()) {
26 case WIN:
27 case LINUX:
28 exe = new File(Paths.getEditionBasePath(), "Oni.exe");
29 break;
30 case MACOS:
31 exe = new File(Paths.getEditionBasePath(),
32 "Oni.app/Contents/MacOS/Oni");
33 break;
34 default:
35 }
36 if (exe.exists())
37 return exe;
38 else
39 throw new FileNotFoundException("Oni's executable was not found");
40 }
41
42 private static EExeType getOniExeType() {
43 switch (PlatformInformation.getPlatform()) {
44 case MACOS:
45 return EExeType.OSBINARY;
46 default:
47 return EExeType.WINEXE;
48 }
49 }
50
51 private static Vector<String> getLaunchArgs () {
52 Vector<String> res = new Vector<String>();
53 if (PlatformInformation.getPlatform() == Platform.MACOS) {
54 File launchArgs = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getEditionBasePath(), "launch_args.txt");
55 if (launchArgs.exists()) {
56 try {
57 String[] argsStrings = FileUtils.readFileToString(launchArgs).split(" ");
58 for (int i = 0; i < argsStrings.length; i++) {
59 argsStrings [i] = argsStrings [i].trim();
60 if (argsStrings [i].length() > 0) {
61 res.add(argsStrings [i]);
62 }
63 }
64 } catch (IOException e) {
65 e.printStackTrace();
66 }
67 }
68 }
69 return res;
70 }
71
72 /**
73 * @param windowed
74 * Run in windowed mode
75 * @throws FileNotFoundException
76 * If Oni's executable was not found
77 * @throws ERuntimeNotInstalledException
78 * If Linux and Wine not found
79 */
80 public static void launch(boolean windowed) throws FileNotFoundException,
81 ERuntimeNotInstalledException {
82 File exe = getOniExe();
83 Vector<String> params = getLaunchArgs();
84 params.add("-debugfiles");
85 if (windowed)
86 params.add("-noswitch");
87 else
88 params.remove("-noswitch");
89 ApplicationInvoker.execute(getOniExeType(), Paths.getEditionBasePath(),
90 exe, params, true);
91 }
92
93 }