**********************************************************************
 TMS Software : WEBUPDATE
 E-mail: info@tmssoftware.com
 Web : http://www.tmssoftware.com/
**********************************************************************

Delphi 5,6,7,2005,2006,2007,2009,2010,XE,XE2 & C++Builder 5,6,2006,2007,2009,2010,XE,XE2 component to easily manage application updates

Files :
-----
  wupdd5.zip    : component files for Delphi 5
  wupdd6.zip    : component files for Delphi 6
  wupdd7.zip    : component files for Delphi 7
  wupdd2005.zip : component files for Delphi 2005
  wupdc5.zip    : component files for C++Builder 5
  wupdc6.zip    : component files for C++Builder 6
  wupdd2006.zip : component files for C++Builder 2006 & Delphi 2006
  wupdd2006.zip : component files for C++Builder 2007 & Delphi 2007
  wupdd2009.zip : component files for C++Builder 2009 & Delphi 2009
  wupdd2010.zip : component files for C++Builder 2010 & Delphi 2010
  wupddXE.zip   : component files for C++Builder XE & Delphi XE
  wupddXE2.zip  : component files for C++Builder XE2 & Delphi XE2
  demo.zip      : demo with source code for Delphi 5,6,7,2005,2006,2007
  
  for more demos for using the ASTA binary patch technology:
  See http://www.tmssoftware.com/astaupdate.com


Release 2.2.0.3 :
-----------------

What can TWebUpdate do for you ?
-Automatically check for updated files on the Internet or Intranet
-Can check for updated files over http and ftp protocols or simply
 file based for Intranet applications
-Can replace running executables itself or DLLs used by the application
 with the updates
-Allows to update any other application component or data file
-Can just show new documentation, tips, announcements etc.. when available
-Allows updates based on dates or on file versions
-Simple VCL based component to transfer files over http or ftp and to
 handle and check LAN or dialup based Internet connections,
 so no extra DLL's or OCX's required to include.
-Very compact size and simple interface
-Download and decompress CAB files
-Can use the ASTA binary patch technology for using file difference based updates.
 See (http://www.tmssoftware.com/astaupdate.com)

Feature revision history :
------------------------

 0.1 : first release
 0.2 : Improved support for Windows NT
       Improved support for proxy servers
       Added update capability into separate directories for each file
 0.3 : Added threading support
       Improved file cleanup after update
       Added {TMP} directory capability
       Added customizing date format in control file
 0.4 : Added display HTML dialogs with info (Delphi only)
       Added display file file selections of found updated files
       Added custom validation of update info
       Added custom processing of update info
       Improved status reporting
 0.5 : Fixed problem with major version number based updates
       Added custom directory prefixes
       Better support for long filenames for application directories
       Thanks to Scott Bussinger for various improvements
 0.6 : Added passive FTP mode
       Fixed problem with automatic application update
 0.7 : Added CAB file support
 0.8 : New event to allow cancelling updates
       Added .RES file with dialog strings to allow language customization
       Improved handling of .CAB based application updates
       Improved date based updates
 0.9 : Added C++Builder 5 support
       Added DateSeparator property
       Fixed OnFileProgress filesize problem for FTP based updates
 1.0 : Allows posting of custom data to a server during the update process
       Faster application shutdown & replacement
       Custom validation of each file
       New OnAppDoClose to allow application to perform their own closing routines
 1.1 : Can display "what's new" and "license agreement" files before update
       File size and file checksum based updates added
       More options to control application replacement, including restart, command line parameters
       Signature check of update control file
       Can update with uncompressed files
       New UpdateBuilder added to make building updates easier
       Can be fully translated by replacing .RES file
 1.2 : Improved support & demo for UNC file based updates
 1.3 : New events that return the EULA and What's New file if available for custom display
       New option to use CRC32 checks on files
       New {PF} directory to refer to Program Files directory
       Optionally Time based updates
       New event to set dynamically application command line parameters for restart  
       Update of UpdateBuilder to build update control files 
 1.4 : Improved CRC32 check handling
       Improved What's New file handling
       Improved multilevel directory support
       New : can use the ASTA binary patch technology for using file difference based updates.
       New : includes free TAstaPatchUtility distribution to apply ASTA binary patches
 1.5 : New : includes Web update wizard
       New : separately callable steps in update process
       New : HTTP keep alive setting
       New : auto compare with local file dates capability
       New : dynamic URL change per file
       New : OnSuccess event after download of all updated files
       New : Option to control to update only existing files and not install new files
       New : Option to keep CAB or Patch files after update
       New : List of file details for update
       New : total update download size property
       New : short update description field
       New : log to file capability
       Improved : CAB extraction      
       Improved : EULA dialog handling
       Improved : update registry only after success       
  1.6  New : Auto login handling for http password protected sites  
       New : Capture patcher output to log file
       New : Autorun and autostart for wizard
       New : Animation during patcher run
       New : hide patcher console window
       New : fix for cab extract file timestamp
       New : Multilanguage wizard support, English, French, Dutch, German, Portugese, Spanish, Danish, Italian
       New : Agent property
       New : Customizable wizard billboard
       New : LanguageID property added to allow 'What's new' and 'EULA' files customized per language
       New : Mandatory vs non mandatory application components support added
       New : Hidden vs non hidden application components support added
       New : Automatic removal of CAB & Patch files after extract
       New : Enhanced logging for easier tracing of update process
       New : Added control file for processing CAB, LZ-expanded, Patch files after application shutdown
       New : TMS WebUpdate developers guide
       Improved : UpdateBuilder for building update process control files
       Various smaller improvements & fixes
1.6.5: New : Hungarian, Swedish & Norwegian language support added
       New : customizable logfile name
       Improved : partial version information handling
       Improved : time of version display in wizard
1.7  : New : OnBeforePost event added
       New : View in Notepad popup for What's new & EULA in wizard
       Fixed : CAB extraction issue with multi level directory hierarchy
       Improved : WebUpdate.OnSuccess triggered from wizard execution
2.0  : New : support for Windows Vista
       New : support for Delphi 2007 & C++Builder 2007 added
       New : {doc} prefix 
       New : support for Hungarian, Czech, Swedish & Polish language added
       New : parameter InitPath added to DoUpdate method to automatically initialize current directory to app EXE
       Improved : logging
       Various smaller improvements & fixes
2.0.1: New method NewWhatsNew(ShowDialog) method available to only show what's new info
       Fixed : issue with targetdir during file download
       Fixed : issue with overwriting files during updates
2.0.2: Improved : wizard handling for case where hidden is set for all files
2.0.3: Improved : handling of temp directory names with spaces
       Fixed : issue with handling updates with _NEW extension on Windows Vista
2.0.3.3:
       Improved : automatic LIB reference in HPP file generation
       Fixed : issue with command line parameters for app restart
2.0.3.4:
       Fixed : cleanup of file WUPDATE.INI
2.0.7.2 : New : property TimeOut added
          New : event OnBeforeDownload triggered before getting "What's new" file.
          New : Preselect=0|1 per file possible to control preselect in wizard checklistbox
          New : status events when file after download cannot be deleted/renamed
          Improved : french language version of wizard
          Improved : will automatically handle URLs with '?' used
          Improved : Fix for Vista UAC with runbefore/runafter commands 
2.0.8.0 : Improved : new status messages for changing FTP directory
2.0.9.0 : Improved : error logging for FTP based updates
2.0.9.1 : Fixed : issue with sub .INF file processing for Windows Vista 
2.0.10.1: New : check for Delphi 2009 / C++Builder 2009 for logging 
          Fixed : issue with Windows Vista & Delphi 2009
2.0.10.2: Improved : Suppress messagebox for server connection problems when UpdateUpdate = wuuSilent
2.0.10.3: Improved : Cancel handling from HandleActions stage 
2.0.12.0: New : property ForceUpdate added
          Improved : support to allow using custom what's new & EULA handling via wizard 
2.0.12.1: Fixed : issue with Cancel clearing when WUpdate restarts  
2.0.12.2: Fixed : issue with control positioning on translated wizard pages
2.0.14.0: New: property ReceiveTimeOut added
        : New: built-in support for Turkish language in dialogs
2.1.0.0 : New: UpdateBuilder
        : New: Support for rich text What's New & EULA files
        : New: Exposed billboard position, stretch, center in TWebUpdateWizard
        : Improved: handling of the WebUpdateWizard with silent restart
2.1.0.4 : Improved : small change for URL parameter in OnFileNameFromURL event
        : Fixed : When UseWinTempDir is false and file is not a .CAB or .PAT file, keep file
        : Fixed : Issue with PostUpdateInfo with Unicode Delphi
        : Fixed : Issue with cancelling and restarting the wizard  
2.1.1.0 : New : Property ShowDownloadProgress added
2.1.3.0 : New : Added support to specify local application data folder for downloads
        : New : Optional parameter in NewVersionAvailable to initialize path for this call
        : Improved : Display of new date based version update in wizard
        : Changed : Default parameters for DoUpdate() / Wizard.Execute call
2.1.3.1 : Fixed : Issue with DateSeparator/TimeSeparator in persisting last update timestamp to registry
2.1.3.2 : Fixed : Get proper Program Files folder for 32bit apps on 64bit Windows
2.1.3.3 : Improved : Handling of HTTP POST for secure sites
2.1.3.5 : Improved : Handling of setting UseWinTempDir
        : Fixed : Issue with mandatory files where description is missing
2.1.3.6 : Fixed : Issue with loading TXT EULAs in wizard
2.1.4.0 : New : CertCheck property added to disable certificate checks
2.1.5.0 : Improved : Internally use TMemIniFile instead of TIniFile for speed
        : Fixed : Issue with sequence of status events 
2.1.5.1 : Fixed : Issue with wizard form in Delphi 7
2.2.0.0 : New : OnSetAppParamBefore, OnSetAppParamAfter events added
        : New : Possibility to turn off UAC prompt (registered version only)
2.2.0.1 : Fixed : Issue with using TWebUpdate with UAC turned off
2.2.0.3 : Fixed : Issue with error handling when disconnect happens during update download
        : Fixed : Issue with using TWebUpdate with UAC turned off




Installation of trial version :
-------------------------------

 In Delphi 5,6,7 or C++Builder 5,6

 Unzip files wupddX or wupdcX into a component directory

 - From the IDE choose File, Open

 - Browse for package file WUpdPkgDx.dpk (Delphi) or WUpdPkgCx.bpk (C++Builder)

 - From the package file editor, choose Install

 In Delphi 2005

 Unzip files wupdd2005 into a component directory

 - From the IDE choose File, Open

 - Browse for package file WUpdPkgD2005.bdsproj

 - From the project manager, right click & choose Install

 In Delphi 2006, 2007, 2009, 2010, XE, XE2 &  C++Builder 2006, 2007, 2009, 2010, XE, XE2

 


Installation of registered version :
------------------------------------

From Delphi choose, File, Open and browse for:

  Delphi 5        : wupdpkgd5.dpk
  Delphi 6        : wupdpkgd6.dpk
  Delphi 7        : wupdpkgd7.dpk
  Delphi 2005     : wupdpkgd2005.bdsproj
  Delphi 2006     : wupdpkgd2006.bdsproj
  Delphi 2007     : wupdpkgd2007.dproj
  Delphi 2009     : wupdpkgd2009.dproj
  Delphi 2010     : wupdpkgd2010.dproj
  Delphi XE       : wupdpkgdXE.dproj
  Delphi XE2      : wupdpkgdXE2.dproj
  C++Builder 5    : wupdpkgc5.bpk
  C++Builder 6    : wupdpkgc6.bpk
  C++Builder 2007 : wupdpkgc2007.cbproj
  C++Builder 2009 : wupdpkgc2009.cbproj
  C++Builder 2010 : wupdpkgc2010.cbproj
  C++Builder XE   : wupdpkgcXE.cbproj
  C++Builder XE2  : wupdpkgcXE2.cbproj

From the package editor/project manager, choose Install.





The latest HTML documentation can be automatically be
downloaded with the included demo application


Usage (see TMS WebUpdate developers guide for more extensive information) :
---------------------------------------------------------------------------

1) Choosing the update distribution method, ie over http, ftp or file-based.
   This is set in the property :
   UpdateType : httpUpdate, ftpUpdate, fileUpdate

2) Dependent of distribution type set :

   For FTP based distribution
   - HOST : ftp server name
   - FTPDirectory : directory where update files are
   - PORT : ftp port to use (default 21)
   - UserID, Password : FTP server username & password
                        (leave blank for anonymous FTP)
   - ProxyUserID, ProxyPassword : proxy username & password
                        (leave blank when no proxy is used)
   - URL : location of the update control file (ie. update.inf)

   For HTTP based distribution
   - ProxyUserID, ProxyPassword : proxy username & password
                        (leave blank when no proxy is used)
   - URL : full location of the update control file
           (ie. http://www.yourserver.com/updates/update.inf)


   For file based distribution
   - URL : UNC of the update control file

3) Build the update control file :

   The update control file is a .INI organized file to control the
   update. Following sections and keywords can be used :

  The general update section
  --------------------------
   1) date based updates :

   [update]
   date=26/6/2000

   This date is compared with the date of the last update (stored in the
   registry at a location as specified in the LastURLentry property)
   If the date is later than the date found in the registry, the update
   continues.

   2) version based updates :
   [update]
   newversion=1,1,0,0
   localversion=application.exe
   
   The new version (major,minor,release,build) is compared with the
   version info available in the application as specified at the
   localversion keyword. If the newversion is newer than the version
   found in the .EXE (or .DLL) file, the update continues.


  Actions to do for the update
  ----------------------------
   These actions are specified in the [action] section

   [action]
   updateURL=http://host/update2.inf
   msg=Automatic web update
   query=This is the update version 1.5.0.0 Continue ?
   showURL=http://www.yourserver.com/updates/doc.htm
   runbefore=
   runafter=

   In the action section following keywords are supported :
   updateURL : will update the URL of the update control file
   msg : simple message displayed during the update
   query : query string allowing the user to cancel the update
   showURL : shows the URL in the default browser
   runbefore : run any app. before the update starts
   runafter : run any app. after the updated files are transferred

  
  What's new and/or license agreement file 
  ----------------------------------------

  [whatsnew]
  file=url of whatsnew file

  If this entry is found in the control file, the 'what's new" file will be displayed in
  a dialog and the user is prompted to continue the update process or not.

  [eula]
  file=url of license agreement file

  If this entry is found in the control file, the license agreement file will be displayed 
  in a dialog and the user is prompted to accept the license agreement or not. If the license
  agreement is not accepted, the update is discontinued.


  Number of files to update
  -------------------------
   The number of new files are defined in the sections [files]
   with the count keyword

   [files]
   count=2

  Details of files to update
  --------------------------
   [file%]
   url=URL (HTTP), filename (FTP) or UNC (file based)
   newversion=1,0,0,0
   newsize=
   newsum=
   localversion=application.exe
   targetdir=path

   If no newversion, newsize or newsum keyword is present, the file is always downloaded, otherwise this new 
   version is compared with the version info, filesize or file checkum of the local file defined after the 
   localversion keyword. The path can be any path and can also contain prefixes : {APP}, {WIN} or {TMP}. If 
   a file must be installed into a subdirectory of the current application running the update, specify {APP}\SUBDIR. 
   If I file must be installed in a subdirectory of the Windows directory use {WIN}\SUBDIR or in the temporary 
   directory with {TMP}\SUBDIR. Custom prefixes can also be used and these need to be translated to real directories
   on the system using the OnConvertPrefix event. The descr details are only used when the OnGetFileList event is 
   used. The OnGetFileList event can be used to query the user for all available updates based on a description rather 
   than the file name. If compress is 1, this means that the file should be decompressed using the lzexpand algorithm, 
   otherwise it is copied. As an alternative, TWebUpdate also automatically recognizes the .CAB extension and if the 
   property CABExtract is true, these CAB files are extracted as well during the update process. Make sure though that 
   no application components (ie .EXE and .DLL files) are decompressed in this step. These need to be decompressed in 
   the section [Application] which is discussed further.

  Updating application components
  -------------------------------
  To overwrite used .EXE and .DLL files of the running application with
  the updated files, other file with different names than the ones in use
  must be used. For the files in use, these can be compressed with the
  standard Microsoft LZ compression program (COMPRESS -r <file>)
  When updating, the running application is closed, the files are expanded
  and the running application (update version) is restarted.
  The appupdate=1 keyword indicates if application used components need to
  be updated. The application that must be restarted after the update
  is indicated with the appname keyword. Finally, the appcomps keyword
  indicates a series of LZ compressed files that will be expanded during
  the update process : 

  [application]
  appupdate=1
  appname=inet.exe
  appcomps=inet.ex_ other.dl_ onemore.dl_

  From version 0.7, CAB files are also supported giving the extra
  flexibility to have long filesnames for application EXE and DLLs files.
  Instead of specifying the LZ compressed filenames, just add the
  CAB file names in the appcomps keyword, ie.

  From version 1.1, uncompressed updates are supported as well. To work
  with uncompressed files, just add _NEW to the end of the filename of the
  new application filename or application component filename. After the
  application is closed, the files with _NEW at the end of the filename are
  renamed to their equivalent filename without this _NEW extension.

  [application]
  appupdate=1
  appname=CABFileUpdateApp.exe
  appcomps=newversion.cab

  If appname is set to to string "null", the application will not be restarted after the update.


4) Doing updates in the application

   The method to start the update is TWebUpdate.DoUpdate.

   Two properties control the process :

   UpdateConnect can be:

     wucNoConnect : check to see if connected to the Internet but do not
                    try to establish a connection
     wucConnectPrompt : try to establish a connection if none is available
                        with the standard dialup prompt
     wucConnectSilent : try to establish a connection if none is available
                        in silent mode
     wucConnectPromptHangup : hangup if connection was required after update
     wucConnectSilentHangup : hangup if connection was required after update

   UpdateUpdate can be:

     wuuSilent : no prompts for all files that will be downloaded
     wuuPromptAll : prompt for every file to be downloaded
     wuuPromptOnce : prompt just once for downloading updated files

The DoUpdate method can be called from a menu in the application or called
from a timer component to handle this automatically.


Help, hints, tips, bug reports :
------------------------------
Send any remarks to : info@tmssoftware.com
Please clearly state which Delphi or C++Builder version you are using
and which version of the component you are using. In case of doubt,
download the latest version first at http://www.tmssoftware.com
