This is a modified InnoSetup 5.x version
All modifications are (C) 2007 Andreas Hausladen




New features:

=== [Setup] section ===
--------------------------------------------------------------------------
Option: 
  OptimizedChecks=yes/no

Default: 
  no

Description:
  The OptimizedChecks option reduces the number of "Check" function calls by caching
  the last value and parameters of the "Check" function that was executed. The cached
  value will be used if the next "Check" function call matches the previous. If it
  doesn't match, the new "Check" function is called and its value and parameter are
  used for the cache.
  The cache is discarded every time a new block of checks must be evaluated.

  Example:
    [Files]
    Source: app\readme.txt; DestDir: {app}; Check: Check1(1);
    Source: app\license.txt; DestDir: {app}; Check: Check1(1);
    Source: app\deploy.txt; DestDir: {app}; Check: Check1(1);
    Source: app\data\data.bin; DestDir: {app}\data; Check: Check1(2);
    Source: app\bin\app.exe; DestDir: {app}\bin; Check: Check1(1);

    OptimizedChecks=no
        Check1(1); // readme.txt
        Check1(1); // license.txt
        Check1(1); // deploy.txt
        Check1(2); // data.bin
        Check1(1); // app.exe
    OptimizedChecks=yes
        Check1(1); // readme.txt => Cache is set to "Check1(1)"
        //Check1(1); // license.txt <= uses cached value
        //Check1(1); // deploy.txt <= uses cached value
        Check1(2); // data.bin => different parameter => Cache is set to "Check(2)"
        Check1(1); // app.exe => different parameter => Cache is set to "Check(1)"

--------------------------------------------------------------------------
Option:
  WebSetupUpdateURL=URL

Description
  If this option is set to a URL the compiler will create a setup.webinfo file in the
  output directory that can be copied with the other setup files to a web server.
  When the setup starts it first downloads the setup.webinfo file and checks if the
  version on the web server matches the local copy. It then automatically downloads and
  start the newer setup.

  Multiple URLs can be separated by " :: ", e.g. "http://web :: ftp://server".
  This option does not work with DiskSpanning=yes. If the setup becomes too large
  you should use the [Packages] section to split the files.
  Local packages must be copied to the web server with their relative path. They
  are downloaded directly after the new setup.exe was downloaded.
  The command line option /LOCALSETUP forces the setup to not look for a newer
  version.



=== [Code] section ===
--------------------------------------------------------------------------
Function:
=========
  Syntax:
    function ProcessEvents: Boolean;

  Description:
    Gives the setup some time to refresh the wizard and returns False if the user has
    canceled the installation. In that case the code should call "Abort" to stop the
    installation after it has done some clean up.

--------------------------------------------------------------------------
  Syntax:
    procedure UpdateComponentList;

  Description:
    Updates the component list by calling their "Check" functions. The actual 
   component selection isn't changed until the component page becomes visible.

--------------------------------------------------------------------------
  Syntax:
    procedure DownloadWebFile(const URL, Description, DestFilename, Referer,
      ProxyUserName, ProxyPassword: string; FtpTextMode, FtpPassive: Boolean);

  Description:
    Downloads the file from the URL. It shows the WebDownloadProgressGauge if
    the InstallPage is active. Otherwise it disables the WizardForm until the
    download has finished or failed.
    The function raises an exception if the download fails.

--------------------------------------------------------------------------
Event:
======
  Syntax:
    procedure WebFileDownloadHandler(const Location, Description, DestFilename: String);

  Description:
    The WebFileDownloadHandler event is called when the setup must download a "download://location"
    web file. The Location parameter specified the pacakge source without the protocol.
    Description is the package description and DestFilename is the full qualified destination
    filename.

--------------------------------------------------------------------------
Class:
======
  WizardForm.WebDownloadStatusLabel: TNewStaticText
  WizardForm.WebDownloadFilenameLabel: TNewStaticText
  WizardForm.WebDownloadProgressGauge: TProgressBar



=== [Packages] section ===
--------------------------------------------------------------------------
[Packages]
Name: packagename; Description: "Some setup files"; Source: myfiles.isz

[Files]
Source: filename; DestDir: {app}; Package: packagename


PACKAGES:

Name:
  The Name of the package which is used in [Files].Source for the "Package" parameter.

Description:
  The text that is displayed while downloading the package (optional)

Source:
  The filename of the package. The installer treats the package as a web package if
  the filename starts with a "protocol://" where protocol can be "http", "ftp" or "download".
  A web package (http, ftp) is automatically downloaded to {tmp} if there is no local copy
  at the {src} directory. The "download://" web packages must be downloaded by the
  WebFileDownloadHandler() event.
  Multiple URLs can be specified by separating the URLs with " :: "
  (e.g: "http://www.my.com/pack.bin :: ftp://www.my.com/pack.bin"


Flags:
  localcopy: The installer will try to save the downloaded file to {src} first. If it cannot
             write at {src}, it will fall back to the {tmp} directory where the file will be
             deleted after the installation has finished.
