                       DKREADME.TXT
**********************************************************
  Release Notes for Microsoft(R) FoxPro(R) for MS-DOS(R)

                    Distribution Kit

                      Version 2.5

    (C)1993 Microsoft Corporation. All Rights Reserved.

This Distribution Kit corresponds to the FoxPro 2.5
product version. You can confirm that this product and
your FoxPro development product match by typing
? vers() in the command window of your FoxPro product. 
If "FoxPro 2.5" is returned, then everything matches
and you can start development.  If something else is
returned, e.g. "FoxPro 2.0" or "FoxPro 2.5a", then
contact Microsoft Product Support Services to determine
what you need to update.
**********************************************************
========
CONTENTS
========

Part   Description
----   -----------

1      Knowledge Base Articles

2      Changes to Documentation Since Printing

3      Answers to Commonly Asked Questions

4      Error Messages

================================
Part 1:  Knowledge Base Articles
================================

If you installed the Knowledge Base articles, you can
view them by choosing "Run Application" and then choose
KBVIEW.APP.  These articles contain useful information
about a variety of FoxPro topics.
----------------------------------------------------------

================================================
Part 2:  Changes to Documentation Since Printing
================================================

Chapter 1, page 2:  The first bulleted item should read:

"The Distribution Kit files, in both 5.25-inch and
3.5-inch disk formats."
----------------------------------------------------------

Chapter 2, page 10, under "Available Runtime Menus and Menu
Options," the File menu item should read:

File menu: Close, Save, Save As and Revert
----------------------------------------------------------

Chapter 2, page 11, under "Features Not Available in
Distributed Applications," add the following section below
the "Menus" section:

Menu Pads

The following FoxPro menu pads aren't available in the
applications you distribute.

SYSTEM Menu:  Macros..., Filer
  FILE Menu:  New..., Open..., Printer setup...,
              Print..., Quit
WINDOW Menu:  Color..., Command, Debug, Trace, View
----------------------------------------------------------
The file names for files with extension .ESL or .ESO now
include a 'D' to indicate an MS-DOS file and '25' to
indicate a Version 2.5 file.  For example:

FOXPRO.ESL is now FOXD2500.ESL
FOXPRO.ESO is now FOXD2500.ESO
FOXPROX.ESL is now FOXDX250.ESL

The new file names impact the following pages in the
Distribution Kit User's Guide:

Chapter 1, page 5, the Distribution Kit Files table.

Chapter 3, page 22, change the last sentence to read:

"The .EXE Support Library consists of three files:
FOXD2500.ESL, the standard .EXE Support Library
FOXD2500.ESO, and the 32-bit Extended .EXE Support
Library FOXDX250.ESL."

Chapter 5, page 32, the table called Files Required on
Distribution Disks Based on Type of Application has
these changes: 

In the "You must also distribute these files" column,
substitute the .ESL and .ESO file names with the new
File names.
----------------------------------------------------------

Chapter 2, page 15, under the heading "Help in a Project"
add the following information:

"If your help files are included in your project but
marked as excluded, you must distribute the .DBF and .FPT
files with your application. These files can be changed by
the user. If you don't want your users to have the ability
to change the contents of your help files, include them in
your project, but don't mark them as excluded."
----------------------------------------------------------

Chapter 5, page 33, the Files Your Application May
Require table should include DRIVER2.PLB as a file your
application may require.  This file contains printer 
drivers.  You must distribute this file if your
application requires printer drivers.
----------------------------------------------------------
============================================
Part 3:  Answers to Commonly Asked Questions
============================================

*License Agreement*

Question 1

Our organization includes several FoxPro developers.
Does each developer need an individual copy of the
Distribution Kit?

Answer 1

Your organization must own one licensed copy of the
Distribution Kit per developer, for each developer
creating applications for distribution. If five
developers in your organization create applications for
distribution, you must own five licensed copies of the
Distribution Kit.
----------------------------------------------------------

Question 2

What type of applications (single-user, multi-user) can
be built with the Distribution Kit?

Answer 2

You can build all types of applications (single-user,
multi-user) with the Distribution Kit.  While FoxPro
version 2.0 required separate license agreements for
single-user, multi-user, and so forth, FoxPro version
2.5 no longer makes these distinctions.  However, as
mentioned in Answer 1, in order to be legal, you must
own one licensed copy of the FoxPro 2.5 MS-DOS
Distribution Kit for each developer creating FoxPro
2.5 for MS-DOS applications for distribution.
----------------------------------------------------------

Question 3

I have a question regarding the legal requirements for
reselling applications developed with FoxPro.  Let's say
that, as a FoxPro developer, I write a program for
Client A.  I compile the program as a compact .EXE file
and give the application to Client A, together with the
*.ES? Library files with which to run the application.
Client A owns the application and the copyright.  Client
A then sells the application commercially to many other
people.

Question 3.1

Does Client A also have to purchase the Distribution Kit,
even though Client A will never use the Distribution Kit
themselves?

Answer 3.1

No, Client A does not need to purchase the Distribution
Kit. Only the developer who uses the Distribution Kit to
build the original .EXE file must own a licensed copy of
the Distribution Kit.

Question 3.2 

Does Client A have to purchase the FoxPro 2.5 development
system?

Answer 3.2

Client A does not have to purchase FoxPro 2.5 because
the client is not building their own .EXE; Client A is
just reseller.  Client A must distribute the application
in its original form, however, and cannot remove the
runtime files to include the application with another
application. 

Question 3.3 

Does the above also apply to stand-alone .EXE files?

Answer 3.3

Yes.
----------------------------------------------------------

*Installation*

Question 1

Why is Build Executable dimmed after I install the Distribution
Kit?

Answer 1

Two possible reasons: First, is the Distribution Kit must
be installed in your FoxPro directory. Ensure that the
FoxPro files are not marked as read-only before installing
the Distribution Kit. Second, the project does not include
a SET MAIN program. Select the main menu or program, then
choose Main from the Project menu.
----------------------------------------------------------

*Building a Stand-Alone .EXE*

Question 1

When I compile an .EXE file, the process stops with a
"Cannot Open File" error message that refers to a
Distribution Kit program file.  When I grant all access
rights (except for delete) to the program directory, the
program compiles.  However, the compilation process
leaves several files in the program directory with names
like WLK02112.--A, WLK02112.--B, WLK02112.--C, and so on.
What are these files?

Answer 1

Compiling program files in the FoxPro Distribution Kit
places temporary files in the directory from which you
start FoxPro. The TMPFILES statement in the CONFIG.FP
file does not affect file placement.

Include the full path to the network drive and directory
where the FoxPro development and distribution programs
are installed. Start FoxPro from a user directory
that has all rights, including erase or delete rights,
assigned to it.  The process of compiling using the
Distribution Kit creates files in and deletes files from
the user directory. The system administrator can designate
the program directory read only.
----------------------------------------------------------

*Runtime Issues*

Question 1

I have created an application that does not allow me to
edit my table/.DBF files. How can I correct this problem?

Answer 1

Mark your table/.DBF as excluded in the project, then
rebuild your application. You must distribute these files
to your end users. Including the table/.DBF in the project
automatically makes these files read only.
----------------------------------------------------------
Question 2

When I launch my .EXE using a loader, in what order will
the loader search for the .ESL Support Library files?

Answer 2

The loaders look for the ESL files starting in the .EXE's
directory, then in the current working directory and
finally, down the operating system's path.
----------------------------------------------------------
Question 3

How do you instruct an MS-DOS .FXP, .APP or compact .EXE 
file to run in extended mode from within Windows?

Answer 3

An .FXP, .APP or .EXE file will run in standard mode when 
run from within Windows, even though there is enough 
memory for the extended mode Support Library to run.  To 
force use of the Extended Support Library from within 
Windows, you can use the +X loader switch to launch your 
application.
----------------------------------------------------------                      
=======================
Part 4:  Error Messages
=======================

Message: "Feature Not Available"

Question 1

My executable file runs correctly in the development
version of FoxPro, but I receive the error message
"Feature Not Available" when running the stand-alone
application. How can I correct this problem?

Answer 1.1

You will get the "Feature not available" error message
when you use commands, features, and menus that require
the developmental version of FoxPro. Three specific 
instances are listed below. You can also refer to the
"Features Not Available in Distributed Applications" 
list in the FoxPro Distribution Kit User's Guide.

- When using commands that require the execution and
  compilation of source code. These commands require
  the development version of FoxPro and therefore are
  not available in a distributed .APP or .EXE file.
  Examples of these types of commands are BUILD APP,
  BUILD EXE, BUILD PROJECT, COMPILE, FILER, 
  CREATE/MODIFY MENU, CREATE/MODIFY QUERY,
  CREATE/MODIFY SCREEN, SET VIEW ON, and SUSPEND.

- When using features specific to the interactive
  development environment of FoxPro, such as the Trace,
  Debug, Command, and View windows.

- When using FoxPro menu options available only in the
  development version. For the reasons mentioned above,
  many of the original FoxPro menu options are not
  available for distribution.  In addition, since there
  is no Command window in applications compiled using
  the Distribution Kit, any menu option whose command
  is echoed to the Command window is not available.
  The list of menu items that ARE available in a
  distributed .FXP, .APP, OR .EXE files can be found in
  the section "Available Runtime Menus and Menu Options"
  in Chapter 2 of the FoxPro Distribution Kit User's
  Guide.

Answer 1.2

You will get the "Feature not available" error message
when using commands containing macro substitution in
a stand-alone .EXE file. When you compile a stand-alone
.EXE file, the compiler includes only the code necessary
to run the commands explicitly included in the
application.  If there is macro substitution anywhere
in a line of code, that entire line is skipped, since
FoxPro does not explicitly "see" the command referenced
by the macro-substituted variable. The result is that
the code to execute the substituted command is not built
into the .EXE file.

The following examples illustrate two methods for
ensuring that macro-substituted commands are included
in your compiled .EXE file:

Example 1

As a developer you might want to allow the user to
choose either reports or labels by storing the choice
"report" or "label" in a memory variable called
m.output. You could then store the file name in the
memory variable m.filename.  You would include the
following command to run the report or labels in your
application:

&output FORM &filename TO PRINT NOCONSOLE

The Distribution Kit compiler will successfully create
a stand-alone .EXE file with this code. However, when
FoxPro attempts to execute the command, you will get a
"Feature Not Available" runtime error because the code
for the REPORT FORM and the LABEL FORM commands is not
included in the .EXE file. To avoid this problem,
include the following If statement at the beginning of
your application:

  IF .F.
    REPORT FORM dummy
    LABEL FORM dummy
  ENDIF

The file names do not have to exist.  The IF .F.
guarantees the code will never be executed. You are
simply making these commands visible to the compiler.

Example 2

This code example illustrates the use of macro
substitution for the PACK command. Because the code
does not explicitly issue the PACK command, FoxPro does
not include the required code in the stand-alone .EXE
file. An attempt to run the PACK command from the macro
substitution fails.

testcom="pack"
&testcom

To address this situation, create another procedure,
such as the following, and include it in the project.

procedure addon
pack
return
----------------------------------------------------------

Message: "Dynamic memory exhausted"

Question 1

What is the cause and solution for a "Dynamic memory
exhausted" error message when compiling a stand-alone
.EXE file?

Answer 1

This error message is sent by the WATCOM linker, which
is one of the tools in the FoxPro Distribution Kit used
to create a stand-alone application.  The message is
displayed when the amount of available conventional
memory is too low.  The WATCOM linker (WLINK8.EXE) uses
only conventional memory.

If the CONFIG.FP file contains the DOSMEM=ON statement,
edit the file to remove the statement. If the CONFIG.FP
file does not contain a DOSMEM statement, edit the
AUTOEXEC.BAT and CONFIG.SYS files to remove unnecessary
device drivers and memory-resident applications to
maximize available conventional memory.
----------------------------------------------------------

Message: "Link command failed"

Question 1

When I attempt to build an executable file, I receive the
error message "Link command failed."  How can I correct
this problem?

Answer 1

If you receive this error message, check the following
items:

a. Make sure that enough conventional memory is available.
   Modify the CONFIG.SYS and AUTOEXEC.BAT files to free
   conventional memory.

b. Make sure that enough disk space is available.

c. Increase the number of file handles available to
   Microsoft FoxPro for MS-DOS.  To do this, you can
   modify the FILES statement in the CONFIG.SYS file to
   increase the number of available files. In the Novell
   NetWare environment, modify the FILE HANDLES
   statement in the SHELL.CFG file to increase the number
   of available files.

d. If the AUTOEXEC.BAT file loads the SHARE utility,
   increase the values specified by the /F and /L 
   parameters. For example:

   SHARE /F:5120 /L:500

e. Make sure that FoxPro can find your COMMAND.COM file.
   Modify the SHELL statement in the CONFIG.SYS file to
   specify the /P (permanent) option switch.  Be sure
   SHELL= or COMSPEC= is set for the proper path to
   COMMAND.COM.

f. Make sure that the following files are in a directory
   listed in the MS-DOS PATH environment variable in the
   AUTOEXEC.BAT file:

   WLINK8.EXE and FOXSWAP.COM.

g. If you are running the Extended Version of FoxPro,
   remove the DOSMEM=ON statement (if it is present) from
   the CONFIG.FP file.

                    *******************
                    END OF DKREADME.TXT
                    *******************

