/jEdit/tags/jedit-4-3-1/installer/ConsoleInstall.java
# · Java · 138 lines · 98 code · 21 blank · 19 comment · 21 complexity · 0202bbfc3d9e2957d1bca87a903a7978 MD5 · raw file
- /*
- * ConsoleInstall.java
- *
- * Originally written by Slava Pestov for the jEdit installer project. This work
- * has been placed into the public domain. You may use this work in any way and
- * for any purpose you wish.
- *
- * THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, NOT EVEN THE
- * IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, ASSUMES
- * _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE, MODIFICATION,
- * OR REDISTRIBUTION OF THIS SOFTWARE.
- */
- package installer;
- import java.io.*;
- import java.util.Vector;
- /*
- * Performs text-only installation.
- */
- public class ConsoleInstall
- {
- public ConsoleInstall()
- {
- installer = new Install();
- String appName = installer.getProperty("app.name");
- String appVersion = installer.getProperty("app.version");
- BufferedReader in = new BufferedReader(new InputStreamReader(
- System.in));
- System.out.println("*** " + appName + " " + appVersion + " installer");
- OperatingSystem os = OperatingSystem.getOperatingSystem();
- String installDir = os.getInstallDirectory(appName,appVersion);
- System.out.print("Installation directory: [" + installDir + "] ");
- System.out.flush();
- String _installDir = readLine(in);
- if(_installDir.length() != 0)
- installDir = _installDir;
- else
- System.out.println("Will use default");
-
- OperatingSystem.OSTask[] osTasks = os.getOSTasks(installer);
- for(int i = 0; i < osTasks.length; i++)
- {
- OperatingSystem.OSTask osTask = osTasks[i];
- String label = osTask.getLabel();
- // label == null means no configurable options
- if(label != null)
- {
- String dir = osTask.getDirectory();
- System.out.print(label + " [" + dir + "] ");
- System.out.flush();
- dir = readLine(in);
- osTask.setEnabled(true);
- if(dir.length() != 0)
- {
- if(dir.equals("off"))
- osTask.setEnabled(false);
- else
- osTask.setDirectory(dir);
- }
- else
- System.out.println("will use default");
- }
- }
- int compCount = installer.getIntegerProperty("comp.count");
- Vector components = new Vector(compCount);
- System.out.println("*** Program components to install");
- for(int i = 0; i < compCount; i++)
- {
- String fileset = installer.getProperty("comp." + i + ".fileset");
- String osDep = installer.getProperty("comp." + i + ".os");
- if(osDep != null)
- {
- if(!os.getClass().getName().endsWith(osDep))
- {
- continue;
- }
- }
- System.out.print("Install "
- + installer.getProperty("comp." + i + ".name")
- + " ("
- + installer.getProperty("comp." + i + ".disk-size")
- + "Kb) [Y/n]? ");
- String line = readLine(in);
- if(line.length() == 0 || line.charAt(0) == 'y'
- || line.charAt(0) == 'Y')
- components.addElement(fileset);
- }
- System.out.println("*** Starting installation...");
- ConsoleProgress progress = new ConsoleProgress();
- InstallThread thread = new InstallThread(
- installer,progress,installDir,osTasks,
- 0 /* XXX */,components);
- thread.start();
- }
- // private members
- private Install installer;
- private String readLine(BufferedReader in)
- {
- try
- {
- String line = in.readLine();
- if(line == null)
- {
- System.err.println("\nEOF in input!");
- System.exit(1);
- // can't happen
- throw new InternalError();
- }
- return line;
- }
- catch(IOException io)
- {
- System.err.println("\nI/O error: " + io);
- System.exit(1);
- // can't happen
- throw new InternalError();
- }
- }
- }