This is the README for Xbase++ 2.0

Attention:

  1. Xbase++ 1.9 and Xbase++ 2.0 preview users: please refer to section 6.1) for compatibility information.

1) Where to start

Simply run the Xbase++ Workbench from your Start menu to begin working with this release. The corresponding menu item can be located by selecting All Programs and Alaska Software Xbase++ 2.0, or by using the search option. The Workbench is your command center for developing with Xbase++, and contains all the features and tools required to build great desktop and web applications. The Workbench also provides access to the documentation and the examples included in this release.

2.1) Installation

To install Xbase++ perform a double-click on the Microsoft Installer package for your product. An installation wizard is started which guides you through the installation procedure. The exact name of the installation package varies depending on the build number and the language for which the product was packaged. Package names follow the following convention:

Xbase++ Professional Edition: xpp-prof.20-00-<build>.<language>.msi
Xbase++ Foundation Edition: xpp-foun.20-00-<build>.<language>.msi

The installer shipped with this release automatically detects and updates an existing Xbase++ 2.0 installation. User-specific files and settings will be kept by the update process. For example, your code templates in the Xbase++ Workbench will still exist after updating to the latest version. An Xbase++ installation can also be rolled back to an earlier Xbase++ 2.0 build in a similar fashion. Again, your files and settings will be preserved. Only version-dependent files such as the runtime DLLs will be changed during the rollback.

Note: Updating and rolling back versions is a capability which was introduced with the CPT4R4 installer. Earlier preview builds cannot be managed in this manner. If you have installed an earlier preview build, it must be uninstalled before installing this release. After uninstalling, please make sure that the program files were successfully removed by the installer. Any left-over files and directories in the folders c:\program files\alaska software (32-bit operating systems) and c:\program files (x86)\alaska software (64-bit operating systems) should be deleted prior to installation.

2.1.1) Product activation

Starting with Xbase++ 2.0 the development tools require activation. Currently, an activated product is required only for receiving updates. Future Xbase++ versions, however, may reject to perform a compile or link operation without proper activation. A fair use policy has been implemented which allows multiple activations on different machines as well as multiple activations on the same machine. Again: activation is only required for the development tools and not for the resulting end-user applications! No internet connection is required during normal operation. Internet access is only needed to perform an automated activation (which is optional).

Retrieving your product key

You can find your product key on the backside of the plastic card in your product box. The product key can also be retrieved online via our website. To do this, please log into your online account at www.alaska-software.com, then go to My Account->View Licenses.

Automatic activation

To automatically activate your Xbase++ product start the Xbase++ Workbench, then select the Help->License Manager menu item. Enter your product key. Click the "Activate" button when done. Your product will be activated automatically, which may take a few seconds. The only pre-requisite is an internet connection.

Manual activation

In the event you feel more comfortable performing the activation manually, you can do so with a web browser. Simply go to www.alaska-software.com/activate and fill in the information required for activation. You will need your product key as well as a your hardware identifier. The hardware id can be retrieved by typing

  asac /i [ENTER]

on the command line.

Once you have typed in the required information, click "Activate my product key now". You will be supplied with an activation key which is required to complete the procedure. This is a two-step process which must be performed on the command line:

  1. Set your product key by typing

    asac /p <product key> [ENTER]
  2. Activate your product with your activation key. Enter

    asac /m <activation key> [ENTER]

Activation status

You can check your activation status in the Xbase++ Workbench by selecting the Help->License Manager menu item. The information can also be retrieved by typing

  asac /s [ENTER]

on the command line.

Note: No personal information will be transferred by either activation method!

2.1.2) Automated updates

With Xbase++ 2.0 we are switching to a new update mechanism allowing us to deliver updates almost instantly to Xbase++ developers. To retrieve the list of available updates, install updates or to rollback to a previous version, please go to Help->Update Manager in the Xbase++ Workbench. Again: updates are only available if you have activated your installation. Updates do not affect your activation status, nor do they affect your personal Workbench settings.

2.1.3) Destination folder

Xbase++ is installed to two different locations on your harddrive. The Xbase++ Workbench, the Xbase++ development tools and other features are installed into the folder c:\program files\alaska software by default. On 64-bit operating systems, the destination folder is c:\program files (x86)\alaska software. Source files and examples are installed into the Documents folder of the current user.

2.1.4) Side-by-side installation

By default, both the Xbase++ runtime and the Workbench are installed in a way allowing you to begin development immediately. For this, the environment settings of the computer (eg. PATH, INCLUDE) are changed for the Xbase++ 2.0 development tools by the installer. If an older Xbase++ version is installed on the computer, existing environment values are overwritten.

If you want to continue using an older Xbase++ version alongside 2.0, a side-by-side installation must be performed. This allows developing applications using the new version while retaining your original environment used for legacy application maintenance. To do this, uncheck the "Environment Settings" option in the feature tree of the installer. This will leave the computer's environment settings unchanged, so that they keep the values used by the older Xbase++ version. This means by extension, that the Xbase++ 2.0 development tools can only be used from inside the Xbase++ Workbench. If you need to invoke the 2.0 Project Builder (pbuild.exe) from a command line (CMD), for example, use the command line provided in the Tools menu of the Workbench. This command line is set up as if the Xbase++ 2.0 environment was configured for the whole machine.

Note that the Xbase++ Workbench uses environment settings which can be configured in the IDE's Environment Options dialog. To change the environment used by the Workbench, select the menu item Tools -> Environment Options and then click on the Directories tab. This environment is used by all processes started from within the Xbase++ Workbench!

3) Requirements

It is recommended to install a PostgreSQL server in order to be able to use some of the features included in the Xbase++ Professional Edition. For developing web or connected mobile applications, a web server such as Microsoft Internet Information Server or Apache is required.

4.1) Internet Information Server (IIS) 7 or higher

In this section, you can find information about installing the IIS on the Windows operating system. Before you begin, please establish whether you are using a desktop or a server operating system. Vista, Windows 7 and later versions belong to the desktop operating systems group. Windows 2008 and later are server operating systems. The installation procedure differs sligthly between these groups and is outlined in individual sections below. Further information on IIS configuration and administration can be found on http://www.iis.net. Once the IIS web server is properly installed, the installation package will properly install the <CXP/> technology and will also apply proper configuration on the IIS web server for <CXP/> usage.

4.1.1) Vista and later

Open the Control Panel and select the item Programs. Under Programs and Features select Turn Windows features on or off. Then accomplish following steps. Please follow strictly the order below:

4.1.2) Windows 2008 and later

Open the Server Manager and scroll down to Roles Summary. Click Add Roles. Select the role Web Server (IIS) and click Next. Ensure that the role service CGI is selected which also enables the FastCGIModule. The role service CGI can be found on the following location: Click Close to complete the installation.

4.1.3) Verify IIS/Web Server installation

Open a web browser on your computer and navigate to http://localhost. The welcome page will be displayed if the web server was installed successfully.

5) Verify installation

  1. Development platform: open the Xbase++ Workbench via the Start menu and click on the menu item Tools -> CMD Shell. In the command line that opens, type XPPLOAD VERSION [ENTER]. Verify the major version numbers listed for the various runtime files match those of the installed product. All runtime files should have version 2.0 or later.
  2. <CXP/> infrastructure and IIS: Start a web browser and navigate to http://localhost/cxpinfo.cxp. The <CXP/> info page will be displayed if <CXP/> was installed successfully.
  3. PostgreSQL server: Use the PgAdmin administration utility to verify you can connect to the PostgreSQL server. To do this, run PgAgmin and right-click on your server in the tree view. In the context menu which opens, click Connect. Specify the credentials of the Postgres administrator user (usually postgres) and click Ok. Verify that the server state changes to “connected”.

6.1) Comments for Xbase++ 1.9 and Xbase++ 2.0 preview users

6.1.1) Support for projects with targets in multiple directories

Beginning with Xbase++ version 2.0, complex project scenarios involving targets located in different directories are fully supported. This required changes in the way the targets and the source files included in a project are handled by the project builder pbuild. Consequently, you should verify your .xpj files for semantical correctness if your projects are laid out in the manner described.

Performing the following steps is not required for projects whose targets reside in the same folder as the project file (xpj)!

In previous versions, the location of the targets and the source files was specified relative to the folder which contained the project file. This approach had serious side-effects which basically made managing multi-target/multi-directory projects impossible. Beginning with this version, the location of the source files is specified relative to the corresponding target in the project file. This means that your existing projects may have to be modified before they can be used with this version.

This section explains the steps required to adapt your projects so that they can be used with the new Xbase++ version.

  1. If you plan to use your project concurrently with an older Xbase++ version, create a copy of the file for usage with the older version.
  2. Adapt the path of the source files in the project file

    The following example shows an old-style project file with two targets, an executable (app.exe) and a DLL (helper.dll) which is located in a sub-folder:

    [PROJECT]
        Project.xpj

    [Project.xpj]
        app.exe
        sub\helper.dll

    [app.exe]
        main.prg
        common.prg
        usual.ch

    [sub\helper.dll]
        sub\dllmain.prg
        sub\resources.arc
        sub\special.ch
        common.prg

    Because source files are now specified relative to the target, the relative path sub\(file) now expands to a folder which does not exist (sub\sub\(file)). Furthermore, assuming the DLL and the .exe target are built using the same source file common.prg, this source file must be prefixed with "..\" for the DLL target. This instructs the project builder to use the file in the target's parent directory. The required modifications are highlighted in the following example:

    [PROJECT]
        Project.xpj

    [Project.xpj]
        app.exe
        sub\helper.dll

    [app.exe]
        main.prg
        common.prg
        usual.ch

    [sub\helper.dll]
        dllmain.prg
        resources.arc
        special.ch
        ..\common.prg
     
  3. Use the new TARGET_DIR define to specify where a target shall be placed.

    In previous versions, the project target location was used as some kind of deployment location to have all EXEs and DLLs of an Xbase++ project deployed at a single location which holds data files and other auxiliary files. With Xbase++ 2.0 the project target and the project binaries target location can be different. The benefit of this approach is that no intermediate files are created at the binary target location. Furthermore different targets can have source files with the same name without conflict. With previous versions, having different targets with identical prg/ch/arc filenames broke the dependency management of the Xbase++ Project builder. As a workaround “pbuild –a” was used, leading to unnecessary large build cycles.

    The following example shows an old-style project file with the target app.exe that shall be created in the folder ..\bin:

    [PROJECT]
        Project.xpj

    [Project.xpj]
        ..\bin\app.exe

    [..\bin\app.exe]
        app.prg
        src\util.prg

    To migrate an old-style Xbase++ project to a 2.0 project file simple remove the folder ..\bin from your project as well as project target node. Then add a TARGET_DIR definition to each of your project targets and specify the project target binary location using TARGET_DIR=..\bin

    [PROJECT]
        Project.xpj

    [Project.xpj]
        app.exe

    [app.exe]
        TARGET_DIR = ..\bin
        app.prg
        src\util.prg

6.1.2) Changes in Layout Manager defines

The define constants supported by the Layout Manager class have been renamed for consistency. If you have already used any of the define constants with one of the preview builds, these defines must be renamed in your code. Otherwise, compile or runtime errors will result. The following table lists the changes applied in this build:

 Old constant: New constant:
 XBP_NOEDGE=>XBPLAYOUT_NONE
 XBP_LEFTEDGE=>XBPLAYOUT_LEFT
 XBP_TOPEDGE=>XBPLAYOUT_TOP
 XBP_RIGHTEDGE=>XBPLAYOUT_RIGHT
 XBP_BOTTOMEDGE=>XBPLAYOUT_BOTTOM
 XBP_RELXPOS=>XBPLAYOUT_RELLEFT
 XBP_RELYPOS=>XBPLAYOUT_RELBOTTOM
 XBP_RELWIDTH=>XBPLAYOUT_RELWIDTH
 XBP_RELHEIGHT=>XBPLAYOUT_RELHEIGHT
 XBP_XCENTER=>XBPLAYOUT_CENTERX
 XBP_YCENTER=>XBPLAYOUT_CENTERY

Instead of renaming each occurance of the layout manager define constants, the following #define directives may be used to map the old constants to their new counterparts:

 #ifndef XBP_LEFTEDGE
 #define XBP_NOEDGE XBPLAYOUT_NONE
 #define XBP_LEFTEDGE XBPLAYOUT_LEFT
 #define XBP_TOPEDGE XBPLAYOUT_TOP
 #define XBP_RIGHTEDGE XBPLAYOUT_RIGHT
 #define XBP_BOTTOMEDGE XBPLAYOUT_BOTTOM
 #define XBP_RELXPOS XBPLAYOUT_RELLEFT
 #define XBP_RELYPOS XBPLAYOUT_RELBOTTOM
 #define XBP_RELWIDTH XBPLAYOUT_RELWIDTH
 #define XBP_RELHEIGHT XBPLAYOUT_RELHEIGHT
 #define XBP_XCENTER (XBPLAYOUT_CENTERX-XBPLAYOUT_RELLEFT)
 #define XBP_YCENTER (XBPLAYOUT_CENTERY-XBPLAYOUT_RELBOTTOM
 #endif

6.1.3) Socket Layer of ASINET Library

With Xbase++ 2.0 the socket layer is a part of the Xbase++ base product. Previously, the socket layer had been contained in the ASInet add-on library, and had to be included into the project via the asinet1c.lib link library. This file is now obsolete and is no longer installed with ASInet. Consequently, the following error will now be raised by the linker if the asinet1c.lib is requested in a project:

ALINK: fatal error ALK4001: cannot open file "asinet1c.lib"

In order to overcome this problem, all references to asinet1c.lib need to be removed from both the source file and from the project file (xpj).

6.1.4) XbpBrowse() navigation mode

A new navigation mode (XBPBRW_NAVIGATION_SYSTEM) was added to the XbpBrowse class. In this mode, the position of the browse cursor does not change when operating the vertical scroll bar of the browse. Instead, the browse cursor retains its current position in the data source and hence may be scrolled off-screen. The new mode implements platform-compatible behavior and is the default navigation mode used by XbpBrowse objects. See the :navigationMode instance variable for further information.

The default value of the :softTrack instance variable of the XbpBrowse class has been changed to .F.. This causes XbpBrowse objects to continuously update their display when the data area is scrolled using the horizontal or vertical scroll bars. In previous Xbase++ versions, the browser display was only stabilized at the end of a scroll operation, i.e. when the scroll bar's thumb was released. The new default value implements platform-compatible behavior and also is consistent with the behavior of the XbpQuickBrowse class.

The default value of the XbpBrowse:cursorMode member variable was changed to XBPBRW_CURSOR_ROW. The new default value better reflects the requirements in most use-cases, and also is consistent with the XbpQuickBrowse class.

6.1.5) XbpSlider, XbpProgressBar, XbpSortedQuickBrowse deprecated

The following Xbase Part classes have been deprecated and are no longer shipped with the product:

All of these Version 1.9 Xbase Part classes were shipped including source code and just need to be recompiled in order to become useable with Xbase++ 2.0. Please use the source code which originally came with your 1.9 product.

6.1.6) XbpSplitBar, XbpDatePicker, XbpMonthView

These Xbase Part classes have been made a part of the Xbase++ 2.0 Foundation product and the original implementation of these classes can be removed from your projects. The classes were originally shipped as XBPSPLIT.ZIP and XBPDPICK.ZIP.

7) News Groups

A number of Xbase++ related news groups are hosted by Alaska Software. These news groups provide access to a tremendous amount of technical know-how and experience that is shared between Xbase++ users world-wide.

In order to protect the news groups from spam, posting messages is restricted to Xbase++ users only. Please use the login information associated with your Alaska Software customer account when connecting to the news server.

The Alaska Software news server address is:

nntp://news.alaska-software.com
http://news.alaska-software.com

8) Technical support

Technical support is available to you once you have activated your product. As an customer, you are entitled to receive technical support free of charge for a one year period after your product purchase. Updates and new versions are also available free of charge for that period. You can renew the 12 month period with one of your subscription offerings. Alaska Software also offers extended support services (problem resolution support) through its subscription services.

Please use the following e-mail address for contacting Alaska Technical Support:
support@alaska-software.com

Should you encounter problems with the installation routine, please attach the installer log to your support email. To obtain the log file, run the installer from the command line using the following parameters. Please replace <installationpackage> with the name of the installation package:

msiexec /i <installationpackage>.msi /L*V install.log

9) How to contact Alaska Software

10) Trademarks

Xbase++, Xbase++ Workbench, Arctica, <CXP/> and the <CXP:xxx/> namespace logotype are trademarks or registered trademarks of Alaska Software.

Visual FoxPro, Windows Vista, Windows 7, Windows Server 2008, Windows 8, Windows Server 2012, IIS7 and ASP are trademarks or registered trademarks of Microsoft Corporation.

All other trademarks are trademarks or registered trademarks of the respective companies.

With best regards,
Your Xbase++ Team...