WebHub Release Notes for v2.098 and v2.099
This file was last updated 14-Sep-2010

Skip to: WebHub Object Pascal Components    The Hub    Runners   

You may need to reboot after installing WebHub v2.099. If, after upgrading to v2.099, requests to your apps "hang" inexplicably, try net stop w3svc, net stop iisadmin, net stop hub and then restart the hub and w3svc; OR reboot. Operation should then be completely normal/fast/wonderful.

Customers with existing XML files: please validate your application-level XML file with http://webhub.com/xsd/cv004/WebHubAppConfiguration200811b.xsd before expecting it to work in a v2.099 WebHub app.

The Hub

Secondary commands use cross-platform technique v2.098
The following commands are sent using a new technique: cover app, uncover app, terminate app, show app, park app, refresh app.
As a consequence, if you use WebHubAdmin v2.098 to send these commands to WebHub applications built with older components, the commands will not be received.
Session cookie name can be customized by AppID v2.098
SessionCookieName is now loaded from WHCentralInfo.xml instead of from the application-level config, so that the runner finds it easily and quickly.
Central config XSD updated v2.098
Use http://webhub.com/xsd/cv004/WebHubCentralInfo200810.xsd . Reference: WHConfiguration-cv004.pdf
SessionCookieName added.
ShutdownWHApps.exe is version-sensitive
ShutdownWHApps.exe is a command-line utility for telling all WebHub EXEs to exit, available upon request from HREF Tools. Version supports WebHub EXE versions through v2.097 but not v2.098+.
A new version has not been compiled yet; please ask.
Hub service uninstall command changed v2.098
Usage: hub.exe -uninstall (was -remove)
Error Logs v2.098
Any details about startup errors will be logged in a file in the same folder as hub.exe.
HubApp to be discontinued
Future versions of the Hub will not load a HubApp, and will not use up a licensing slot.
Customers who were using the HubApp named "WebHub Central" will need to use another technique for viewing and managing applications, such as running WebHubAdmin on the server.
Customers who were running their own lite application inside the Hub should use whLite.dpr or equivalent to run their application.
Hub can start and stop WebHub apps automatically v2.098
If configured appropriately in WHCentralInfo.xml, the Hub will start WebHub applications when it starts as a service, and/or stop them when it stops.
Both regular applications and services are supported.
Look for configuration of: number of instances to run minimum (integer), number to start with Hub (integer), and whether instances should stop with the Hub (boolean).
Configuration can be done with ZMadmin (recommended) or with an XML editor (fine as long as you use the correct latest XSD to validate your entries).


Several new features on Connected > Setups panel. v2.098
For any AppID, you can now tell all instances running that AppID to show, park, cover, uncover, terminate, refresh.
Connected > Current panel is active v2.098
This panel, which tells you about WebHub applications and runners that have successfully connected to the Hub, is active in WebHubAdmin now. In earlier versions it was in WebHubView, and previously in the Hub when it had a graphical user interface.
To refresh the display of connected apps, press [F5] or click the [redraw] button.
Help > Contact HREF Tools v2.098
This is a quick way to send a message to us. Data is sent using your web browser.
Tools > Reset XSD v2.098
This feature reviews all XML files and resets the XSD resource name to the latest one supported by the running version of WebHubAdmin.
This feature is also available during installation.
Error Logs v2.098
Any details about startup errors will be logged in a file in the same folder as webhubadmin.exe.
WebHubView: obsolete v2.098
The features that were in WebHubView have been moved into WebHubAdmin, notably the menu option "Tools > Down Web Apps", and the Connected > Current panels.
The Requests panel is active only in the cross-platform edition of WebHubAdmin (not public as of 31-Aug-2008).
Options panel is obsolete v2.098
Please use ZMAdmin to view and maintain your WebHub configuration settings.
EurekaLog 6.0.17 used v2.099
Hub and WebHubAdmin are compiled with EurekaLog 6.0.17. We appreciate any exception reports that you send us.

WebHub Object Pascal Components

Delphi 2009 support summary v2.098
WebHub v2.099 for Delphi 2009 is suitable for prototypes and low-traffic applications.
Performance is somewhat SLOWER than when the same project is compiled with D06 through D11.
See webTypes.pas: the type TwhString is declared as UTF8String in this edition. This enables features to work NOW.
We plan to switch to TwhString to string for full unicode support as soon as possible. We must obtain ldiRegEx (our regular expression library) with unicode support first.
App and Runner version MUST MATCH v2.098
WebHub applications built with v2.098 require a runner of the same (or higher) version.
WebHub applications built with v2.099 require a v2.099 runner (if using SendFileIIS).
ZaphodsMap v1.031 included v2.098
This includes a fix which had, in the past, occasionally led to 0 byte configuration files.
Application-level config XSD updated v2.098 05-Oct-2008
Use http://webhub.com/xsd/cv004/WebHubAppConfiguration200810.xsd
SessionCookieName removed.
Added support for zmHint and zmDataType attributes on AppSettings, for a feature pending in ZMAdmin.
Application-level config XSD updated v2.099 28-Nov-2008
Use http://webhub.com/xsd/cv004/WebHubAppConfiguration200811b.xsd
For Teko Files, the id is now REQUIRED.
Surround Item tags for the following component families in an ItemList tag: whLogin, whCycle, whErrors, whListGrid
AppInfo.SessionCookieName loaded from config v2.098
This property is loaded from WHCentralInfo.xml; XSD date must be 200807 of later.
Earlier versions had a property, Security.SessionCookieName, which was ignored.
Restorer improved v2.098
You should find that your form position and size data, plus edit control values, are all saved to a single configuration file, rather than to numerous AppRestorer.xml files in every folder containing a WebHub EXE.
WebHub applications respond to commands using new technique v2.098
See note above regarding WebHubAdmin; uses tpShareB.pas which is now part of TPack.
Main menu used based on configuration setting v2.098
Many earlier versions of WebHub supported a /NoMenu command-line parameter which caused the main menu to be destroyed, in order to conserve Windows menu resources.
Now the menu's presence or absence is controlled by the Startup/MenuEnabled node in the application-level configuration file.
Requires: whMain.pas or equivalent
Many improvements to the TPack Restorer components v2.098
Only forms that are derived from TutParentForm are automatically saved/loaded by the restorer component.
Unit whForm is obsolete v2.098
Removed from WebHub runtime ("RT") packages.
No longer used by the WebHub message form (webSplat.pas).
ACTION macro used in frameset src tags gives correct dynamic url v2.098 29-Jul-2008 05:40gmt
Fixed both whcfg_App and webInfoU units. Support Reference #00336.
Errors on Exit due to Restorer v2.098
If you are getting access violations on exiting your WebHub application, add the following 4 lines before InitCoreWebHubDataModuleGUI; (probably in your DPR file).
New compiler flags v2.098
For Linux apps that will run without a suitable desktop, compile with both flags (and that will yield a console app.
On Windows, for WebHub apps that you NEVER want to run as services, use PREVENTSVCMGR. Otherwise, do nothing.
On Windows, for WebHub apps that you NEVER want to have active panels for debugging, testing, entering html, checking on Dreamweaver status, etc., use PREVENTGUI. Otherwise, skip the compiler flag and use the command line /debug feature below. See this technote for an overview on how to set up an app when you DO want it to run as a service.
Instead of the old flag "NoEdit" please use "PREVENTGUI".
The WebHub splash screen (webSplat.pas) does NOTHING when compiled with PREVENTGUI.
New command line flags:
While WebHub applications run WITHOUT FORMS by default in v2.098, this decision was later reversed so most people can ignore this topic. In v2.098, call ForceForceGUI; or ForceEnableGUI; (uses MultiTypeApp) if you want to completely override this default for your application.
For users of newer versions of WebHub: please contact tech support if you need help. You have the option of avoiding the Forms unit at compile time, or of including GUI units but instantiating them depending on command line flags. Your decision on this is not critical for the Windows platform.
New component: TtpProject v2.098
Appears on TPack palette. Uses new units: MultiTypeApp.pas and tpProj.pas.
Enables a Delphi programmer to build an application which, using the compiler directives above, can (relatively easily) compile in any of the following ways:
This technique completely replaces the prior technique of compiling with SvcApp.pas.
Detailed instructions for doing this will be added to the online help system shortly after v2.098 is ready for download by customers. To prepare, you should try as much as possible to isolate GUI code in separate forms, and to use units or datamodules for all non-gui code.
We subsequently renamed MApplication to Application, so you should upgrade directly to v2.100 and do not worry about the leading 'M'. You may want to write {M}Application as a reminder that you are using the multi-type-application, but this is not necessary.
Whenever possible, replace Application with {M}Application.RootOwner
These are the events and their meanings:
  1. OnBeforeFirstCreate: use this if you want to log that your application is alive or to assign it to a single CPU
  2. OnCustomServiceCreate: rare -- use this only if you need to use a custom TService datamodule. See PREVENTSVCMGR compiler directive notes above.
  3. OnDataModulesCreate1: use this if you need to create a datamodule containing your TwhApplication component; usually CreateCoreWebHubDataModule; // uses dmWhApp
  4. OnDataModulesCreate2: use this for pWebApp.AppID := SuggestedAppID; pWebApp.Refresh;
  5. OnDataModulesCreate3: use this if you need to create any datamodules that depended on TwhApplication.IsUpdated being true.
  6. OnDataModulesInit: use this to run extra initialization code in any of the data modules; usually InitCoreWebHubDataModule
  7. OnGUICreate: use this to create TForms
  8. OnGUIInit: use this to initialize anything GUI-related; usually InitCoreWebHubDataModuleGUI
  9. OnStartupError: use this to display and/or log any error that happened during startup.
  10. OnStop: use this to call any special termination code, perhaps to stop some threads.
whsample_EvtHandlers.pas changed v2.098
whShared.pas changed v2.098
Removed unused public variable
whMain.pas changed v2.098
Raises exception if created in the wrong order.
In your DPR, move Application.CreateForm(TfmWebHubMainForm, fmWebHubMainForm); AFTER all data modules have been created.
dmWhApp.pas and dmWhDbAp.pas changed v2.098
Designed for use with MultiTypeApp and, ideally, TtpProject.
You must add a call to InitCoreWebHubDataModuleGUI; if you want the forms or menu to work properly.
ucWinAPI.RunningAsService obsolete
This global variable has been removed.
If you were using it, consider using the function MultiTypeApp.EnableGUI to determine whether you should activate a particular feature.
ucOnce.pas is shipping but obsolete
Published under MIT license.
If you were using it, consider using TtpProject and tell it to make sure that only a single instance runs.
Hints for upgrading v2.098
Due to the paradigm change with MultiTypeApp and TtpProject, it is not possible to upgrade your WebHub applications from v2.097 to v2.098 using FuzRegEx. You will have to upgrade them manually.
The following are optional reminders for anyone who wants to refactor their application to take advantage of the new TtpProject component.
Startup/MenuEnabled configuration flag supported v2.098
Default: menu is enabled
Replaces old command line option /NoMenu
Startup/StartMinimized configuration flag supported v2.098
Default: starts minimized
Replaces various old techniques for minimizing and maximizing via the command line
Startup/SplashEnabled configuration flag supported v2.098
Default: splash is disabled
Replaces old command line option /NS
Startup/TrayIconEnabled configuration flag supported v2.098
Default: tray icon is enabled; code in whMain.pas
Replaces old command line options /Tray and /NoTray, as well as compiler directive NOTRAYICON.
Startup/Modules supported v2.098
If your project uses the new unit uAutoDataModules.pas, you can call AutoCreateDataModules to create the dreamweaver, dreamweaver-security, email and/or shared-refresh modules based on settings in the application-level configuration file.
If your project uses the new unit uAutoPanels.pas, you can call AutoCreatePanels to create any of the following panels: appin, appout, decode, googlesitemap, whteko.
Code for the preview panel is not yet shipping but is planned because David Baldwin has released the required components as freeware.
Delphi overrides for app configuration v2.098
If you need to override properties which are (re)loaded from the application-level configuration file every time the application refreshes, you can use the new OnAferLoadFromConfig event which is available on each nested object, e.g. Situations.
This is used in the WebHub demos to avoid having to maintain dozens of separate config files with the same flags.
App's config: id no longer used for whMailForm v2.098
This issue applies only to people upgrading older applications.
If you are using TwhMailForm and you validate your app's XML file against the latest/correct XSD file, you will see that you need to remove the attribute named "id" from all items.
The "id" was required in the original version of WebHub which used INI files. It should not have been required at all in the XML edition. The "name" completely identifies the item.
How to validate? 1. Use Dreamweaver. 2. Use a free utility. 3. Use the new ZMAdmin which will give detailed error messages. Detailed instructions at http://webhub.com/dynhelp:alias::syntaxvalidation
Application-level XML without the id attribute are not backwards compatible to WebHub v2.097-.
App's config: whCycle id should start with a letter not a digit v2.098
You may need to add a letter before each id (in XML) used by the TwhCycle component in order to make the file validate. This change is backwards compatible.
App's config: MediaSource id should start with a letter not a digit v2.098
You may need to add a letter before each id (in XML) under MediaSources in order to make the file validate. This change is backwards compatible.
Delphi: Request.ExecutablePath v2.098
This is now only the path to the runner, e.g. scripts
Use Request.RawVMR for scripts/runisa.dll or cgi-bin/runbin.exe
Delphi IDE A/Vs fixed v2.098
There had been an access violation in the Delphi IDE if you: started with an empty form, added TwhApplication, Refreshed it, then deleted the TwhCentralInfo which was created automatically.
There had also been an access violation if you tried to set an AppID without a valid CentralInfo component hooked up.
WHZMConverter updated 25-Aug-2008
The wizard for converting INI configuration to XML has been updated such that a single converter supports versions up to v2.097 and version 2.098 and above.
Customers: to download WHZMConverter.zip, connect using your ftp account and you will see the file in your home directory.
Error Logs v2.098
Any details about startup errors will be logged in a file in the same folder as the EXE.
After the application object has refreshed successfully, any subsequent logging will occur in the folder specified in WHCentralInfo.xml. A separate folder can be used for each AppID.
TtpComponentPanel moved to tpCompPanel.pas v2.098 06-Sep-2008
Add tpCompPanel to your uses clause.
NativeXml v2.38 included (DCU) v2.098 06-Sep-2008
Major upgrade in the XML component underneath TZaphodsMap: we are now using the latest, which is v2.38.
We have modified it so that it compiles with Delphi 2009.
Tests show that you can use Unicode data as values anywhere in your XML files, but you cannot use Unicode for attribute names.
NativeXml upgraded for UniCode support v2.099
We have extended NativeXml so that it provides WideString support for earlier Delphi compilers.
The declaration of TNativeXml is now contained within an IFDEF so that it varies appropriately by version of Delphi.
Stronger multi-domain support v2.098 06-Sep-2008
If your app's server profile has AllowDynamicAuthority set to true, then requests for the app that come in on a different authority will continue to stay on that authority.
As an extreme example of this, demos.href.com runs both IIS on port 80 and Apache on port 8082, and you can use either or both of the http software packages at the same time, even with the same session.
This is subtly different than the "classic" WebHub behavior because it is now possible to switch not only to a different domain, but also to a different type of runner, i.e. isapi versus cgi-bin.
See source in whcfg_App.pas
New unit: webPrologue.pas v2.098 24-Sep-2008
Definition of type TwhPrologue moved to webPrologue unit.
TwhPage property changes (PagePrologueMode, CustomContentType) v2.098 02-Oct-2008
PrologueMode renamed PagePrologueMode to differentiate it from the Response.PrologueMode.
CustomContentType added
Call SetContentType to adjust these properties, e.g. SetContentType(proHTML, ''); or SetContentType(proCustom, 'image/gnew');.
The showcase demo now includes examples for css and xml documents served by WebHub.
Content-Type capitalization standardized v2.098 03-Oct-2008
In a few places, WebHub had used Content-type and those are now all Content-Type with an uppercase T.
Reference: w3.org, section 14.17 Content-Type
FLUSH command support v2.099 12-Oct-2008
FLUSH command does NOT seem to be working. To be determined shortly.
SendFileIIS syntax changed. v2.099 22-Oct-2008
New: explicit parameters for mime type and for whether to delete the file after sending it.
Requires latest components AND latest runner.
New: AdminSessionNumber v2.099 2-Nov-2008
In the application-level config file, under Security, you can now specify an AdminSessionNumber. This is loaded into pWebApp.Security.AdminSessionID.
If a request uses this session number, it will be allowed to bypass the frontdoor and to come in from any ip number.
Use with care!
New Send Immediate methods v2.099
Any Send methods whose name ends in 'Imm' will send data to the output document immediately, without expansion of WebHub expressions.
SendFile improved v2.099 18-Nov-2008
If you use the INCLUDE command or SendFile in Delphi to transfer a file containing WebHub expressions, and the file is larger than 16k bytes, it will now expand correctly. In all older versions there was a chance that some commands would not expand.
Reference: support #00348, online help
SendFileSection renamed SendFileSectionImm and it no longer expands any WebHub expressions.
TwhMailForm port can be an integer value other than 25 v2.099
In previous versions using ZaphodsMap, the port was always set to 25, even if a different value was listed in the application-level configuration file.
SendWideString no longer required v2.099
Response.SendWideString is obsolete. To work with WideString data, use the Delphi 2009 compiler and use any of the many Send methods such as SendString.
If you are working with UTF8String data and D06 through D11, use any Send method. If you are working with UTF8String data and D12 (Delphi 2009), use the UTF8SendString method. This could occur if you are using a database engine which natively uses UTF8String instead of Unicode string.
pWebApp.SendPChar is obsolete v2.099
The method SendPChar on TwhRespondingApp is no longer available. The reason is that it involved too many transformations between string and pchar, and was poorly named.
Please consider using pWebApp.SendStringImm (fast, does no expansion), pWebApp.SendString (fast, does expansion), or pWebApp.Response.SendRawImm (fastest, uses a buffer of raw data, does no expansion).
pWebApp.Response.SendPChar is also obsolete.
Delphi 6 support will stop around 01-Jun-2009
In addition, WebHub for Delphi 2005 and 2006 is only available by special request. That leaves Delphi 7, Delphi 2007 and Delphi 2009 fully supported, plus partial support for Kylix 3.


Requires panel config file.
Previous versions of ZMAdmin had the configuration for the WebHub panel built into the EXE.
Now and going foward, ZMAdmin will load its WebHub panel configuration from a file. The filename is ZMAdminWebHubPanel.xml. For ZMAdmin v1.0.0.9, the configuration file must be located in the same folder as the EXE.
For ZMAdmin v1.0.0.10, the configuration file is loaded based on a Key2File which is created during the WebHub Runtime installation, which will point to WebHub\Config\ZMAdminWebHubPanel.xml.
The WebHub Runtime installer creates a shortcut under Start > Program Files > HREF Tools > WebHub > ZMAdmin. If you want to make your own shortcut, call ZMAdmin.exe "ZM Configuration" HREFTools\WebHub\cv004.
Supports full configuration of applications v2.099
ZMAdmin as shipped with WebHub v2.099 is able to help you configure the central WebHub configuration files plus the application-level config files.


No warning logged when WHTemp undefined. v2.098
The ?echo page displays the WHTemp folder name; do not log a warning even if WHTemp is not fully configured.
Compression with Microsoft IIS 6 and runisa.dll v2.098 24-Sep-2008
WebHub v2.098 is the first version to support the built-in compression feature of IIS 6.
Instructions for enabling compression in general: Enabling HTTP Compression in IIS 6.0, tips, authoritative summary for troubleshooting
Note for users of older runner: you should find that the output of the runner's ?echo command will compress, and that output from pages from your application will not compress. To resolve this, upgrade to the latest version of WebHub Runtime or contact technical support.
SendFileIIS support v2.099 11-Oct-2008
The combination of WebHub v2.098 apps and runner did NOT support SendFileIIS.
Resolved 11-Oct-2008 in v2.099.
Application handle (processid) support v2.099 12-Oct-2008
The v2.098 runner did NOT work when UseAppProcessID was True. IE7 showed problem most plainly.
Resolved 12-Oct-2008 in v2.099.
OnFrontDoorTriggered event syntax changed v2.099 2-Nov-2008
A pointer to the connection is passed using the correct type (TwhConnection).
The desired PageID is passed as a string. If you had custom code for trying to figure out the desired PageID, delete that and used the passed-in value.
There is an example handler in the whsample_DWSecurity.pas unit.
Slight change in TNativeXml v2.099 2-Nov-2008
Change ADoc.Utf8Encoded := True; to ADoc.ExternalEncoding := seUtf8;
Note: this is now the default encoding.
ThtStringStream.WriteWideString deprecated v2.099 17-Nov-2008
Please plan to use Delphi 2009 if you want to support WideString (unicode). The Send method will support Unicode data (not in v2.099 exactly but very soon).
The next version of WebHub will not include WriteWideString.
The same applies to WideLoadFromFile, WideSaveToFile.

Installation Program

WHTemp folder defined during installation v2.098
In HREFTools\cv004\ZMKeybox.xml, if WHTemp is not already defined, it is set to point to a folder named WHTemp under the data folder.
This folder is primarily for future use. It is required for in-house testing.

WebHub on Vista - Installation Notes

These notes also apply to installation of WebHub Runtime on Win2008.
  1. To set execute permissions on the scripts virtual directory, select the virtual directory in IIS7 and double click Handler Mappings. Then click Edit permissions, uncheck Read and check Execute. That should allow runisa.dll to execute.
  2. Install ISAPI extension/filter support. This is not installed by default when you install IIS7. Go into Control Panel > Programs and Features > Turn Windows Features On or Off. screenshot

FYI: Valid DTDs on w3.org
FYI: Valid DTDs on w3.org
Copyright © 2008 HREF Tools Corp. All Rights Reserved. TPACK and STREAMCATCHER are registered trademarks of HREF Tools Corp.