home *** CD-ROM | disk | FTP | other *** search
/ The Best of Select: Games Special 10 / SPSP10.ISO / xtra / rar155 / sfx.doc < prev    next >
Text File  |  1995-08-19  |  23KB  |  629 lines

  1.  
  2.  ██████╗   █████╗  ██████╗      RAR version 1.55
  3.  ██╔══██╗ ██╔══██╗ ██╔══██╗     ~~~~~~~~~~~~~~~~
  4.  ██████╔╝ ███████║ ██████╔╝     Multifunctional Integrated Archive Manager
  5.  ██╔══██╗ ██╔══██║ ██╔══██╗     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  6.  ██║  ██║ ██║  ██║ ██║  ██║     The Installation SFX for DOS User's Manual
  7.  ╚═╝  ╚═╝ ╚═╝  ╚═╝ ╚═╝  ╚═╝     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  8.  
  9.  
  10.    1. SFX functionality overview.
  11.  
  12.    The SFX (SelF-eXtracting module) is the archive module used to extract
  13.    files when executed. It is in the form of a normal executable file.
  14.  
  15.    The RAR Archiver offers SFX-functionality which is significantly
  16.    enhanced over common SFX, as well as the possibility to create an SFX
  17.    archive, with an alternate SFX module from an external file.
  18.  
  19.    The alternate SFX module can be created by using the switch
  20.    '-sfx[<sfxfile>]' or the command 's[<sfxfile>]' when, in the optional
  21.    parameter <sfxfile>, you indicate the required SFX executable module.
  22.  
  23.    Several RAR SFX executable modules are currently available:
  24.       - the common SFX for DOS (default in the DOS version, file dos.sfx);
  25.       - the Installation SFX for DOS (file idos.sfx);
  26.       - the common SFX for OS/2 (default in the OS/2 version, file os2.sfx).
  27.  
  28.    In fact you may add your own RAR SFX executable module using unRAR
  29.    sources (e.g. for your particular OS or special needs).
  30.  
  31.  
  32.    2. The Installation SFX.
  33.  
  34.    As an alternative to the default SFX you may build an Installation
  35.    SFX which uses a powerful script language, providing original features:
  36.  
  37.      - fully configurable, friendly, menu-driven interface;
  38.      - check for free disk space before installation;
  39.      - request destination path to which to install files;
  40.      - installation status - file extraction progress bar,
  41.        completed percentage and other features.
  42.  
  43.    The Installation Script is a plain ASCII text file, which may be prepared
  44.    using your favourite text editor.  The script is placed in the SFX 
  45.    archive comment to be processed by the Installation SFX module when it 
  46.    is executed.  For example, you may use the following command line to
  47.    create such an SFX archive: 
  48.  
  49.      rar a -sfxidos.sfx -zmyinst.s minstall
  50.  
  51.    Where 'idos.sfx' is the pathname of Installation SFX module and the file
  52.    myinst.s is the text file containing your installation script.
  53.  
  54.    The Installation SFX contains build-in interpreter of the Script
  55.    Language.
  56.  
  57.  
  58.    2.1 Installation Script Language
  59.  
  60.    As a program language the script contains the following objects:
  61.  
  62.      Command    statement initiating an action;
  63.  
  64.      Procedure  commands defined apparently to be called from the main
  65.                 script code;
  66.  
  67.      Function   built-in procedure which returns a value;
  68.  
  69.      Constant   character string or a numeric value (4 bytes length);
  70.  
  71.      Variable   name defining a storage place for a value.
  72.  
  73.    Variables may be assigned a numeric value or a character string.
  74.    All variables are global, meaning once defined the variable is the
  75.    same within the main code and all procedures.
  76.  
  77.    Variable and procedure names are case-sensitive.
  78.    Command statements are case-insensitive.
  79.  
  80.    Command and built-in procedures may be called with parameters -
  81.    constants and variables.  Expressions may not be used as parameters.
  82.  
  83.  
  84.    2.1.1. Control commands
  85.  
  86.    CALL        Initiate a procedure call:
  87.  
  88.                CALL <ProcName>
  89.  
  90.                <ProcName> is the procedure name (defined with PROC).
  91.  
  92.  
  93.    DELAY       Suspend script execution:
  94.  
  95.                DELAY [<ms>]
  96.  
  97.                <ms> is the delay interval (milliseconds).  If the interval
  98.                is ommited, an infinite interval will be set.  Execution
  99.                continues following a key press or mouse click.
  100.  
  101.  
  102.    EXCLUDE     Define the list of files NOT to be extracted from the archive
  103.                while installing:
  104.  
  105.                EXCLUDE [ <File1> [, <File2>..] ]
  106.  
  107.                <File1>, <File2>.. are variables or character strings
  108.                containing the names of files to be excluded.  Wildcards are
  109.                permitted.
  110.  
  111.                The initial value of this file list is "", meaning "no files
  112.                to exclude".  EXCLUDE without any parameters would restore the
  113.                initial value of the file list.
  114.  
  115.  
  116.    EXIT        Terminate the Installation SFX:
  117.  
  118.                EXIT <Code>
  119.  
  120.                SFX exits with errorlevel = <Code>.
  121.  
  122.  
  123.    GOTO        Transfer control to a string in the script, identified
  124.                by a label:
  125.  
  126.                GOTO <Label>
  127.  
  128.                <Label> is the name in the script followed by a colon ':'
  129.                character.  For example:
  130.  
  131.                GOTO Menu
  132.                ...
  133.                Menu:
  134.  
  135.  
  136.    IF          Conditionally execute commands:
  137.  
  138.                IF <Var> <?> <Value>
  139.                      <commands>
  140.                      ...
  141.                ENDIF
  142.  
  143.                Control flow statement that defines conditional execution of
  144.                the statements within the block IF...ENDIF structure.  <Var>
  145.                is a variable to be compared with the <Value> using a single
  146.                comparison operator, if the result of the comparison is TRUE
  147.                then the statements within the IF...ENDIF are executed.
  148.  
  149.                Comparison operators are:-
  150.  
  151.                '=='  ..  EQUAL TO
  152.                '!='  ..  NOT EQUAL TO
  153.                '>'   ..  GREATER THAN
  154.                '>='  ..  GREATER THAN OR EQUAL TO
  155.                '<'   ..  LESS THAN
  156.                '<='  ..  LESS THAN OR EQUAL TO
  157.  
  158.                <Value> is a constant or variable.
  159.                Character values may be compared using only the '==' or '!='
  160.                comparison operations.
  161.  
  162.  
  163.    INCLUDE     Define the list of files to be extracted from the archive
  164.                while installing:
  165.  
  166.                INCLUDE [ <File1> [, <File2>..] ]
  167.  
  168.                <File1>, <File2>.. are variables or character strings
  169.                containing the names of files to be extracted. Wildcards 
  170.                permitted.
  171.  
  172.                The initial value of this file list is "*.*" meaning
  173.                "all files in the archive".  The first INCLUDE defined will
  174.                replace the default value with the specified value.  All 
  175.                further INCLUDE's will add file names to the list without 
  176.                removing previous values.
  177.                To clear all the file names in the INCLUDE list, give the 
  178.                INCLUDE statement without parameters.
  179.  
  180.  
  181.    INSTALL     Begin installation.  If no INSTALL statement is given,
  182.                installation will begin when the end of main script code
  183.                is reached.
  184.  
  185.  
  186.    OVERWRITE   Set overwrite mode when extracting archived files:
  187.  
  188.                OVERWRITE { ON | OFF | FRESH | UPDATE }
  189.  
  190.                ON      always overwrite existing files
  191.                OFF     never overwrite existing files
  192.                FRESH   only overwrite files which exist in the destination
  193.                        directory and are newer in the archive
  194.                UPDATE  As for FRESH but also extract files which do not 
  195.                        exist in the destination directory
  196.  
  197.  
  198.    PROC        Define a procedure:
  199.  
  200.                PROC <ProcName>
  201.                     <commands here>
  202.                     ...
  203.                ENDP
  204.  
  205.                <ProcName> is the procedure name.  May be called with the
  206.                CALL statement - commands between PROC and ENDP would be
  207.                processed.
  208.  
  209.  
  210.    SOUND       Produce sounds on the PC speaker:
  211.  
  212.                SOUND <F1>, <D1> [, <F2>, <D2>...]
  213.  
  214.                <F1> is frequency and <D1> - duration in milliseconds of
  215.                produced beep. You may produce as many notes as required
  216.  
  217.  
  218.    SYSTEM      Issue an OS command:
  219.  
  220.                SYSTEM <Arg1> [, <Arg2>..]
  221.  
  222.                The command line merged from parameters <Arg1>, <Arg2>...
  223.                is executed.
  224.  
  225.    ;           The script strings starting with a seimicolon ';' character
  226.                are comments and are ignored when processing.
  227.  
  228.    =           To set a variable value, the following command may be used:
  229.  
  230.                <Var>=<Expression>
  231.  
  232.                <Var> is the variable name and <Expression> may be a
  233.                constant, numeric expression or a function call.
  234.  
  235.                Numeric expression is the combination of the pattern "A # B".
  236.                Where A and B could be numeric constants and/or variables,
  237.                '#' is one of the mathematical operators: '+', '-', '*',
  238.                '/', '%'.
  239.  
  240.  
  241.    2.1.2. Screen commands
  242.  
  243.    All output is directed to the current text window (see the WINDOW command
  244.    description).
  245.  
  246.    Foreground and background colors in all related commands are
  247.    designated with keywords defining the corresponding color:
  248.  
  249.    BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY,
  250.    LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE.
  251.  
  252.    Alternatively you may use the numeric attribute value from 0 to 15 as a
  253.    color code.
  254.  
  255.    If a command does not have a foreground/background pair as a parameter,
  256.    the current color is used for output (see the SETCOLOR command).
  257.  
  258.  
  259.    BOX         Draw a box:
  260.  
  261.                BOX <X1>, <Y1>, <X2>, <Y2>, <Col>, <Bck>, SINGLE | DOUBLE
  262.  
  263.                <X1>, <Y1> - the left and top point of the box;
  264.                <X2>, <Y2> - the right and bottom point;
  265.                <Col>, <Bck> - the foreground and background colors;
  266.                SINGLE or DOUBLE - Border type, one or two lines.
  267.  
  268.  
  269.    CLRSCR      Clear the current window (with an optional symbol):
  270.  
  271.                CLRSCR [ <Symbol> ]
  272.  
  273.                The current color is used for clearing.  Optionally a 
  274.                symbol may be given which will be used to fill
  275.                the window.  The symbol should be defined with a 
  276.                character value (in quotation marks - "") or a
  277.                numeric code.
  278.  
  279.  
  280.    CTEXT       Write text centered on the current line:
  281.  
  282.                CTEXT <P1> [, <P2>..]
  283.  
  284.                <P1>, <P2>.. are variables or character constants.
  285.  
  286.  
  287.    GOTOXY      Position the cursor in the current window:
  288.  
  289.                GOTOXY <X>, <Y>
  290.  
  291.                <X>, <Y> - the point to which the cursor should be 
  292.                positioned.
  293.  
  294.    DEFBAR      Define the file progress bar:
  295.  
  296.                DEFBAR <Col>, <Bck>, <BarCol1>, <BarCol2>, <X>, <Y>, <Length>
  297.  
  298.                <Col>, <Bck> - foreground and background colors;
  299.                <BarCol1>, <BarCol2> - colors for 'non-filled' and 'filled'
  300.                parts of the progress bar;
  301.                <X>, <Y> - left and top point of the bar window;
  302.                <Length> - length of the bar.
  303.  
  304.                You may disable the file bar by a using a special form of the
  305.                DEFBAR command:
  306.  
  307.                DEFBAR OFF
  308.  
  309.  
  310.    MESSAGE     Write text in a box:
  311.  
  312.                MESSAGE <Col>, <Bck>, <Title>, <Str1> [, <Str2>..]
  313.  
  314.                <Col>, <Bck> - foreground and background colors;
  315.                <Title> - Box header text;
  316.                <Str1>, <Str2>.. strings containing the text to be displayed
  317.  
  318.  
  319.    OUTTEXT     Start/end a plain/ANSI text:
  320.  
  321.                OUTTEXT [ANSI] ON | OFF
  322.  
  323.                Defines the beginning (ON) and the end (OFF) of a text
  324.                section.  The optional keyword ANSI indicates that the text
  325.                contains ANSI esc-sequences which are to be processed while 
  326.                writing to the screen.
  327.  
  328.                Example:
  329.  
  330.                OUTTEXT ON
  331.  
  332.                   Installation instructions.
  333.  
  334.                   You should install this program according to
  335.                   the following procedure:
  336.                     ...
  337.  
  338.  
  339.                OUTTEXT OFF
  340.  
  341.  
  342.    RESTSCR     Restore a screen saved with SAVESCR:
  343.  
  344.                RESTSCR <NumScr>
  345.  
  346.                <NumScr> - the identifier of the screen previously saved
  347.                with the SAVESCR statement.  The cursor position, current 
  348.                window setting as well as the foreground and background
  349.                colors are restored.
  350.  
  351.  
  352.    SAVESCR     Save screen:
  353.  
  354.                SAVESCR <NumScr>
  355.  
  356.                <NumScr> - A numeric value from 1 to 16 identifying the
  357.                storage place for the saved screen data.  Stored data 
  358.                includes the screen data, the cursor position, current 
  359.                window setting as well as the foreground and background
  360.                colors.  Saved screens may be restored using the RESTSCR
  361.                statement.  
  362.  
  363.                <NumScr> must be numeric value from 1 to 16.
  364.  
  365.  
  366.    SETCOLOR    Set the default foreground and background color:
  367.  
  368.                SETCOLOR <Col>, <Bck>
  369.  
  370.                <Col> is the foreground and <Bck> is the background color.
  371.                After setting this default all commands, which use but do 
  372.                not contain a color specification, will be output using 
  373.                this color.
  374.  
  375.  
  376.    TEXT        Write text:
  377.  
  378.                TEXT <P1> [, <P2>..]
  379.  
  380.                <P1>, <P2>.. are variables or character constants containing
  381.                the text to be written.
  382.  
  383.  
  384.    WINDOW      Set the current window:
  385.  
  386.                WINDOW <X1>, <Y1>, <X2>, <Y2>
  387.  
  388.                <X1>, <Y1> - the left and top point of the window;
  389.                <X2>, <Y2> - the right and bottom point;
  390.                All output, written after this command has been issued,
  391.                will be within the specified window range if else not
  392.                stated in command description.
  393.  
  394.  
  395.    2.1.3. Functions
  396.  
  397.    Function provides built-in procedure call, which returns a value.
  398.                                           
  399.  
  400.    EXEC        Issue an OS command and return exit code:
  401.  
  402.                <Var>=EXEC <Arg1> [, Arg2.. ]
  403.  
  404.                <Arg1>, <Arg2>.. - parameters of which the command line
  405.                merged prior to be executed. If you need spaces - add it
  406.                accordingly into <Arg1>, <Arg2>..
  407.                <Var> - the variable to receive the returned errorlevel
  408.                after the command line execution.
  409.  
  410.              
  411.    GETDFREE    Get disk free space:
  412.  
  413.                <Var>=GETDFREE [<DiskNo>]
  414.  
  415.                <Var> - variable to hold the returned value.
  416.                Available disk space in bytes is assigned to the variable.
  417.  
  418.                <DiskNo> - the optional number of disk to get available
  419.                space (0 means A:, 1 - B:, 2 - C: etc). If this parameter
  420.                not indicated the available space will be reported for
  421.                destination disk (see DestDir variable description). If
  422.                the disk matched does not exist, -1 will be returned.
  423.  
  424.  
  425.    GETKEY      Return pressed key code:
  426.  
  427.                <Var>=GETKEY
  428.  
  429.                The function waits for a key depression and returns it's
  430.                code to <Var>.  Special keys produce extended scan codes
  431.                in which the first byte is zero and the second contains
  432.                the extended code.  In this case the key code is returned
  433.                as a value of the second byte plus 256.
  434.  
  435.   
  436.    INPUT       Perform input:
  437.  
  438.                <Res>=INPUT <Col>, <Bck>, <Var>, <IniValue>, <MaxLen>
  439.  
  440.                <Col>, <Bck> - the foreground and background color of the
  441.                input field;
  442.                <Var> - the variable to receive the input value;
  443.                <IniValue> - the initial value (variable or a constant);
  444.                <MaxLen> - the input field (maximum) length.
  445.                <Res> - A flag indicating the success of the transaction.
  446.  
  447.                If the <Esc> key is pressed during input then a value of
  448.                zero is returned in <Res> and <Var> is undefined.  If a
  449.                value is successfully entered, <Res> is assigned a value 
  450.                of 1 and <Var> is assigned the input value.
  451.  
  452.  
  453.    MENU        Initiate a menu:
  454.  
  455.                <Var>=MENU <X>, <Y>, <Col>, <Bck>, <Position>, <Title>,
  456.                           <Item1> [, <Item2>..]
  457.  
  458.                <X>, <Y> - the left and top point of the menu;
  459.                <Col>, <Bck> - the foreground and background color;
  460.                <Position> - initial menu pointer position (number);
  461.                <Title> - text of the title;
  462.                <Item1>, <Item2>.. - character strings - menu items;
  463.                <Var> - the variable to receive the returned value.
  464.  
  465.                Upon successful choice, the function returns the number of
  466.                the menu item (1-n).  If the <Esc> key was pressed, a value 
  467.                of zero is returned. 
  468.  
  469.  
  470.    2.1.4. Pre-defined procedures
  471.  
  472.    Procedures with reserved names which are called from the SFX internal
  473.    code upon special conditions.  Prior to such call SFX sets the parameter
  474.    variables Par1 and Par2.  The pre-defined procedures are optional and
  475.    should be written to particular need by the script programmer using
  476.    the PROC statement.
  477.  
  478.    ArcDone     Called upon successful completion of extraction.
  479.  
  480.                No parameter is used.  When ArcDone is executed,
  481.                the archive file is closed and may be erased by
  482.                issuing the command: SYSTEM "DEL ",ArcName
  483.  
  484.    ChangeVol   Called when the archive volume needs to be changed.
  485.  
  486.                Par1 is assigned the volume number (0 for the first volume
  487.                change), Par2 is assigned the volume status: If Par2 is 0,
  488.                the volume needs to be installed, (user should be asked to
  489.                load it). This procedure will be called with Par2==0 until
  490.                the requested volume is not found. You may change the
  491.                requested volume name by an assignment to the variable
  492.                ArcName. In the case of non zero value of Par2 the volume is
  493.                successfully installed and no user action is required.
  494.  
  495.                If the ChangeVol procedure is not defined then the prompt
  496.                "Insert disk with <volume name>" will be displayed by SFX 
  497.                when the next volume is required.
  498.  
  499.    Error       Called when an error occured.
  500.  
  501.                Par1 is assigned the error code:
  502.  
  503.                   1 - Fatal error
  504.                   2 - CRC error, broken archive
  505.                   3 - Write error
  506.                   4 - File create error
  507.                   5 - Read error
  508.                   6 - File close error
  509.                   7 - File open error
  510.                   8 - Not enough memory
  511.  
  512.                When Error procedure ends, SFX processing terminates.
  513.                This procedure is not called when an incorrect AV code is
  514.                detected.
  515.  
  516.                If no Error procedure is defined, SFX prompts the user with 
  517.                a standard error message and terminates.
  518.  
  519.    FileDone    Called upon successful extraction of a file or a directory.
  520.  
  521.                Par1 variable is assigned the file number in the archive.
  522.                Filename contains the file name.
  523.  
  524.    OnKey       Called when a key is pressed.
  525.  
  526.                May be used to implement context sensitive help message
  527.                display as well as break processing.  Par1 is assigned the
  528.                key code of the pressed key.  If the key operation is 
  529.                processed within the OnKey procedure, you should set Par1
  530.                to -1, to inhibit double processing of the key by SFX.
  531.                Recursive calls of OnKey are prevented by SFX itself.  When
  532.                OnKey is called, the current window, color setting and cursor
  533.                position are automatically saved and restored upon exit of 
  534.                the procedure.  Note that screen saving is not performed -
  535.                use SAVESCR and RESTSCR commands if so desired but be sure
  536.                that you save and restore screen with an identifier which
  537.                is not used in the script).
  538.  
  539.  
  540.    2.1.5. Pre-defined variables
  541.  
  542.  
  543.     Archive variables:
  544.  
  545.    ArcName       The archive name
  546.  
  547.    AVPresent     If authenticity verification (AV) is present, the variable
  548.                  value is 1, else - 0.  In the case of invalid AV information
  549.                  the value is -1.
  550.  
  551.    AVArcName     The archive name stored in AV
  552.  
  553.    AVDate        The archive date stored in AV
  554.  
  555.    AVUserName    The archive creator (AV registration string)
  556.  
  557.  
  558.     Extraction dependant variables:
  559.  
  560.    FileName      The name of the file extracted from the archive (no
  561.                  destination path)
  562.  
  563.    DestFileName  The full path name of the file extracted from the
  564.                  archive (destination path included)
  565.  
  566.  
  567.     User-definable variables (to be assigned by INPUT or = operation):
  568.  
  569.    DestDir       Destination directory to install files from the archive.
  570.                  If the destination directory does not exist, it will be
  571.                  created. If the last character of the destination
  572.                  directory entered not '\' or ':', then the string will
  573.                  be automatically complemented with final '\' character.
  574.  
  575.    Password      The password to facilitate decryption of the archive files
  576.  
  577.  
  578.    2.1.6. Script notes
  579.  
  580.    Character strings should be entered using C-language rules.
  581.    For example, use "\\" to enter a single symbol "\".
  582.    Special characters (format operators) such as "\n", "\r" may be used.
  583.  
  584.    The script text is stored as the archive comment in the SFX module. You
  585.    should place an <EOF> character (ASCII code 26) at the start of the
  586.    script in order to prevent displaying the script as the archive comment
  587.    if the SFX would be handled with RAR itself.
  588.  
  589.    See the example of the installation script in the file standard.s. It may
  590.    be used to create any installation package.
  591.  
  592.    Also you may extract the RAR Installation script from the RAR package. In
  593.    order to do this you may run the "extract comment" command on the RAR SFX
  594.    package:
  595.  
  596.        rar cw rar155.exe rarinst.s
  597.  
  598.    You will then have the RAR Installation script in the file rarinst.s
  599.  
  600.    An external install program can be placed into SFX archive to be called
  601.    after succesful completion of unpacking (e.g. from PROC ArcDone) with
  602.    using EXEC function:
  603.  
  604.      PROC ArcDone
  605.  
  606.           EXEC DestDir, "Install.Exe"
  607.      ENDP
  608.  
  609.    2.1.7. Technical limitations:
  610.  
  611.         Maximum script line length.............1023 bytes
  612.  
  613.         Maximum script length....................62 Kb
  614.  
  615.         Maximum parameters in command............16
  616.  
  617.         Maximum parameter length................255 bytes
  618.  
  619.         Maximum identifier (variable name,
  620.         label) length............................31 bytes
  621.  
  622.         Maximum variable value length...........127 bytes
  623.  
  624.    In general, variables can contain numeric (4 bytes length) values or
  625.    strings of up to 127 characters in length.
  626.  
  627.  
  628.  
  629.