openInstaller: GUI and CUI parity, made easy

I've seen a lot of installers for a lot of layered applications on various flavors of Unix and Windows.  Getting a download containing everything, and having an installer do handy things like automatic configuration, wiring apps together, desktop integration, etc. is great.   No argument there.  But often times, especially in the unix deployment scenarios, the administrator needs to install on a system without graphics support (e.g. a server in a closet, or over a low-bandwidth connection where graphics are just too painfully slow).

Most installers will tell you to revert to either a batch mode, where you have to create some kind of "answer file" containing installer configuration, or for more complex situations, use a clunky interactive quesiton/answer session.  If you get an answer wrong (or flub up and type in a wrong value), its usually next to impossible to get back and correct your mistake.  In most cases, you end up pressing CTRL-C, and starting over.  For complex situations, this is just irritating.

openInstaller has come up with a revolutionary way for developers to achieve GUI and CUI functional parity virtually for free. By using a combination of several open source projects, including SwiXML, Charva, and nCurses, the install developer can simply create their UI layout once, in a single descriptive XML file (more to come there, a GUI designer tool is in the works).  This single descriptive file is then rendered at install time into the various view modes that openInstaller supports.  Most of the basic UI widgets (textfields, buttons, etc) are supported, and a few more complex widgets as you will see in the below screenshots.

For example, here's a typical license screen in GUI:


 

Here's the same screen rendered in CUI:

 

 

The openInstaller code to render this is a single UI Visual Control Definition file (syntax used is the same as in the Java Desktop System configurator, we borrowed that project's schema):

 

  <apt:section apt:name="license" apt:label="LICENSE" >
<apt:property apt:name="LICENSE_TEXT1"
apt:dataPath=""
apt:type="xs:string">
<apt:prop-value>$License_LICENSE_TEXT1</apt:prop-value>
<apt:visual>
<apt:htmlPanel/>
</apt:visual>
</apt:property>
<apt:property apt:name="LICENSE_TEXT2"
apt:dataPath=""
apt:type="xs:string">
<apt:prop-value>$License_LICENSE_TEXT2</apt:prop-value>
<apt:visual>
<apt:textArea apt:rows="9" apt:columns="33"/>
</apt:visual>
</apt:property>

As you can see, a htmlPanel and textArea are two visual types that openInstaller supports. This XML is rendered using SwiXML, which normally turns it into Java Swing. In openInstaller, this is either turned into Swing and rendered using Java Swing, or turned into Charva, and rendered using nCurses. The developer, of course, has to to nothing special to achieve this, and it gives them ultimate functional parity for users of GUIs and CUIs (btw, openInstaller also supports silent mode in a traditional way).

Pop-Up dialogs (e.g. a JOptionPane) are easy too:

 


 

JOptionPane in CUI:

 

 

File Browser? You betcha:

 


 

FileBrowser in CUI:

 

 

ListChooser? Yep:

 


 

ListChooser in CUI:

 

 

Tabs? Sure:

 


 

Tabs in CUI:

For more information on how to use or contribute to openInstaller, visit http://openinstaller.dev.java.net

Comments:

Do you know when the GUI designer tool will be complete? Or has it been completed? I cannot find it. I found a NetBeans plug-in, but really does not support any type of configurationability. This product looks promising, but i do not see it very useful without the GUI designer. Any info would be appreciated.

Posted by Joe K on September 22, 2009 at 05:47 AM EDT #

Hi All,

Does OpenInstaller support different languages ? I require to support different languages in my product.

Thanks in advance,
Suhas.

Posted by Suhas P B on October 21, 2009 at 07:36 PM EDT #

Post a Comment:
  • HTML Syntax: NOT allowed
About

bytor

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today