═══ 1. Copyright ═══ Copyright FreeLaunch V 1.3 is not Freeware. Thomas Blummer holds Copyright on this program and its documentation. The use and distribution of this programm and its documentation is regulated by its license agreement. You may received this program as Shareware, wich means you are allowed to test this program for a limited period of time. ═══ 1.1. License agreement ═══ License agreement You are granted to use a shareware version of this program for 30 days prior to registartion for test porposes. You may o transfer a configured runtime part of the product to other party. o rename the runtime modul. o alter any resource shipped with this product, build and build executable moduls with altered resources. o transfer the program to other party provided you agree to accept that this program in the particular runtime configuration is for the other party an undivorceable part of your product or contract. o use this program if you agree to assume that because the program is highly configurable any loss of you or the other party originated by its use or inability to use is caused by your erronous configuration of the program. You may not o transfer or make accessible other than the runtime part of the product to other party. o bill a fee for the runtime part of this product. o use an unregistered copy after the trial period. o use one licensed copy at two sites or a product licensed for an other person. o reverse-assemble or reverse-compile the program without my written permission. The runtime parts of this product are the executable files frlrun.exe, frlsrun.exe, frlwrun.exe and frlwsrun.exe linked with your resource-compiled configuration for an other product. ═══ 1.2. about Info-ZIP ═══ FreeLaunch v1.3 contains portions of the code of the 7 February 1994 public release of the Info-ZIP group's portable UnZip zipfile-extraction program. FreeLaunch is using Info-ZIP's algorithm according to the information contained in the Info-ZIP package : Q. Can I use the source code of Zip and UnZip in my commercial application? A. Yes, so long as you include in your product an acknowledgment and an offer of the original compression sources for free or for a small copying fee, and make clear that there are no extra or hidden charges resulting from the use of the compression code by your product. In other words, you are allowed to sell only your own work, not ours. [Note the additional restrictions above on the code in unreduce.c, unshrink.c and vms.c.] If you have special requirements, contact us at zip-bugs@wkuvx1.wku.edu. I offer to deliver the complete Info-ZIP package as on 7 February 1994 in source and/or executable form for any user of FreeLaunch. Additionally you can obtain Info-ZIP from nearly all OS/2 FTP sites, HOBBES OS/2 CDs or Compuserve Forum OS2SHARE. FreeLaunch does not contain any hidden charge for the use of Info-ZIP. FreeLaunch does not contain the code of unreduce.c unshrink.c and vms.c of the Info-ZIP distribution. Therefore the additional restrictions mentioned in the answer are not applicable, and FreeLaunch can not support the compression forms "shrinked" and "reduced". FreeLaunch does support "stored", "imploded", and "deflated" files. ═══ 2. Shareware registration ═══ FreeLaunch is licensed for one company site or one person of your choice. One license allows you to create and distribute unlimited copies in unlimited configurations of the run time modul (frlrun.exe, frlsrun.exe, frlwrun.exe frlswrun.exe) created at one company site or by one person respectively. You will receive a serial number if you register this product. The a valid serial number hides the Information window about Shareware at program start. Order form Name ________________________________________________________________ Company _____________________________________________________________ Address _____________________________________________________________ _____________________________________________________________ Phone _______________________________________________________________ Depending on your location and net access you can choose between three registration methods: o BMT Micro is likely the best choice for USA residents and/or Internet users. o Direct registration is the best choice for european especially german speaking users. o Registration via CompuServe is practicable only for CompuServe users. See details right below. Order through BMT Micro Mail Orders To: BMT Micro 452 Horn Road Wilmington, NC 28412-2411 U.S.A. Voice Orders: 8:00am - 8:00pm EST (-5 GMT) (800) 414-4268 (Orders Only) (910) 791-7052 (Orders, questions) Fax Orders: (910) 350-2937 24 hours / 7 Days Online Orders via modem: (910) 350-8061 10 lines, all 14.4K (910) 799-0923 Direct 28.8K line via Compuserve: Thomas Bradford, 74031,307 via Internet: orders@bmtmicro.com We accept Visa, Mastercard, Discover, American Express, Optima, Eurocard, money orders, cashiers checks and personal checks. Please do not send cash in the mail. Personal checks are subject to clearance. We accept purchase orders from educational institutions, governmental agencies and other verifiable businesses. Terms are "Due Upon Receipt". Product Quantity Price Number of copies _________________________ ______________ ________________ FreeLaunch Version 1.3 $ 60.00 US 1st Class ................................. Free Airborne (Next day most places, USA Only).. $ 7.00 US Federal Express (USA Only)................. $ 13.00 US Federal Express (Canada/Mexico)............ $ 25.00 US Federal Express (Europe/Japan)............. $ 30.00 US Express (Outside USA) ..................... $ 16.00 US Total: $ _______ For credit card payment only Circle one: VISA / Master / Discover Credit card number: _____________________________________________ Expiration date: ________________________________________________ Authorization signature: ________________________________________ Direct order For one license send me your order per E-Mail to: 100273.3607@compuserve.com from the Internet or to 100273,3607 from CompuServe. I will ask you for a check (Verrechnungsscheck) in Deutsche Mark DM 85,- per License. You will receive direct phone support by me if you choose this way to registrate. Order via CompuServe's SWREG Service You can register trough Compuserve's SWREG service also. GO SWREG and register ID : 4693. The registration fee is $ 60.00 US if you use this method. ═══ 3. How to get Support ? ═══ I support this product via E-Mail. Please address your questions in english or german to 100273.3607@compuserve.com from the Internet or to 100273,3607 from CompuServe. I am glad to hear your suggestions too. I also support this product in CompuServe's OS2SHARE forum in english and in OS2UGER forum in german language. ═══ 4. Introduction ═══ FreeLaunch is a free configurable program launcher. FreeLaunch can deal with many installation diskettes, deep destination directory structures, deep desktop folder structures and CONFIG.SYS variables. It is designed to save you from the boring work of programming an installer for your application. As it is free configurable there is no need to rewrite it if your distribution changes. You configure FreeLaunch by writing a configuration file and storing it with the name install.scr. You can immediately test the configuration by frltest.exe. If you are satisfied with a configuration you should compile it, then build the compiled configuration into one of the runtime executables frlrun.exe, frlwrun.exe frlsrun.exe, frlswrun.exe. Note that you are not allowed to tansfer frltest.exe to other party, as it provided for development only. This approach might appear too complicated on first sight, but it has significant advantages. o The Launcher you build with this approach safe against user who think they might edit every configuration file. o It keeps your exact configuration parameters secret. o The bounded Launcher is smaller than the testing one. o No one can misuse your Launcher to install some other products. The price for all of above is: you have to understand the language and compiling procedure it uses. ═══ 5. Creating a runtime executable ═══ FreeLaunch is distributed in a very developer friendly manner. With this product you receive : o All resource files, including all messages, dialog boxes and icons. o A script compiler (frlcomp.exe ). o A Launcher (frltest.exe) with built-in interpreter for its Language to quick test new configurations. o Various runtime executables wich can be linked with compiled scripts. o A make-file to build a new configuration frl.mak You configure FreeLaunch by writing a configuration file install.scr. You can test this configuration with the FreeLaunch Tester frltest.exe and after you are satisfied with its tested functionality you should build a runtime executable wich you can ship with your application. FreeLaunch comes with all resources in source, so you can also redisign the dialog boxes, icons and messages it uses. Use the program objects "Edit Dialog Resources" and "Edit Error Messages" created by the installation of FreeLaunch to finish this job. The configuration file install.scr must also be compiled into a resource file with the FreeLaunch configuration compiler frlcomp.exe. Simply execute this compiler wich will create the file install.rc. install.rc is a resource file wich should also be linked to the runtime executables. FreeLaunch comes with a make-file for the OS/2 Toolkit's NMAKE wich simplifies the procedure described abowe. You can start this makefile by simply starting the program object "Build a new FreeLaunch" created by the FreeLaunch Installation. There is an other program object in the Warp only folder to start this makefile to build the warp executables. If you are not familiar with the use of makefiles, here a sample command sequence to create all runtime executables of FreeLaunch for an ISTALL.SCR script: [C:\FL]e install.scr [C:\FL]frlcomp [C:\FL]rc -r install.rc [C:\FL]rc -x install.res frlrun.exe [C:\FL]rc -x install.res frlsrun.exe [C:\FL]rc -x2 install.res frlwrun.exe [C:\FL]rc -x2 install.res frlswrun.exe Note that you can successfully execute the last two command only on Warp. Also remember that install.rc includes frl.rc. If you redesigned the dialog boxes, error messages or icons of FreeLaunch execute the following commands to create a new Tester too: [C:\FL]rc -r frl.rc [C:\FL]rc -x frl.res frltest.exe See the content of the file frl.mak below. # Makefile for FreeLaunch 1.3 # (c) Thomas Blummer 1995 # execute # nmake /f frl.mak all # to create an new FreeLaunch and a new DLL # destination old creates the Tester and the runtime Moduls # with and without Info-Unzip # The executables frltest.exe frlrun.exe and frlsrun.exe are # runnable on every OS/2 Versions >= 2.0 including Warp 3.0 old : frltest.exe frlrun.exe frlsrun.exe all : old warp dll # executables created by this destination frlwrun.exe frlswrun.exe # are runnable ONLY on OS/2 Warp 3.0 (and hopefully above) warp : frlwrun.exe frlswrun.exe dll : frldll.dll frldll.dll : frldll.c frldll.def icc /Q /Gm /Ge- frldll.c /B/BATCH frldll.def frltest.exe : frl.rc dialog.dlg resource.h dialog.h rc -x frl.rc $@ frlrun.exe : install.res rc -x $? $@ >nul frlsrun.exe : install.res rc -x $? $@ >nul # for Warp I am using the new -x2 flag of the resource compiler # distributed in warp. It does a better compression than the older # versions. frlwrun.exe : install.res rc -x2 $? $@ >nul frlswrun.exe : install.res rc -x2 $? $@ >nul install.res : install.rc frl.rc dialog.dlg resource.h dialog.h rc -r install.rc >nul install.rc : install.scr frlcomp ═══ 6. Choosing the right runtime executable ═══ FreeLaunch comes with four runtime executables. The following table helps you to choose the right one for your product: Executable Description frlrun.exe Executable on OS/2 2.0 and above including Warp. Supports ZIP archives. frlsrun.exe Exectuable on OS/2 2.0 and above including Warp. Does not support ZIP archives frlwrun.exe Executable on OS/2 Warp 3.0 and hopefully above. Supports ZIP archives. frlwsrun.exe Executable on OS/2 Warp 3.0 and hopefully above. Does not support ZIP archives. Depending on your requirements you can choose the smallest executable for a given installation to save disk space. Remember that you are allowed to rename the runtime executable as install.exe, setup.exe or any name you prefer. Remember that you must ship runtime executables of FreeLaunch with your application, and you are not permitted to distribute frltest.exe. ═══ 7. How to extend FreeLaunch with a DLL ? ═══ FreeLaunch offers you to execute a function in an extension DLL at installation and removal. You have to compile a DLL to use this functionality. The name of the DLL is defined by the ExtensionDLL statement. This DLL must contain a function BOOL _System frlentry (HAB hab, HWND frame, ULONG state, const char *dir, ULONG param); See the include file frldll.h. The following sections describe how the extension works. ═══ 7.1. Using the DLL while installing a product ═══ The extension DLL is loaded by FreeLaunch right after the user dismissed the dialog wich asks for the source path of the installation. The named DLL must reside at this time in this drive or path. The function frlentry is called by FreeLaunch only after a succesfull installation. At this time all files are copied and uncompressed, the config.sys and the desktop are already updated. FreeLaunch calls frlentry with FLST_INSTALLDONE as third parameter, the fourth parameter is the destination directory path of the installation, the last parameter is a combination of the macros FLP_CONFIG, FLP_DESKTOP, FLP_ALLFILES, FLP_OLDERFILES and FLP_KEEPFILES. The combination of these macros reflect the settings the user selected as he started the installation. The first parameter is the anchor block of the FreeLaunch main thread. The function is called from the first PM thread while processing a message, so you must return within 1/10 second or you should start an other thread and disable the frame window wich is passed as the second parameter until you finish. The DLL is unloaded if FreeLaunch exits. ═══ 7.2. Using the DLL while removing a product ═══ The extension DLL is loaded by FreeLaunch right after the user selected the remove option. The DLL must reside at this time in the same directory as the installer. FreeLaunch calls the frlentry function rigth after the user dismissed the options dialog for removal. Nothing was removed by FreeLaunch at this time. The removal procedure does not start if frlentry returns FALSE. FreeLaunch calls frlentry with FLST_REMOVESTART as third parameter, the fourth parameter is the destination directory path of the installation, the last parameter is a combination of the macros FLP_CONFIG, FLP_DESKTOP, FLP_INI and FLP_ALLFILES. The combination of these macros reflect the settings the user selected as he started the removal. The first parameter is the anchor block of the FreeLaunch main thread. The function is called from the first PM thread while processing a message, so you must return within 1/10 second or you should start an other thread and disable the frame window wich is passed as the second parameter until you finish. The DLL is unloaded if FreeLaunch exits. ═══ 7.3. frldll.h ═══ /* FreeLaunch InstallationDll header (c) Thomas Blummer 1995 */ #ifndef _FRLDLL_ #define _FRLDLL_ #define INCL_WIN #include /* ** This entry is called by FreeLaunch ** Parameters : ** hab : Anchor Block ** frame : Window handle of the top level frame ** state : one of the FLST_ macros below ** dir : installation directory ** param : additional parameter to the state if required. ** Return Values : ** TRUE : all right. ** FALSE : see per state below. */ BOOL _System frlentry (HAB hab, HWND frame, ULONG state, const char *dir, ULONG param); typedef BOOL (_System FRLENTRY)(HAB, HWND, ULONG, const char *, ULONG); typedef FRLENTRY *PFRLENTRY; /* ** frlentry is called with this state AFTER FreeLaunch completed ** the installation procedure. ** This entry is NOT called if FreeLaunch failed to install the product. ** const char *dir : ASCIZ destination directory ** ULONG param : combination of the FLP_ macros below ** Return value : no matter. */ #define FLST_INSTALLDONE 1 /* ** flrentry is called with this state BEFORE FreeLaunch attempts to remove the product. ** const char *dir : ASCIZ installation directory ** ULONG param : combination of the FLDONE_ macros ** return value : FALSE stop removal. */ #define FLST_REMOVESTART 2 /* ** Macros for param ** they represent the options the user requested. */ #define FLP_CONFIG 0x00000001 #define FLP_DESKTOP 0x00000002 #define FLP_INI 0x00000004 #define FLP_ALLFILES 0x00000008 #define FLP_OLDERFILES 0x00000010 #define FLP_KEEPFILES 0x00000020 #endif /* _FRLDLL_ */ ═══ 7.4. Sample DLL source ═══ // compile this sample (if you are using IBM C Set++) as // icc /Gm /Ge- frldll.c /B/BATCH frldll.def // contents of frldll.def : // LIBRARY FRLDLL // PROTMODE // DATA MULTIPLE NONSHARED READWRITE PRELOAD // CODE PRELOAD // EXPORTS // frlentry #include "frldll.h" #define INCL_BASE #include #include BOOL _System frlentry (HAB hab, HWND frame, ULONG state, const char *dir, ULONG param) { switch ( state ) { case FLST_INSTALLDONE : return TRUE; case FLST_REMOVESTART : /* ** The following lines are only meaningful ** for the deinstallation of FreeLaunch ** Replace or delete the following lines ** depending on your needs */ { char path [1024]; strcpy (path, dir); strcat (path, "\\frldll.dll"); DosDelete (path); strcpy (path, dir); strcat (path, "\\frldll.obj"); DosDelete (path); strcpy (path, dir); strcat (path, "\\install.rc"); DosDelete (path); strcpy (path, dir); strcat (path, "\\install.res"); DosDelete (path); strcpy (path, dir); strcat (path, "\\frl.res"); DosDelete (path); } return TRUE; } return TRUE; } ═══ 8. The Language ═══ FreeLaunch is controlled by a configuration file wich contains a script in his language. This language is discussed in this section. The Language is context free and case sensitiv. The Language is made up of statements of strictly defined syntax. Because FreeLaunch reads the script only once no forward references within the statements are allowed. Therefore there is a suggested order of statements. Some statements are required for every configuration file. ═══ 8.1. Required statements ═══ A configuration file must include the following statements: OwnerOfThisProgram ApplicationName InstallationTitle ReadMe Disk Directory ═══ 8.2. Suggested order of statements ═══ To reduce the possibility of forward references, I suggest to write statements in the following order. OwnerOfThisProgram ApplicationName InstallationTitle ReadMe ExtensionDll Disk Directory Environment SomClass Folder Program SomObject ═══ 8.3. Statements ═══ Statements The Language is an unlimited list of statements. See the an alphabetical list of all statements below. Statement Purpose ApplicationName Defines a short name of the application to be used in USER.INI Archive Defines a ZIP archive of files. Directory Defines a directory, its contents and subdirectories. Disk Describes the Installation media. Environment Defines an environment Variable wich should be updated in CONFIG.SYS ExtensionDll Defines the name of a DLL wich extends the Functionality of FreeLaunch File Defines a file within a directory. Folder Defines a Workplace Folder. InstallationTitle Defines the title bar text of the Installation OwnerOfThisProgram Stores the name of a registered user of this program Program Defines a Workplace Program object. ReadMe Specifies the file name of your READ ME file. SomClass Registers a SOM Class DLL into the Workplace SomObject Defines a Workplace Object. ═══ 8.3.1. ApplicationName ═══ Syntax ApplicationName "a name"; You must include this statement in every configuration file. The application name will be used by FreeLaunch to create an entry in the USER.INI, using this name as Application and the key "InstallationDirectory". The value of this entry is the directory the user selected to use for the product. I know some of you developers including me hate programs wich dump their rabbish into the system INI files. I hope I managed a compromise. FreeLaunch needs an entry to find the product on removal, and you could use this entry to find your own INI files. FreeLaunch deletes this entry on removal. Example ApplicationName "FreeLaunch"; ═══ 8.3.2. Archive ═══ Syntax Archive disk_number "archive file name" "description" Begin File "file name"; File "file name"; // ... and so on End FreeLaunch assumes that the archive file on the installation media is an archive created with Info-ZIP. FreeLaunch copies the archive then uncomresses it using the "strored", "imploded" and "deflated" algorithms. FreeLaunch checks if the archive is consistent and if it contains all files listed in the definition. FreeLaunch deletes the archive in the destination directory after successfully uncompressing it. Example // create a zip file: // zip arch.zip app.exe crtl.dll app.ico Directory prod "Product directory" Begin Archive 1 arch.zip "application" Begin File app.exe; File crtl.dll; File app.ico; End End // create a program object on the desktop Program "my Application" PathNameOf (app.exe) "" PathNameOf (prod) PathNameOf (app.ico) Desktop; ═══ 8.3.3. Directory ═══ Syntax Directory "name" "description" Begin Directory statement // and/or File statement // and/or Archive statement End FreeLaunch will create the directory and copy its contents from the installation media. You can specify only one top level directory for an installation. Other directories must be nested within the top level one. Parameter Function class name Directory name description an informative description of the directory. Example Directory prod "product directory" Begin File 1 read.me "Read me file"; Directory help "Help files" Begin File 1 myhlp.inf "Help file"; Archive 1 misc.zip "misc. files" Begin File english.inf; File deutsch.inf; End End End ═══ 8.3.4. Disk ═══ Syntax Disk disk_number "disk title" "label file"; You must define at least one Disk in a configuration file. Parameter Function disk title The title printed on the disk. The user will be asked to insert the disk with this label label file The file name of a possibly dummy file on the disk. The installer is seeking for this file to decide if the inserted disk is the correct one. Example Disk 1 "FreeLaunch Version 1.3 Disk 1" frlrun.exe; ═══ 8.3.5. Environment ═══ Syntax Environment variable "value"; This line causes that FreeLaunch updates the file CONFIG.SYS on the boot drive. The Variable is either added or the value is appended to existing definitions of the variable. FreeLaunch appends values in PATH style, it also knows about the different syntax of the LIBPATH line. Parameter Function variable Variable name. Should be one word. value any value you need. Example Environment PATH PathNameOf ( bin ); ═══ 8.3.6. ExtensionDll ═══ Syntax ExtensionDll "DLL file name"; This statement causes that FreeLaunch loads the named DLL at installation and removal. FreeLaunch also executes the function frlentry in this DLL. For details see How to extend FreeLaunch with a DLL. Example ExtensionDll "frldll.dll"; ═══ 8.3.7. File ═══ Syntax File disk_number "file name" "description"; FreeLaunch will copy the specified file from the disk. Parameter Function disk_number Number of the disk where the source file resides. See statement Disk file name destination and source file name. description This string will be displayed while FreeLaunch is copying the file. FreeLaunch v1.3 no longer supports the use of external decompressors, as the build-in ZIP algorithm makes this feature obsolate, and I want to keep the executable size as low as possible. See statement Archive Example File 1 myapp.exe "The application"; ═══ 8.3.8. Folder ═══ Syntax Folder "title" [location] Begin Folder statement // and/or SomObject statement // and/or Program statement End FreeLaunch creates Workplace Folder by this statement. Note that a Folder is only a specialized case of SomObject, so you can create more flexible Folders by using the SomObject statement. Parameter Function title title of the created folder object id Instance ID location parent folder or object. Location is not allowed in nested definitions, as nesting already defines parent object. Note that you must provide UNIQ object ID for every Workplace object you create with FreeLaunch Example Folder "My Application Folder" Desktop Begin Program "My Application" PathNameOf ( myapp.exe ) "-dosomething" PathNameOf ( data ) PathNameOf ( myapp.ico ); Folder "Help Files" Begin Program "English help" view.exe PathNameOf ( english.inf ) PathNameOf ( help ) ""; End End ═══ 8.3.9. InstallationTitle ═══ Syntax InstallationTitle "title bar text"; You must include this statement in every configuration file. This value will be displayed as title bar text of the installation program. Example InstallationTitle "Installing FreeLaunch Version 1.3"; ═══ 8.3.10. OwnerOfThisProgram ═══ Syntax OwnerOfThisProgram "name of the licensee" license_number; You must include this statement in every configuration file. If you did not licensed this program yet include : OwnerOfThisProgram "unregistered shareware" 0; Example OwnerOfThisProgram "(c) Bugs Unlimited" 4711; ═══ 8.3.11. Program ═══ Syntax Program "title" "program file" "parameters" "startup directory" "icon file" [location]; FreeLaunch creates Workplace Program Objects by this statement. Parameter Function title icon title object id Instance ID program file executable parameters parameters for the executable startup directory startup directory icon file icon file location parent folder or object. Location is not allowed in nested definitions, as nesting already defines parent object. Note that you must provide UNIQ object ID for every Workplace object you create with FreeLaunch Example Program "My Application" PathNameOf ( myapp.exe ) "/HELP" "" "" Desktop; ═══ 8.3.12. ReadMe ═══ Syntax ReadMe "readme file"; You must include this statement in every configuration file. The specified file will be displayed by installation program. Example ReadMe "READ.ME"; ═══ 8.3.13. SomClass ═══ Syntax SomClass "class name" "class dll path"; FreeLaunch will register the defined SOM Class into the Workplace. Parameter Function class name Workplace class name. Avoid conflicts with standard names class dll path The path to the DLL implementing the WP Class. Use PathNameOf ( "filename" ) Example SomClass "MyClass" PathNameOf ( mysom.dll ); ═══ 8.3.14. SomObject ═══ Syntax SomObject "icon title" "class name" "setup" [location]; or SomObject "icon title" "class name" "setup" [ location ] Begin Folder statement // and/or SomObject statement // and/or Program statement End FreeLaunch creates Workplace Object Instances of any registered object class. You should register your own classes with SomClass before creating instances of it. Parameter Function icon title icon title class name Workplace class name object id Instance ID setup Setup string. This string will be passed to WinCreateObject as parameter 3. location parent folder or object. Location is not allowed in nested definitions, as nesting already defines parent object. Note that you must provide UNIQ object ID for every Workplace object you create with FreeLaunch Example SomObject "My Object" "MyClass" "DOWHAT=YES;" Desktop; ═══ 8.3.15. // ═══ Syntax // (c) Thomas Blummer 1995 Everything between // and the end of the line is handled as comment. Comments are simply ignored. ═══ 8.4. Functions ═══ Functions FreeLaunch supports the following Functions in the current release: Function Purpose PathNameOf Returns the destination path of a file or directory. ═══ 8.4.1. PathNameOf ═══ Syntax PathNameOf ( FileName ) or PathNameOf ( DirectoryName ) The function returns the destination path name of the file. Parameter Function FileName Name of a file on the distribution after decompression DirectoryName Name of a destination Directory (First parameter of a Directory statement) Example PathNameOf ( mysom.dll ) PathNameOf ( bin ) ═══ 8.5. Parameters ═══ The next sections describe parameter of statements. ═══ 8.5.1. Location ═══ FreeLaunch creates Workplace objects at a specified location. A location is either the Object ID of an existing object or one of the following predefined constants Constant Value Configuration the system configuration folder Desktop the desktop Drives the drives folder Information the system information folder Nowhere nowhere Startup the system startup folder System the system folder Templates the templates folder Example Desktop ═══ 8.5.2. Object ID ═══ FreeLaunch creates named Workplace objects. You must assign an object ID to each created instance. An object ID starts with < und ends with >, use any alphanumeric character beetwen these two. No spaces, commas or semicolons are allowed. Avoid conflicts with existing standard names. Note that you must provide UNIQ object ID for every Workplace object you create with FreeLaunch Example ═══ 8.5.3. String Expression ═══ StringExpressions are used as parameter for many statements. Definition Purpose String a String is a StringExpression StringExpression + StringExpression Concatenates to strings. PathNameOf ( "file name" ) Substitutes the full target pathname of the named file. NOTE : The previous syntax of FreeLaunch 1.0 PathNameOf "string" (without paranthesis) is also supported, but please use the new Syntax in the future. Example "a string" PathNameOf ( read.me ) // Expands "c:\destination\read.me" "this is a string " + " expression" "ICONFILE=" + PathNameOf ( app.ico ) + ";" // Expands to eg. "ICONFILE=c:\destination\icons\app.ico;" ═══ 8.5.4. String ═══ Strings are used as parameters for statements. A string is a chain of zero or more alphanumeric characters including _#$@ФДБЩОЪсб╓врВРа╡Е╖К╘ЧыХуН▐. A string must be delimited by quotation marks if it contains a character not listed above. Example "this is a string" "" // this is an empty string ═══ 9. Tips ═══ This section discusses some hints. ═══ 9.1. Setting LIBPATH and PATH ═══ Assume you want to append the subdirectory bin of your installation into the PATH and the subdirectory dll into the LIBPATH Variable. You also need a variable MYINSTDIR wich should point to the installation directory, MYINFO wich should point to the installed read.me file and MYNAME to thomas. Directory APP "My application directory" Begin File 1 read.me; Directory bin "Executables" Begin File 1 app.exe "The application"; End Directory dll "Run time libraries" Begin File 1 crt.dll "My CRTL"; End End Environment PATH PathNameOf (bin); Environment LIBPATH PathNameOf (dll); Environment MYINSTDIR PathNameOf (APP); Environment MYINFO PathNameOf (read.me); Environment MYNAME thomas; ═══ 9.2. Install your own WPS Class ═══ You can use FreeLaunch to copy, register and create instances of your own WP-Class DLL. Directory MYAPP "The Application Directory" Begin File 1 beauty.ico; Directory SOM "my SOM DLL directory" Begin File 1 mysom.dll "My SOM DLL"; End End // append the directory to the LIBPATH Environment LIBPATH PathNameOf (SOM); // register the new SOM-Class SomClass "MySomClass" PathNameOf (mysom.dll); // create an instance on the desktop SomObject "A useful Object" "MySomClass" "ICONID=" PathNameOf (beauty.ico) + ";" + "SOMEUSEFULSETUP=YES;" Desktop; ═══ 9.3. Create a Folder with your Icon ═══ Folder and Program are only specialized cases of SomObject. You can create SOM objects with any parameters using FreeLaunch. To create a Folder with beauty.ico as its icon on the desktop, just write: SomObject "Beauty Folder" "WPFolder" "ICONFILE=" + PathNameOf (beauty.ico) + ";" Desktop; ═══ 9.4. Associate a file extension with your program ═══ You can create a link between data file extensions and your program. You have to create the Program object for your application as SomObject in this case : // create a program object on the desktop and // link *.yap and *.ypp files to yapp.exe SomObject "Your Application" "WPProgram" "EXENAME=" + PathNameOf (yapp.exe) + ";" + "ASSOCFILTER=*.yap,*.ypp;" Desktop; You can also assign Extended Attribute Type with your program object via ASSOCTYPE. ═══ 9.5. Install a Win-OS/2 or DOS Program ═══ Create Program objects as SomObjects and use the PROGTYPE setup. // create a windowed dos application // wich needs a device driver xxx.sys wich resides in your dev directory SomObject "Your DOS APP" "WPProgram" "PROGTYPE=VDM;EXENAME=" + PathNameOf (yapp.exe) + ";" + "SET DOS_DEVICE=" + PathNameOf (dev) + "\\xxx.sys;" Desktop; // create a seamless win-os/2 program object // wich needs a special PATH SomObject "Your Win APP" "WPProgram" "PROGTYPE=STDSEAMLESSVDM;EXENAME=" + PathNameOf (yapp.exe) + ";" + "SET PATH=" + PathNameOf (odapi) + ";" Desktop; ═══ 9.6. Automatically start a program after install ═══ To automatically start a program after installation just create a SomObject wich resides in Nowhere. This makes it disappear at next boot. You also have to set the OPEN=DEFAULT Style of the object. // Create a temporary program object to show your documentation // right after install SomObject "Must Read This" "WPProgram" "EXENAME=view.exe;OPEN=DEFAULT;PARAMETERS=" + PathNameOf (document.inf) + ";" Nowhere; ═══ 9.7. The FreeLaunch installation script. ═══ // (c) Thomas Blummer 1995 // // This is a configuration file for FreeLaunch v1.3 // // It is written in its own Language. Please read "FreeLaunch v1.3 Technical // Documentation" // (frltech.inf) for a sophiscated definition of the language. // // This file may be extecuted by "FreeLaunch Tester" (frltest.exe) // for test purposes or it can be compiled into the runtime Launcher "FreeLaunch RT" // (frlrun.exe, frlsrun.exe, frlswrun.exe) by executing "Build a new Launcher" // (it starts a make-file for NMAKE). // defines the title bar text InstallationTitle "FreeLaunch v1.3"; // defines the file wich will be shown in the client area of the installer ReadMe read.me; // defines Application Name used in USER.INI ApplicationName "FreeLaunch"; // Extension Dll for customized install or cleanup ExtensionDll frldll.dll; // defines Installation diskette and a file wich identifies the correct disk Disk 1 "FreeLaunch v1.3" frlrun.exe; // defines installation directories // no subdirectories are used here, BUT NO WORRY FreeLaunch can deal with nested directories. Directory FRL "FreeLaunch installation directory" Begin // defines files of the distribution File 1 read.me "Read me file"; File 1 frltest.exe "FreeLaunch Tester"; File 1 frlrun.exe "FreeLaunch RT"; File 1 frlsrun.exe "FreeLaunch RT without Info-UnZip"; File 1 frlwrun.exe "FreeLaunch RT for Warp"; File 1 frlswrun.exe "FreeLaunch RT for Warp without Info-Unzip"; File 1 frlcomp.exe "FreeLaunch Compiler"; File 1 frldll.dll "FreeLaunch Extension DLL"; File 1 frltech.inf "FreeLaunch Documentation"; // Define an Archive Archive 1 source.zip "FreeLaunch Sources" Begin File frl.mak; File frldll.h; File frldll.c; File frldll.def; File install.scr; File scratch.scr; File dialog.dlg; File dialog.h; File dialog.res; File frl.rc; File resource.h; File clock.ico; File diskin.ico; File info.ico; File instl.ico; File question.ico; File stop.ico; End End // defines Desktop Folder Folder "FreeLaunch v1.3" Desktop Begin // defines Program objects in this folder Program "Read Me" e.exe read.me PathNameOf ( FRL ) ""; Program "FreeLaunch v1.3 RT" PathNameOf ( frlrun.exe ) "" PathNameOf ( FRL ) ""; Program "FreeLaunch v1.3 RT without Info-Unzip" PathNameOf ( frlsrun.exe ) "" PathNameOf ( FRL ) ""; // defines a subfolder Folder Development Begin // some other programs Program "Edit Configuration file" e.exe install.scr PathNameOf ( FRL ) ""; Program "Edit Dialog Resources" dlgedit.exe dialog PathNameOf ( FRL ) ""; Program "Edit Error Messages" e.exe frl.rc PathNameOf ( FRL ) ""; Program "Build a new FreeLaunch" nmake.exe "/f frl.mak old" PathNameOf ( FRL ) ""; Program "FreeLaunch v1.3 Tester" PathNameOf ( frltest.exe ) "" PathNameOf ( FRL ) ""; Program "FreeLaunch v1.3 Technical Documentation" view.exe frltech.inf PathNameOf ( FRL ) ""; Folder "FreeLaunch DLL" Begin Program "Edit DLL Source" e.exe PathNameOf (frldll.c) "" ""; Program "Build a new DLL" nmake.exe "/f frl.mak dll" PathNameOf ( FRL ) ""; End Folder "Warp only" Begin Program "FreeLaunch v1.3 RT for Warp" PathNameOf ( frlwrun.exe ) "" PathNameOf ( FRL ) ""; Program "FreeLaunch v1.3 RT for Warp without Info-Unzip" PathNameOf ( frlswrun.exe ) "" PathNameOf ( FRL ) ""; Program "Build a new FreeLaunch for Warp" nmake.exe "/f frl.mak warp" PathNameOf ( FRL ) ""; End // a sub-sub Folder Folder Icons Begin // shadows for icon files. SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( info.ico ) + ";"; SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( question.ico ) +";"; SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( stop.ico ) +";"; SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( instl.ico ) +";"; SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( clock.ico ) +";"; SomObject "" "WPShadow" "SHADOWID=" + PathNameOf ( diskin.ico ) +";"; End End End // YOU MUST INCLUDE THIS LINE INTO EVERY CONFIGURATION FILE OwnerOfThisProgram "Unregistered Shareware" 0; // FreeLaunch supports your own WPS Classes, CONFIG.SYS Variables and more ... // Please read the "FreeLauch v1.3 Technical Documentation". ═══ 10. Trademarks ═══ The following names are Trademarks of the IBM. o OS/2 o Workplace Shell o SOM