714 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			714 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
						|
<html xmlns="http://www.w3.org/1999/xhtml">
 | 
						|
<head>
 | 
						|
<title>GT::Installer - Performs initial installs for GTI products</title>
 | 
						|
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
 | 
						|
 | 
						|
<style type="text/css">
 | 
						|
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
 | 
						|
/* $MVD$:fontset("Arial","Arial") */
 | 
						|
/* $MVD$:fontset("Arial Black","Arial Black") */
 | 
						|
/* $MVD$:fontset("Algerian","Algerian") */
 | 
						|
 | 
						|
 | 
						|
body {
 | 
						|
    background-color: white;
 | 
						|
    font-family: Verdana, Arial, sans-serif;
 | 
						|
    font-size: small;
 | 
						|
    color: black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
p {
 | 
						|
    background-color : white;
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h1 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : medium;
 | 
						|
    background-color : white;
 | 
						|
    color : maroon;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h2 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : medium;
 | 
						|
    font-weight : bold;
 | 
						|
    color : blue;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h3 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : medium;
 | 
						|
    color : black;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h4 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : small;
 | 
						|
    color : maroon;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h5 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : small;
 | 
						|
    color : blue;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
h6 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
ul {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
ol {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
dl {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
li {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
th {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
td {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
dl {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
dd {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
dt {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
code {
 | 
						|
    font-family : Courier;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
pre {
 | 
						|
    font-family : Courier;
 | 
						|
    font-size : small;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
.mvd-H1 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : bold;
 | 
						|
    font-size : 14.0pt;
 | 
						|
    background-color : transparent;
 | 
						|
    background-image : none;
 | 
						|
    color : maroon;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-H2 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : 12.0pt;
 | 
						|
    color : blue;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
p.indent {
 | 
						|
    font-family : "Verdana, Arial, sans-serif";
 | 
						|
    list-style-type : circle;
 | 
						|
    list-style-position : inside;
 | 
						|
    color : black;
 | 
						|
    margin-left : 16.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-P-indent {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    list-style-type : circle;
 | 
						|
    list-style-position : inside;
 | 
						|
    color : black;
 | 
						|
    margin-left : 16.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
pre.programlisting {
 | 
						|
    font-size : 9.0pt;
 | 
						|
    list-style-type : disc;
 | 
						|
    margin-left : 16.0pt;
 | 
						|
    margin-top : -14.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-PRE-programlisting {
 | 
						|
    font-size : 9.0pt;
 | 
						|
    list-style-type : disc;
 | 
						|
    margin-left : 16.0pt;
 | 
						|
    margin-top : -14.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-PRE {
 | 
						|
    font-size : 9.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
p.note {
 | 
						|
    margin-left : 28.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-P-note {
 | 
						|
    margin-left : 28.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-H4 {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-weight : normal;
 | 
						|
    font-size : 9.0pt;
 | 
						|
    color : black;
 | 
						|
    margin-left : 6.0pt;
 | 
						|
    margin-top : -14.0pt;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-P {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    font-size : 10.0pt;
 | 
						|
    color : black;
 | 
						|
}
 | 
						|
 | 
						|
.mvd-BODY {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    background-color : white;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
p.indentnobullet {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    list-style-type : none;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.mvd-P-indentnobullet {
 | 
						|
    font-family : Verdana, Arial, sans-serif;
 | 
						|
    list-style-type : none;
 | 
						|
}
 | 
						|
</style>
 | 
						|
 | 
						|
 | 
						|
</head>
 | 
						|
 | 
						|
<body style="background-color: white">
 | 
						|
 | 
						|
<p><a name="__index__"></a></p>
 | 
						|
<!-- INDEX BEGIN -->
 | 
						|
 | 
						|
<ul>
 | 
						|
 | 
						|
	<li><a href="#name">NAME</a></li>
 | 
						|
	<li><a href="#synopsis">SYNOPSIS</a></li>
 | 
						|
	<li><a href="#description">DESCRIPTION</a></li>
 | 
						|
	<ul>
 | 
						|
 | 
						|
		<li><a href="#creating_a_new_gt__installer_object">Creating a new GT::Installer object</a></li>
 | 
						|
		<li><a href="#add_config__adding_configuration_options_">add_config - Adding configuration options.</a></li>
 | 
						|
		<li><a href="#add_config_message__add_a_configuration_message_">add_config_message - Add a configuration message.</a></li>
 | 
						|
		<li><a href="#install_exit_message__add_an_exit_message_for_installs_">install_exit_message - Add an exit message for installs.</a></li>
 | 
						|
		<li><a href="#install_to__specify_where_to_untar_files_to_">install_to - Specify where to untar files to.</a></li>
 | 
						|
		<li><a href="#use_lib__set_the_use_lib_path_for_addition_to_all__pl_and__cgi_files_">use_lib - Set the use lib path for addition to all .pl and .cgi files.</a></li>
 | 
						|
		<li><a href="#replace_path__generic_method_to_replace_paths_upon_install">replace_path - Generic method to replace paths upon install</a></li>
 | 
						|
		<li><a href="#add_upgrade__adding_upgrade_options_">add_upgrade - Adding upgrade options.</a></li>
 | 
						|
	</ul>
 | 
						|
 | 
						|
	<li><a href="#copyright">COPYRIGHT</a></li>
 | 
						|
	<li><a href="#version">VERSION</a></li>
 | 
						|
</ul>
 | 
						|
<!-- INDEX END -->
 | 
						|
 | 
						|
<hr />
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h1><a name="name">NAME</a></h1>
 | 
						|
<p>GT::Installer - Performs initial installs for GTI products</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<hr />
 | 
						|
<h1><a name="synopsis">SYNOPSIS</a></h1>
 | 
						|
<pre>
 | 
						|
    main();</pre>
 | 
						|
<pre>
 | 
						|
    sub main {
 | 
						|
        my $format = 'scroll1';
 | 
						|
        my $installer = GT::Installer->new(
 | 
						|
            product        => 'Gossamer Mail',
 | 
						|
            version        => '2.0.0 beta 1',
 | 
						|
            load_defaults  => \&load_defaults,
 | 
						|
            load_config    => \&load_config,
 | 
						|
            save_config    => \&save_config,
 | 
						|
            checksums      => "<%Data Path%>/admin/checksums",
 | 
						|
            welcome_format => $format
 | 
						|
        );</pre>
 | 
						|
<pre>
 | 
						|
        $installer->add_config_message(q|
 | 
						|
    This should be the system path and url (start with <a href="http://">http://</a>) 
 | 
						|
    to the directory where your admin files are. No trailing 
 | 
						|
    slash please.|, $format);</pre>
 | 
						|
<pre>
 | 
						|
        $installer->add_config(
 | 
						|
            type     => 'path',
 | 
						|
            key      => "Admin Path",
 | 
						|
            message  => 'Admin Path',
 | 
						|
        );
 | 
						|
    }
 | 
						|
    # Regex to path keys. These regexs have to capture
 | 
						|
    # the file in $1
 | 
						|
        $installer->install_to(
 | 
						|
            '^admin/(.*)$'  => 'Admin Path',
 | 
						|
            '^user/(.*)$'   => 'User Path',
 | 
						|
            '^batch/(.*)$'  => 'Batch Path',
 | 
						|
            '^data/(.*)$'   => 'Data Path',
 | 
						|
            '^images/(.*)$' => 'Images Path',
 | 
						|
        );
 | 
						|
        
 | 
						|
        $installer->add_upgrade(
 | 
						|
            message         => 'Program Files. e.g. .pm, .pl and .cgi files',
 | 
						|
            file_list       => '\.(?:pl|cgi|pm)$'
 | 
						|
        );
 | 
						|
        $installer->add_upgrade(skip => 'ConfigData\.pm$');
 | 
						|
        $installer->perform;
 | 
						|
    }</pre>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<hr />
 | 
						|
<h1><a name="description">DESCRIPTION</a></h1>
 | 
						|
<p>GT::Installer is an installer class for all Gossamer Threads
 | 
						|
products. It will handle both a command line interface and a 
 | 
						|
CGI inteface.</p>
 | 
						|
<p>All intallation directives are specified at the start and are
 | 
						|
called for each CGI request if being ran in CGI mode.</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="creating_a_new_gt__installer_object">Creating a new GT::Installer object</a></h2>
 | 
						|
<p>There are several options when creating a new GT::Installer 
 | 
						|
object. All options are in the form of key value pairs. The
 | 
						|
options can be passed in as a flattened hash or as a hash 
 | 
						|
reference.</p>
 | 
						|
<p>There are two options that must be specified. These are 
 | 
						|
<em>product</em> and <em>version</em>. All other options are optional.</p>
 | 
						|
<p>There are two ways to get a GT::SQL object. First, you can simply
 | 
						|
provide the path to the def file directory where GT::SQL stores all
 | 
						|
it's information:</p>
 | 
						|
<pre>
 | 
						|
    $db = new GT::SQL '/path/to/def';</pre>
 | 
						|
<p>or you can pass in a hash or hash ref and specify options:</p>
 | 
						|
<pre>
 | 
						|
    $db = new GT::SQL {
 | 
						|
                        def_path => '/path/to/def',
 | 
						|
                        cache    => 1,
 | 
						|
                        debug    => 1,
 | 
						|
                        subclass => 1
 | 
						|
                    );</pre>
 | 
						|
<p>You must specify def_path. Setting cache => 1, will result in
 | 
						|
all table or relation objects to be cached which can improve 
 | 
						|
performance.</p>
 | 
						|
<p>Setting subclass => 0 or subclass => 1 will enable or disable
 | 
						|
the ability to subclass any of the objects GT::SQL creates. The
 | 
						|
default behaviour is 1.</p>
 | 
						|
<p>GT::SQL has advanced debugging, and setting it to 1 should be
 | 
						|
adequate for most operations.</p>
 | 
						|
<dl>
 | 
						|
<dt><strong><a name="item_product">product</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
Specifies the name of the product. This name is used in the 
 | 
						|
welcome message and in various parts of the dialogue.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    product => 'Gossamer Mail'</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_version">version</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is the version of the product. It is used on the startup
 | 
						|
screen to tell the user what version we are installing or
 | 
						|
upgrading to.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    version => '2.0.0 beta 1'</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_load_defaults">load_defaults</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is a code reference that is called when installing. It
 | 
						|
is used to defaults for prompts you have set up. The only
 | 
						|
argument to this code reference if the installer object
 | 
						|
which has method to assist in setting up defaults for the
 | 
						|
different configuration options that you would specify.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>If you return false from this code reference the error is
 | 
						|
expected to be in GT::Installer::error. GT::Installer inherets
 | 
						|
from GT::Base so you can just call the <em>error</em> method on the
 | 
						|
object and return it to achieve this.</p>
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    load_defaults => \&load_defaults</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_load_config">load_config</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is another code reference. It is called when the user
 | 
						|
specifies that they are doing an upgrade. The argument to
 | 
						|
this callback is the installer object. The path to the admin
 | 
						|
directory of the last install is a key in the installer object
 | 
						|
<em>admin_path</em>. In this code reference you will need to correlate
 | 
						|
all the config option keys to the values in your config file.
 | 
						|
See the example included in this pod for a possible why to
 | 
						|
do this.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    load_config => \&load_config</pre>
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>If you return false from this code reference the error is
 | 
						|
expected to be in GT::Installer::error. GT::Installer inherets
 | 
						|
from GT::Base so you can just call the <em>error</em> method on the
 | 
						|
object and return it to achieve this.</p>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_save_config">save_config</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is a code reference that is called after an install or 
 | 
						|
upgrade. It gives you the opertunity to save any user input into
 | 
						|
there new/old config file.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    save_config => \&save_config</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_checksums">checksums</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This should be set to the full system path to the checksum file.
 | 
						|
If this is not set checksums will not be used, which makes
 | 
						|
the upgrade questions usless and all files will be overridden.
 | 
						|
There is no possible way you can know the full path to this file
 | 
						|
at the point you set it. You can specify tags in this path
 | 
						|
that will get replaced with what the user entered. The tags
 | 
						|
are similar to <a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template.html">the GT::Template manpage</a> tags in that they start with 
 | 
						|
<em>&lt;%</em> and end with <em>%&gt;</em>. No other <a href="glist.cgi?do=admin_gtdoc&topic=/GT/Template.html">the GT::Template manpage</a> tags conventions
 | 
						|
are used.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    checksums => "<%Data Path%>/admin/checksums"</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_welcome_format">welcome_format</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is the welcome format. There are named formats that are 
 | 
						|
used in GT::Installer for most command line output. This
 | 
						|
is the one that is used for the initial message. This is not
 | 
						|
used in CGI mode.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>There are currently 4 formats (more to come :)). There are:</p>
 | 
						|
</dd>
 | 
						|
<dl>
 | 
						|
<dt><strong><a name="item_scroll1">scroll1</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
     _________________________________________________________________
 | 
						|
    /\                                                                \
 | 
						|
    \_|                                                                |
 | 
						|
      |                                                                |
 | 
						|
      | This is the scroll1 format                                     |
 | 
						|
      |  ______________________________________________________________|_
 | 
						|
      \_/_______________________________________________________________/</pre>
 | 
						|
</dd>
 | 
						|
<dt><strong><a name="item_scroll2">scroll2</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
     __^__                                                                __^__
 | 
						|
    ( ___ )--------------------------------------------------------------( ___ )
 | 
						|
     | / |                                                                | \ |
 | 
						|
     | / | This is the scroll2 format                                     | \ |
 | 
						|
     |___|                                                                |___|
 | 
						|
    (_____)--------------------------------------------------------------(_____)</pre>
 | 
						|
</dd>
 | 
						|
<dt><strong><a name="item_professional">professional</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
     #================================================================#
 | 
						|
     =                                                                =
 | 
						|
     =  This is the professional format                               =
 | 
						|
     #================================================================#</pre>
 | 
						|
</dd>
 | 
						|
<dt><strong><a name="item_none">none</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This format just performs line wraps. Has no outline :(
 | 
						|
</dd>
 | 
						|
<p></p></dl>
 | 
						|
</dl>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="add_config__adding_configuration_options_">add_config - Adding configuration options.</a></h2>
 | 
						|
<p>There are 3 methods for adding user prompts. When I say user promts I 
 | 
						|
mean that in the telnet sence, in CGI mode it is just a table row.</p>
 | 
						|
<p>This is the method you will be calling for every install option the
 | 
						|
user should specify. This method takes it's arguments as key value
 | 
						|
pair. The arguments can either be in the form of a flatened hash or
 | 
						|
a hash reference.</p>
 | 
						|
<pre>
 | 
						|
    $installer->add_config(
 | 
						|
        type            => 'url',
 | 
						|
        key             => "Admin URL",
 | 
						|
        message         => 'Admin URL',
 | 
						|
        telnet_callback => \&telnet_callback,
 | 
						|
    );</pre>
 | 
						|
<p>Each key in the hash defines an attribute of the user prompt.</p>
 | 
						|
<dl>
 | 
						|
<dt><strong><a name="item_type">type</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
The type attribute should be one of the built in input types. There is
 | 
						|
currently no way to specify your own type. If this becomes a problem
 | 
						|
it will be added. The built in types are as follows.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<pre>
 | 
						|
    url           - User specifies a URL.
 | 
						|
    ftp           - User specifies an FTP URL.
 | 
						|
    path          - User specifies a Path to something on the system.
 | 
						|
    message       - This is the same as calling the add_config_message 
 | 
						|
                    method.
 | 
						|
    create_dirs   - This is a yes/no answer on weather the user wants the
 | 
						|
                    directories for this install created.
 | 
						|
    email         - User specifies and email address. This is commonly 
 | 
						|
                    used to prompt for the admin email address.
 | 
						|
    reg_number    - User specifies the registration number they recieved
 | 
						|
                    from us when they paid for the product.
 | 
						|
    email_support - Specify either the path to sendmail or the hostname
 | 
						|
                    of an smtp server. What is specified with be in the 
 | 
						|
                    config hash as email_support. The key default for
 | 
						|
                    this option is Mailer.
 | 
						|
    perl_path     - Specify the path to perl on this system.</pre>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_key">key</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
Each item the user enters is stored in a hash in the installer object.
 | 
						|
This hash is called <em>config</em>. This specifies the key used in that hash
 | 
						|
to store this user option.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>This key is also used at the end of the telnet install to display
 | 
						|
the options the user has specified for the install.</p>
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>You will be accessing these keys in your configuration callbacks to
 | 
						|
either set defaults or save the user specified options in your config 
 | 
						|
file. See the complete example below to see how this is used.</p>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_message">message</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is the message the user is pompted with in telnet. From the with
 | 
						|
this appears on the left of the form the user fills out.
 | 
						|
</dd>
 | 
						|
<dd>
 | 
						|
<p>This will default to the value of the <em>key</em> if not specified</p>
 | 
						|
</dd>
 | 
						|
<p></p>
 | 
						|
<dt><strong><a name="item_telnet_callback">telnet_callback</a></strong><br />
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
This is a code reference that, if specified, will be ran after the user
 | 
						|
enteres the information. You can use this to tweek the other option
 | 
						|
defaults. If this method returns false the user will be reprompted for
 | 
						|
the information. So you can effectivly use this to validate command
 | 
						|
line input.
 | 
						|
</dd>
 | 
						|
<p></p></dl>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="add_config_message__add_a_configuration_message_">add_config_message - Add a configuration message.</a></h2>
 | 
						|
<p>This is a method to add a configuration message. This message is 
 | 
						|
displayed to the user in telnet in the order you specify it. No prompt
 | 
						|
is performed for these messages.</p>
 | 
						|
<p>This is a shortcut function that is the same as specifing:</p>
 | 
						|
<pre>
 | 
						|
    $installer->add_config(
 | 
						|
        type    => 'message',
 | 
						|
        message => 'This message is displayed to the user',
 | 
						|
        format  => 'none'
 | 
						|
    );</pre>
 | 
						|
<p>The arguments to this function are (message, format). Message is what 
 | 
						|
is displayed, format is the format used. See above for a list of 
 | 
						|
formats.</p>
 | 
						|
<pre>
 | 
						|
    $installer->add_config_message(q|My configuration message.|, 'professional');</pre>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="install_exit_message__add_an_exit_message_for_installs_">install_exit_message - Add an exit message for installs.</a></h2>
 | 
						|
<p>This is the message that is displayed after the installation is 
 | 
						|
complete. This message uses the same convention for tags as the
 | 
						|
<em>checksum</em> option for the constructor method. Any keys that are set 
 | 
						|
during the install will be available as tags here. The second argument
 | 
						|
to this method is an optional format (used in telnet see above).</p>
 | 
						|
<pre>
 | 
						|
    $installer->install_exit_message(q|
 | 
						|
    To run the setup, point your browser to: 
 | 
						|
    <a href="<%Admin URL%>/admin.cgi"><%Admin URL%>/admin.cgi</a>
 | 
						|
    |, 'scroll2');</pre>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="install_to__specify_where_to_untar_files_to_">install_to - Specify where to untar files to.</a></h2>
 | 
						|
<p>The way this options is specified is a bit strange and my be rewritten.
 | 
						|
It takes it arguments as a hash of regular expressions to keys. The
 | 
						|
keys are the keys you specified with add_config(). The regexs are matched
 | 
						|
against the relative path in the tar file. Anything captured in $1 is
 | 
						|
appended to the value the user entered for that regexs key. For example
 | 
						|
is you specify a key <em>Admin Path</em> such as</p>
 | 
						|
<pre>
 | 
						|
    $installer->add_config(
 | 
						|
        type  => 'path',
 | 
						|
        key   => 'Admin Path'
 | 
						|
    );</pre>
 | 
						|
<p>You could then use the key like:</p>
 | 
						|
<pre>
 | 
						|
    $installer->install_to(
 | 
						|
        '^admin/(.*)' => 'Admin Path'
 | 
						|
    );</pre>
 | 
						|
<p>This would replace admin/ in the relative path in the tar file with what
 | 
						|
the user entered for the Admin Path prompt.</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="use_lib__set_the_use_lib_path_for_addition_to_all__pl_and__cgi_files_">use_lib - Set the use lib path for addition to all .pl and .cgi files.</a></h2>
 | 
						|
<p>The argument to this should be a <em>key</em> specified with add_config(). The
 | 
						|
path the user entered for that config is added to all .cgi and .pl files
 | 
						|
in a <em>use lib ''</em> statement. Followig the example above:</p>
 | 
						|
<pre>
 | 
						|
    $installer->use_lib('Admin Path');</pre>
 | 
						|
<p>All .cgi and .pl file in the install will now have</p>
 | 
						|
<pre>
 | 
						|
    use lib '/home/bline/projects/library';</pre>
 | 
						|
<p>added to them assuming the path the user entered for that config option was
 | 
						|
<em>/home/bline/projects/library'</em>.</p>
 | 
						|
<p>You can set $GT::Installer::USE_LIB_SPACES to something other than the default
 | 
						|
4 spaces to alter the number of spaces that will be put before the ``use lib''.
 | 
						|
Please be careful - if you set this to something other than whitespace you are
 | 
						|
asking for trouble or being an 1337 h4xx0r.</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="replace_path__generic_method_to_replace_paths_upon_install">replace_path - Generic method to replace paths upon install</a></h2>
 | 
						|
<p>The argument should be a hash of key => value replacements that should be 
 | 
						|
made upon installation.</p>
 | 
						|
<pre>
 | 
						|
    $installer->replace_path(
 | 
						|
        '../private/ConfigData.pm' => '<%Private_Path%>/ConfigData.pm'
 | 
						|
    );</pre>
 | 
						|
<p>This will replace all occurrences of ../private/ConfigData.pm with what the
 | 
						|
user entered in <%Private_Path%>.</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<h2><a name="add_upgrade__adding_upgrade_options_">add_upgrade - Adding upgrade options.</a></h2>
 | 
						|
<p>This is a method for grouping files and or directories under user prompted
 | 
						|
upgrade options. This is <em>NOT</em> designed to be a complete upgrade system. It
 | 
						|
handled basic checksuming, overwrites and backup. This should probably not 
 | 
						|
be used for a major upgrade.</p>
 | 
						|
<p>more to come...</p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<hr />
 | 
						|
<h1><a name="copyright">COPYRIGHT</a></h1>
 | 
						|
<p>Copyright (c) 2004 Gossamer Threads Inc.  All Rights Reserved.
 | 
						|
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
 | 
						|
<p>
 | 
						|
</p>
 | 
						|
<hr />
 | 
						|
<h1><a name="version">VERSION</a></h1>
 | 
						|
<p>Revision: $Id: Installer.pm,v 1.93 2005/03/27 20:52:53 jagerman Exp $</p>
 | 
						|
 | 
						|
</body>
 | 
						|
 | 
						|
</html>
 |