Translation Toolkit (26/12/2009) |
Readme/What's new |
Maul Publisher Installer Manual
===============================
Installation Commandline
========================
When performing an automatic install, the language determines which files are
installed.
For automatic subsystem installations the entire set of available subsystems
are installed.
When automatically uninstalling the entire set of files are uninstalled.
The following commandline parameters are available:-
====================================================
/? or /h Get a short form of this help file in a dialog.
/n No Holdup mode ensures that the installer does not pause.
Default = Stop with messages
/t<path> Define target path. The path must exist or the installer will
fail.
The target filename cannot contain spaces.
Default = /tc:\maul
/l<language> Define language. The following installer files must exist
<language>.insr
<language>.insl
<language>.ipk
packing.lst
various *.lpk, *.pkl, and *.pk files.
Default = /lenglish
The installer will halt and ask for a language if none is
specified and more than one language is available.
/x (use with /a) The installer checks for updates and exits if
there is nothing to do.
/x<handle> (use with /a) Maul can call the installer with a window handle
in order to force a quit.
Select just one of the following for an automated install
/i Install files
/u Uninstall files
/s Subsystem install
/a Network update (do not use with /n)
Default = Wait for a button click
Installer script syntax descriptions
====================================
Make sure that the uninstall entries appear in the reverse order to the
install entries. This ensures that the folders are deleted in reverse order!
Installation sequence
=====================
Installation is done in three runs.
1:files
2:desktop objects
3:config.sys
Uninstallation is preformed in the reverse order.
1:desktop objects
2:config.sys
3:files
This ensures that links to objects and configuration items are undone in
reverse order. The <uinst> section of the install script should follow this
same reverse order philosophy.
Fixpack dates
=============
Fixpacks are named according to a predetermined format. This format is used to
ensure that subversion numbers are generated to prevent old fixpacks being
installed over newer ones.
month, day, year, fix, version
month, hex from 1 to c
day, from 0 to 31
year, n chars, from 2000 upwards, default = 2005 if the year is missing
So 29th October 2006 and V3.08 = a296fix308
Understanding install script parameters
=======================================
Quotes
------
All parameters can be in quotes. This can help to distinguish items that would
otherwise be seen as being two items. In effect, [mainpath] and "[mainpath]"
means the same thing. but hello, there is seen as two parameters, while
"hello, there" is seen as just one.
valid path names
----------------
[mainpath]
[dllpath]
[etcpath]
[dictpath]
...after you set the language these will be different
[nlspath]
[nlshelp] or [nlshlp] or [helppath]
[nlsdocs]
[nlsinfo] or [nlsinf]
Package names for <inst>
------------------------
An installation will often consist of several packages. These packages are
package files created with pack2.exe, which is part of the OS/2 developers
toolkit.
These packages are usually copied to the destination install folder. In it's
simplest form, the package name may just be the filename of the packed data.
Such as "mydata.pk". More complex forms allows several packages to be
enumerated with a ; between each. This is of the form
"data1.pk;data2.pk;data3.pk".
Last, you may face the situation where no packed files are provided at all. In
that case, you can use the term "!none", to indicate that there is nothing to
be copied.
Names
-----
Names are used to create program icons on the desktop. Such program icons can
also be shadow objects, helpfiles, or weblinks. Because such names may have to
contain a newline character, escape sequences are allowed. The escape sequence
for a newline is '\n'. If you need the backslash, you must use '\\'.
Logstrings and status strings
-----------------------------
In essence, the logsting is used to describe the item being processed. The
logstring should always be in english. This is because the logstring is used
to write to a logfile, which ends up describing the install process. If there
is a problem, I, the developer, need to understand the logfile.
The status string is what the user sees in the install window, and should be
in the end users own language. It should be sufficiently detailed to describe
properly what is happening.
General
=======
<info>info;
-----------
Provides information about the installation performed by this file. The info
is listed as a comment in the install listbox. Only one <info> entry is read,
and it should be at the top of the install files.
Install and subsystem install
=============================
<inst>packname, logstring, statusstring, packlist;
--------------------------------------------------
Describes the packages to be installed. This entry calculates the size of the
installation items by reading information from the packlist. The entry is used
to add an install item to the install listbox. All entries between this <inst>
and the next are treated as a single set of install operations to perform. The
only optional item for this entry is packlist. If it is missing, no filesize
calculations are performed.
The packlist is not used when installing subsystems, however subsystem files
become part of the main installation once the have been copied to the install
destination. The packlist parameter can be set to "!none".
The packname is made up of a list of packages to copy to the install
destination. You can use "!none" if no packages are to be copied.
examples:-
<inst>"execute.pk", "executables", "Main executables", packing.lst;
<inst>"english.lpk;english_HLP.lpk", "Langpack", "English language pack", "english.pkl";
<inst>"a296fix308.pk;a296fix308.pki;a296fix308.pkm", "a296fix308", "Fix installer and wingstamp";
<version>minversion, newversion;
--------------------------------
minversion is ignored when the install control file is not from a fixpack.
minversion can be set to 0 if not used. The version is set to newversion. When
installing a fixpack, the current version must be >= minversion. Once
installed, the fixpack cannot be installed again, the versions no longer
match. Fixpacks also track subversions so that fixpack are not installed twice
where the main version does not change.
examples:-
<version>0, 314;
<version>313, 314;
<lang>language;
---------------
This is used to alter the predetermined national language support folder
paths.
The nls folder is defined as [nlspath], and it's value is
"[mainpath]/language.NLS". If the mainpath is set to "c:\maul" at the start of
the installation, and you set <lang> to "ENGLISH", the nls support folders
will resolve to:-
[nlspath] = "c:\maul\ENGLISH.NLS"
[nlshelp] = "c:\maul\ENGLISH.NLS\HELP"
[nlsdocs] = "c:\maul\ENGLISH.NLS\DOCS"
[nlsinfo] = "c:\maul\ENGLISH.NLS\INF"
You can change these paths at any point after an <inst> entry. The value
remains constant for all subsequent <inst> entries unless you change it.
examples:-
<lang>"english";
<foldobj>parentid, foldid, name, statusstring;
----------------------------------------------
Creates a desktop folder object named 'name'. The parent id should be set to
WP_DESKTOP for the topmost folder you create on the desktop. The function adds
<> around the id's given, as this is required by WinCreateObject().
The name can contain a \n escape sequence to create a multiple line name for
the object.
examples:-
<foldobj>"WP_DESKTOP", "MAULFOLD", "Desktop Publisher", "Main Desktop Folder";
<foldobj>"MAULFOLD", "MAULDOCSEN", "Documents", "Documents Folder";
<foldobj>"MAULFOLD", "MAULINFOEN", "Manuals", "Manuals Folder";
<urlobj>parentid, id, name, statusstring, url;
----------------------------------------------
Creates a desktop object named 'name', of type WPUrl. These are weblinks to
allow the end user to click on an icon to access a web page.
The name can contain a \n escape sequence to create a multiple line name for
the object.
examples:-
<urlobj>"MAULFOLD", "MAULABOUT", "About Maul\nPublisher", "About maul publisher weblink", "http://www.manglais.com/subs/php/product.php?MAULE300";
<infobj>file, path, name, statusstring, parentid;
-------------------------------------------------
Creates a help manual desktop object named 'name'.
The parentid is optional and defaults to 'MAULINFO'. Because of national
language considerations, the default is best avoided!
The name can contain a \n escape sequence to create a multiple line name for
the object.
examples:-
<infobj>"maul.inf", [nlsinfo], "Using\nMaul Publisher", "Maul Publisher info", "MAULINFOEN";
<dskobj>file, path, name, statusstring, type, parentid;
-------------------------------------------------------
Creates an application desktop object named 'name', of type 'type'. The type
is optional and defaults to 'PM'. Use 'WINDOWABLEVIO' or 'FULLSCREEN' for OS/2
command line objects. See the "Workplace Shell Reference" -> Workplace Object
Classes -> WPProgram for wpSetup override strings.
The parentid is optional and defaults to 'MAULFOLD'.
The name can contain a \n escape sequence to create a multiple line name for
the object.
examples:-
<dskobj>"maul.exe", [mainpath], "Maul Publisher", "Main Program";
<dskobj>"install.cmd", "[mainpath]install", "Install/\nUninstall", "Installer", "PM", "MAULINST";
<docobj>file, path, name, statusstring, appname, parentid;
----------------------------------------------------------
Creates a document desktop object with the application 'appname'.
The parentid is optional and defaults to 'MAULFOLD'.
The appname is optional and defaults to 'VIEW.EXE'. If it's just a plain text
object, you might be better off using 'E.EXE', for example.
The name can contain a \n escape sequence to create a multiple line name for
the object.
examples:-
<docobj>"readme.english", "[mainpath]install", "readme", "readme", "E.EXE", "MAULDOCSEN";
<docobj>"CPYRIGHT", [nlsdocs], "Copyright", "Copyright information", "E.EXE", "MAULFOLD";
<shadow>parentid, id, path, statusstring;
-----------------------------------------
Creates a desktop shadow object in the <parentid> folder.
Note that the file or folder described in "path" must exist!
examples:-
<shadow>"MAULFOLD", "MAULERROR", "[mainpath]error.log", "Error log";
<shadow>"MAULFOLD", "MAULTOOLS", "[mainpath]tools", "Tools Folder";
<file>name, destination, logstring, statusstring;
------------------------------------------------
Copy a file, usually an installer file!
examples:-
<file>"install.exe", "[mainpath]install", "INSTALLER", "Copy installer";
<file>"english.ipk", "[mainpath]install", "INST_IPK", "Copy installer library";
<arch>packname, destination, logstring, statusstring;
-----------------------------------------------------
Installs an entire packed archive into a given destination.
examples:-
<arch>"a296fix308.pkm", "[mainpath]", "MAINPACK", "Unpacking maul.exe";
<arch>"a296fix308.pki", "[mainpath]install", "INSTPACK", "Unpacking fixed Installer";
<part>packname, destination, logstring, statusstring, file;
Installs just one file out of a packed archive into the destination. The file
must be found in the archive.
examples:-
<part>"execute.pk", [mainpath], "EXEFILE", "Unpacking executable file", "MAUL.EXE";
<addcf>setstring, path, file;
-----------------------------
Adds a new entry to the config file like:- "SET setstring=path\file;"
There is no method of removing this again during uninstall. If the "SET" entry
exists, it is REMed out, and a new entry is added to replace it. Maul does not
require the use of this command.
examples:-
<addcf>"mymaul", "[mainpath]", "MAUL.EXE";
(config.sys will have the entry "SET mymaul=c:\maul\MAUL.EXE" added)
<pathcf>setstring, path;
------------------------
Adds a path to a given set string. This can be used to set the helppath or
path in config.sys. i.e. <pathcf>path, [etcpath]; adds [etcpath] to
"SET PATH=..."
examples:-
<pathcf>help, [nlshelp];
<pathcf>path, [etcpath];
<run>"install script", "path input into script";
------------------------------------------------
Runs an OS/2 command line script, rexx, or executable using a system() call.
The path is added as the last input into the script, and it is up to the
script to perform it's task in the correct place.
examples:-
<run>"mkartdir.cmd", "[etcpath]";
<run>"fileswap.exe install.exe instnew.exe /v /d /r", "[mainpath]install";
//cleans out old packages
<clean>childpathspec, path, logstring, statusstring;
----------------------------------------------------
Deletes files according to the filespec. "childpathspec" is appended onto
"path", in such a way that in the example below, the files that are deleted
are "c:\maul\install\*fix302.*"
examples:-
<clean>"install\*fix302.*", [mainpath], "old fixpacks", "Remove old fixpacks"
<self>newfile, runflag, runparms;
---------------------------------
Causes the installer to replace itself with the new file, and if "runflag"
resolves to 1, runs the new file with the "runparms". This had better be the
last install entry in a script, because the installer must exit immediately
after this call. The runpath is presumed to be "[mainpath]/install".
examples:-
<self>"instnew.exe", "1", "/f";
<loader>dllname;
----------------
Adds a dll name to the end of MAUL_DLL.LST. This file is part of the base
installation and is found in "[mainpath]/bin".
examples:-
<loader>"txthand.dll";
Uninstall
=========
<uinst>packname, logstring, statusstring;
-----------------------------------------
Describes the packages to be uninstalled. The entry is used to add an
uninstall item to the uninstall listbox. All entries between this <uinst> and
the next are treated as a single set of uninstall operations to perform.
Only the log string is actually used to write to the logfile.
You can copy <inst> entries to <uinst> entries, but you will need to do so in
the reverse order.
<lang>language;
---------------
This is used to alter the predetermined national language support folder
paths.
The nls folder is defined as [nlspath], and it's value is
"[mainpath]/language.NLS". If the mainpath is set to "c:\maul" at the start of
the uninstallation, and you set <lang> to "ENGLISH", the nls support folders
will resolve to:-
[nlspath] = "c:\maul\ENGLISH.NLS"
[nlshelp] = "c:\maul\ENGLISH.NLS\HELP"
[nlsdocs] = "c:\maul\ENGLISH.NLS\DOCS"
[nlsinfo] = "c:\maul\ENGLISH.NLS\INF"
You can change these paths at any point after a <uinst> entry. The value
remains constant for all subsequent <uinst> entries unless you change it.
examples:-
<lang>"english";
<uask>file, path, question;
---------------------------
Checks that 'file' exists before asking "Confirm delete of 'question' in 'path'"
and skips the file if the response is negative. If positive, the file is deleted.
examples:-
<uask>"maul.exe", "[mainpath]", "Maul Publisher";
<pathcf>setstring, path;
------------------------
Removes a path from a given set string. This can be used to unset the helppath
or path in config.sys. i.e. <pathcf>path, [etcpath]; removes [etcpath] from
"SET PATH=..."
examples:-
<pathcf>help, [nlshelp];
<pathcf>path, [etcpath];
<arch>packname, destination, logstring, statusstring;
-----------------------------------------------------
Removes all files (*.*) from "destination" folder, and then tries to remove
the "destination" folder. It doesn't really matter what parameters you put in
packname, logstring, or statusstring, they are all ignored!
examples:-
<arch>"execute.pk", [mainpath], "EXEPACK", "Deleting executable";
<arch>"libs.pk", [dllpath], "LIBPACK", "Deleting libraries";
<part>packname, destination, logstring, statusstring, file;
-----------------------------------------------------------
Deletes "file" from "destination". All parameters need to be present, only
"file" and "destination" are actually used.
examples:-
<part>"execute.pk", [mainpath], "EXEFILE", "Scrapping executable file", "MAUL.EXE";
<multi>childpathspec, path, logstring, statusstring;
----------------------------------------------------
Deletes all folders and their contents that meet the "childpathspec" in the
"path". Used to remove clipart catalogues and the files that they contain.
examples:-
<multi>"*.cat", [etcpath], "ARTPACK", "Deleting example frames";
<self>path;
-----------
Deletes all files in "path", then deletes the path. If the installer is
running in a path under the [mainpath], the call will give a warning, and do
nothing.
In other words, the installer won't remove "c:\maul\install" unless it is run
from somewhere else, which implies that a set of install packages always
remain on the system.
examples:-
<self>"[mainpath]install";
<file>path, file;
-----------------
Deletes "file" from "path". See <part>, which does exactly the same thing.
examples:-
<file>[mainpath], "CPYRIGHT";
<urun>"uninstall script", "path input into script";
<run>"uninstall script", "path input into script";
-------------------------
Runs an OS/2 command line script, rexx, or executable using a system() call.
The path is added as the last input into the script, and it is up to the
script to perform it's task in the correct place.
For uninstalling, <run, and <urun> are identically treated.
<foldobj>parentid, foldid, name, statusstring;
----------------------------------------------
Removes any old desktop objects. Only "foldid" and statusstring are used, and
"foldid" should be the same identifier that you used for creating the desktop
object. Remember that this call will delete all child objects too, so the only
call you really need is to remove the top folder in the tree.
examples:-
<foldobj>"WP_DESKTOP", "MAULFOLD", "Desktop Publisher", "Deleting Main Desktop Folder and all it contains"; |
Add new comment