API PRO 9 Client Server Management
API PRO 9 Client Server Management
Client Server
Management
CSM or Client Server Management handles common tasks for keeping the API PRO
application updated – including:
• Install product updates like fix-packages, custom-packages or new service packs.
• Produce MSI-packages for easy setup of clients.
• Avoid the use of a file-share between the AppServer and clients.
• Ensure the local image of the application is up-to-date.
In order for Client Server Management tool to work, some of the setup files need to be
configured on the AppServer. From API PRO 8.00.00 SP00E this can be done using the
Editor of the Client Server Management-program found in the System menu:
The setup files can be edited directly at the AppServer too, and they are all placed in the
CSM/-directory next to XCODE/ and WORK/:
Steps 1 to 5 below deals with the AppServer setup, and steps 6 to 8 helps configure the
setup to be installed on the client machines.
Note: Text after a semicolon (;) in .ini-files is ignored and can be used for comments.
Section Startup:
• Set DLC or inherit value from the system environment.
Note: Text after a hashtag (#) in .pf-files is ignored and can be used for comments.
• Add option -ld api3 if the name of the database is something different from
api3.
• If option -T is used, then make sure the directory exists.
• Option –cpcoll should match the setup of the database:
Default value is: ICU-UCA.
• Option –inp should be set to no less than 64000 for Progress 10.2B06 and newer.
• Option -nocandodomain should be included for OpenEdge 11.6 and newer.
• If an option like -p has more than one assignment the last one will be used.
Tip: Use a direct database connection if possible as this will allow the AppServer to be
offline while deploying business critical changes to the system.
Note: If this file is missing, then CSM/batch.pf will be used. Using this approach
requires a full Progress / OpenEdge license for the system compile to work.
Using the Progress option -rx and the special compile program csm/compile.p allows
a run-time license to do the compile of Xcoded source. The other listed options are
described in the section: Create or modify CSM/batch.pf.
Using nested .pf-files the setup can be inherited from CSM/batch.pf directly:
-pf C:\APISERVER\APITEST9\CSM\batch.pf
-rx # Enable compile of xcode
-p csm/compile.p # Startup Program
All programs will be compiled and will together with the other files (help-files, crystal
report setups...) be recorded, so future changes to the WORK/-directory of the AppServer
will be found and optionally forwarded to the clients at next login.
Until this step has been successfully completed, clients will get a full client image at every
login.
Important note: If the application cannot be accessed from the AppServer (due to
restrictions or missing packages like CodeJock) the CSM/check.cmd script can be used
just after SETUP/compile.cmd to record the new status of the application.
Tip: It is recommended to use a DNS-entry for the AppServer, as this configuration could
make future changes to the network setup much easier to add.
Sections to update:
Startup:
• Remove DLC
• Set NoSplash=yes
• OldBrowseSelectionBar=yes could be included for OpenEdge 11.5 and
newer.
API PRO:
• Remove LOGIN-USER-ID
• Remove HIDE-SAVE-LOGIN
• Set AppServer settings and CodeJockVersion
By default, client.ini is considered to be a private file, which will not get updates from
the AppServer. However fix A15969 (see: Enhancements and related fix-packages) allows
a shared setup after a few modifications using the Editor:
• Copy CSM/client.ini to WORK/csm/common.ini if this file is missing.
• Copy WORK/client.cmd to CSM/client.cmd if this file is missing.
• Change CSM/client.cmd from:
-ininame client.ini
to:
-ininame csm/common.ini
Note: Any personalization, like the user id for “Remember me” or which CodeJock version
to use, will be overwritten.
7. Create CSM/client.pf
WORK/client.pf will be used as a template for CSM/client.pf, but if some changes
should be made for the CSM-clients this file should be used.
...
-cpcoll ICU-UCA # Default utf-8 linguistic collation
-nocandodomain # Restore CAN-DO() functionality
# -debugalert # Enable ABL stack trace
-mc # Compression
-p csm/client.p # Startup Program
...
Note: Text after a hashtag (#) in .pf-files is ignored and can be used for comments. In the
example shown above –mc is set and -debugalert is NOT set.
By default, client.pf just like client.ini is treaded as a private file which will not
get updates from the AppServer, but fix A15969 (see: Enhancements and related fix-
packages) allows for a shared setup after a few modifications using the Editor:
• Copy CSM/client.pf or WORK/client.pf to WORK/csm/common.pf
if this file is missing.
• Change CSM/client.pf to read from the common setup using a nested-pf:
-pf csm/common.pf
Now this part of the configuration will be managed by the AppServer. Optional changes to
WORK/csm/common.pf are made using the Editor and when done, a Check will make a
change-log for the clients.
Note: If an option like -lng has more than one assignment, then the last one will be used.
This allows for some level of personalization as the client could have control of which
language to use as well as the language option of the Initiator assigns to CSM/client.pf
and not to WORK/csm/common.pf.
If the build is being processed by the server, the dialog will be auto-updated every 2
seconds showing the status in the 3 boxes which match the 3 major steps in the CSM-
workflow.
Load
Box showing the status of the load process (1 of 3 steps):
(green) All files have been loaded at the build-area at the server.
(yellow) Files are being loaded.
(red) The package couldn’t be loaded.
Compile
Box showing the status of the compile process (2 of 3 steps):
(green) All programs have been compiled in the build-area at the AppServer.
(yellow) Compile not finished.
(red) An error occurred during the compilation.
Fix A16987 (see: Enhancements and related fix-packages) enable Compile log to be
triggered by a mouse-click in this box.
Deploy
Box showing the status of the deploy process (3 of 3 steps):
(green) The build has been deployed at the AppServer.
(yellow) Awaiting deployment.
(red) An error occurred during the deployment.
Fix A16987 (see: Enhancements and related fix-packages) enable Change log to be
triggered by a mouse-click in this box.
If the package is accepted the Load will start by creating a new build at the AppServer.
Then the files are uploaded from the client to the server without the need for a file-share.
The different ways of loading packages on this first Simple-tab, will all automatically
trigger the two next steps Compile and Deploy of the build.
Unlike the deploy buttons found at the Simple-tab, the next steps of the CSM-work-flow are
not triggered automatically.
Load package
The standard “open-file-dialog” appears with relevant filters.
Besides zip-archives, progress-libraries may be used.
Loading an archive or library will unpack the files to a temporary directory at the client and
then Load begins.
Recompile
Create a new empty build and mark it for a total compile.
This function can be used when changes are made to the translations setup.
Import directory
Import a directory-structure to a new build.
Description
Show the description of the build having focus in the browser.
Compile build
Second step of the work-flow: Compile the build having focus in the browser.
A new batch-process is started at the AppServer.
Locked build can’t be compiled.
The process is documented in detail in the section: Compile.
Check
Do a manual check of the WORK/ and make a change-log if any changes are found,
including deletion of files. This function is part of the Deploy-phase.
Delete
Note: Fix A16959 (see: Enhancements and related fix-packages) or newer are required.
All selected builds (including related backups) and change-logs will be deleted in one
operation. Locked builds will be unlocked.
As an alternative to free up disk space, but keep the chronology of change-logs, old builds
can be unlocked and deleted.
Note: “WiX Toolset” found at: http://wixtoolset.org/ is required for making MSI-packages
and should be installed at the client running this setup.
Version 3.7, 3.8, 3.9, 3.10 & 3.11 of WiX have all been tested successfully.
System name
Default for title
Version
This value will follow the package even if the files are exported using the Initiator-option
and loaded and edited by another system running a different version of API PRO.
MSI-versions are numeric and values will be translated: 7.0.06 to 7.0.6.0,
8.0.00E to 8.0.0.5, 9.0.00 to 9.0.0.0 and 9.0.00B to 9.0.0.2.
License code
Default for installation directory, and part of a unique key for the package.
System/License
License code.
Version
MSI-versions are numeric and this field is not enabled by default.
Title
Used for the desktop shortcut, start-up menu, and control panel entry.
Note: Fix-pack A13806 (See: Enhancements and related fix-packages) or newer are
required.
The setup is stored in the API PRO section of the .ini-file using the environment key:
AppServer-URL – see: Client configuration.
AppServer Host
Name of host, running the Name-server which provides the connection to the AppServer.
Sample value: workshop.apipro.com
The setup is stored in the API PRO section of the .ini-file using the environment key:
AppServer-Host – see: Client configuration.
AppServer Port
Port for Name-server on AppServer Host.
Progress default: 5162.
The setup is stored in the API PRO section of the .ini-file using the environment key:
AppServer-Port – see: Client configuration.
AppServer Name
Name of AppServer service.
Sample value: dkk004-apitest9
Note: This value is case-sensitive and typically assigned the same value as the name of the
AppServer, but this could be changed using Application service names:
The setup is stored in the API PRO section of the .ini-file using the environment key:
AppServer-Name – see: Client configuration.
Choose between:
• Default
Before the installation is removed the user has a chance to save local changes:
Answering:
Yes: Triggers the Export files (Client functions) option.
No: Proceed with the reinstallation and then a normal update.
Cancel: Leave the system. Next start-up will give the same dialog.
• Ignore request
Skip the reinstallation completly and proceed to a normal update.
• Show warning and enter
The dialog changes into a warning.
Answering:
OK: Skip the reinstallation and proceed with a normal update.
Cancel: Leave the system. Next start-up will give the same dialog.
• Reinstall silently
No dialog shows up.
Answering:
OK: Proceed with the reinstallation and then a normal update.
Cancel: Leave the system. Next start-up will give the same dialog.
The setup is stored in the API PRO section of the .ini-file using the environment key:
CSM-REINSTALL-METHOD – see: Client configuration.
Programs have a MD5-value, which is used for tracking any change to the context.
Other data-files will only be compared looking at the file-size, since time-stamps are not re-
assigned after downloads.
Choose between:
• Default
Get a list of the changed files from last visit, or a complete list if the documentation
is missing.
This is the fast option which downloads changed client-programs (MD5-changed
and no database access). Other data-files are downloaded.
• Check all files
Get a complete list of programs and other data-files.
Client-programs will be downloaded if changed (MD5-changed and no database
access). Other data-files are downloaded, but if the server havn’t changed since last
visit only files with changed file-size will be updated.
Matches the LoadClient-command – see: Command line interface.
The setup is stored in the API PRO section of the .ini-file using the environment key:
CSM-CHECK-METHOD – see: Client configuration.
Updating some files, like a .pf-file currently used by the client, require a restart before
changes are utilized and will normally issue this dialog after the update has completed:
The setup is stored in the API PRO section of the .ini-file using the environment key:
CSM-RESTART-NOTIFICATION – see: Client configuration.
The setup is stored in the APIPRO section of the .ini-file using the environment key:
CSM-REJECT-ACCESS – see: Client configuration.
Note: Fix A14611 (see: Enhancements and related fix-packages) or newer are required.
Can be useful for shared installations where the same instance of an .ini-file is used by
different users.
The setup is stored in the APIPRO section of the .ini-file using the environment key:
HIDE-SAVE-LOGIN – see: Client configuration.
Update ini-file
The AppServer values are written to the .ini-file (section: API PRO).
Other configuration-parameters are always updated.
Language
The default language when API PRO starts.
Update pf-file
The language value is written to the .pf-file.
“noconnect” file
File to launch in the default-viewer if connection to the AppServer fails.
Current setup
The location of the current workspace.
Note: The version of the package will not be changed, but keep the original value from
where the package was exported.
Generate
Choose a filename for the MSI-package.
If a named workspace is active, this will be updated.
Two utilities: candle.exe and light.exe of the “WiX Toolset” have to be located the
first time the client is used for making packages.
The setup will be saved in the current .ini-file under the API PRO-section:
...
[API PRO]
...
candle-command=C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe
light-command=C:\Program Files (x86)\WiX Toolset v3.11\bin\light.exe
...
Note: If this setup is wrong – just delete the two lines from the .ini-file and point to the
right locations next time the function is used.
and:
light.exe client.wixobj -ext WixUIExtension -ext WixUtilExtension -spdb -
out client.msi -sw1076
Save setup
If a named workspace is active, this will be updated otherwise the default temporary
workspace will be changed to the folder chosen.
Subsequent Generate and Save setup will update the same workspace.
Update setup
The entered values and initiator-files are stored at the AppServer.
The entered values of the connection parameters for the AppServer AppServer Url or
AppServer Host, AppServer Port and AppServer Name are used and the result displayed
like:
The files used for the package (from the file-system at the AppServer) are:
Filename Description
CSM/banner.bmp Optional image.
CSM/client.cmd Client start-up script.
Should this file be missing the standard
WORK/client.cmd will be used.
CSM/client.ico Icon for desktop-shortcut and menu-item in the start-up
folder.
Should this file be missing the standard
WORK/image/apipro.ico or
WORK/image/api7.ico (for API PRO v7) will be used.
CSM/client.ini Client configuration including AppServer connection
parameters.
Should this file be missing WORK/apipro.ini will be
used.
CSM/client.pf Client configuration including language setup.
Should this file be missing the standard WORK/client.pf
will be used.
CSM/dialog.bmp Optional image.
Size should be: 493x312 pixels.
Sample:
Note: Fix A15341 (see: Enhancements and related fix-packages) or newer are required.
The selected file is loaded from the active AppServer and a set of options can be used to
change the content or delete the file.
A selection of files related to CSM is listed, regardless if the file currently exists or not.
The purpose of each of the listed files is described in the section: AppServer file-system.
Unless Fix A18378 (see: Enhancements and related fix-packages) is included, only files not
exeeding 30Kb can be edited – trying to load larger files will result in an error:
(Editor)
Text-box with the content of the selected file and a drop-zone accepting local text-files.
Load locally
Load content from a local file at the client.
Save locally
Save content to a local file at the client.
Save remotely
Save content to the file at the AppServer.
Consider doing a Check when all changes have been made. A Check is not done
automatically allowing this editor to be used for initial configuration of CSM.
Delete remotely
Delete the file at the AppServer.
Not all files can be deleted in this editor.
Workflow
Sub-menu with options which all triggers the complete CSM-workflow:
Load package
The same option as the button found on the Advanced-tab – see: Load package.
Recompile
The same option as the button found on the Advanced-tab – see: Recompile.
Import directory
The same option as the button found on the Advanced-tab – see: Import directory.
Description
The same option as the button found on the Advanced-tab – see: Description.
Custom clean-up
When a build has been loaded and not yet compiled this option will examine the deployed
areas at the AppServer and look for files of the custom package. All previously deployed
files which are missing in the new build will be listed in a special build-file called
delete.cst which lists files to be deleted at the deploy phase.
All files being deleted or changed have a copy of the most recent version saved in the back-
up area.
Files checked are:
• CUSTOM/*
Custom programs and files
Note: csttrans.*-files are not deleted!
• WORK/fix-db/*.cst
Custom data files
• WORK/fix-db/design-custom/*
Custom designs
Program clean-up
When a build has been loaded and not yet compiled this option looks for sourceless
programs and add those to the special build-file delete.lst which lists files to be
deleted at the deploy phase.
All files being deleted or changed have a copy of the most recent version saved in the back-
up area.
Note: Fix A17066 (see: Enhancements and related fix-packages) or newer are required.
Compile build
The same option as the button found on the Advanced-tab.
The process is documented in detail in the section: Compile.
Compile log
Show the log from the compile using the standard viewer.
A header section lists the configuration of the compile including:
• Server deployed: The current deployed build at the server.
• Compile build: The build being compiled.
• Code page.
• Numeric and date format.
• Font settings.
For the application to look as intended the layout of DEFAULT and font 12 should
list these values (the screen resolution would change this):
...
"FONT-SIZE (DEFAULT):" "APIPRO(50x16)" "1234567890(70x16)"
...
"FONT-SIZE (12):" "APIPRO(40x13)" "1234567890(60x13)"
...
• Language setup for the translation.
• Databases used for translation.
• PROPATH: List of source directories.
Then follows sections for each of the list of programs – Compile file:
• File name to be compiled.
• Current MD5 value.
• Messages from the compiler including warning and errors.
Missing list
Show the list of programs which did not compile successfully using the standard viewer.
Deploy build
The same option as the button found on the Advanced-tab.
The process is documented in detail in the section: Deploy.
Lock build
Lock the build for changes and compile.
Fix A16959 (see: Enhancements and related fix-packages) enables selection of multiple
unlocked builds for this option in the browser found in the Advanced-tab.
Unlock build
Unlock the build.
Fix A16959 (see: Enhancements and related fix-packages) enables selection of multiple
locked builds for this option in the browser found in the Advanced-tab.
Note: If any directory or file couldn’t be deleted the build will still be listed. Make sure no
files are kept open by editors, file-explores or set as current directory for a command line.
Fix A16959 (see: Enhancements and related fix-packages) enables selection of multiple
unlocked builds for this option in the browser found in the Advanced-tab.
Deleting multiple builds asks for a confirmation:
Check
The same option as the button found in the Advanced-tab.
Change log
Show the list of changes (from the previous change-log) using the standard viewer.
Delete changes
Delete the change-log which is the list of files changed at the AppServer since the previous
check.
These change-logs are the basis for updating clients to be in sync with the server.
If any of the required change-logs for a client be missing, then all files will be checked –
see: Reinstall method.
Fix A16959 (see: Enhancements and related fix-packages) enables selection of multiple
change-logs for this option in the browser found in the Advanced-tab.
Deleting multiple change-logs asks for a confirmation:
Lock server
Lock CSM for changes. New packages can’t be loaded.
Unlock server
Unlock CSM allowing new packages to be loaded.
Reset server
The option requires a confirmation:
All data-areas of CSM at the AppServer are deleted, except for the change-log-value (this
sequence has to increase continuously) and the file-system is finally recorded (using
CheckWork).
AppServer log
Show the log from the AppServer using the standard viewer.
Note: Fix A14706 (see: Enhancements and related fix-packages) deals with a progress-bug
which causes shifts between winter- and summertime time to export too many files.
Restart client
Leaves API PRO and restarts your client, which triggers a load of optionally new changes.
Similar to pressing ALT+F5 in the login-dialog.
Note: Fix A17328 (see: Enhancements and related fix-packages) or newer are required.
Reset client
Leaves API PRO and restarts your client after all files have been updated.
Before fix A17328 (see: Enhancements and related fix-packages) you had to leave API
PRO manually.
Similar to pressing ALT+F12 in the login-dialog.
Note: Fix A17328 (see: Enhancements and related fix-packages) or newer are required.
Reinstall clients
This option will trigger a reinstallation the next time each client connects.
This could be useful if the chronology of the change-logs has been broken and the clients
should have deleted files no longer in use.
The client-configuration includes which method to use for reinstallation – see:
Reinstall method.
Init.zip
Make a client-initiator package and pack this as a .zip-archive.
A save-file-dialog will ask for the filename of the client-initiator-package
init.msi
Make a client-initiator package and pack this as an .msi-archive using default values.
A save-file-dialog will ask for the filename of the client-initiator-package.
Issue reinstallation
If the chronology of the required change-logs are broken the server will include all files
known for the clients, but files no longer present, might not be deleted.
The server-option issue-reinstall will in this case precede the update with a
reinstallation which by default will let clients save optional local changes, delete all files no
longer part of the initiator and then delete empty directories.
The actual steps done by each client is configured separately choosing a Reinstall method
for the package.
Note: Both generations of the baseline can be installed and used at the same time.
BaseLine
The BaseLine found in SETUP/ApiProBaseLine/baseline.exe provides packages
shared by all API PRO systems like Progress (also known as OpenEdge), Crystal Report
(handles printouts), and various tools, drivers and fonts. The configuration of the BaseLine
is located in SETUP/ApiProBaseLine/baseline.ini.
Note: Using a local administrator is in some configurations not sufficient – you still need to
choose: Run as administrator.
BaseLine-client
As an alternative SETUP/ApiProBaseLine/ provides baseline-client.exe
which will include a package for a single generic API PRO system.
This is done controlled by baseline-client.ini and can be customized in many
ways.
By default:
1) apilive9.msi will be install into C:\APIPRO\APIPRO9
2) client.ini will be copied into C:\APIPRO\APIPRO9\WORK\
Note: This overwrites the file installed by apilive9.msi
When the .msi-file is opened (double click, right-click and choose Install) – the
installation process begins.
Choose Next
Warning: If the system later will be uninstalled this Destination Folder and all the content
will be completely deleted.
Choose Next
Choose Install
If you choose Launch application? The CSM-client will be started and like all other future
calls go through a couple of steps ensuring the application is up-to-date.
If a connection can be made, the entered values are stored in the .ini-file for future use.
All the latest files which have been deployed for clients will be downloaded and placed in
required sub-directories.
If required, the API PRO system can be installed from a command-line using the same
.msi-file:
All MSI-based API PRO systems can be uninstalled from the Control Panel:
Use the option: Export files (Client functions) to save any changes made locally before the
installation is removed.
Note: When a system is uninstalled, the Destination Folder will be completely removed.
3 With current directory assigned to WORK/ (located next to client.cmd) the executable
then typical launches CSM/client.r as the first program called (setup in
client.pf).
4 A connection to the AppServer is established using the key-values of the API PRO-
section of the client.ini file – just like in apipro.w later.
7 The client looks for the current state (change-log) in the local CSM/client.log.
8 The server is asked for complete list of changes, given the installed change-log at the
client and this result in one of the listed scenarios:
Same If the server is at the same level (will typically be the case!) the client is
considered to be fully up-to-date and the application will start immediately.
Newer If the server is “newer”, all the change-logs in between are merged into a
resulting list of files. Should any of the required change-logs at the AppServer
be missing a complete client-image will be returned.
This could happen if the AppServer was initiated by: Reset server.
Older If the server is “older”, the value is rejected by the server and a complete
client-image will be returned.
This could happen if a system has been restored from a backup.
Unknown If the server is “unknown” a complete client-image will be returned.
This could happen if a system has not been configured – see:
File changes in AppServer.
For scenario newer and older the configuration could even ask for clients to do a
reinstallation – see: Issue reinstallation.
The list of files includes size and modification time and R-codes will list MD5-values.
Based on rules the list is divided into a list of files for the client-image – see:
Overwrite file-type and this can include deletion of files.
9 If the client is asked to do a reinstallation by the server, the actions taken are then up to the
configuration of the client – see: Reinstall method.
The default behavior will include a chance to save changes made locally before present
files and directories are deleted:
11 Files are downloaded – one file at the time, showing the status on the way and creating any
required sub-directories:
A typical error is having two clients trying to access the same file:
** Cannot find or open file …/icons/cj1624/Windows8.cjstyles, errno = 13. (43)
or:
** Cannot find or open file .../external/Office2010.dll, errno = 13. (43)
Note: Fix A14663 (see: Enhancements and related fix-packages) closes some open files
preventing the client update from the login-dialog to succeed.
Note: Fix A15323 (see: Enhancements and related fix-packages) support an option to
prevent clients not fully updated to get access – see: Reject access after error.
Updating .pf-files will make the client quit as they have to be available for setting
up the process and tuning it against the windows environment.
(If the Remember me button is not present it could have been hidden – see:
Hide ‘Remember me’.)
From this login-dialog some CSM-events are available using keyboard
combinations:
• ALT+F5:
Download new files since last refresh (as shutdown and restart).
Use-full when a build has been deployed after the client was started.
• ALT+F12:
Get a complete image of the required files.
Use-full if some files have (or might have) been lost at the client.
• CTRL+SHIFT+ALT+F12:
Reinstall the client – see: Reinstall method.
CD /d E:\apipro\apitest9
client.cmd -param RollBackLast
CD /d E:\apipro\apitest9
client.cmd -param "UploadPackage,C:\temp\ACCUM-9000.03.zip,CompileDeploy"
or:
…
[API PRO]
AppServer-URL=http://workshop.apipro.com/aia/Aia?AppService=dkk004-
apitest9
CodeJockVersion=16.2.4
CSM-CHECK-METHOD=LoadClient
CSM-REJECT-ACCESS=TRUE
HIDE-SAVE-LOGIN=TRUE
…
Load
First step of the CSM workflow is used to setup a build which is a work-space for changes
that should be applied to the application. Builds are located at the AppServer under the
CSM/build/-directory, and numbered by a counter.
When a build is created, the workflow triggers the CSM-event: createbuild.
Note: File-names with national characters may fail and can’t be handled by CSM.
Note: Fix A14699 (see: Enhancements and related fix-packages) will setup
SUPERVISOR as the user for this process.
5. Setup compilation. By default all known programs will be compiled but the file
compile.lst can be used to specify a smaller list (could be empty).
Make C:\temp\upload\compile.lst
Note: Make sure the suffix of the file is right and not ends up as “.lst.txt”
6. Load the root-directory into CSM and go through the 3 steps (load, compile, deploy).
Add a program
Load a locally made program and make it part of the application on all clients.
Example: A new program hello.p
Note: Fix-pack A13777 (See: Enhancements and related fix-packages) is required to make
this function work in Progress run-time environments for source not encoded (using
XCODE).
2. Setup delete.lst
Edit C:\temp\upload\delete.lst
Note: Notice the files are relative to the parent-directory of the application.
4. Setup compilation. By default, all known programs will be compiled but the file
compile.lst can be used to specify a smaller list (could be empty).
Make C:\temp\upload\compile.lst
5. Load the root-directory into CSM and go through the 3 steps (load, compile, deploy).
Sample C:\temp\upload\delete.lst:
CLIENT/hello.p
WORK/hello.r
WORK/crprint/template/fiscal.rpt
2. Use the Save setup option of the Initiator to save the standard minimum required set of
files, and point to the root directory created.
Note: The update status of all additional files installed this way will be checked like normal.
Sample WORK/CSM/noconnect.html:
<head><title>No connection</title></head>
<body>
<h1>No connection</h1>
<p>The AppServer you are trying to connect to is currently
unavailable.</p>
<iframe src="http://www.apipro.com/rd/noconnect/dkk004-apitest9.html"
height="500" width="700">
</iframe>
</body>
</html>
Tip: Using an html-file with IFRAME pointing to an external webserver allows status
updates for most cases.
CSM event
Get signals from the CSM workflow.
Example: Send a mail after every compile with the log-file attached.
Sample CSM/event.cmd:
@ECHO OFF
REM event.cmd
REM Run scripts called from the different events of the CSM workflow
REM Parameters: event build buildhome
REM ======================================================================
IF NOT "%1"=="compileend" GOTO END
IF EXIST "%~3\compile.err" C:\APISERVER\tools\blat.exe "%~3\compile.log" -
to ppl@apipro.com -subject "Compile build %2 failed" -server 192.168.195.7
-f apitest9.rd.apipro.com@test.com
IF EXIST "%~3\compile.ok" C:\APISERVER\tools\blat.exe "%~3\compile.log" -
to ppl@apipro.com -subject "Compile build %2 finished" -server
192.168.195.7 -f apitest9.rd.apipro.com@test.com
:END
Sample CSM/work.lst:
new.log CLIENT
old.lg DELETED
"Reports/My report.ini" CLIENT
Example: Delete old.lg on clients and make sure new.log and Reports/My report.ini
are not skipped (as other .ini and .log-files will be).
Note: Use only forward slashes (/), and quotes if the file (or path) contains spaces.
Even though it’s not recommended – this method can be used to update client.ini or
client.pf of all clients since the initiator uses the files located in WORK/ at the clients.
The steps required to make WORK/client.pf “shared” would be:
1. Overwrite the default logic of CSM so changes to WORK/client.pf will be mirrored
at clients by adding this line to CSM/work.lst:
client.pf CLIENT
2. The files can now be edited for special setup or requirements – like “default language”,
“CodeJock”-version…
3. Using the Load setup button found at the Initiator-tab this local directory can then be
loaded into any Client Server Management-program/AppServer and then these files will
be the source for the package generated by the Generate-button.
4. The entered values in the tab will be stored in client.log and client.wxs files
found in the root of the local directory.
UNC client
If a CSM-client should use a UNC-path for the client image some changes are required to
the set-up.
Note: Fix A13658 (see: Enhancements and related fix-packages) or newer are required.
Sample client.ini:
…
[Startup]
PROPATH=\\192.1.1.2\shares\apipro\apitest9\WORK
…
Sample CSM/compile.pf:
-db C:\APISERVER\APITEST9\DB\api3
-db C:\APISERVER\APITEST9\CSM\interface -RO
…
-b # Batch mode
-rx # Enable compile of xcode
-p csm/compile.p # Startup Program
3. Make a back-up.
4. Follow the installation notes provided including: load the new data-dictionary (typical a
df-file with the changes) and install optional new application parts.
7. Run fix-db.
8. Since all the data-areas of CSM are related to an older version of the data-model these
are no longer valid for rollback and could be removed by the menu-option: Reset server
of the Client Server Management-program.
If this option is not used then record the new files of WORK/ using the menu-option:
Check or run the CSM/check.cmd script.
Note: Fix A17946 (see: Enhancements and related fix-packages) introduces allow-
systemnames and reject-systemnames to the setup and could be used to ensure
packages are only loaded in the master.
:NEXT
REM More actions here...
GOTO END
:END
ENDLOCAL
-b # Batch mode
-p csm/server.p # Startup Program
Note: Only some of the options related to this specific setup are listed above.
Protect files
The CSM-workflow can be used to ensure packages loaded will not overwrite certain files
(like important configuration) during deployment.
Using the loadend-event the loaded package can be examined and optionally changed since
this is done in a separate workspace.
In the sample beneath CSM/protect.lst optionally lists which files to protect at the
AppServer. Any of these files found in the package will be moved into a parallel directory-
structure under protect/:
:NEXT
REM More actions here...
GOTO END
:MOVEPROTECT
ROBOCOPY %~dp1 %~dp2 %3 /MOV /NFL /NDL /NJH /NJS /nc /ns /np
GOTO :EOF
:END
ENDLOCAL
Note: If you modified translations to any languages or added translations to the language
CST, please make sure you export your translations before loading a pack with apitrans
(System – Translation Tool, Options – Export to text file, one call of the option per
language modified) and import them after you loaded the pack (Translation Tool, Options –
Import from text file).
In rare cases, the apitrans pack includes corrections to translations which are part of a fix of
a program error. If there are translations you modified among them, you will need to merge
your changes with the standard corrections manually. The description of the corrections if
they exist is available in the package description.
Load the local root using option: Import & deploy or Import directory.
Tip: If the database(s) should be loaded at a remote site, a ZIP-archive with all files and
subfolders made from inside C:\temp\upload will produce a loadable package.
The CSM-compiler will automatically include these databases if they are present when the
compile starts and here the PROPATH ensures the priority among found instances, but the
Translation tool requires CUSTOM/ to be listed in PROPATH of the AppServer-agent setup:
Besides editing translations, this editor can start the Compile tool using Create compile list-
option or the Compile-button:
Client file-system
List of the baseline directories located under INSTALLDIR – default:
programfiles\API Maintenance Systems:
Filename Description
ocx/ Libraries and files being registered during installation.
openedge/ 2nd generation home for DLC for API PRO 9 & 10.
progress/ 1st generation home for DLC for API PRO 7, 8 & 8.1.
List of files used by CSM at the clients for each AppServer installation:
Filename Description
client.cmd Start-up script.
WORK/apipro.r Normal start-up procedure.
WORK/client.ini Normal .ini-file configured for AppServer connection including:
NoSplash=yes
WORK/client.pf Normal .pf-file configured for AppServer connection including:
-mc
-p csm/client.p
WORK/csm/admin.r Administrator functionality (deprecated)
WORK/csm/client.r Client-initiator – called from “-pf client.pf".
CSM/event.cmd If this command is present, it will receive “events” from the CSM-
workflow.
The command will be executed with current-directory set to WORK/
and 3 parameters:
1. Unquoted character string in lowercase telling which event
is launched:
• createbuild
• loadend (A15602 or newer required)
• compilebegin
• compileend
• deploybegin
• deployend
• deletebuild
• createchange
• deletechange
2. Number of the build or change being processed.
3. Quoted path for the home of the build-workspace or
filename of the changelog.
CSM/event.log Optional log-file for output of CSM/event.cmd calls made.
CSM/fix-db.log Log from a fix-db-phase of deployment.
Two Note-records are created to ensure single-user access to two critical flows.
Build-lock
Relates_to LOCK
Relate_Key csm/server.p|build
Type 1
Change-lock
Relates_to LOCK
Relate_Key csm/server.p|change
Type 1
Beneath some reported issues all related to CSM are listed – including the cause, and
possible solution or work-around.
The GUID used by API PRO is based on the values used for connecting to the AppServer
and in some cases this calculation might accidentally produce the same value for two
installations – blocking the second from being installed.
A workaround for this could be to change the name of one of the AppServers (or the service
it provides) as described here: AppServer Name.
Live example of two configurations with colliding GUID: (32 last characters match)
System 1 System 2
Change the RUN-attribute of the shortcuts from using Minimized to Normal window:
Note: Fix A16038 (see: Enhancements and related fix-packages) solves this too.
As a work-around it seems changing the order of the listed languages with “strings of
apipro.w” can solve this problem.
Load fails
A build (package) fails to load with the following message:
The root of the package should have one (or more) of the know sub-directories: CLIENT/,
CUSTOM/, XCODE/, WORK/ or special-files to be accepted.
Empty builds (only having a directory structure, but no files) can’t be loaded and this could
be the case if a ZIP-archive is protected by a password.
File-names with national characters may result in load-errors too and these files can’t be
handled by CSM.
Compile fails
The program fix-db/fix-@#$.p fails to compile, but the log doesn’t list any specific
error message:
Program fix-db/dump-api.p 22EF92A4A17995B357EF6DFF81B84B87 14:21:26
Program fix-db/fix-@#$.p ? 14:21:26
Error: C:\APISERVER\APIPRO9\XCODE\fix-db\fix-@#$.p
Program fix-db/fix-acco-commit.p 515321A625ABB72734855DA6BA00A091 14:21:26
Make sure the setup used for the compile includes option –nocandodomain.
Builds have to be deployed in the right order and attempts to skip a build will be rejected.
Here build 3 and 4 are both successfully compiled, but both are not deployed – and build 4
then waits for 3.
Note: Fix A15969 (see: Enhancements and related fix-packages) disables work-flow
options (including the drop-zone) when a build is not deployed.
WORK/csm/server.log:
219,28/02/2014 09:15:53
The compile fails when the server already has a higher build deployed (219) than the new
one (1).
The strange text “Builds2201" is from the code trying to build the PROPATH through the
CSM-workarea from server+1 to build…
Progress error 43
Every time the client starts the entire application is checked and the file
csm/client.err shows errors like:
"" "csm/apilogo.bmp" ? 136134 2013-10-14T16:14:14.000
"** Cannot find or open file C:/APIPRO8/BEF069/work/csm/apilogo.bmp, errno = 13.
(43)"
"" "csm/apipro.ico" ? 110229 2013-10-14T16:14:14.000
"** Cannot find or open file C:/APIPRO8/BEF069/work/csm/apipro.ico, errno = 13.
(43)"
The user running the client-initiator should have access to create and update all files under
the chosen installation directory.
The fact that only errors from updating graphical files shows here is due to the additional
MD5 check for programs (skipping this from the download), but the remaining files initial
installed fails to be updated.
Multiple sessions?
The error listed above is from a total recompile – and here appserv/system.r is not the
first program for appserv/.
This time two different API PRO systems were using the same WORK/ (and thus CSM/
too!) and both systems had the total recompile started almost simultaneously.
When systems reuse the WORK/ – one of these systems should be known as the master and
be the only place where CSM-commands and operations are carried out.
Note: Fix A13777 (see: Enhancements and related fix-packages) will do a recompile
(unless compile-option no-retry is set) when the compiler fails with-out any message,
which is the case for error 477.
A CSM-client can’t run programs that access a database directly but requires a connection
through an AppServer. If this program should be available for CSM-clients it should be
changed to be “AppServer-aware”.
Note: Fix A13777 (see: Enhancements and related fix-packages) skips all programs
accessing a database from the client-image.
This error could indicate that a 2nd generation baseline (based on OpenEdge v11.6 or newer)
is missing, but the 1st generation baseline (based on Progress v10.2) is found and fails on
one of the OpenEdge v11.6+ specific options:
…
-nocandodomain # Restore CAN-DO() functionality
…
Program system/agrsfind.p
FB470E078D63A225F58C0EEE1E64F246 15:18:37
Warning: object file
D:\AMSDK\APIPRO\TESTCASES\localtest\work\system\agrsfind.r
found before source system/agrsfind.p. (2886)
** "system/agrsfind.p" was not found. (293)
Error: ?
The program system/agrsfind.p is no longer part of the sources but required by the
list of programs to be compiled.
The fact that the current MD5-value is listed is due to an old version still placed under
WORK/.
The solution is either to retrieve the source required or update the list of programs.
If the program no longer should be part of the application, it should be deleted from WORK/.
or:
The setups can be loaded and generated anywhere – BUT only within the same major
version of Progress (OpenEdge).
Make sure the baseline is installed while having proper administrator rights.
The Progress version 10.2B, 10.2B01 should be updated (patched) to 10.2B08 or later.
Make sure the baseline is installed while having proper administrator rights.
By default, CodeJock 13.2.0 will be used, but in version 7.0SP05 the value could be
stated in the [API PRO open.7]-section of the .ini-file – and be either 13.2.0 or
15.2.1 depending on which baseline and subsequent packages have been installed at the
client.
…
[API PRO Open.7]
CodeJockVersion=15.2.1
…
If the CodeJock is correct then the problem has to do with commands like:
regsvr32 "C:\Program Files (x86)\API Maintenance Systems\ocx\
Codejock.Calendar.Unicode.v16.2.4.ocx"
A CSM-client can’t run programs that access a database directly but requires a connection
through an AppServer. If this program should be available for CSM-clients it should be
changed to be “AppServer-aware”.
Note: Fix A13777 (see: Enhancements and related fix-packages) skips all programs
accessing a database from the client-image.
Make sure “Microsoft Visual C++ 2005“ is installed while having administrator rights and
it‘s the right version available for download at: Microsoft Download Center or at the:
CSM extranet site
Package-size
Until fix A15488 (see: Enhancements and related fix-packages) downloading packages
which in total exceed 2Gb will be marked as failed, even if all files were successfully
updated.
File-size
Fix A13797 (see: Enhancements and related fix-packages) introduced a number of
restrictions to avoid misuse.
Maximum file-size of files examined by CSM is 2Gb and for upload/download is 128Mb.
Files listed in CSM/work.lst will however be controlled for download by this setup.
File-name
National characters should be avoided from file-names as they may not be handled
correctly.
Fix A15362 (see: Enhancements and related fix-packages) traps errors during the load-
phase.
Editor-size
Unless Fix A18378 (see: Enhancements and related fix-packages) is included, the Editor
for setting up system configuration files currently has a maximum file-size of 30.000 bytes.
This limit will not allow WORK/api-comp.tot being edited.
This table lists CSM enhancements made over time and which fix-packages are available.