01: /*
02: * NonInteractiveInstall.java
03: *
04: * Originally written by Slava Pestov for the jEdit installer project. This work
05: * has been placed into the public domain. You may use this work in any way and
06: * for any purpose you wish.
07: *
08: * THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, NOT EVEN THE
09: * IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, ASSUMES
10: * _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE, MODIFICATION,
11: * OR REDISTRIBUTION OF THIS SOFTWARE.
12: */
13:
14: package installer;
15:
16: import java.util.Vector;
17:
18: /*
19: * Performs non-interactive installation.
20: */
21: public class NonInteractiveInstall {
22: public NonInteractiveInstall(String[] args) {
23: String installDir = args[1];
24:
25: installer = new Install();
26:
27: OperatingSystem os = OperatingSystem.getOperatingSystem();
28: OperatingSystem.OSTask[] osTasks = os.getOSTasks(installer);
29:
30: for (int i = 2; i < args.length; i++) {
31: String arg = args[i];
32: int index = arg.indexOf('=');
33: if (index == -1) {
34: System.err.println("Invalid parameter: " + arg);
35: continue;
36: }
37:
38: String taskName = arg.substring(0, index);
39: String taskDir = arg.substring(index + 1);
40: for (int j = 0; j < osTasks.length; j++) {
41: OperatingSystem.OSTask osTask = osTasks[j];
42: if (osTask.getName().equals(taskName)) {
43: if (taskDir.equals("off"))
44: osTask.setEnabled(false);
45: else {
46: osTask.setEnabled(true);
47: osTask.setDirectory(taskDir);
48: }
49: break;
50: }
51: }
52: }
53:
54: int compCount = installer.getIntegerProperty("comp.count");
55: Vector components = new Vector(compCount);
56:
57: for (int i = 0; i < compCount; i++) {
58: String fileset = installer.getProperty("comp." + i
59: + ".fileset");
60:
61: String osDep = installer.getProperty("comp." + i + ".os");
62: if (osDep != null) {
63: if (!os.getClass().getName().endsWith(osDep)) {
64: continue;
65: }
66: }
67:
68: components.addElement(fileset);
69: }
70:
71: //
72:
73: ConsoleProgress progress = new ConsoleProgress();
74: InstallThread thread = new InstallThread(installer, progress,
75: installDir, osTasks, 0 /* XXX */, components);
76: thread.start();
77: }
78:
79: // private members
80: private Install installer;
81: }
|