PKLITE (tm) The Executable File Compressor Topic Page I. Introduction to PKLITE . . . . . . . . . . . . . . . . . . . . 2 1. PKLITE Overview . . . . . . . . . . . . . . . . . . . . . 2 2. System Requirements. . . . . . . . . . . . . . . . . . . . 3 3. Technical Support. . . . . . . . . . . . . . . . . . . . . 3 4. Registration Information . . . . . . . . . . . . . . . . . 4 5. Software License . . . . . . . . . . . . . . . . . . . . . 5 II. Using PKLITE . . . . . . . . . . . . . . . . . . . . . . . . . 6 1. Explanation of the Command Line. . . . . . . . . . . . . . 6 2. PKLITE options . . . . . . . . . . . . . . . . . . . . . 10 -a Always compress files with internal overlays . . . 10 -b Make backup .BAK file of original . . . . . . . . . 11 -e Extra compression method . . . . . . . . . . . . . 12 -l Display software license screen . . . . . . . . . . 12 -n Never compress files with overlays. . . . . . . . . 13 -o Overwrite output file if it exists. . . . . . . . . 14 -r Remove any extra .EXE data. . . . . . . . . . . . . 15 -u Update file time/date to current time/date. . . . . 16 -x Expand a compressed file. . . . . . . . . . . . . . 17 III. Programs That Should Not Be Compressed. . . . . . . . . . . 19 IV. PKLITE Error Messages . . . . . . . . . . . . . . . . . . . 21 1 I. INTRODUCTION TO PKLITE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This section contains an introduction to the PKLITE data compression software. 1. PKLITE OVERVIEW ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PKLITE is an easy to use file compression program. It increases your valuable disk space by compressing executable files (with .EXE and .COM extensions). PKLITE will compress these executable files so they will require much less disk space yet will still run normally. PKLITE compresses your files much like PKZIP, but it adds a small amount of extraction code at the beginning of the executable file. When you run an application that has been compressed with PKLITE, the program will automatically be expanded into memory and run. The compressing process does not change the operation of the program at all, it merely reduces the disk space required to store it. No additional memory is needed to run most programs compressed with PKLITE. PKLITE also has the ability to expand your files back to their original size. 2 2. SYSTEM REQUIREMENTS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PKLITE will run on any IBM PC or compatible with DOS 2.0 or higher. Running a program that has been compressed with PKLITE requires a maximum of 4K extra memory overhead to expand the application in memory. Memory available to the application remains the same as before it was compressed. 3. TECHNICAL SUPPORT ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ If you have any questions regarding PKLITE or any of the other PKWARE programs, please call our technical support staff for assistance. Our office hours are Monday through Friday, 9:00am to 5:00pm central time. You can also leave a message on our 24-hour PKWARE Support BBS, or mail your comments and questions to the PKWARE office. The PKWARE address and telephone numbers are listed below. PKWARE, Inc. 9025 North Deerwood Drive Brown Deer, WI 53223 Voice (9am to 5pm CT): (414) 354-8699 Fax: (414) 354-8559 PKWARE Support BBS (Available 24 hours): (414) 354-8670 PKWARE on CompuServe 75300,730 PKWARE also monitors support conferences on Relaynet, ILink and SmartNet 3 4. REGISTRATION INFORMATION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ If you find PKLITE fast, easy, and convenient to use, you can become a registered user. As a registered user, you will receive a diskette with the current version of PKLITE and a printed manual for the software. You will also receive, when available, a free upgrade of PKLITE. Please state the version number of the software you are presently using. For registration information, including price information, contact PKWARE at the following location: PKWARE, Inc. 9025 North Deerwood Drive Brown Deer, WI 53223 (414) 354-8699 Voice (414) 354-8559 Fax (414) 354-8670 BBS 4 5. SOFTWARE LICENSE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The software license agreement is shown below. PKLITE (tm) Executable File Compressor Version 1.13 8-01-91 Copyright 1990-1991 PKWARE Inc. All Rights Reserved. Patent Pending You are free to use, copy and distribute PKLITE for noncommercial use IF: - No fee is charged for use, copying or distribution. - It is not modified in any way. Usage of the software to create compressed executables for commercial software requires registration of the PKLITE Professional Package (tm) for $146. This version includes an extra compression option so that compressed executables cannot be uncompressed by PKLITE. PKWARE hereby disclaims all warranties relating to this software, whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. PKWARE will not be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if PKWARE or an agent of PKWARE has been advised of the possibility of such damages. In no event shall PKWARE's liability for any damages ever exceed the price paid for the license to use software, regardless of the form of the claim. The person using the software bears all risk as to the quality and performance of the software. If you find PKLITE easy, and convenient to use, a registration of $46.00 would be appreciated. Registration includes one free upgrade to the software and a printed manual. Please state the version of the software that you currently have. 5 II. USING PKLITE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This section describes the command line structure of PKLITE and explains the options. 1. EXPLANATION OF THE COMMAND LINE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PKLITE is an easy to use file compression program. All of the commands used with PKLITE are entered on the command line at the DOS prompt. The command options used with PKLITE are explained in detail in the following section, along with examples. The PKLITE command line structure is shown below. PKLITE [options] [d:][path] Infile [[d:][path] Outfile] PKLITE = The PKWARE executable compression program. options = The different PKLITE options that you can specify. [d:] [path] Infile = The name and path location of the executable file being compressed (or expanded), also know as the source file. [d:] [path] Outfile = The name and path location of the destination file you want to rename or to relocate the compressed or expanded file. NOTE: Parameters listed in [ ] are optional. 6 EXAMPLES: A simple example is shown below. C:\DOS> PKLITE attrib.exe In this example the file attrib.exe will be compressed and the compressed version of the file will overwrite the original version. After you type the command shown above, PKLITE will display the following information on the screen. PKLITE (tm) Executable File Compressor Version 1.13 8-01-91 Copyright 1990-1991 PKWARE Inc. All Rights Reserved. Patent Pending Compressing: attrib.exe Original Size: 10656 Compressed Size: 6790 Ratio: 36.3 After a file is compressed with PKLITE, it will display several pieces of important information. PKLITE will list the name of the original file, original size of the file, the compressed size, and the compression ratio. The output filename and location will also be listed if they are different than the original filename and location. An example is shown below. The following example illustrates the use of an output file to change the name and location of the file after it is compressed. C:\> PKLITE light.exe A:smlight.exe PKLITE (tm) Executable File Compressor Version 1.13 8-01-91 Copyright 1990-1991 PKWARE Inc. All Rights Reserved. Patent Pending Compressing: LIGHT.EXE into file A:SMLIGHT.EXE Original Size: 18466 Compressed Size: 12299 Ratio: 33.4 7 Listed below is a summary of important facts to keep in mind while using PKLITE. -The commands can be typed using either upper case or lower case. -All command options for the software must be preceded by a '-' character or the MS-DOS switch character (usually '/'). -Options can be combined (i.e. "-o -b" or "-ob"). -If no extension for the source file is specified, PKLITE will automatically compress any files with that particular name and a .EXE or .COM extension. -If no destination file is listed on the command line, the compressed file will have the same name as the source file and will be located in the same directory (i.e. it will overwrite the source file). -Typing PKLITE on the command line with no options, will bring up a help screen listing all the program options. CAUTION It is very important that you do not use PKLITE on original program diskettes. You should always make a copy of the original diskettes that are supplied with an application, and work only from the copies. All original diskettes should be kept in safe place. 8 The following table lists all the options available with PKLITE. A brief summary is also given in the table. The options are explained in detail, along with programming examples in the following section. PKLITE COMMAND OPTIONS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Option Summary -a Always compress files with internal overlays and optimize relocations. -b Make backup .BAK file of original. -e Extra compression method. (Commercial Version) -l Display software license screen. -n Never compress files with overlays or optimize relocations. -o Overwrite output file if it exists. -r Remove extra .EXE data. -u Update file time/date to current time/date. -x Expand a compressed file. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 9 2. PKLITE OPTIONS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The PKLITE options are described below. -a Always Compress Files With Internal Overlays and Optimize Relocations This option is used to tell PKLITE to always compress files even though they use internal overlays. Programs which use overlays loaded from .EXE files, may not run normally when in compressed form. PKLITE will detect if a program file contains internal overlays. It will prompt you for confirmation before it compresses any files with overlays if you do not use the -a option. This option will also tell PKLITE to always optimize headers. PKLITE 1.13 tests the relocation table to see if it can be optimized for better compression. This performs the same operation as running HDROPT before PKLITE. C:\> PKLITE -a *.EXE In the example shown above, PKLITE will compress all of the .EXE files in the current directory even if internal overlays are detected. You will not be prompted for confirmation before any files are compressed. The files will overwrite the original files since there is no destination directory specified. NOTE: Overlay data is not compressed by PKLITE, however the load image data located before the overlay data is compressed. Some programs require that the overlay data in the .EXE file be located at a specified point in the .EXE file. These programs will not run correctly when compressed with PKLITE. Programs that do not run correctly can be returned to their original state with the -x option. 10 -b Make Backup .BAK File of Original This option will create a backup file of the original uncompressed file with a .BAK extension. The file will be located in the same directory as the original file. If you use the -b option when a file with the same name as the source file and a .BAK extension already exists at the destination, it will be overwritten. If an output file is specified with the -b option, the -b option will be ignored. C:\GAMES> PKLITE -b GAME.EXE In the example shown above, the program GAME.EXE will be compressed, and a backup of the original file called GAME.BAK will be created and located in the GAMES directory. You can also retain the original file in its uncompressed state by specifying a destination file on the command line by using the [[d:][path] Outfile] option. By using this feature, you rename the compressed file and retain the source file in its original form. C:\PK> PKLITE PROG.COM PROGCMP.COM In this example, the file PROG.COM will be compressed and the compressed version of the file will be named PROGCMP.COM. By renaming the file, the uncompressed version of the file (PROG.COM) will be retained in its original form. 11 -e Use Extra Compression Method (* Option available only in PKLITE Professional version *) This option is used to produce the smallest executable files. It uses a slightly different algorithm, which also scrambles the excutable file. This scrambling makes the executable data more resistant to disassembly or "reverse engineering" procedures. After a file is compressed using this method, it cannot be expanded to match the original executable file. If you attempt to expand it using the -x option, PKLITE will return a message stating the file cannot be expanded. This option is ideal for software developers who wish to distribute their programs in compressed form. C:\DATA> PKLITE -e TEST.EXE A: In the example shown above, PKLITE will use the extra compression method to compress TEST.EXE. The compressed file will be located on the A: drive. -l Display software license screen This option is used to display the PKLITE software license agreement. It is also printed on page 5 of this manual. To display the license agreement, type the following on the command line. C:\> PKLITE -l 12 -n Never Compress Files With Overlays or Optimize Relocation Table This option is used to tell PKLITE to never compress files that use overlays. Programs which use overlays loaded from .EXE files, may not run normally when in compressed form. PKLITE will detect when a program file contains overlays and will automatically skip it. If you do not use this feature, PKLITE will prompt you for confirmation before compressing any files with overlays. C:\DATA> PKLITE -n *.EXE C:\DATA\COMP In the example shown above, PKLITE will compress all of the .EXE files in the DATA directory as long as they do not use overlays. The compressed files will be placed in the C:\DATA\COMP destination directory. 13 -o Overwrite Output File if it Exists This option is used when you specify a destination file (output file) on the command line. If a file with the same name as the output file that you have specified already exists at the destination, it will automatically be overwritten when you use this command. If you do not use this option, PKLITE will prompt you for confirmation before it overwriting any existing output file. C:\PKWARE> PKLITE -o PROG.EXE A:\TINYPROG.EXE In the example shown above, PKLITE will compress PROG.EXE and will locate the compressed version of the program on the A: drive. The compressed version of the program will be named TINYPROG.EXE. If a file called TINYPROG.EXE already exists on the A: drive, it will automatically be overwritten. NOTE: The -o option is only necessary if a output file is specified. 14 -r Remove Extra .EXE Data This option will compress a file and discard any data appended after the load image data. This data could be setup information, overlay data, or debugging information. The -r option should be used only when you are sure there is extra data in the file located after the load image data. Only use this option if you know you will no longer need this extra data. It may delete overlay or other important data. C:\NET> PKLITE -r *.EXE This example will compress all of the files in the C:\NET directory that have a .EXE extension. It will also discard any data appended to the files. CAUTION This option should be used with caution. It can endanger the operation of the files being compressed. THE EXTRA DATA CANNOT BE RESTORED WITH THE -X. 15 -u Update File Time/Date to Current Time/Date This option will assign the current time and date to the file that you are compressing. If you do not use this option, the time and date of the compressed file will be set to the time and date of the original file by default. C:\PKWARE> PKLITE -u FILE.COM B: In the example shown above, the program FILE.COM will be compressed and the compressed version of the program will be located on the B: drive. The compressed file will retain the same name (FILE.COM) as the original file. However, the time and date will be updated to the current time and date at the time the file was compressed. 16 -x Expand a Compressed File This option will expand any files you have compressed with PKLITE. When you use this option, the file will be returned to its original size. You can rename and/or relocate a file when you expand it by using the [[d:][path] Outfile] option on the command line. C:\> PKLITE -x FILE.EXE A: In the example shown above, the compressed file FILE.EXE will be expanded and the expanded file will be located on the A: drive. After a compressed file is expanded, PKLITE will display several important facts. PKLITE will list the name of the compressed file, original (compressed) size of the file, and the expanded size of the file. The output file and location will also be listed if appropriate. An example is shown below. C:\> PKLITE -x FILE1.EXE FILE2 Expanding: FILE1.EXE into file FILE2.EXE Original Size: 12299 Expanded Size: 18466 NOTE: The expand option can be used with the following options: -b Create Backup file -o Overwrite option -u Update time/date 17 When the -x option is used with the -b option, a backup of the compressed version of the file will be created with a .BAK extension. When the -x option is used with the -o option, PKLITE will overwrite any same-named files without prompting you for confirmation. You can also use the -x option along with the -u Update option to update to the current time and date when expanding a file. (If you used the -u Update time/date option when you compressed the program, then when you expand it, it will retain the new time and date. The time/date does not return to the original value.) 18 III. PROGRAMS THAT SHOULD NOT BE COMPRESSED ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PKLITE can compress most executable files. However, there are some applications that cannot be compressed, or do not run correctly when compressed. The following is a sample list of such programs. COMMAND.COM MS DOS Command interpreter and shell. This program has a self-contained loader. It will attempt to load data which is compressed and fail. CV.EXE Microsoft Codeview debugging program. When run in compressed form, the program returns: Invalid format in CV.EXE. The program does a run time check on the .EXE file, and in compressed form the error is reported. PKLITE cannot detect this and compresses the file without any warnings. C2.EXE Part of Microsoft C 6.00 compiler. When run in compressed form it reports: Overlay not found. This is an example of a program with internal overlays where the overlay manager works incorrectly with the compressed .EXE file. When compressing with PKLITE, the overlay data will be detected and the user will be prompted as to whether this file should be compressed. FOXPRO.EXE FoxPro 1.00 - 1.02 Database program. This program contains internal overlays. It will not run correctly when in compressed form. 19 PIFEDIT.EXE Microsoft Windows PIF editing program. PKLITE cannot compress any Microsoft Windows executable files. PKLITE detects whether the file being compressed is a Windows application, and will not attempt to compress it. MAKEINI.EXE OS/2 program. PKLITE cannot compress any OS/2 executable files. PKLITE detects whether the file being compressed is an OS/2 application, and will not attempt to compress it. Programs that modify the executable file. Programs that modify the load image data in a executable file will not work correctly in the compressed state. Many programs have setup programs that modify the executable file itself. An example of this would be the PUTAV program in PKZIP version 1.10. If run on a compressed version of PKZIP, the message "Error in: PKZIP.EXE" will be displayed. The PKZIP program should be expanded to its original size with the -x option before running PUTAV. After installing the AV, PKZIP may be recompressed. Programs that modify the extra overlay data or data stored at the end of the .EXE file may run correctly in compressed form, since only the load image data is compressed by PKLITE. StupenDOS version 2.0 is an example of such a program. Setup information is appended to the .EXE file. Therefore, saving the setup works correctly with StupenDOS even when in compressed form. 20 IV. PKLITE ERROR MESSAGES ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The following error messages may appear when using PKLITE. A brief explanation of each message along with possible solutions is listed below. The DOS errorlevel value returned with each error is also listed. 1 Syntax Error This error appears when the PKLITE command line you have entered contains a syntax error. When this occurs, PKLITE will print the help screen showing all the program options on the monitor. 2 File extension must be EXE or COM The file you have attempted to compress does not have a .EXE or .COM extension. If the file is in fact an executable file, you can rename the file with a .EXE or .COM extension and then compress it. 3 Cannot open input file The file you have attempted to compress cannot be opened by PKLITE. Either a disk error occurred, or the file is locked by another application. You must make sure it is a true executable file. 4 Could not open output file PKLITE could not create the output file. Either a disk error has occurred, or the file is locked by another application. If you have specified an output file, make sure it is a valid filename and location. 21 5 Write error An error has occurred in writing a file to disk. PKLITE is not able to write to a necessary file. Either a disk error has occurred, or the file is locked by another application. 6 Disk full error There is not enough disk space available on the destination drive for the file being created. PKLITE never deletes the original file until it is finished writing the compressed file, therefore, there must be enough free disk space for the compressed file and the original file. Try to free up more disk space. 7 Read error PKLITE is not able to read a specified file. Check the file; it may be corrupted. 8 Create error The named file could not be created. Check the output directory; it may be invalid or full. 9 Memory error There is insufficient memory available to process the command. Try making more memory available. PKLITE requires a minimum of 85K memory. 10 Cannot compress file into itself The file being compressed and the output file are the same. When specifying an output file, make sure the output file is not the same as the input file. Incorrect: PKLITE pat.exe pat Correct: PKLITE pat.exe 22 11 EXE header error The header information of the file contains too much information to be compressed. If memory is limited, increasing the amount of memory available to PKLITE may help. 12 No extract code error You are attempting to expand a file (with -x) but the extract code is corrupted or missing. Make sure the file has been compressed with PKLITE. 13 Data error An error has been detected in the compressed data. The file is corrupted. 14 Compressing many files into one file error You are attempting to compress multiple files into one output file. For example: PKLITE *.exe file.exe. Correct the command line. 15 Output wildcards error The output path/file cannot contain any wildcard characters ('*' or '?'). Correct the command line. MS-DOS, Codeview, C Optimizing Compiler, Windows and OS/2 are trademarks or registered trademarks of Microsoft Corp. Foxpro is a trademark of Fox Software. PKZIP, PKUNZIP are registered trademarks of PKWARE, Inc. 23