CHIEF'S INSTALLER PRO: FREQUENTLY ASKED QUESTIONS -------------------------------------------------- THIS FAQ LIST CONTAINS A LOT OF VERY USEFUL INFORMATION, AND CAN SAVE YOU A LOT OF TIME. PLEASE READ IT CAREFULLY !!! AND, PLEASE READ this file BEFORE contacting me with any questions!! ^^^^^^ ^^^^^^ IT PROBABLY CONTAINS ANSWERS TO THOSE QUESTIONS YOU MIGHT WISH TO ASK, AND TO THOSE WHICH YOU HAVEN'T EVEN THOUGHT OF ! NOTE: please also read CHIEF.ANS for verbatim answers to some other questions. Also, please make sure that you have not mixed files from different versions of CHIEFPRO. The files will most likely not be compatible across versions. [--------------------------- CHIEF'S FAQ LIST -----------------------] 0. Q. ANY TIPS? A. Yes. The first is simple - read the documentation, especially the "reserved words" and "batch commands" sections of the help file (CHIEF.HLP), and go through the second help file CHIEFPRO.HLP with a fine toothcomb. Secondly, do NOT mix files from different versions of ChiefPro. Mixing files is bound to cause problems. Thirdly, use the ChiefPro IDE and Project Manager ! 1. Q. WHAT RESERVED WORDS (COMMANDS) DO I ACTUALLY *NEED* IN MY WINSTALL.INF FILE? A. Most of the commands in the INF file are optional. However, some of them are essential. At the absolute minimum, you MUST have the following; $TITLE $DISK1 $SPACE $TARGET 2. Q. WHAT FILES IN THE CHIEF'S INSTALLER PRO PACKAGE ARE ABSOLUTELY NECESSARY FOR AN INSTALLATION? A. As with the commands, most of the files in the package are optional. At the absolute minimum, you must have; INSTALL.EXE WINSTALL.INF WINSTL32.DLL The installation will run perfectly well with these two files. However, if you are using a language other than English, you must have a copy of WINSTALL.DLL compiled with the string resources translated to your language (or a translated copy of WINSTALL.LNG). If you want to change the default icon on the installer's dialog boxes, then you also need WINSTALC.DLL. If your program comes on more than 1 installation disk, then it is advised to ask your users to run SETUP.EXE instead of INSTALL.EXE. SETUP.EXE will call INSTALL.EXE at the right point, and running it avoids a lot of potential problems. 3. Q. WHY DO I ALWAYS GET A DIALOG TELLING ME THAT THE INSTALLATION IS NOT COMPLETE WHEN I KNOW THAT IT IS? A. If indeed, all the files have been correctly installed: The installer tries to match the figure in your $SPACE line with the sizes of the files installed (to approximately 2% either way). A substantial (more than 2%) discrepancy leads to this error dialog. One solution is to make sure that your $SPACE information is accurate, or to disable the end dialog by using the $NO-END-DIALOG command, but the best solution is to make sure that the figure specified in your $SPACE line is accurate. Note that if you do not ensure the accuracy of your $SPACE line, the progress "percent" meter will also not be accurate - and in such cases, you SHOULD use $NO-END-DIALOG otherwise your users will get a spurious error message which will confuse them into thinking that the installation has failed. The easiest way to calculate ALL your space requirements is to run CHIEFPRO.EXE. Please NOTE question 7 (below) as well. 4. Q. I HAVE SPECIFIED CERTAIN FILES TO BE INSTALLED INTO THE WINDOWS SYSTEM DIRECTORY WITH THE $SYSDIR COMMAND. WHY ARE THEY NOT BEING INSTALLED? A. The $SYSDIR, $WINDIR, $TEMPDIR, and $DEST lines only specify the DESTINATION of the files on those lines (the default is to install all files into the directory pointed to by $TARGET). When you use any of these, you still have to put those files on your $DISK lines, otherwise, they will not be installed at all. Another possible cause is that your files are compressed, and you are putting their compressed names (with underscores and all) on these lines. The only place where you should use the file names with the underscores (if they are compressed with the -r switch) is on the $DISK lines. In EVERY other place where you specify file names, you MUST use the original names of the files (i.e., the names of the uncompressed files, before they were compressed). 5. Q. IN WHAT ORDER SHOULD THE ENTRIES IN MY INF FILE APPEAR? A. The whole INF file is read and processed at once. This means that the order is which the reserved words appear is not important in most cases. However, note that $USER-OPTION lines MUST appear before $OPTIONAL lines, and that any reserved word which is numbered (e.g., $DISK, $USER-OPTION, $OPTIONAL) must appear and be numbered in the correct numerical order. 6. Q. IN WHAT LANGUAGE IS YOUR INSTALLER WRITTEN, AND WILL YOU SUPPLY THE SOURCE CODE (ON PAYMENT OF A FEE)? A. Chief's Installer Pro-32 is written in Borland Pascal 7.01, and Borland Delphi 2.01. I am sorry I cannot supply the source code. 7. Q. CHIEFPRO SEEMS TO BE GETTING THE DISK SPACE CALCULCATIONS WRONG. WHAT GIVES? A. There are many causes for wrong calculations by CHIEFPRO. The primary cause is indiscriminate use of wildcards in your INF file. Other causes, which might be related to the one already mentioned are: [a] Mixing wildcards and full file names on $DISK, $SYSDIR, $WINDIR, $TEMPDIR, and $OPTIONAL lines - this might result in some files being processed more than once. [b] Having files in the directories being processed by CHIEFPRO which files are not going to be on your distribution disks. The bottom line is this - if you are going to use wildcards on your $DISK and/or $OPTIONAL lines, you need to think very carefully about what you are doing. It is up to you to arrange your lines so that no file is liable to be processed twice - this is because CHIEFPRO processes your INF file _exactly_ as it finds it. In my view, it advisable to AVOID mixing wildcards and full file names on $OPTIONAL lines. The $OPTIONAL lines in SAMPLE4.INF are a good example of what will cause wrong calculations by CHIEFPRO. 8. Q. SOMETIMES I GET AN ERROR MESSAGE THAT THE DISK CANNOT BE READ. WHY DOES THIS HAPPEN? A. This sometimes happens when you are doing a multi-disk install, and you have run INSTALL.EXE (instead of SETUP.EXE). This is because Windows may have swapped out parts of INSTALL.EXE to create room for other things to run, and now has to read those parts again from INSTALL.EXE. If INSTALL.EXE is on disk 1 and you are currently on another disk (e.g., disk 3) then INSTALL.EXE will not be found, and the error will occur. The best was to avoid this type of problem is to follow the principle that IF THERE IS MORE THAN ONE DISK IN YOUR INSTALLATION SET, YOU SHOULD ALWAYS RUN SETUP.EXE (AND NOT INSTALL.EXE). SETUP.EXE will call INSTALL.EXE at the appropriate point. 9. Q. IF I WANT MY USERS TO RUN SETUP.EXE AND I WISH TO PREVENT THEM FROM RUNNING INSTALL.EXE, HOW CAN I DO THIS? A. You can compress INSTALL.EXE with Microsoft's COMPRESS.EXE (if you have a copy), with the -r switch. i.e., "COMPRESS -r INSTALL.EXE" This will compress the file to INSTALL.EX_ - which of course your users cannot run. When SETUP.EXE is executed, it will look first for INSTALL.EXE. If that is not found, then it will look for INSTALL.EX_ and decompress it to the TEMP directory, and then it will run it. NOTE: if you compress INSTALL.EXE you MUST use the -r switch. NOTE also, that from v3.00, if you create your install disks from the ChiefPro Project Manager, the ChiefPro support files will be automatically archived in a file called: WINSTALL.BIN - which will then be automatically copied to your DISK #1, along with SETUP.EXE and SETUPINF.INF. Then your users will only have the option of running SETUP.EXE. This option is not supported in the LITE version. 10. Q. YOU KEEP TALKING ABOUT MICROSOFT'S COMPRESS.EXE IN YOUR DOCUMENTATION; HOW CAN I GET A COPY? A. COMPRESS.EXE is normally bundled with Windows development tools. Microsoft has not permitted me to bundle it with Chief's Installer Pro. However, if you have a Borland or Microsoft compiler, you probably have the program already (usually in your compiler's BIN directory). You can get a copy on Microsoft's web site or any of its Mirros, inside a package called "CP0982.EXE". You can do a "NET search" for that filename, or you can try these URLs; ftp://ftp.microsoft.com/Softlib/MSLFILES/CP0982.EXE http://sunsite.doc.ic.ac.uk/Mirrors/ftp.microsoft.com/Softlib/MSLFILES/CP0982.EXE In any case, you can ZIP your files and then use the $UNZIP command to install them - you will probably get a greater compression ratio than using the LZW compression in COMPRESS.EXE. Also, you can use ChiefPro's built-in LZSS compression engine, from the ChiefPro IDE. 11. Q. I WISH TO INSTALL A FILE INTO MORE THAN ONE DIRECTORY. HOW CAN I DO THIS? A. You need to set $MAX-DUPLICATES to a number which is equal to, or higher than the number of different directories you may want to install the file to. e.g., $MAX-DUPLICATES=5 Note however, that the higher the figure here, the slower your installation will proceed, because the installer will have to loop through the $DEST lines at least the number of times that you specify in $MAX-DUPLICATES. So you really do not want to set the value here too high. A maximum of 3 is probably a good trade-off for performance reasons. If you do not care much about speed, then you can set it to as high as 30. 12. Q. IF I WISH TO USE THE FULL RANGE OF FEATURES IN CHIEF'S INSTALLER PRO, WHICH FILES MUST I HAVE ON MY DISTRIBUTION DISKS? A. Really, the only files that are absolutely necessary are; INSTALL.EXE WINSTALL.INF WINSTL32.DLL However, if you have only these files on your disk, many features will be missing. For an installation program having the full range of features offered by Chief Pro, you need all these files on your DISK #1 1. SETUP.EXE - loader for the installer 2. SETUPINF.INF - INF file for SETUP.EXE 3. INSTALL.EXE - main installer 4. WINSTALL.INF - INF file for INSTALL.EXE 5. UNINSTAL.EXE - the uninstaller 6. WINSTALL.HLP - help file for the installation 7. WINSTL32.DLL - WIN32 DLL 8. WINSTALC.DLL - for the dialog icons 9. WINSTALL.TXT - for the README button 10. WINSTALL.MSG - for the message dialog during the install 11. WINSTALL.WEL - for the welcome message dialog 12. WINSTALL.CPR - for the copyright message dialog ALL these files, except #1 and #2 (SETUP.EXE SETUPINF.INF) CAN be compressed on your DISK #1. SETUP.EXE will decompress them automatically. Thus, you can follow these steps (or run a DOS batch file that goes something like this): REM --- MAKEDSK1.BAT ----------- REM --- A DOS BATCH FILE TO COPY INSTALL FILES TO DISK #1 @ECHO OFF C: CD \TEMP MD C:\TEMP\DIST COPY SETUP.EXE C:\TEMP\DIST COPY SETUPINF.INF C:\TEMP\DIST COMPRESS -r INSTALL.EXE C:\TEMP\DIST COMPRESS -r WINSTALL.INF C:\TEMP\DIST COMPRESS -r WINSTALL.HLP C:\TEMP\DIST COMPRESS -r WINSTALL.TXT C:\TEMP\DIST COMPRESS -r WINSTALL.MSG C:\TEMP\DIST COMPRESS -r WINSTL32.DLL C:\TEMP\DIST COMPRESS -r WINSTALC.DLL C:\TEMP\DIST COMPRESS -r WINSTALL.WEL C:\TEMP\DIST COMPRESS -r WINSTALL.CPR C:\TEMP\DIST ECHO INSERT DISK #1 IN DRIVE A: PAUSE > NUL CD C:\TEMP\DIST COPY *.* A:\ OR, You can create your projects and install disks from the ChiefPro Project Manager. When you do so, all these files (except WINSTALL.INF) will be compressed and archived in the ChiefPro archive: WINSTALL.BIN, on your DISK #1. 13. Q. I WOULD LIKE TO PUT ALL MY APPLICATION'S FILES IN ZIP ARCHIVES AND THEN UNZIP THEM AT INSTALL TIME. CAN I DO THIS? A. The answer is "YES". The easiest way to do this is to put the files for each disk in one (or more) ZIP files, put those files on the relevant disks, and then use the $UNZIP command on the $DISK# lines. e.g., $DISK1=$UNZIP;$SOURCEDIR\PROG100.ZIP;$DEST;CONFIRM $DISK2=$UNZIP;$SOURCEDIR\PROG200.ZIP;$DEST;CONFIRM $DISK3=$UNZIP;$SOURCEDIR\PROG300.ZIP;$DEST\SRC;SKIP $DISK4=$UNZIP;$SOURCEDIR\PROG400.ZIP;$DEST\DOC;SKIP;/F=*.XYZ ** NOTE: This feature is not supported in the LITE version. 14. Q. I HAVE SOME LARGE DATA FILES THAT ARE TOO BIG TO FIT ONTO A SINGLE FLOPPY DISK. HOW CAN I SPLIT THEM INTO SMALLER BITS SO THAT THEY CAN FIT ONTO FLOPPIES? A. You can do this by running the DOS utility SPLIT.EXE, or by selecting "Split File" from the CHIEFPRO IDE. Then you need to put the files on your installation disks, and install then in the normal way (via your $DISK# and $DEST lines). You rebuild the files by putting appropriate $BUILD-FILE statements in your WINSTALL.INF file. ** NOTE: This feature is not supported in the LITE version. 15. Q. CAN I RUN A PROGRAM AND THEN WAIT UNTIL IT IS CLOSED? A. Yes. The recommended way of doing this is to use the EXECWAIT-WINDOW batch command. 16. Q. CAN I INSTALL THE BORLAND DATABASE ENGINE (BDE) WITH THIS PROGRAM? A. The answer is YES. The ChiefPro batch language is rich enough to use for this purpose. See for example the template batch files: BDE16.CHF, and BDE32.CHF in your UTILS directory, for examples. You can add the BDE files to your projects via the ChiefPro IDE ** NOTE: This feature is not supported in the LITE version. 17. Q. HOW CAN I CHANGE/CUSTOMISE THE MESSAGES GIVEN BY THE INSTALLER? A. Easily. You can either; [a] edit the string tables in UNINST.RC and WINSTALL.RC and then produce your own UNINST.DLL and WINSTALL.DLL files, or [b] edit the strings UNINST.LNS and WINSTALL.LNS, and then rename them to UNINST.LNG and WINSTALL.LNG respectively. ChiefPro will automatically search for the .DLL and .LNG files on your DISK #1 in order to load the string tables. The .LNG files take precedence over the .DLL files. 18. Q. WHEN I CREATE MY INSTALLATION DISKS FROM THE PROJECT MANAGER, I NOTICE THAT SOME OF THE "CHIEFPRO" FILES ARE NOT ON MY DISK #1 - AND, I NOTICE A FILE CALLED "WINSTALL.BIN". WHAT IS THIS FILE DOING THERE? A. WINSTALL.BIN was introduced in v3.00 as a means to avoid cluttering your DISK #1 with ChiefPro program and support files. When you create your install disks from the Project Manager, the ChiefPro files (added automatically to each new project) will be compressed, and archived into WINSTALL.BIN. This not only reduces clutter, it also saves disk space, and protects the files from being tampered with. Indeed, any file in your project which has ALL these attributes; TARGET DIRECTORY = $CHIEF USER OPTION # = -1 DISK # = 1 will be marked as a ChiefPro support file, and will be archived into WINSTALL.BIN. When the files have been archived, the only ChiefPro files which will be on your DISK #1 will be; SETUP.EXE SETUPINF.INF UNINSTAL.EXE WINSTALL.BIN When the user runs SETUP.EXE, all the files in WINSTALL.BIN will be extracted into the TEMP directory, and then SETUP.EXE will load INSTALL.EXE, and the installation will proceed from there. ** NOTE: This feature is not supported in the LITE version. 19. Q. HOW DO I GET THE COPYRIGHT DIALOG OR THE WELCOME DIALOG TO APPEAR WITH A CUSTOM FILE ? A. If the file WINSTALL.CPR (for the copyright dialog) or WINSTALL.WEL (for the welcome dialog) is present on your DISK #1, ChiefPro will automatically display these files in the Copyright and Welcome dialogs. NOTE: for this to work, you must add the relevant file(s) (i.e., WINSTALL.CPR and/or WINSTALL.WEL) to your project. Then you will need to mark them as ChiefPro support files, by setting their target directory to $CHIEF, and the user option number to -1 (see the answer to Question 18 sbove). 20. Q. HOW DO I GET A HISTORY DIALOG LIKE THE ONE I SEE WHEN I INSTALL CHIEFPRO ? A. This is achieved in several steps. First, the file WINSTALL.TXT must be present on your DISK #1. If this file is present, the dialog in which you see the "Start Install" button will include an extra button labelled "Read Me". You can use the $README-BUTTON-TEXT keyword to customize the text on this button. When this button is pressed, a window will popup with WINSTALL.TXT displayed. This has, however, not answered your question. To get the History (or some other name) dialog to appear after the Copyright dialog, add to your INF file (or configure accordingly in the IDE) the following: $USE-WIZARDS=1 $README-BUTTON-TEXT=&Release Notes //* or the text of your choice. Finally, follow the steps described in Question 18 above to mark the file WINSTALL.TXT as a ChiefPro support file so that the IDE will add it to the files to be archived inside WINSTALL.BIN. 21. Q. I MAKE SOME ADDITIONS TO THE REGISTRY, BUT THEY DON'T ALL GET DELETED. HOW DO I FIX THIS ? A. Depending on how you make the additions to the Registry, entries will not be deleted. For example, just the command; $REG-DATA=HKEY_CURRENT_USER\Software\SoftDev Inc\Package\Settings;License;"unlicensed" will create the required series of key, subkeys and data value, but only the data value "License" will be removed by the uninstall. What you have to do is create the keys and subkeys explicitly e.g; $REG-DATA=HKEY_CURRENT_USER\Software\SoftDev Inc $REG-DATA=HKEY_CURRENT_USER\Software\SoftDev Inc\Package $REG-DATA=HKEY_CURRENT_USER\Software\SoftDev Inc\Package\Settings then add $REG-DATA=HKEY_CURRENT_USER\Software\SoftDev Inc\Package\Settings;License;"unlicensed" The uninstall process will then remove the whole "SoftDev Inc" entry, including all subkeys and values. 22. Q. WHEN I USE THE "IF EXIST" OR "IF NOT-EXIST" BATCH COMMANDS WITH FILES THAT HAVE SPACES IN THEIR NAMES, THE COMMANDS FAIL. WHY? A. Because the space was originally the separator for parameters in batch commands. Now, the semi-colon is also used as a separator. Eventually, support for the space character as a separator will be discontinued (except perhaps for the "SAY" command). So it is advisable to start using the semi-colon now. In the meantime, you should enclose filenames that may contain spaces within double quotation marks. e.g., IF EXIST;"$WINDIR\WIN.COM";SAY It Exists!;#ELSE;SAY I cannot find it! 23. Q. DOES CHIEFPRO ALLOW YOU TO CHECK THE CURRENT USER'S USERNAME OR USER RIGHTS ? THE REASON FOR ASKING IS THE FACT THAT WINDOWS NT WILL ONLY ALLOW THE REGISTRY TO BE EDITED BY THE ADMINISTRATOR, OR SOMEONE WITH ADMINISTRATOR ACCESS. A. These two ChiefPro batch file commands show how you can obtain the user name. One uses the environment variable, and the other reads from the registry. 1. IF ENV-VAR;"USERNAME";SAY ENV-VAR;#ELSE;SAY NOT! 2. IF REGENTRY;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName;SAY REGENTRY;#ELSE;SAY NOT! 24. Q. DOES CHIEFPRO ALLOW ME TO CREATE AN INSTALLATION SET WITH MORE THAN ONE DISK? IF SO, HOW DO I ACHIEVE THIS? A. Yes, you can create multi-disk installations (up to 64 disks). You will need to specify yourself (in the IDE project) which disk you want each file to be on. This is how to create an installation for more than 1 disk. Normally, when you add a file to your project, the file's "Disk #" is set to "1". To have an installation for more than one disk, all you need to do is to change the "Disk #" for some files to "2", "3" etc. The IDE does not calculate how many disks you will need for your project, because this will depend on what compression method (if any) that you want to use. 25. Q. MY INSTALLATION HAS A NUMBER OF FILES WITH THE SAME NAME, BUT WITH DIFFERENT CONTENTS, AND THEY ARE ALL TO GO INTO DIFFERENT DIRECTORIES. HOW CAN I IMPLEMENT THIS SET UP WITH CHIEFPRO? A. The installer is not designed to install multiple files with the same name but which are actually different, via the standard installation process. To do this, you would need to either use batch files to copy/rename the duplicate files, or to put the files into archives (ZIP or ChiefPro LZSS) and then extract them at install time with $UNZIP or $UNPAK. ---------------------------------- Prof Abimbola Olowofoyeku (The Chief) November 2000 E-mail: African_Chief@bigfoot.com