Progress
Developer’s Toolkit
Encrypted Source
This section provides an overview of the steps to follow to deploy an application using encrypted source when you are done developing and testing your application.
Before you can deploy your application, you must encrypt all of your procedures and include files with the XCODE utility. For more information about how to do this, see the "Encrypting Procedures" section in Deployment Topics and Tasks." Before encrypting the files, make sure they are represented with the appropriate code page for the target platform. For more information about character processing in Progress, see the Progress Client Deployment Guide .
As with unencrypted source, you must dump your application schema (.df) and/or data (.d) files into ASCII format. This step copies your data from the application database, which is not portable, into a format that is portable. You do not have to encrypt your .df and .d files.
Like your procedure files and include files, the .d and .df files must be represented with the appropriate code page for the target platform.
You must transfer the resultant .d and .df files to the target platform. This is a preliminary step to creating your distribution media.
There is more than one way to transfer files. For example, you can use FTP or other protocols, such as CROSSTALK. Or you can put the files on tape or other storage media and physically transport the files.
After you encrypt procedures and include files, they become binary files.
You must provide a way for users to build the application database at their site. To do this, users must be able to load your .df and .d files into an empty database.
Any Progress client, server, or stand-alone database product can compile and run encrypted source. However, only those products that can fully compile can load .d files into a database. The 4GL Development System, ProVISION, ProVISON Plus, and WebSpeed are the only products with this capability.
If you deploy to users whose licensed products do not have this capability, you must provide a way for them to load your .d files. For more information about providing a dump/load facility for users, see the "Dumping and Loading" section in Deployment Topics and Tasks."
NOTE: The dump/load procedures should be considered part of your application. The decision to distribute encrypted source versions of your application procedures applies to the dump/load procedures as well.The 4GL Development System, ProVISION, ProVISON Plus, and WebSpeed products contain a complete Data Dictionary, which users can use to load the .df and .d files into an empty database. (In character environments, the Data Dictionary contains data administration capabilities. In Windows, these capabilities are provided with the Data Administration tool.) However, even though the user can perform these tasks, usually it is a good idea to write a script that automates this process. This not only frees the user from performing this task, but also makes your application easier to use.
Within your script, you can use pre-existing procedures in the
DLC/tty
andDLC/gui
directories (installed for full development Progress products). Within these directories are procedures that load .df and .d files, calledload_df.p
andload_d.p
, respectively. Your script can start Progress and run these procedures to load your data definitions and data. To run these procedures at the user site in the case where users do not have a license for the 4GL Development System, ProVISION, or WebSpeed, the procedures must be encrypted or in r-code format. This step is necessary because Progress must be started with the -rx parameter to run or compile the procedures where users do not have a license. When started with this startup parameter, Progress cannot run or compile unencrypted source.If you decide not to write a script and instead rely on the users’ ability to load the data definitions and data, make sure you provide adequate documentation to guide them through the process.
To rebuild your application database at the user’s site, you must make a copy of the empty database and rename it. An empty database is included in the
DLC
directory of all Progress client, server, or stand-alone database products. Because databases are not portable, you must use an empty database that already is ported to the target platform.Users can use Progress to copy the empty database and rename it. Or you can write a script that does this task for them. This script can call the PRODB command to make a copy of the database and rename it appropriately. The Developer’s Toolkit also provides a newdb script that creates a database.
If users have a Progress product that provide these capabilities, and you decide to let them perform this step, you must provide them with adequate documentation to guide them through the process.
You must provide a way for users to install your application. Progress must be installed before they can use your application. You can create one install for both Progress and your application. To do this, create an install program using a third-party tool, such as Installshield, and call the Progress Install batch mode from within it.
When you deploy with encrypted source, you typically provide a compilation routine. Though this is not necessary in all cases, it is usually a good idea because it frees the user from performing the task of compiling your application. In the case where you specify unique encryption keys, providing a compilation routine becomes a necessity.
All Progress client, server, and stand-alone database products can compile encrypted source. Therefore, if you use the default encryption key, users can compile your application without a specialized routine. However, if you have users compile your application, you must provide adequate documentation to guide them through the process.
Because encrypted code is not precompiled, your application can take advantage of compile-time functionality. For example, you might want to pass arguments to include files to determine sort order, field lists, etc. You can take advantage of this behavior at the user site, allowing users to specify their preferences before compilation. This option is not available with r-code, which must be compiled at the development site. Whether you can repeatedly take advantage of compile-time features during the ordinary day-to-day operation of your application depends on what Progress products the users have.
To compile encrypted source code, Progress must be started with the -rx startup parameter. When a Progress session is running with this startup parameter, the Progress Compiler can compile encrypted source but cannot compile unencrypted source. If users have a full development product (the 4GL Development System, ProVISION, ProVISION Plus, or WebSpeed), they will probably want to write and compile their own unencrypted procedures. Thus, in their day-to-day operation of Progress, they must run Progress without the -rx startup parameter. For users with full development products, therefore, you probably want to perform a one-time compilation with the -rx parameter, then restart Progress without this parameter. For users with Progress products that cannot compile ordinary unencrypted source, running permanently with the -rx parameter is not an issue.
The Developer’s Toolkit provides a template procedure,
compile.p
, that you can use to compile your application. For more information aboutcompile.p
, see the "Decryption and Compilation" section in Deployment Topics and Tasks."You must provide a way for users to start the application. You can either write a script to do this or provide adequate documentation.
You must provide users with enough documentation to use your application and to perform the above tasks if you do not automate them.
You might want to provide online help for your application. For more information, see the Progress Help Development Guide.
Now that you have completed the above steps, you need to prepare your distribution media. It should include:
Now You Are Ready to Deploy Your Application
Copyright © 2004 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |