home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1999 January
/
pcwk_01_1999_B.iso
/
Lotus123
/
FRENCH
/
INSTALL.DSK
/
MAIN.LSS
< prev
next >
Wrap
Text File
|
1996-07-29
|
96KB
|
2,551 lines
''/*********************************************************************
''
'' Module Name: main.lss
''
'' Module Code: TOOLKIT
''
'' Author: Marcel Meth
''
'' Creation Date: Aug 31, 1993
''
'' Copyright Lotus Development Corporation, (c) 1991
''
''
'' Description:
'' Lotus script file for common install
'' If you are trying to create an automated install, you need to
'' remove or comment out the Calls that bring up dialogs and
'' ensure that the symbols have valid values.
'' See "AUTOMATE" comments throughout the code.
'' You should be able to easily automate a simple COMPLETE install.
''
'' SUGGESTION: You should be able to tailor an install to you users by
'' having shell variables setup for them and using the
'' the lotus script "ENVIRON$" variable.
'' e.g. suppose the user has the following line in their autoexec.bat
'' set NAME=Marcel
'' then you can pick it up with:
'' name$ = ENVIRON$("NAME")
''
'' The following diagram illustrates the basic execution path(s)
'' available in this script.
''
'' InitInstall
'' |
'' WELCOME DIALOG (SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$)
'' |
'' SERVERorDISTRIBUTION DIALOG (SYM_NETWORK$)
'' |
'' IF SMARTSUITE THEN SUITE DIR DIALOG (SYM_BASEDIR$)
'' |
'' SELECT based on SYM_NETWORK$
'' |
'' gSTANDARD--.....
'' |
'' gSERVER--.....
'' |
'' gNODE--.....
'' |
'' gDISTRIBUTION--.....
''
'' The main Drive for all Installs
''
'' Tabs: 3 (In Brief do tabs 4 7)
''
'' Additional authors: Mariana Zgripcea, Dave Dupre,
'' Thangarag Veerapan, Christopher Moy
''
'' Change History:
'' $Log: //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/main___@.lss $
''
'' Rev 1.222 19 Jul 1996 14:41:46 jdonohue
'' Moved IncrementSharedDLLCount from main.lss to toolkit.lss
''
'' Rev 1.221 11 Jul 1996 19:12:42 glutz
'' Added SUB Lot_TurnOffNodeOptSections for cases where Suite does
'' not surface the nodenodeoptions callback.
''
'' Rev 1.220 11 Jul 1996 14:48:06 jdonohue
'' Made sub IncrementSharedDLLCount Public
''
'' Rev 1.219 11 Jul 1996 13:12:02 jdonohue
'' Ref SPR: CDWT37FR6B
'' Do not reset copy list for shared server system files, just set all sections off
''
'' Rev 1.218 05 Jul 1996 10:35:10 dfristro
'' Simplified SetTheBaseSymbol to remove redundancy. Also added check that
'' the dir is writable when getting dir from registry.
''
'' Rev 1.217 01 Jul 1996 15:37:56 jdonohue
'' Detect whether shared windows system directory is writeable, not windows dir
'' Set WINDIR, WINSYSDIR symbol values for shared windows server error dialog
''
'' Rev 1.216 24 Jun 1996 15:51:46 jdonohue
'' Ref SPR: RWIS36THFG
'' Added function TurnOffSharedWinsysSections to prevent attempting to copy
'' windows system files during a node install in a shared windows environment
''
'' Rev 1.215 14 Jun 1996 16:42:10 jdonohue
'' Added RebootLater Flag to indicate reboot required but deferred
''
'' Rev 1.214 04 Jun 1996 12:13:46 glutz
'' Changed call for Suite case from Lot_IsAnyNodeOptAvailToNode to
'' Lot_AreAnyNodeOptionsAvail. SPR#AFOG366LGN
''
'' Rev 1.213 16 May 1996 16:00:54 glutz
'' Reset RemovePriorVersion buffer prior to calling PreCopyConfig.
''
'' Rev 1.212 08 May 1996 16:05:04 schen
'' fix automation install for Smartsuite.
''
'' Rev 1.211 07 May 1996 10:15:00 glutz
'' Rewrote logic for nodenodeoptions dialog.
''
'' Rev 1.210 19 Apr 1996 11:55:00 jdonohue
'' Fixed error evaluating Lot_IsDirWritable return (NOT Script TRUE/FALSE)
''
'' Rev 1.209 10 Apr 1996 17:09:14 jdonohue
'' Ref SPR: AGAO33XJT3
'' Changed DetectSharedWindows logic to silently install server files if allowed
''
'' Rev 1.208 05 Apr 1996 14:23:36 jdonohue
'' Use new function FGetSectionFileList to get shared DLL filenames even if they
'' have been renamed in the .INF file
''
'' Rev 1.207 04 Apr 1996 21:49:00 glutz
'' The nodenodeoptions dialog only pops up if there are options
'' available for the selected products.
''
'' Rev 1.206 04 Apr 1996 16:28:44 jdonohue
'' Moved IncrementSharedDLLCount and Lot_DoSharedDLLs from inst.lss to main.lss
'' since inst PostConfig processing not done for node since install not copied
''
'' Rev 1.205 02 Apr 1996 11:49:36 jdonohue
'' Call product INIT functions for server install before determining language install
''
'' Rev 1.204 01 Apr 1996 08:25:56 jdonohue
'' Moved function OneUp to toolkit.lss, made global
'' Added call to Lot_FixupLanguageDirectories
'' Rearranged code for determination of server language install
''
'' Rev 1.203 20 Mar 1996 12:35:58 jdonohue
'' Added function Lot_SetLotusFontsDir called after ResetWinWinSysSymbols
''
'' Rev 1.202 19 Mar 1996 18:08:30 schen
'' fix for Automate addiconoptions for server and node install.
''
'' Rev 1.201 18 Mar 1996 13:12:26 jdonohue
'' Ref SPR:LSCR32TQHP
'' Use IsNewShell instead of WhatPlatform for determination of LOTUSFONTS directory
''
'' Rev 1.200 06 Mar 1996 12:53:54 jdonohue
'' Ref SPR: JMOY332R5H
'' For low disk space on server install, loop back to server customize dialog if
'' customize chosen
''
'' Rev 1.199 05 Mar 1996 14:55:14 jdonohue
'' Set the default basedir to value in HCU "User Path" for node, check if dir exists
'' Added function OneUp to strip last path component
''
'' Rev 1.198 04 Mar 1996 08:31:56 jdonohue
'' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
''
'' Rev 1.197 29 Feb 1996 13:38:10 jdonohue
'' Move the Lot_DoServerSharedWindows function call AFTER writng features to
'' cinstall.ini
''
'' Rev 1.196 29 Feb 1996 07:57:28 jdonohue
'' Ref SPR: JMOY332R5H
'' Changed main.lss logic to return to the customize dialog when space is
'' insufficient if you chose customize the first time
''
'' Rev 1.195 25 Jan 1996 16:16:58 jdonohue
'' Set Windows directory to point to server for shared windows install, which is
'' assumed to be the parent of the Windows System Directory
''
'' Rev 1.194 24 Jan 1996 11:10:58 jdonohue
'' Ref SPR: JHOH325K2M
'' Fixed logic error in shared windows detection
''
'' Rev 1.193 23 Jan 1996 16:08:58 cmoy
'' HISHI: Merged FE changes
''
'' Rev 1.192 18 Jan 1996 11:09:42 schen
'' BUG fix for default install addicon
''
'' Rev 1.191 17 Jan 1996 16:57:32 schen
'' Add Addicon key word in Automate install.
''
'' Rev 1.190 17 Jan 1996 13:50:32 jdonohue
'' Added support for server installation to a shared windows location -- new functions:
'' Lot_DoServerSharedWindows installs system files on shared server windows location
'' Lot_DetectSharedWindows detects a shared window system and if writeable sets flag
''
'' Rev 1.189 15 Jan 1996 15:06:34 jdonohue
'' Added function Lot_DetectSharedWindows to detect shared windows server install
'' and present UI for confirmation (NOTE: this is not fully functional as yet!!,
'' placeholder for now)
''
'' Rev 1.188 04 Jan 1996 14:55:20 jdonohue
'' Ref SPR: KHAN2XZUGU
'' Don't exit if LOTUSAPP directory doesn't exist -- there is no need to create
'' one if only 32 bit products are installed
''
'' Rev 1.187 29 Dec 1995 08:49:30 jdonohue
'' Added function InitStickyCopyList which preserves user choices on customize
''
'' Rev 1.186 22 Dec 1995 10:13:22 jdonohue
'' Removed all references to SYM_PARENTDIR$ -- is now SYM_BASEDIR$ for all
''
'' Rev 1.185 11 Dec 1995 13:59:46 jdonohue
'' Replaced call to RefreshLanguageSourceDirectories with call to
'' Lot_FixupSourceDirectories
''
'' Rev 1.184 08 Nov 1995 16:57:34 tveerapp
'' Fixes fot SPR#RMOO2xQQDY
''
'' Rev 1.183 25 Oct 1995 08:47:14 glutz
'' SYM_PARENTDIR was not always getting set.
''
'' Rev 1.182 Oct 24 1995 16:55:34 cmoy
'' removed eof char
''
'' Rev 1.181 24 Oct 1995 12:28:28 jdonohue
'' Fixed handling of suite server MLC case
''
'' Rev 1.180 24 Oct 1995 11:59:02 glutz
'' SetTheBaseSymbol sets SYM_BASE16DIR.
''
'' Rev 1.179 23 Oct 1995 16:36:48 tveerapp
'' Fixed spr# LSCR2X6MUC. Call product UI functions for automation.
''
'' Rev 1.178 19 Oct 1995 14:54:52 jdonohue
'' Don't use ".." in resetting SYM_STF_SRCDIR$ for server language install
''
'' Rev 1.177 18 Oct 1995 18:02:36 amontalv
'' Commented out code to check priviledge level.
''
'' Rev 1.176 17 Oct 1995 16:08:28 jdonohue
'' Changed logic for COMPONENTSDIR and LOTUSAPPDIR defaults from cinstall.ini
''
'' Rev 1.175 17 Oct 1995 13:14:54 jdonohue
'' Fixed wrong ini section reference, moved dialog code
''
'' Rev 1.174 13 Oct 1995 14:43:56 jdonohue
'' Added call to Lot_RefreshLocalComponentDir
''
'' Rev 1.173 03 Oct 1995 16:42:18 tveerapp
'' Fixed spr#TVEN2WNS5V. Removed the conditional check for calling into the
'' product UI functions only during custom install. Lot_CallProductFunctions(UI)
'' will now be called for all types of installs (default,min and custom). This
'' check was removed from case gSTANDARD and case gSERVER.
''
'' Rev 1.172 27 Sep 1995 17:03:42 jdonohue
'' Set server defaults for LOTUSAPPDIR and COMPONENTSDIR in cinstall.ini found
''
'' Rev 1.171 27 Sep 1995 14:48:02 jdonohue
'' Language install message always based on SYM_REG_PRODUCTNAME$ (prod #1)
'' Set SYM_INSTALLKINDS$ as well as SYM_INSTALLKIND$
''
'' Rev 1.170 26 Sep 1995 16:10:12 jdonohue
'' For suite language install, dialog says "smart Suite" in product field
'' Fixed error on server/language install
''
'' Rev 1.169 25 Sep 1995 15:29:38 jdonohue
'' Call all product functions for InitLanguage
''
'' Rev 1.168 21 Sep 1995 16:22:00 jdonohue
'' Moved resetting of gINSTALLINI$ for output after reading of cinstall.ini file
''
'' Rev 1.167 21 Sep 1995 12:28:34 jdonohue
'' Don't reset gINSTALLINI$ for server language install
''
'' Rev 1.166 13 Sep 1995 14:47:22 tveerapp
'' Fixed the logic in SetTheBase. The registry is read only for a std./node
'' installs.
''
'' Rev 1.165 13 Sep 1995 14:44:46 jdonohue
'' Moved check for server language install
''
'' Rev 1.164 12 Sep 1995 13:21:38 jdonohue
'' Popup message for server language install
''
'' Rev 1.163 12 Sep 1995 10:53:14 tveerapp
'' Added Lo_SaveFeaturesInInstNodeIni() for a node install. This records
'' uinstall information in cinstnod.ini
''
'' Rev 1.162 08 Sep 1995 16:56:02 tveerapp
'' Fixed spr#KHAN2VUQVY,the change is in SetTheBase for automation.
''
'' Rev 1.161 07 Sep 1995 14:51:54 tveerapp
'' Moved the setting of INSTDIR duringa language server install to Inst.lss
'' to fix spr#WEDS2VNRDZ
''
'' Rev 1.160 02 Sep 1995 15:29:50 amontalv
'' Added check at beginning, right after initialization to determine if we have
'' enough priviledges to install.
''
'' Rev 1.159 31 Aug 1995 11:42:50 jdonohue
'' Added code to check that the parent directory obtained from the registry is
'' a valid drive, and if not, uses default
''
'' Rev 1.158 22 Aug 1995 16:13:46 tveerapp
'' For a standalone and node language installs don not reset the product symbols
'' during automation.
''
'' Rev 1.157 22 Aug 1995 13:52:42 jdonohue
'' SetBaseSymbols now looks in registry under ..\lotus\Components for default
''
'' Rev 1.156 17 Aug 1995 14:53:26 jdonohue
'' Added functions to recognize and handle node install from secondary server
'' language
''
'' Rev 1.155 17 Aug 1995 14:36:28 callanan
'' Set the bitmap display mode for billboards
''
'' Rev 1.154 17 Aug 1995 14:03:22 callanan
'' Changed the default way to handle bitmaps in dialogs
''
'' Rev 1.153 15 Aug 1995 16:40:16 mmeth
'' Part 2 of SPR# RMOO2UPTZD
'' In SUB ConfigureAUTOEXEC I have added a check as to which dialog should be
'' posted. If there were files marked "SYSTEM", that were busy, then
'' I send a message to the install.exe's window to reboot.
'' This of course is only true, if the user chooses to reebot.
''
'' Rev 1.152 15 Aug 1995 07:53:04 jdonohue
'' For a node install, if main product and install directories differ, sets
'' main directory to parent of install (secondary language install)
''
'' Rev 1.151 14 Aug 1995 11:32:12 jdonohue
'' Added code to handle server language install
''
'' Rev 1.150 14 Aug 1995 10:48:02 callanan
'' Modify SYM_CUSTOM$ to keep track of where we are in install, to decide how we display bitmaps in dialogs
''
'' Rev 1.149 09 Aug 1995 13:48:06 callanan
'' Created global SYM_CUST which keeps track of when we are in the Custom dialog
'' so we can display bitmaps correctly.
''
'' Rev 1.148 04 Aug 1995 14:54:26 amontalv
'' Added quotes around the directory name in the lsirun like written to install.lst
''
'' Rev 1.147 02 Aug 1995 17:45:26 tveerapp
'' Added Lot_AutoSetSrvOptions to gSERVER.
''
'' Rev 1.146 02 Aug 1995 16:28:04 jdonohue
'' Changed calling method for InitLanguage
''
'' Rev 1.145 27 Jul 1995 15:47:00 glutz
'' Took out some print statements.
''
'' Rev 1.144 27 Jul 1995 13:33:28 glutz
'' Added cost of unc files to NumberOfBytesPerBillbd.
''
'' Rev 1.143 27 Jul 1995 10:11:16 amontalv
'' Put a check for the new shell around the CreateProgmanGroup call -- all three
'' of them.
''
'' Rev 1.142 10 Jul 1995 14:33:06 glutz
'' If CheckForSpace fails return to Select Parent dir dialog.
''
'' Rev 1.141 07 Jul 1995 16:47:32 mzgripce
'' if lotusappdir is deleted before the node install put an error and exit
''
'' Rev 1.140 28 Jun 1995 11:42:28 tveerapp
'' Added check to customize shared components for a custom install only.
''
'' Rev 1.139 22 Jun 1995 15:34:16 tveerapp
'' Added logic to Welcome code.Install ends when the welcome dialogs returns
'' gBACK$.
''
'' Rev 1.138 21 Jun 1995 20:21:16 amontalv
'' Attempt to get User name and Company from 4 different places. The original, from
'' the Windows registry entry for Windows, the Windows registry location for Windows NT
'' and using GetUserName as last resort.
''
'' Rev 1.137 21 Jun 1995 11:33:36 tveerapp
'' When an STFQUIT error is raised, check for automation by getting the
'' SYM_AUTOMATIONINST value. Script does not store the automation$ variable's
'' value.
''
'' Rev 1.136 20 Jun 1995 13:48:24 tveerapp
'' Changed the call from Lot_AutoGetProgramGroup to Lot_GetProgramGroupOrFolder
''
'' Rev 1.135 19 Jun 1995 17:10:30 tveerapp
'' During automation allow the defaultreg function to be called for the
'' 1st product(similar to the regular install).
'' Should fix spr#KHAN2T2PCQ.
''
'' Rev 1.134 12 Jun 1995 12:46:12 amontalv
'' Added code to Server and node to display folder instead of program group if
'' on Win95. The code doesn't completely work yet as I'm waiting for some UI
'' issues to be worked out
''
'' Rev 1.133 08 Jun 1995 17:08:58 tveerapp
'' Fixed spr# CCOL2NULJ2. Moved the AutoGetProductDestDir function after
'' smartsuite appselection for a standard and node install.
''
'' Rev 1.132 08 Jun 1995 12:33:02 tveerapp
'' Modified ConfigureAUTOEXEC. The autoexec modification code has been remmed
'' out. This sub routine now brings up only the success dilaog.
'' This should fix spr#KHAN2SKKQZ.
''
'' Rev 1.131 07 Jun 1995 16:30:22 amontalv
'' Changed the Win95 start folder so that it initializes
'' earlier in the program. This should make automation
'' easier to implement for it. There are still a couple of
'' bugs that I need to work out, but I feel that I should
'' check what I have now.
''
'' Rev 1.130 06 Jun 1995 15:53:30 amontalv
'' We are experiencing problems with LotusScript when we fill buffers with
'' nulls and then pass them to C routines. For the time being, it is suggested
'' that we fill our buffers with spaces. To this end (and to make it
'' easier to change back later) I have created a small LotusScript routine
'' named CreateBuffer. You use it any time you ordinarily would use
'' STRING$(num, 0). CreateBuffer() just needs the num, it decides what to
'' fill the buffer with (sorry about the grammer). Right now it fill the
'' buffer with spaces. Later we will change it back to nulls. Also look
'' at the routine NullTrim(). It will get rid of final nulls and spaces.
'' You can use this when getting a buffer that has been changed or filled
'' in a external C routine.
''
'' Rev 1.129 05 Jun 1995 18:11:54 tveerapp
'' Changed AutoSetPArentCompDirs to AutoSetParentDir
''
'' Rev 1.128 05 Jun 1995 16:37:12 amontalv
'' Made changes for migrating to LotusScript version 3.0.37.
''
'' Rev 1.127 01 Jun 1995 11:11:34 amontalv
'' Added API function CreateLink to create shortcuts. Also added functions
'' to save and get the link path to support the CreateLink. I also changed
'' the startup program folder code to use the default dialog proc and changed
'' the default dialog proc to process directory trees.
''
'' Rev 1.126 30 May 1995 15:42:34 amontalv
'' Made a new function PopupWithFunction. PopupModalDlg now calls this. Needed to
'' do this to call dialog with my own dialog function.
''
'' Rev 1.125 30 May 1995 09:25:28 amontalv
'' Added back my changes. Had not made changes to setupapi.lss to declare
'' functions.
''
'' Rev 1.124 26 May 1995 14:36:44 cmoy
'' rolled back Andy's changes to revision 1.122
''
'' Rev 1.122 22 May 1995 23:32:20 amontalv
'' Added browse for Win 95 program folder.
''
'' Rev 1.121 22 May 1995 09:28:22 mzgripce
'' remove the function IsLotusappPromptNeeded() and the calls to it and remove
'' the tags NODEPROMPTLOTUSAPP: STDSUITPROMPTLOTUSAPP: AND STDPROMPTLOTUSAPP
'' FIXING THE GOTOs TO THEM
''
'' Rev 1.120 18 May 1995 12:17:36 tveerapp
'' Added call AutoSetParentCompDirs inside SetTheBaseSymbol for a single
'' product automated install.
''
'' Rev 1.119 18 May 1995 12:07:26 mzgripce
'' set default for baseDir to lotus and remove initlang... and use language
''
'' Rev 1.118 18 May 1995 09:54:48 mzgripce
'' display userUI in server install only in customize case.
''
'' Rev 1.117 17 May 1995 17:56:26 mzgripce
'' display user UI only in customize for standalone install
''
'' Rev 1.116 17 May 1995 08:54:12 jdonohue
'' Added call to InitLanguage
''
'' Rev 1.115 16 May 1995 13:45:30 mzgripce
'' initialize SYM_PARENDIR and call PARENTDIRCB
''
'' Rev 1.114 16 May 1995 12:56:32 tveerapp
'' Resourced the log file strings.
''
'' Rev 1.113 16 May 1995 12:39:00 tveerapp
'' Added End of log file .
''
'' Rev 1.112 15 May 1995 17:34:26 tveerapp
'' Fixed gSERVER. For an automated server install do not process the individual
'' product directories.
''
'' Rev 1.111 15 May 1995 11:18:12 jdonohue
'' Moved SetUpApi call to toolkit
''
'' Rev 1.110 11 May 1995 17:26:52 tveerapp
'' Commented out the gLOgFile$ setting in InitInstall.
''
'' Rev 1.109 11 May 1995 14:51:50 tveerapp
'' Added Status logging. Modified InitInstall.
''
'' Rev 1.108 03 May 1995 18:12:24 mzgripce
'' change cursor% to cursor& in one instance
''
'' Rev 1.107 03 May 1995 12:00:38 tveerapp
'' Fixed cfbuild-c2build merge.
''
'' Rev 1.106 02 May 1995 12:52:54 cmoy
'' Merged c2 into cf build
''
'' Rev 1.104 28 Apr 1995 15:57:44 mheerman
'' Commented out the select program manager group dialog.
'' Rev 1.103 26 Apr 1995 09:54:24 tveerapp
'' Added Customization during automation for a server install.
''
'' Rev 1.102 25 Apr 1995 11:52:52 tveerapp
'' Added Automation Customization to case gSTANDARD.
''
'' Rev 1.103 10 Apr 1995 17:52:18 amontalv
'' Changed code that removed null termination and trimmed spaces. There
'' is no longer any null termination to Script text gotten from C calls
'' Rev 1.101 06 Apr 1995 14:51:26 cmoy
'' No change.
''
'' Rev 1.102 07 Apr 1995 15:04:24 mzgripce
''
'' Rev 1.100 05 Apr 1995 19:53:30 amontalv
'' Porting to 32 bit.
''
'' Rev 1.99 16 Mar 1995 09:58:14 mhishinu
'' No change.
''
'' Rev 1.98 22 Feb 1995 02:29:06 cmoy
'' No change.
''
'' Rev 1.97 02 Feb 1995 14:29:34 cmoy
''
'' Thangaraj fixed Pipeline Problem
''
'' Rev 1.96 01 Feb 1995 17:51:18 tveerapp
''
'' Added the call to process Node Options for suite in NODENODEOPTIONS (for suite).
''
'' Rev 1.95 19 Jan 1995 12:30:20 tveerapp
''
'' Fixed the lotusapp/node install problem when the product does not support
'' lotusapp processing.
''
'' Rev 1.94 09 Jan 1995 10:12:00 tveerapp
''
'' Fixed STFQUIT problem.Added UIPopAll before ending execution.
''
'' Rev 1.93 29 Dec 1994 11:58:32 tveerapp
''
'' Commented out the call to reboot during automation.
''
'' Rev 1.92 29 Dec 1994 11:11:06 tveerapp
''
'' Added the bitmap and new dialog for automation.
''
'' Rev 1.91 23 Dec 1994 14:14:50 jplump
''
'' Added call to Lot_AutoGetSetLicenserInfo
'' Removed print statement
''
'' Rev 1.90 22 Dec 1994 15:07:00 tveerapp
''
'' Clean up print statements
''
'' Rev 1.89 21 Dec 1994 17:10:22 tveerapp
''
'' Added node options processing for an automated node install in case gNODE.
''
'' Rev 1.88 21 Dec 1994 15:01:28 tveerapp
''
'' Fixed the return value type on line 1423
''
'' Rev 1.87 21 Dec 1994 13:55:36 tveerapp
''
'' Added Suite App selection processing to STANDARD,SERVER and NODE.
''
'' Rev 1.86 21 Dec 1994 12:15:54 tveerapp
''
'' Modified SetTheBaseSymbol to add the check for a suite install.
''
'' Rev 1.85 21 Dec 1994 12:03:50 tveerapp
''
'' Added automation code to SetTheBaseSymbol.Uses response file base during automation.
''
'' Rev 1.84 12 Dec 1994 13:22:36 tveerapp
''
'' Added ResetWinWinsys call to case gSERVER$ for a server install
'' to determine the win winsysdir symbols correctly.
''
'' Rev 1.83 12 Dec 1994 13:20:00 tveerapp
'' Added %s to lsirun cmd line modification.This is to account for
'' the new automation command line arguments.
''
'' Rev 1.82 12 Dec 1994 11:49:10 mzgripce
''
'' Use the SQL and Paradox Auto symbols
''
'' Rev 1.81 08 Dec 1994 20:14:24 jplump
''
'' Added call to Lot_AutoWriteOutDebugFile
''
'' Rev 1.80 06 Dec 1994 17:17:28 tveerapp
'' Added automation processing to case gDISTRIBUTION$.
'' Added response file processing from the command line (shell).
''
'' Rev 1.79 06 Dec 1994 12:16:18 tveerapp
'' Added Automation code to cases gSERVER$ and gNODE$.
''
'' Rev 1.78 06 Dec 1994 10:21:38 tveerapp
'' Added Lot_AutoConfigure and AutoInstallReboot calls.
''
'' Rev 1.77 05 Dec 1994 16:51:44 tveerapp
'' Added call to Lot_AutoGetUserInfo.
''
'' Rev 1.76 02 Dec 1994 16:52:50 cmoy
'' merged automation files
''
'' Rev 1.75 18 Nov 1994 16:13:02 amontalv
'' Japan DBCS: Added some resources to
''
'' Rev 1.8 01 Dec 1994 17:23:14 tveerapp
'' Added AutoCheckForSpace function.
''
'' Rev 1.7 29 Nov 1994 12:49:12 tveerapp
''
'' Changed the return value of Lot_AutoGetSizeOfInstall to be an integer.
''
'' Rev 1.6 29 Nov 1994 11:43:52 jplump
''
'' Added automation$, changed return type for Lot_AutoGetProgramGroup
''
'' Rev 1.4 28 Nov 1994 15:52:46 tveerapp
'' Added Lot_AutoGetSizeofInstall and other automation code for the standalone
'' install.D
''
'' Rev 1.3 23 Nov 1994 17:03:32 tveerapp
''
'' Added automation logic to the Init Symbol processor.
''
'' Rev 1.2 23 Nov 1994 16:22:56 tveerapp
''
'' Added Lot_AutoGetInstallType to InitInstall. Added code to bring up
'' a modeless dialog during automation.
''
'' Rev 1.1 23 Nov 1994 14:50:40 tveerapp
'' Added Automation code to InitInstall and called the auto init function.
'' Also identified some of the changes to be made.
''==========
''
'' Rev 1.74 02 Aug 1994 16:34:40 mzgripce
'' No change.
''
'' Rev 1.73 01 Aug 1994 10:27:00 cmoy
'' No change.
''
'' Rev 1.72 29 Jun 1994 10:54:18 thangv
'' Moved the SYM_NETLOTUSAPP setting to inside the if statement (798,807).
'' This was previously outside. The code is in NETLOTUSAPP processing. This
'' should fix spr#31726.
''
'' Rev 1.71 24 Jun 1994 11:10:38 thangv
'' Moved the call to Initialize the product copylists during a node install
'' to after the NODESSSAPPSEL dialog (smart suite dialog). The new lines are
'' 729-733. This should fix the suite bug for node install when the user
'' deselects apps but still gets them installed. The call was in the right pla
'' for the std and server.
''
'' Rev 1.70 03 Jun 1994 12:18:32 cmoy
''
'' substituted CreateProgmanGroup for ProgmanManageGroup
''
'' Rev 1.69 02 Jun 1994 12:30:48 thangv
'' Added code to process sys.admin.mapping for node install.
''
'' Rev 1.68 31 May 1994 13:55:38 thangv
'' Added restore cursor before CheckForSpace(in case node)and Showwait
'' cursor after Checkfor space.
''
'' Rev 1.67 31 May 1994 13:40:44 mmeth
'' Added Function Calls for Suite to handle previous versions
''
'' Rev 1.66 26 May 1994 18:40:06 cmoy
''
'' Replaced CreateProgmanGroup and ShowProgmanGroup with ProgmanManageGroup
'' so that accented characters may be used.
''
'' Rev 1.65 26 May 1994 17:35:12 thangv
''
'' Fixed the back link from SRVUI to SRVNODEOPTIONS (it was SRVDATALENS before
''
'' Rev 1.64 25 May 1994 16:12:38 thangv
'' Moved CheckForSpace after share is processed for node. This fixes
'' the node install running out of space bug.
''
'' Rev 1.63 17 May 1994 10:59:20 thangv
'' Moved stdlotusappprompt to before stdcustomize.
''
'' Rev 1.62 13 May 1994 12:13:32 thangv
'' Changed the 2nd arg to ShowProgmanGroup to 1.(it is not minimized).
''
'' Rev 1.61 11 May 1994 12:35:06 thangv
'' Moved Showwaitcursor for the node further up before copying files.
''
'' Rev 1.60 11 May 1994 11:11:06 thangv
'' Bring up DB_PLESEWAIT twice (for std, server) and bring it up for node.
'' Re-arranged Lot_CallPostCopyConifg(std,server,node).
'' Added plese wait foe node install.
''
'' Rev 1.59 11 May 1994 10:31:40 mzgripce
'' sprs 29300 and 29280 (DoDatalens)
''
'' Rev 1.58 06 May 1994 14:15:20 mzgripce
'' send the prognam name to the addicons
''
'' Rev 1.57 05 May 1994 15:51:02 thangv
''
'' Fixed the prev. link from the SSAPPSEL.
''
'' Rev 1.56 03 May 1994 11:09:06 mmeth
'' Added back Confirm Dialog
''
'' Rev 1.55 02 May 1994 18:56:30 mzgripce
''
'' put the addIconsXXX as its own call
''
'' Rev 1.54 02 May 1994 14:52:42 cmoy
''
'' modified SUB AUTOEXECCONFIG to deal with different versions of windows.
''
'' Rev 1.52 02 May 1994 13:58:22 thangv
'' Added ResetCopyList calls.
''
'' Rev 1.51 28 Apr 1994 18:33:42 cmoy
'' Changed Lot_CallProductFunctions(billboards) to Lot_CallOneProductFunction
'' (billboards)
'' modified NumberOfBytesinBillboard to only check first product.
''
'' Rev 1.50 26 Apr 1994 11:16:38 mzgripce
''
'' enable previous from consolidation in node
''
'' Rev 1.49 25 Apr 1994 17:32:36 cmoy
''
'' Moved LAUNCHNAG so that it comes up after DB_DISKCOPYMETHOD dialog.
''
'' Rev 1.48 25 Apr 1994 15:42:16 cmoy
'' reset the base distribution directory to lotusdis\
'' in SUB SetTheBaseSymbol
'' main calls SetTheBaseSymbol after the DB_DISKCOPYMETHOD dialog
'' instead of before it now.
''
'' Rev 1.47 22 Apr 1994 14:34:14 mzgripce
''
'' set direction to back if consolidation returns back
''
'' Rev 1.46 20 Apr 1994 16:22:06 mzgripce
'' initialize SYM_DOSMAXPATHDIFF$
''
'' Rev 1.45 20 Apr 1994 12:44:26 thangv
'' Added the check AND app_flag<> FALSE to SRVNODEOPTIONS.
'' When everything is unselected.
''
'' Rev 1.44 19 Apr 1994 17:02:24 thangv
'' Added code to fix the bug if all the products are
'' deselected in ss dialogs in the case of standalone and
'' server install.
''
'' Rev 1.43 15 Apr 1994 11:58:26 mmeth
'' NODENODEOPTIONSCB was not being registered for Personal directory dialog
''
'' Rev 1.42 13 Apr 1994 17:06:02 mzgripce
'' do not set sym_netlotusapp$ in main
''
'' Rev 1.41 13 Apr 1994 09:31:12 cmoy
''
'' Added SUB ConfigureAUTOEXEC and implemented it
''
'' Rev 1.40 11 Apr 1994 17:49:00 thangv
'' Removed Reg_GetProdSupportforDist(1) <> TRUE check from SERVER_DISTRIBUTION
'' Dialog case. (check only for Srv support.)
'' which is correct.
''
'' Rev 1.39 11 Apr 1994 12:32:16 mmeth
''
'' Cleaned up and made it more readable
''
'' Rev 1.38 08 Apr 1994 13:53:04 thangv
'' Fixed the problem with prev. button for Distribution install.
'' Also added the lines in case gDISTRIBUTION that was nuked.
''
'' Rev 1.37 07 Apr 1994 16:40:12 mmeth
''
'' Cleaned up main.lss
''
'' Rev 1.36 06 Apr 1994 16:30:12 mmeth
'' Added a list gEXTRA. This list gets initialized with an etra 200000
'' bytes for the Windows drive. This can be modified by the product groups if
'' necessary.
''
''*********************************************************************/
OPTION DECLARE
USE "CALLBACK"
USE "LANGUAGE"
DECLARE PUBLIC SUB Lot_SetLotusFontsDir
DECLARE FUNCTION DoDatalens(BYVAL direction$) AS STRING
DECLARE FUNCTION NumberOfBytesPerBillbd() AS LONG
DECLARE SUB SetTheBaseSymbol()
DECLARE SUB InitInstall()
DECLARE SUB ConfigureAUTOEXEC()
DECLARE SUB InitStickyCopyList(network$, direction$)
DECLARE SUB Lot_DoServerSharedWindows()
DECLARE SUB Lot_DetectSharedWindows()
DECLARE SUB Lot_DoSharedDLLs()
DECLARE SUB TurnOffSharedWinsysSections()
'*************************************************************************
'** SUB INITIALIZE
'**
'** Purpose: Initial entry point into Common Install
'**
'** Author:
'** Arguments: None
'** Returns: NONE
'*************************************************************************
DIM FirstTime$
SUB INITIALIZE
DIM network$, notused%, notused1$, nProducts%,prodIndex%, nDirs%, app_flag%, rc$,i%, cwd$
DIM inifile$, inf$, curcursor&, grouptitle$, dirSym$, lSize&, destdir$
DIM direction$, nbytes&, lic$, SameFlag$, netLotusapp$, installini$
DIM newnetpath$, automation$,longnotused&
DIM win95proggroup$,yesno&
DIM lang$, s$, listlen%, dlgID%
'** Set up the error handlers
ON Error STFQUIT GOTO MAINERROR
ON Error STFERR GOTO STFERR_
ON Error STFTOGGLE GOTO STFTOGGLEERR
InitInstall
' IF NOT IsNewShell() THEN
' IF Lot_CheckPriviledges(PRIVILEDGE_CHECKFLAG_REGSYSTEMPATH) <> ERROR_SUCCESS THEN
' ErrorMsg SID_ERR_SECURITY, ""
' ERROR STFQUIT
' END IF
' END IF
nProducts% = Reg_GetNumberOfProducts()
'****************************************
'******* START THE REAL WORK HERE *******
'****************************************
'***********AUTOMATION code*************************************************
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
SetListItem "IDC_BMP", 1, STR$(IDD_TKT_PROD_BMP)
notused1$ = PopupModelessDlg(DB_AUTOINSTWAIT, DB_AUTOINSTWAIT)
END IF
'** Allow the only the 1st product to change the registration default
'** product will set symbols SYM_NAME$, SYM_COMPANY$
notused1$ = Lot_CallOneProductFunction (1, "DefaultUserReg", gNEXT, TRUE, "")
notused% = Lot_ReadSerialNumber()
WELCOME: '** WELCOME THE USER
direction$ = gNEXT
'** Call each product's "ProductReg function". Products register themselves with toolkit.
notused1$ = Lot_CallProductFunctions ("ProductReg", gNEXT, TRUE, gALLPRODUCTS$, "")
'** AUTOMATE: comment out the "PopupModalDlg" stmts and
'** and set SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$.
IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
IF GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN
notused% = RegisterCallback("CALLBACK", "WELCOMECB")
rc$ = PopupModalDlg(DB_WELCOME_NODE, DB_WELCOME_NODE)
ELSE
notused% = RegisterCallback("CALLBACK", "WELCOMECB")
IF Reg_GetProdSupportForSrv(1) OR _
Reg_GetProdSupportForDist(1) <> FALSE THEN
rc$ = PopupModalDlg(DB_WELCOME, DB_WELCOME)
ELSE
rc$ = PopupModalDlg(DB_WELCOMENOSRV, DB_WELCOMENOSRV)
END IF
END IF
'** if the welcome dialog returns gBACK end Install.
IF rc$ = gBACK$ THEN END
direction$ = Lot_ConfirmNamesDlg ()
IF direction$ = gBACK$ THEN GOTO WELCOME
ELSE
notused% = Lot_AutoGetUserInfo()
END IF
SERVER_DISTRIBUTION: '** ASK IF THIS IS A SERVER OR DIST. INSTALL
network$ = GetSymbolValue(SYM_NETWORK$)
IF network$ = gSERVER$ OR network$ = gDISTRIBUTION$ THEN
IF Reg_GetProdSupportforSrv(1) <> FALSE THEN
notused% = RegisterCallback("CALLBACK","DISKCOPYMETHODCB")
'** AUTOMATE: comment out next line and explicitly set SYM_NETWORK
'** SetSymbolValue SYM_NETWORK, gSERVER
'** or
'** SetSymbolValue SYM_NETWORK, gDISTRIBUTION
direction$ = PopupModalDlg (DB_DISKCOPYMETHOD, DB_DISKCOPYMETHOD )
END IF
END IF
IF direction$ = gBACK$ GOTO WELCOME
'***********AUTOMATION code*************************************************
SetTheBaseSymbol
LAUNCHNAG:
network$ = GetSymbolValue(SYM_NETWORK$)
IF network$ = gSERVER$ THEN
notused% = RegisterCallback("CALLBACK","LAUNCHNAGCB")
'** AUTOMATE: comment out next line and never get asked about launching NAG
direction$ = PopupModalDlg (DB_LAUNCHNAG, DB_LAUNCHNAG )
END IF
IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
'** Find out if this is a shared windows environment and confirm that this is
'** what the user wants (server only)
IF network$ = gSERVER$ THEN Lot_DetectSharedWindows
'** Find out if we're a language install -- handle UI differently if so
notused1$ = Lot_CallProductFunctions("InitLanguage", gNEXT, TRUE, gALLPRODUCTS$, "")
'***********AUTOMATION code*************************************************
SMARTSUITE_BASEDIR: '** If this is SmartSuite: Ask the user for the BASEDIR
network$ = GetSymbolValue(SYM_NETWORK$)
'Don't allow user to change parent directory for a language install
IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
IF network$ <> gDISTRIBUTION$ AND GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
notused% = RegisterCallback("SUIT", "SUITEDIRCB")
'** AUTOMATE: comment out next line and explicitly set SYM_BASEDIR$
'** SetSymbolValue SYM_BASEDIR$, "C:\lotsuite"
direction$ = PopupModalDlg(DB_SUITEDIR, DB_SUITEDIR)
ELSEIF network$ <> gDISTRIBUTION$ THEN
notused% = RegisterCallback("CALLBACK", "PARENTDIRCB")
direction$ = PopupModalDlg(DB_PARENTDIR, DB_PARENTDIR)
END IF
END IF
'***********AUTOMATION code schen 5/9/97 *************************************
DIM autobase$, defDir$
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
autobase$ = Lot_AutoGetBaseDirSymbol()
IF autobase$ <> "" THEN
defDir$ = autobase$
ELSE
'ErrorMsg "Base Directory entry Invalid"
ErrorMsg SID_ERR_SETSYMBOLVALUE, LdString(SID_ERR_AUTO_BASEDIR) + "SUIT"
ERROR STFQUIT
END IF
SetSymbolValue SYM_BASEDIR$, defDir$
END IF
IF direction$ = gBACK$ THEN GOTO LAUNCHNAG
'**************************
'** Some more intialization
'**************************
'** Default all products to complete install
SetSymbolValue SYM_SIZEOFINSTALL$, gCOMPLETE$
FOR i% = 1 to nProducts%
Reg_SetSelectedInstallType i%, gCOMPLETE$
NEXT
automation$ = GetSymbolValue(SYM_AUTOMATIONINST$)
network$ = GetSymbolValue(SYM_NETWORK$)
cwd$ = GetSymbolValue(SYM_STF_CWDDIR$)
inifile$ = MakePath(cwd$,gINSTALLINI$)
SELECT CASE network$
'**********************************************************************
'*********************** Standard Install *****************************
'**********************************************************************
CASE gSTANDARD$
'** Read the INF file and initialize the share engine
inf$ = GetIniKeyString (inifile$, "TOOLKIT", "STDINFFILE")
ReadInfFile inf$
notused% = Lot_CallSharedTool("InitSHARE()")
'** Allow the products to do their initialization
direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
direction$ = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
END IF
'***********AUTOMATION code*************************************************
STDSSAPPSEL:
FirstTime$ = ""
'** In this dialog, the user can select/deselect applications to be
'** installed, and also specify directories for individual apps
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
IF automation$ <> gTRUE$ THEN
notused% = RegisterCallback("SUIT", "APPSELCB")
'** AUTOMATE: comment out to take defaults, too tricky
'** to automatically pick anything different.
direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
ELSE
notused% = Lot_AutoSuiteAppSelect()
END IF
END IF
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
'***********AUTOMATION code: Set The destination Dir symbols*********
IF automation$ = gTRUE$ AND _
GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
notused% = Lot_AutoGetProductDestDirSymbol ()
END IF
'** Consolidate the lotusapp if needed
IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
direction$ = gBACK$
END IF
IF direction$ = gBACK$ GOTO STDSSAPPSEL
'***********AUTOMATION code*************************************************
STDSIZEOFINSTALL: '** Ask the user kind of install: (COMPLETE, CUSTOM, LAPTOP)
'** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
'** Result will be a default install of "COMPLETE", anything else is too tricky.
'** For a non-suite install you can set the destination directory:
'** dirSym$ = Reg_GetDirSymbolList(1)
'** dirSym$ = GetListItem(dirSym$, 1)
'** SetSymbolValue dirSym$, "c:\foo\"
'** Lot_RefreshDestination(dirSym$)
nProducts% = Reg_GetNumberOfProducts() : app_flag% = FALSE
FOR prodIndex% = 1 to nProducts%
If Reg_GetUIInOrOut (prodIndex%) <> FALSE AND _
Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
app_flag% = TRUE
End If
NEXT
If app_flag% <> FALSE Then
If automation$ = gTRUE$ Then
notused% = Lot_AutoGetSizeOfInstall()
Else
direction$ = Lot_GetSizeOfInstall()
IF direction$ = gBACK$ GOTO STDSSAPPSEL
End If
End If
STDINITIALIZECOPYLST:
'** Make the products initialize their own copy list
InitStickyCopyList network$, direction$
IF direction$ = gBACK$ GOTO STDSIZEOFINSTALL
'*****AUTOMATION code *****************************************************
IF automation$ = gTRUE$ AND _
GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
notused% = Lot_AutoCustomizeShare()
END IF
Lot_SetCurrentProduct(1)
STDCUSTOM:
IF automation$ <> gTRUE$ Then
IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
DBM_CUSTOMIZEBASESINGLEPROD)
ELSE
If app_flag% <> FALSE Then
notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
DBSUIT_CUSTOMIZEAPPS)
End If
END IF
END IF
ELSE
'*** Customize Suite before customizing individual products ***
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
notused% = Lot_AutoInstallSuiteCustomize()
END IF
notused% = Lot_AutoInstallCustomize()
END IF
IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
STDDATALENS: '** Process the Datalens modules
direction$ = DoDatalens(direction$)
IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
STDUSERUI: '** Allow product to bring up any last minute UI
'** AUTOMATE: comment out next line and avoid product specific UI.
direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
IF direction$ = gBACK$ GOTO STDDATALENS
'***********AUTOMATION code*************************************************
IF automation$ <> gTRUE$ THEN
STDPROGMAN: '** Put Progman Group UI
notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
'** AUTOMATE: comment out next line set the progman group name yourself
'** Reg_SetProgManagerGroup 1, "MY GROUP"
IF Reg_GetRootFolder() = "" THEN
direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
ELSE
direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
END IF
IF direction$ = gBACK$ GOTO STDUSERUI
ELSE
notused% = Lot_AutoGetProgramGroupOrFolder()
END IF
UIPOP 1 '** Bring down automation PLEASEWAIT
'** Start the file copy
notused% = Lot_AutoWriteOutDebugFile()
direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
IF direction$ = gBACK$ GOTO STDPROGMAN
'*****AUTOMATIONCODE********************************
'*** Precopy Config processor
'** Give the products a last crack at the CopyList before it gets copied
notused% = RemovePriorVersion("reset","buffer")
notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
'** Make sure there is enough space
IF automation$ = gTRUE$ THEN
notused% = AutoCheckForSpace()
ELSE
SELECT CASE GetSymbolValue(SYM_SIZEOFINSTALL$)
CASE gCOMPLETE$
IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
CASE gLAPTOP$
IF CheckForSpace(DB_INSUFDISKSPACEMIN) = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
CASE gCUSTOM$
IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO STDINITIALIZECOPYLST 'STDCUSTOM
END SELECT
END IF
'** Copy all the files in the copylist
longnotused& = SetSizeCheckMode(CLNG(0))
IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
DumpCopyList GetSymbolValue(SYM_LOGFILE$)
END IF
nbytes& = NumberOfBytesPerBillbd()
notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
''Display bmps centred in billboards
SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
'' Added language subdirectory to source/destination paths if needed
Lot_FixupLanguageDirectories
CopyFilesInCopyList
''Set it back to default now
SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
'** Configure the shared files
curcursor& = ShowWaitCursor()
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
notused% = Lot_SaveFeaturesInstaledInInstallIni()
'** Register shared DLLs for all sections that have the special "_SHRCNT"
'** suffix
Lot_DoSharedDLLs
'** Allow the products to configure the product after file copy
notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
UIPOP 1 '** Bring down DB_PLEASEWAIT
IF NOT IsNewShell() THEN
'** Create a program manager group for the product #1
grouptitle$ = Reg_GetProgManagerGroupName(1)
'** notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
END IF
'*** schen AddiconOptions for Automate install 1/16/95
IF automation$ = gTRUE$ Then
notused% = Lot_AutoAddiconOptions ()
if notused% Then
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
end if
ELSE
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
END IF
'** Bring up DB_PLEASEWAIT again
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
notused% = Lot_CallSharedTool("ConfigSHARE()")
notused% = Lot_CallSharedTool("AddSHAREIcons()")
UIPOP 1 '** Bring down DB_PLEASEWAIT
RestoreCursor curcursor&
'** Win32: This should do nothing except bring up the success dlg.
ConfigureAUTOEXEC
notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
'IF automation$ = gTRUE$ THEN
' AutoInstallReboot
'END IF
'**********************************************************************
'************************* Server Install *****************************
'**********************************************************************
CASE gSERVER$
'** Read the Server INF and initialize SHARE
inf$ = GetIniKeyString (inifile$, "TOOLKIT", "SRVINFFILE")
ReadInfFile inf$
notused% = Lot_CallSharedTool("InitSHARE()")
'** Allow the products to do their initialization
direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
IF direction$ = gBACK$ GOTO WELCOME
'***********AUTOMATION code*************************************************
SMARTSUITE_COMPONENTSDIR:
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ AND _
Reg_GetProdSupportforShare(1) = 1 THEN
'Set defaults for components and lotusapp directories based on
'cinstall.ini found in parent directory
s$ = GetSymbolValue(SYM_BASEDIR$)
installini$ = MakePath( s$, gINSTALLINI$)
IF DoesFileExist(installini$,femExists) = 1 THEN
'** Set server defaults for COMPONENTSDIR based on entries
'** in cinstall.ini
s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
"COMPONENTSDIR")
IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
'** Check for language install by looking for the "LANGUAGE" key in
'** cinstall.ini
lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
s$ = GetIniKeyString( installini$, "TOOLKIT", "Language")
IF s$ <> "" AND s$ <> lang$ THEN
SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
'For suite/server, all products are language or not
listlen% = GetListLength(SYM_INSTALLKINDS$)
FOR i% = 1 TO listlen%
SetListItem SYM_INSTALLKINDS$, i%, gLANGUAGEINSTALL$
NEXT
'** Inform the user what's happening
'** The product name is based on first product (single product name or Suite)
s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
PopupLanguageInstallMessage( s$ )
END IF
END IF
IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
notused% = RegisterCallback ("CALLBACK", "GETCOMPONENTDIRCB")
'** AUTOMATE: comment out next line and explicitly set SYM_COMPONENTSDIR$
'** SetSymbolValue SYM_COMPONENTSDIR$, "C:\lotus\compnent"
'** Lot_RefreshDestination SYM_COMPONENTSDIR$
direction$ = PopupModalDlg (DBM_SPECIFY_SRVLOTUSAPPDIR, DBM_SPECIFY_SRVLOTUSAPPDIR)
END IF
END IF
'** Language Install Code
'**
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) <> gSMARTSUITE$ THEN
s$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(1) + gTOP$)
s$ = Lot_GetChapterValStr(s$, F_DESTDIRSYM)
s$ = GetSymbolValue(s$)
installini$ = MakePath( s$, gINSTALLINI$)
lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
IF DoesFileExist(installini$,femExists) = 1 THEN
'** If cinstall.ini exists in the product dir, and the language is different
'** and we are a server install, then we are in a language install
'**
s$ = GetIniKeyString( installini$, "TOOLKIT", "Language")
IF s$ <> "" AND s$ <> lang$ THEN
SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
SetListItem SYM_INSTALLKINDS$, 1, gLANGUAGEINSTALL$
'** Inform the user what's happening
'** The product name is based on first product (single product name or Suite)
s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
PopupLanguageInstallMessage( s$ )
'** Reset server values for COMPONENTSDIR based on entries
'** in cinstall.ini
s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
"COMPONENTSDIR")
IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
END IF
END IF
END IF
IF direction$ = gBACK$ THEN GOTO SMARTSUITE_BASEDIR
'** TV: These were called in the callbacks. They should be called in main
'** instead.
ResetWinWinsysSymbols
'** Make sure fonts directory is set relative to location on server
Lot_SetLotusFontsDir
SRVSSAPPSEL: '** In this dialog, the user can select/deselect applications to
'** be installed, and also specify directories for individual apps
FirstTime$ = ""
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
IF automation$ <> gTRUE$ THEN
'** GEMINI
'** notused% = RegisterCallback("SUIT", "APPSELCB")
'** '** AUTOMATE: comment out to take defaults, too trickey
'** '** to automatically pick anything different.
'** direction$ = PopupModalDlg (DBSUIT_SAPPSEL, DBSUIT_SAPPSEL)
'** GEMINI
ELSE
notused% = Lot_AutoSuiteAppSelect()
END IF
END IF
IF direction$ = gBACK$ GOTO SMARTSUITE_COMPONENTSDIR
SRVSIZEOFINSTALL: '** Ask kind of install to do (COMPLETE, CUSTOM, LAPTOP)
'** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
'** Result will be a default install of "COMPLETE", anything else is too tricky.
'** For a non-suite install you can set the destination directory:
'** dirSym$ = Reg_GetDirSymbolList(1)
'** dirSym$ = GetListItem(dirSym$, 1)
'** SetSymbolValue dirSym$, "c:\foo\"
'** Lot_RefreshDestination(dirSym$)
nProducts% = Reg_GetNumberOfProducts() : app_flag% = FALSE
FOR prodIndex% = 1 to nProducts%
If Reg_GetUIInOrOut (prodIndex%) <> FALSE AND _
Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
app_flag% = TRUE
End If
NEXT
If app_flag% <> FALSE Then
If automation$ = gTRUE$ Then
notused% = Lot_AutoGetSizeOfInstall()
Else
direction$ = Lot_GetSizeOfInstall ()
IF direction$ = gBACK$ GOTO SRVSSAPPSEL
End If
End If
'** Make the products initialize their own copy list
InitStickyCopyList network$, direction$
IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
'*****AUTOMATION code *****************************************************
IF automation$ = gTRUE$ AND _
GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
notused% = Lot_AutoCustomizeShare()
END IF
Lot_SetCurrentProduct(1)
SRVCUSTOM:
IF automation$ <> gTRUE$ Then
IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
DBM_CUSTOMIZEBASESINGLEPROD)
ELSE
If app_flag% <> FALSE Then
notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
DBSUIT_CUSTOMIZEAPPS)
End If
END IF
END IF
ELSE
'*** Customize Suite before customizing individual products ***
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
notused% = Lot_AutoInstallSuiteCustomize()
END IF
notused% = Lot_AutoInstallCustomize()
END IF
IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
SRVDATALENS: '** Process the Datalens modules
direction$ = DoDatalens(direction$)
if direction$ = gBACK$ GOTO SRVCUSTOM
SRVNODEOPTIONS: '** Process the Node Options
IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ AND _
Lot_AreAnyNodeOptAvailToSrv() <> 0 AND _
app_flag% <> FALSE THEN
IF automation$ <> gTRUE$ THEN
notused% = RegisterCallback("CALLBACK", "SRVNODEOPTIONSCB")
'** AUTOMATE: comment out call toPopupmodalDlg and get default.
direction$ = PopupModalDlg (DB_SRV_NODEOPTIONS, _
DB_SRV_NODEOPTIONS)
ELSE
notused% = Lot_AutoSetSrvNodeOptions()
END IF
END IF
IF direction$ = gBACK$ GOTO SRVDATALENS
SRVUI: '** Allow product to bring up any last minute UI
'** AUTOMATE: comment out next line and avoid product specific UI.
direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
IF direction$ = gBACK$ GOTO SRVNODEOPTIONS
IF automation$ = gTRUE$ THEN
notused% = Lot_AutoGetSetLicenserInfo()
END IF
'***********AUTOMATION code*************************************************
IF automation$ <> gTRUE$ THEN
SRVPROGMAN: '** Put Progman Group UI
notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
'** AUTOMATE: comment out next line set the progman group name yourself
'** Reg_SetProgManagerGroup 1, "MY GROUP"
IF Reg_GetRootFolder() = "" THEN
direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
ELSE
direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
END IF
IF direction$ = gBACK$ GOTO SRVUI
ELSE
notused% = Lot_AutoGetProgramGroupOrFolder()
END IF
UIPOP 1 '** Bring down automation PLEASEWAIT
notused% = Lot_AutoWriteOutDebugFile()
direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
IF direction$ = gBACK$ GOTO SRVPROGMAN
'*****AUTOMATIONCODE********************************
'*** Precopy Config processor
'** Give the products a last crack at the CopyList before it gets copied
''* IF there is any product with licensing turned on, then
''* assume its on for all products.
lic$ = CSTR(FALSE)
FOR i% = 1 to nProducts%
IF Reg_GetProdSupportForLicense (i%) <> FALSE AND _
Reg_IsLicenseSelected (i%) <> FALSE THEN
lic$ = CSTR(TRUE)
EXIT FOR
END IF
NEXT
notused% = RemovePriorVersion("reset","buffer")
notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, lic$)
'** Make sure there is enough space
IF automation$ = gTRUE$ THEN
notused% = AutoCheckForSpace()
ELSE
IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO SMARTSUITE_BASEDIR 'SRVSIZEOFINSTALL
ELSE
IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO SRVCUSTOM 'SRVCUSTOM
END IF
END IF
'** Start the file copy
notused% = SetSizeCheckMode(FALSE)
IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
DumpCopyList GetSymbolValue(SYM_LOGFILE$)
END IF
nbytes& = NumberOfBytesPerBillbd()
notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
''Display bmps centred in billboards
SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
'' Added language subdirectory to source/destination paths if needed
Lot_FixupLanguageDirectories
CopyFilesInCopyList
''Set it back to default now
SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
' Special case of server/language install
' Set cinstall.ini location to subdirectory for writing installed features
IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN
s$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
gINSTALLINI$ = Lot_SetLanguageDirectory(s$) + "\" + gINSTALLINI$
END IF
'** Configure the shared files
curcursor& = ShowWaitCursor()
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
notused% = Lot_SaveFeaturesInstaledInInstallIni()
'' For a shared windows installation, copy the windows, windows system,
'' and font files to the shared windows location
Lot_DoServerSharedWindows
'** All the products to configure after copy
IF Lot_AreAnyNodeOptAvailToSrv() <> 0 THEN
notused% = Lot_SaveTheNodeOptionsInInstallIni()
END IF
'** Allow the products to configure the product after file copy
notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
UIPOP 1 '** Bring Down DB_PLEASEWAIT
'** Create a program manager group for the product #1
grouptitle$ = Reg_GetProgManagerGroupName(1)
'** notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
If NOT IsNewShell() THEN
CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
End If
'*** schen 3/19 Automate Addicon for server
IF automation$ = gTRUE$ Then
notused% = Lot_AutoAddiconOptions ()
if notused% Then
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
end if
ELSE
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
END IF
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
notused% = Lot_CallSharedTool("ConfigSHARE()")
notused% = Lot_CallSharedTool("AddSHAREIcons()")
'** Change the install.ini file so we can do NODE install from server
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
dirSym$ = Reg_GetDirSymbolList(1)
If GetListLength(dirSym$) <= 0 Then
ErrorMsg SID_ERR_SRV_MUST_HAVE_MAINDIR, ""
ERROR STFQUIT
End If
dirSym$ = GetListItem(dirSym$, 1)
ELSE
dirSym$ = SYM_BASEDIR$
END IF
' Special case of server/language install, use INSTDIR for install.lst
IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN _
dirSym$ = "INSTDIR"
CreateIniKeyValue GetSymbolValue(dirSym$) + "install.lst", _
"Params", "CmdLine", _
|lsirun.exe start /S "%s" %s /N|, cmoOverwrite
UIPOP 1 '** Bring Down DB_PLEASEWAIT
RestoreCursor curcursor&
'** Tell user we succeeded
'* Only looks at first product! Won't work for smartsuite MMETH
notused% = RegisterCallback("CALLBACK","SRV_SUCCESSCB")
IF CINT(FIsKeywordInCopyList("LICTOP")) <> FALSE AND _
Reg_IsLicenseSelected (1) <> FALSE THEN
rc$ = PopupModalDlg (DB_SRV_SUCCESS_LIC, DB_SUCCESS)
ELSE
rc$ = PopupModalDlg (DB_SRV_SUCCESS, DB_SUCCESS)
END IF
notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
'**********************************************************************
'************************* Node Install *******************************
'**********************************************************************
CASE gNODE$
'** Read in the INF file and init share
inf$ = GetIniKeyString (inifile$, "TOOLKIT", "NODEINFFILE")
ReadInfFile inf$
notused% = Lot_CallSharedTool("InitSHARE()")
'** Call the product initialization functions
direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
direction$ = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
END IF
'************** For smart suite, Application Selection Dialog *****
NODESSAPPSEL:
FirstTime$ = ""
'** In this dialog, the user can select/deselect applications to be
'** installed, and also specify directories for individual apps
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
IF automation$ <> gTRUE$ THEN
notused% = RegisterCallback("SUIT", "APPSELCB")
'** AUTOMATE: comment out to take defaults, too trickey
'** to automatically pick anything different.
direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
ELSE
notused% = Lot_AutoSuiteAppSelect()
END IF
END IF
IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
'***********AUTOMATION code******************************
IF automation$ = gTRUE$ AND _
GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
notused% = Lot_AutoGetProductDestDirSymbol ()
END IF
'** Language Install Code
' install must be in a language subdirectory and the language a
' secondary language for the server
IF IsServerSecondaryLanguage AND SrcDirResetFlag <> TRUE THEN
s$ = GetSymbolValue(SYM_STF_SRCDIR$)
s$ = OneUp(NullTrim(s$))
SetSymbolValue SYM_STF_SRCDIR$, s$
SrcDirResetFlag = TRUE
END IF
'** Make the products initialize their own copy list
InitStickyCopyList network$, direction$
IF direction$ = gBACK$ GOTO NODESSAPPSEL
'** Consolidate the lotusapp if needed
IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
direction$ = gBACK$
END IF
IF direction$ = gBACK$ GOTO NODESSAPPSEL
'************************ Change Node Path *************************
CHANGE_NODE_PATH:
IF direction$ = gBACK$ GOTO NODESSAPPSEL
NODENODEOPTIONS:
'** For a non-suite install you can set the destination directory:
'** dirSym$ = Reg_GetDirSymbolList(1)
'** dirSym$ = GetListItem(dirSym$, 1)
'** SetSymbolValue dirSym$, "c:\foo\"
'** Lot_RefreshDestination(dirSym$)
dlgID% = 0
IF automation$ <> gTRUE$ THEN
'** If it's standalone and there is a dir symbol
IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
dirSym$ = Reg_GetDirSymbolList(1)
IF GetListLength(dirSym$) >= 1 Then
IF Lot_IsAnyNodeOptAvailToNode() <> 0 THEN
dlgID% = DB_NODE_PERSONALDIRNODEOPT
ELSE
dlgID% = DB_NODE_PERSONALDIR
END IF
END IF
'** smartSuite
ELSE
IF Lot_AreAnyNodeOptionsAvail() <> 0 THEN
dlgID% = DB_NODE_NODEOPTIONS
END IF
END IF
IF dlgID% <> 0 THEN
notused% = RegisterCallback("CALLBACK", "NODENODEOPTIONSCB")
direction$ = PopupModalDlg (dlgID%,CLng(dlgID%))
ELSE
Lot_TurnOffAllNodeOptSections
END IF
ELSE
notused% = Lot_AutoProcessNodeoptions()
END IF
IF direction$ = gBACK$ GOTO CHANGE_NODE_PATH
NODEUI: '** Allow the product to put up its UI
direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
IF direction$ = gBACK$ GOTO NODENODEOPTIONS:
'***********AUTOMATION code*************************************************
IF automation$ <> gTRUE$ THEN
NODEPROGMAN: '** Put Progman Group UI
notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
'** AUTOMATE: comment out next line set the progman group name yourself
'** Reg_SetProgManagerGroup 1, "MY GROUP"
IF Reg_GetRootFolder() = "" THEN
direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
ELSE
direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
END IF
IF direction$ = gBACK$ GOTO NODEUI
ELSE
notused% = Lot_AutoGetProgramGroupOrFolder()
END IF
UIPOP 1 '** Bring down automation PLEASEWAIT
notused% = Lot_AutoWriteOutDebugFile()
direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
IF direction$ = gBACK$ GOTO NODEPROGMAN
'*****AUTOMATIONCODE********************************
'*** Precopy Config processor
'** Configuration before copying
notused% = RemovePriorVersion("reset","buffer")
notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
curcursor& = ShowWaitCursor()
'** Copy the files
longnotused& = SetSizeCheckMode(CLNG(FALSE))
notused% = Lot_CallSharedTool ("Lot_RefreshLocalLotusapp()")
notused% = Lot_RefreshLocalComponentDir
RestoreCursor curcursor&
'** Make sure there is enough space before continuing
IF automation$ = gTRUE$ THEN
notused% = AutoCheckForSpace()
ELSE
IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO CHANGE_NODE_PATH
END IF
curcursor& = ShowWaitCursor()
IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
DumpCopyList GetSymbolValue(SYM_LOGFILE$)
END IF
nbytes& = NumberOfBytesPerBillbd()
notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
'** Fixup location of files on server based on cinstall.ini
'** for symbols registered by clients
Lot_FixupSourceDirectories
''Turn off Windows System files for shared windows install
Lot_DetectSharedWindows
IF gIsSharedWindows% THEN TurnOffSharedWinsysSections
''Display bmps centred in billboards
SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
'' Added language subdirectory to source/destination paths if needed
Lot_FixupLanguageDirectories
CopyFilesInCopyList
''Set it back to default now
SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
notused% = Lot_SaveFeaturesInstaledInInstNodeIni()
'** Register shared DLLs for all sections that have the special "_SHRCNT"
'** suffix
Lot_DoSharedDLLs
notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
UIPOP 1 '** Bring Down DB_PLEASEWAIT
'** Allow the products to do their initialization
grouptitle$ = Reg_GetProgManagerGroupName(1)
'** notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
If NOT IsNewShell() THEN
CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
End If
'*** schen 3/19 for node Automate addicon
IF automation$ = gTRUE$ Then
notused% = Lot_AutoAddiconOptions ()
if notused% Then
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
end if
ELSE
notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
END IF
SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
'** Configure the shared files
notused% = Lot_CallSharedTool("ConfigSHARE()")
notused% = Lot_CallSharedTool("AddSHAREIcons()")
'** DONE
UIPOP 1 '** Bring Down DB_PLEASEWAIT
RestoreCursor curcursor&
'** Win32: This should do nothing except bring up the success dlg.
ConfigureAUTOEXEC
notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
'IF automation$ = gTRUE$ THEN
' AutoInstallReboot
'END IF
'**********************************************************************
'******************** Distribution Install ****************************
'**********************************************************************
CASE gDISTRIBUTION$
'** Initialize
inf$ = GetIniKeyString (inifile$, "TOOLKIT", "BYWIREINFFILE")
ReadInfFile inf$
'** Product initialiation
direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
IF direction$ = gBACK$ GOTO WELCOME
'***********AUTOMATION code*************************************************
IF automation$ = gTRUE$ THEN
notused% = Lot_AutoGetProductDestDirSymbol ()
ELSE
'******************* Change Distribution Install *******************
ChangeDistPath:
lSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
SetListItem "IDC_TEXT", 1, STR$(lSize&) + gStrK$
notused% = RegisterCallback("CALLBACK","DISTSIZEINSTALLCB")
'** AUTOMATE: comment out next line and explicitly set directory,
'** if you are not happy with the default
'** dirSym$ = Reg_GetDirSymbolList(1)
'** dirSym$ = GetListItem(dirSym$, 1)
'** SetSymbolValue dirSym$, "c:\foo\"
'** Lot_RefreshDestination(dirSym$)
direction$ = PopupModalDlg (DB_CHOOSEPATHDIST, DB_CHOOSEPATHDIST)
IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
END IF
dirSym$ = Reg_GetDirSymbolList(1)
nDirs% = GetListLength(dirSym$)
IF nDirs% > 0 THEN
dirSym$ = GetListItem(dirSym$, 1)
destdir$ = GetSymbolValue(dirSym$)
AddSectionFilesToCopyList gDISTRIBUTIONFILES$,_
GetSymbolValue(SYM_STF_SRCDIR$),_
destdir$
END IF
UIPOP 1 '** Bring down automation PLEASEWAIT
IF automation$ = gTRUE$ THEN
notused% = AutoCheckForSpace()
ELSE
IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO ChangeDistPath
END IF
'' These UI Pops have a funny interaction with CheckFOrSpace
'' When Check for SPace putsup a dialog. (DAVE LOOK AT)
'** Ask the user if we should copy files
notused% = Lot_AutoWriteOutDebugFile()
direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
IF direction$ = gBACK$ GOTO ChangeDistPath
'*****AUTOMATIONCODE********************************
'*** Precopy Config processor
'** Configuration before copying
notused% = RemovePriorVersion("reset","buffer")
notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
'** Copy the distribution files
longnotused& = SetSizeCheckMode(CLNG(0))
IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
DumpCopyList GetSymbolValue(SYM_LOGFILE$)
END IF
nbytes& = NumberOfBytesPerBillbd()
notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
''Display bmps centred in billboards
SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
CopyFilesInCopyList
''Set it back to default now
SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
' ** TV:
'notused1$ = Lot_CallProductFunctions("PostCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
'** Tell the user you are done
rc$ = PopupModalDlg (DB_SUCCESS, DB_SUCCESS)
notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
'********************* END OF INSTALL CASES ***************************
'** IF you get here then it is an error
CASE ELSE
ERROR STFQUIT
END SELECT
IF automation$ = gTRUE$ THEN
'** TV:Clean up dialogs before quitting
UIPopAll
WriteToFile gLogFile$, LdString(SID_AUTOINST_COMPLETE)
WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
END
END IF
'*************************************************************************
'********************** ERROR HANDLERS ***********************************
'*************************************************************************
'** If major error, this will exit the program
MAINERROR:
'** TV:Clean up dialogs before quitting
UIPopAll
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
WriteToFile gLogFile$, LdString(SID_AUTOINST_ERR)
WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
END IF
END
'** DND: Should we do anything else here?
STFERR_:
RESUME NEXT
STFTOGGLEERR:
RESUME NEXT
END SUB
'*************************************************************************
'** FUNCTION DoDatalens(direction$) AS STRING
'** Purpose: Take care of all the datalens stuff
'**
'**
'** Author: DND and MMETH
'** Arguments: SYM_NETWORK$
'**
'** Returns: gBACK$ or ""
'**
'*************************************************************************
FUNCTION DoDatalens(BYVAL direction$) AS STRING
DIM notused%, rc$, chptname$
If direction$ = gBACK Then GOTO PARADOXUI
%rem
'This is left over from CARMEN
IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
'** For COMPLETE installs, remove some datalens stuff from
'** the copylist.
IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
If (CINT(FIsKeywordinCopyList ("SHRPARADOXPRG")) <> FALSE) Then
chptname$ = Lot_GetChapterFromKeyword("SHRPARADOXPRG")
Lot_ToggleChapterFilesInCopyList chptname$
end if
If (CINT(FIsKeywordinCopyList ("SHRSQLPRG")) <> FALSE) Then
chptname$ = Lot_GetChapterFromKeyword("SHRSQLPRG")
Lot_ToggleChapterFilesInCopyList chptname$
end if
If (CINT(FIsKeywordinCopyList ("SHRINFORMIXPRG")) <> FALSE) Then
chptname$ = Lot_GetChapterFromKeyword("SHRINFORMIXPRG")
Lot_ToggleChapterFilesInCopyList chptname$
end if
If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
chptname$ = Lot_GetChapterFromKeyword("SHRIBMPRG")
Lot_ToggleChapterFilesInCopyList chptname$
end if
If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
chptname$ = Lot_GetChapterFromKeyword("SHRIBMPRG")
Lot_ToggleChapterFilesInCopyList chptname$
end if
END IF
END IF
%endrem
'************** Standard SQL Server Dialog *************************
SQLUI:
IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE THEN
'** INSYMBOLS: ????
notused% = RegisterCallback("SHARE", "SQLSERVERNAMECB")
'** AUTOMATE: comment out next line and explicitly set SYM_SQLSERVERNAME$
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
SetSymbolValue SYM_SQLSERVERNAME$, GetSymbolValue(SYM_AUTO_SQLSERVER)
END IF
direction$ = PopupModalDlg (DBM_SQL_SERVER_NAME, DBM_SQL_SERVER_NAME)
IF direction$ = gBACK$ THEN
DoDatalens = direction$
EXIT FUNCTION
END IF
END IF
'************** Standard Paradox Dialog ***************************
PARADOXUI:
IF Lot_CallSharedTool("Lot_IsParadoxSelected()") <> FALSE THEN
'** INSYMBOLS: ????
notused% = RegisterCallback("SHARE", "PARADOXNETWORKINFOCB")
'** AUTOMATE: comment out next line and explicitly set SYM_PARADOXNETWORKINFO$
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
SetSymbolValue SYM_PARADOXNETWORKINFO$, GetSymbolValue(SYM_AUTO_PARADOXINFO$)
END IF
direction$ = PopupModalDlg (DBM_PARADOX_NETWORK_INFORMATION, DBM_PARADOX_NETWORK_INFORMATION )
'** OUTSYMBOLS: ????
IF direction$ = gBACK$ THEN
IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE GOTO SQLUI
DoDatalens = gBACK$
EXIT FUNCTION
END IF
END IF
DoDatalens = direction$
END FUNCTION
'*************************************************************************
'** FUNCTION NumberOfBytesPerBillbd() AS LONG
'** Purpose: Take care of all the datalens stuff
'**
'**
'** Author: MMETH
'** Arguments: NONE
'**
'** Returns: number of bytes per billboard
'**
'*************************************************************************
FUNCTION NumberOfBytesPerBillbd() AS LONG
DIM n%, i% ,j%, costs&, nBillboards%, nProducts%, UNCSym$
''**** COMPUTE THE number of bytes for each billboard to stay up
costs& = LcbGetChapterCost("", "", SYM_COST$, "")
n% = GetListLength(SYM_COST$)
costs& = 0
for i% = 1 to n%
costs& = costs& + CLNG(GetListItem(SYM_COST$, i%))
next
j%=GetListLength("UNCVOLLIST")
FOR i% = 1 to j%
UNCSym$ = GetListItem("UNCVOLLIST",i%)
costs& = costs& + CLNG(GetListItem(UNCSym$, UNC_COST))
NEXT
nProducts% = Reg_GetNumberOfProducts()
nBillboards% = Reg_GetBillboardNumber(1)
If nBillboards% = 0 Then
NumberOfBytesPerBillbd = 0
Else
NumberOfBytesPerBillbd = costs&\nBillboards%
End If
END FUNCTION
'*************************************************************************
SUB SetTheBaseSymbol()
'** IN SYMBOLS ::: SYM_NETWORK$
'** OUT SYMBOLS::: SYM_BASEDIR$
'*************************************************************************
DIM network$, defBase$, lcbSpace&, defDir$, i%, nProducts%, s$
DIM keyvalue$, gbuf$, nsize&, ret&, bRegistryPath%
bRegistryPath% = FALSE
network$ = GetSymbolValue(SYM_NETWORK$)
'** Find out if there's already installed products by querying registry
'** Standard takes its value from HLM\SOFTWARE\Lotus\components\LocalPath
'** Node takes its value from HCU\SOFTWARE\Lotus\components\User Path
SELECT CASE network$
CASE gSTANDARD$
keyvalue$ = "LocalPath"
ret& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&)
CASE gNODE$
keyvalue$ = "User Path"
ret& = Lot_GetRegKeyValueEx(HKEY_CURRENT_USER, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&)
END SELECT
' Strip off "compnent" part, e.g. d:\lotus\compnent ==> d:\lotus\
IF gbuf$ <> "" AND IsDriveMapped(gbuf$) <> FALSE THEN
s$ = OneUp(NullTrim(gbuf$))
IF Lot_IsDirWritable(Lot_TrimEndSlash(s$)) THEN
defdir$ = s$
bRegistryPath% = TRUE
END IF
END IF
'** Set the PARENT DIRECTORY based on minimum space required
'** if not already gotten from registry
IF bRegistryPath% = FALSE THEN
lcbSpace& = 0
defBase$ = "lotus\"
nProducts% = Reg_GetNumberOfProducts()
FOR i% = 1 to nProducts%
lcbSpace& = lcbSpace& + Reg_GetProdMinSize(i%)
NEXT
defDir$ = Lot_GetAllHardDrive(lcbSpace&, defBase$)
IF defDir$ = "" THEN
defDir$ = LCASE$(GetListItem(SYM_LOCALHARDDRIVES$, 1)) + ":\" + defBase$
END IF
END IF
SetSymbolValue SYM_BASEDIR$, defDir$
'*** AUTOMATION****************************************
IF bRegistryPath% <> TRUE THEN
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
AutoSetParentDir
END IF
END IF
' Not sure if we still use SYM_BASE16DIR$
SetSymbolValue SYM_BASE16DIR$, GetSymbolValue(SYM_BASEDIR$)
END SUB
SUB GetNamesFromRegistry(buf1$, buf2$, RegLoc$)
DIM ReturnVal&
buf1$=CreateBuffer(260)
ReturnVal&=260
ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
RegLoc$, gREGUSERNAME, 0, buf1$, ReturnVal&)
buf2$=CreateBuffer(260)
ReturnVal&=260
ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
RegLoc$, gREGORGNAME, 0, buf2$, ReturnVal&)
buf1$ = LTrim$(NullTrim(buf1$))
buf1$ = Trim$(buf1$)
buf2$ = LTrim$(NullTrim(buf2$))
buf2$ = Trim$(buf2$)
END SUB
SUB InitInstall
DIM hUser&, notused%
DIM buf1 AS STRING : buf1$ = CreateBuffer(80)
DIM buf2 AS STRING : buf2$ = CreateBuffer(80)
DIM count%, network$,ReturnVal&
'** Initialize the Setup API
'-- SetUpAPI moved to toolkit
'****************************************
'******* INITIALIZE ALL GLOBAL SYMBOLS **
'****************************************
'** Default is Single, SmartSuite will override if it is present
'** Even for single product installs there may be more that one
SetSymbolValue SYM_SINGLESMARTSUITE, gSINGLE$
'** Set up a symbol for where the copylist log will get written
IF ENVIRON$(gLOTUS_COPYLIST$) <> "" THEN
SetSymbolValue SYM_LOGFILE$, GetWindowsDir() + gCOPYLISTLOG$
END IF
'** Initialize the Win and Winsys symbols
Lot_InitializeWinWinsysSym
'** Initialize the expected len of subdirs in *.inf paths
SetSymbolValue SYM_DOSMAXPATHDIFF$,"20"
'** Initialize the gEXTRA list to allow for fudge
'** on the windows drive. A deseprate application can add to it.
Lot_InitializeEXTRA
''We show bitmaps in 3 ways, with transparent backrgound (default), streched or centred
SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
'** Get The default Name & Company
hUser& = GetModuleHandle(gUSER$)
notused% = LoadString (hUser&, USERNAME, buf1$, 80)
notused% = LoadString (hUser&, COMPANYNAME, buf2$, 80)
buf1$ = LTrim$(NullTrim(buf1$))
buf1$ = Trim$(buf1$)
buf2$ = LTrim$(NullTrim(buf2$))
buf2$ = Trim$(buf2$)
IF buf1$="" THEN
GetNamesFromRegistry buf1$, buf2$, gREGWINNAME
IF buf1$="" THEN
GetNamesFromRegistry buf1$, buf2$, gREGWINNTNAME
IF buf1$="" THEN
buf1$=CreateBuffer(260)
ReturnVal&=260
notused%=GetUserName(buf1$,ReturnVal&)
buf1$=NullTrim(buf1$)
buf2$=buf1$
END IF
END IF
END IF
SetSymbolValue SYM_NAME$, RTrim$(NullTrim(buf1$))
SetSymbolValue SYM_COMPANY$, RTrim$(NullTrim(buf2$))
'***********AUTOMATION code*************************************************
IF GetSymbolValue(SYM_AUTOMATIONINST$) = "1" THEN
SetSymbolValue SYM_AUTOMATIONINST$, gTRUE$
'*** default must be lotinst.log for automation, set in cmdline processing
'*** gLogFile$ = GetWindowsDir() + "lotinst.log"
ELSE
SetSymbolValue SYM_AUTOMATIONINST$, gFALSE$
END IF
IF GetSymbolValue(SYM_LOGGING$) = "1" THEN
IF GetSymbolValue(SYM_LOGGINGPATH$) <> "" THEN
gLogFile$ = GetSymbolValue(SYM_LOGGINGPATH$)
END IF
END IF
'** Check to see if command line asks for Node Install
'** TV: This should be independent of automation
IF INSTR(UCASE$(COMMAND$), "/N") <> 0 THEN
SetSymbolValue SYM_NETWORK$, gNODE$
ELSE
IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
network$ = Lot_AutoGetInstallType()
SetSymbolValue SYM_NETWORK$, network$
ELSE
SetSymbolValue SYM_NETWORK$, gSTANDARD$
END IF
END IF
'****************************************
'******* MISC TRIVIA (Initializing) *****
'****************************************
'** Even though a Window title is not shown, we need
'** to set the title, so it shows up in the task list.
SetTitle LdString(SID_TKT_STD_TITLE)
'** The default location of the copy gauge is centered at screen bottom
SetCopyGaugePosition -1,32000
END SUB
'*************************************************************************
'** SUB ConfigureAUTOEXEC
'**
'** Purpose: Configure AUTOEXEC.BAT after copying files.
'**
'** Author: CHRISTOPHER MOY
'** Arguments: None
'** Returns: NONE
'*************************************************************************
SUB ConfigureAUTOEXEC
DIM n%, i%, notused%, notused1$, rc$
DIM hwnd%, lr%
'** DETERMINE IF AUTOEXEC.BAT NEEDS MODIFICATIONS
SetSymbolValue SYM_NEEDSHARE$, gFALSE$
SetSymbolValue SYM_NEEDNOTES$, gFALSE$
'**** Win32 does not require autoexec modifictaion *********
%rem
n% = Reg_GetNumberOfProducts()
FOR i% = 1 to n%
IF Reg_GetSHAREEXESupport(i%) <> FALSE THEN
'** IF IsShareInAUTOEXEC() = FALSE THEN '** if share is not in autoexec
'** SetSymbolValue SYM_NEEDSHARE$, gTRUE$ '** use symbols?
'** EXIT FOR
'** ELSE
IF IsShareInstalled() = FALSE THEN '**if share is in autoexec
SetSymbolValue SYM_NEEDSHARE$, gTRUE$ '**but not running.
EXIT FOR
END IF
END IF
NEXT
FOR i% = 1 to n%
IF Reg_GetNotesSupport(i%) <> FALSE THEN
IF IsNotesInPath() = FALSE THEN
SetSymbolValue SYM_NEEDNOTES$, gTRUE$ '** use symbols?
EXIT FOR
END IF
END IF
NEXT
IF GetSymbolValue(SYM_NEEDSHARE$) = gTRUE$ OR GetSymbolValue(SYM_NEEDNOTES$) = gTRUE$ THEN
IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
notused% = RegisterCallback("CALLBACK", "AUTOEXECCB")
notused1$ = PopupModalDlg(DB_AUTOEXEC, DB_AUTOEXEC)
'** Get value in SYM_AUTOEXEC_CHOICE$ from button
'** pressed in DB_AUTOEXEC dialog.
notused% = RegisterCallback("CALLBACK", "INSTALLCOMPLETECB")
SELECT CASE GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
CASE "AUTO"
notused1$ = PopupModalDlg(DB_SUCCESS_AUTO, DB_SUCCESS_AUTO)
CASE "AUTOCOPY"
notused1$ = PopupModalDlg(DB_SUCCESS_AUTOCOPY, DB_SUCCESS_AUTOCOPY)
CASE "MAN"
notused1$ = PopupModalDlg(DB_SUCCESS_AUTOMAN, DB_SUCCESS_AUTOMAN)
END SELECT
ELSE
notused% = Lot_AutoConfigureAutoexec()
'** Tell the user we are all done
rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
END IF
ELSE
'** Tell the user we are all done
rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
END IF
%endrem
'**** Win32 does not require autoexec modifictaion *********
'** Tell the user we are all done
IF ExitExecRestart=FALSE THEN
rc$ = PopupModalDlg(DB_SUCCESS_REBOOT, DB_SUCCESS_REBOOT)
IF rc$="OK" THEN
hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
ELSE
RebootLater% = TRUE
END IF
ELSE
rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
END IF
END SUB
SUB InitStickyCopyList(network$, direction$)
'*************************************************************************
'** Purpose: Initialize copy list, while preserving user settings from a
'** previous customize; if the install type changes, local global flag
'** FirstTime$ is reset. This flag is reset when the user backs up to
'** the xxxSSAPPSEL portion of the code
'**
'** Author: JMDonohue
'** Arguments:
'** network$ install type: standard, server, node
'** direction$ direction
'*************************************************************************
IF FirstTime$ <> network$ THEN
ResetCopyList '** Reset the copylist
END IF
IF FirstTime$ <> network$ OR _
GetSymbolValue(SYM_SIZEOFINSTALL$) <> gCUSTOM$ THEN
direction$ = Lot_CallProductFunctions("InitCopyList", direction$, FALSE, gALLPRODUCTS$, "")
FirstTime$ = network$
END IF
END SUB
DIM ServerWinDir$
DIM ServerWinSysDir$
SUB Lot_DetectSharedWindows()
'*************************************************************************
'** Purpose: Determine if this is a shared windows installation.
'** For a server install determine if the shared windows location is
'** writeable. If writeable, asks the user to confirm copying files
'** there, if not ask the user to confirm a standard server install.
'** Sets the value of global gIsSharedWindows%
'**
'** Author: JMDonohue
'** Arguments: NONE
'*************************************************************************
DIM windir$, network$, s$, i%
DIM IsDirWriteable%, direction$
'' We assume that if there is a file names 'machines.ini' in the Windows
'' directory, then it it
s$ = GetWindowsSysDir()
ServerWinSysDir$ = s$
i% = Len(s$) 'Assume last character is \
DO
i% = i% - 1
LOOP UNTIL Mid(s$, i%, 1) = "\"
windir$ = Mid(s$, 1, i%)
ServerWinDir$ = windir$
IF DoesFileExist(windir$ + "machines.ini", femExists) THEN
gIsSharedWindows% = TRUE
ELSE
gIsSharedWindows% = FALSE
END IF
network$ = GetSymbolValue(SYM_NETWORK$)
IF network$ <> gSERVER$ THEN EXIT SUB
IF gIsSharedWindows% = FALSE THEN EXIT SUB
' Set the values of these symbols to point to the shared server
SetSymbolValue SYM_WINDIR$, ServerWinDir$
SetSymbolValue SYM_WINSYSDIR$,ServerWinSysDir$
'' For server, this is a shared windows install only if location writeable
IsDirWriteable% = CInt(Lot_IsDirWritable(ServerWinSysDir$))
IF IsDirWriteable% = 0 THEN
gIsSharedWindows% = FALSE
direction$ = Lot_SharedWindowsDlg (DB_NOSHAREDWINDOWS)
END IF
END SUB
SUB Lot_DoServerSharedWindows()
'*************************************************************************
'** Purpose: For server shared windows, copy the system
'** and font files to the shared server locations, keyed on sections in the
'** inf file with the following special destination directory symbols:
'**
'** SYM_LOTUSFONTSDIR$, SYM_WINDIR$ and SYM_WINSYSDIR$
'**
'** Author: JMDonohue
'** Arguments: NONE
'*************************************************************************
DIM chapter$, DirSym$, InorOut%
DIM SpecialDirectorySymbolList LIST AS INTEGER
DIM WindowsChaptersList LIST AS INTEGER
SpecialDirectorySymbolList(SYM_WINDIR$) = 1
SpecialDirectorySymbolList(SYM_WINSYSDIR$) = 1
SpecialDirectorySymbolList(SYM_LOTUSFONTSDIR$) = 1
IF gIsSharedWindows% = FALSE THEN EXIT SUB
' We have a writeable shared windows location,
' Copy the system files to the shared windows location
' (have already been copied to normal server location)
' Find the chapters to copy
chapter$ = Lot_GetFirst("", F_INOROUT)
WHILE (chapter$ <> "")
DirSym$ = Lot_GetChapterValStr(chapter$, F_DESTDIRSYM)
IF IsElement(SpecialDirectorySymbolList(DirSym$)) = TRUE THEN
WindowsChaptersList(chapter$) = 1
END IF
chapter$ = Lot_GetNext()
WEND
' Turn off all sections, turn on the ones in list
chapter$ = Lot_GetFirst("", F_NOTHING)
WHILE (chapter$ <> "")
Lot_SetChapterFilesInCopyListInOrOut chapter$, 0
chapter$ = Lot_GetNext()
WEND
FORALL sym IN WindowsChaptersList
chapter$ = ListTag(sym)
Lot_SetChapterFilesInCopyListInOrOut chapter$, 1
END FORALL
' Set the values of these symbols to point to the shared server
SetSymbolValue SYM_WINDIR$, ServerWinDir$
SetSymbolValue SYM_WINSYSDIR$,ServerWinSysDir$
Lot_SetLotusFontsDir
Lot_RefreshDestination(SYM_WINDIR$)
Lot_RefreshDestination(SYM_WINSYSDIR$)
CopyFilesInCopyList
ERASE WindowsChaptersList
END SUB
PUBLIC SUB Lot_SetLotusFontsDir
'*************************************************************************
'** Purpose: Sets the value of the special destination directory symbol
'** LOTUSFONTSDIR to the official Windows fonts directory
'** NOTE: SYM_WINDIR$ and SYM_WINSYSDIR$ must have been set prior to call
'**
'** Author: JMDonohue
'**
'*************************************************************************
IF IsNewShell() THEN
SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINDIR$) _
+ LdString(SID_FONTS95_DIR) + "\"
ELSE
SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINSYSDIR$)
END IF
Lot_RefreshDestination (SYM_LOTUSFONTSDIR$)
END SUB
SUB Lot_DoSharedDLLs()
'*************************************************************************
'** Purpose: Traverses the copy list looking for sections whose section
'** keyword ends in "_SHRCNT", and increments the usage count in the registry
'** for these files
'**
'** Author: JMDonohue
'**************************************************************************
DIM s$, szSym$, szSect$, i%, n%, chapter$, Keyword$, DestDir$
DIM SharedDLLList LIST AS STRING
DIM ProdDLL$
szSym$ = "SHAREDDLLS"
'' Traverse all copy list sections, find files in those using "_SHRCNT" suffix
chapter$ = Lot_GetFirst("", F_INOROUT)
WHILE (chapter$ <> "")
Keyword$ = Lot_GetChapterValStr(chapter$, F_KEYWORD)
DestDir$ = Lot_GetChapterValStr(chapter$, F_DESTDIR)
s$ = Right$(Keyword$,7)
IF s$ = "_SHRCNT" THEN
szSect$ = Lot_GetChapterValStr(chapter$, F_NOTHING)
' Get the renamed filename if it exists
n% = FGetSectionFileList (szSym$, szSect$, 1)
n% = GetListLength(szSym$)
'' For each shared DLL in section, create fully qualified pathname
'' and add to list of filenames
FOR i% = 1 TO n%
s$ = DestDir$ + GetListItem(szSym$, i%)
'' Save an entry for each product that uses the file(prodno-file)
ProdDLL$ = LEFT(chapter$,1) + "-" + s$
IF ISELEMENT(SharedDLLList(ProdDLL$)) = FALSE THEN _
SharedDLLList(ProdDLL$) = s$
NEXT
RemoveSymbol szSym$
END IF
chapter$ = Lot_GetNext()
WEND
'' Traverse list, increment the usage count in the registry
FORALL sym IN SharedDLLList
IncrementSharedDLLCount(sym)
END FORALL
END SUB
SUB TurnOffSharedWinsysSections()
'****************************************************************************
'** Purpose: For a shared windows installation, don't copy system files, since
'** these should already be on the shared windows server
'**
'** Author: JMD
'**
'****************************************************************************
DIM DirSym$, chapter$
IF gIsSharedWindows% = FALSE THEN EXIT SUB
' Find the chapters to turn off
chapter$ = Lot_GetFirst("", F_INOROUT)
WHILE (chapter$ <> "")
DirSym$ = Lot_GetChapterValStr(chapter$, F_DESTDIRSYM)
IF DirSym$ = SYM_WINSYSDIR$ THEN
Lot_SetChapterFilesInCopyListInOrOut chapter$, 0
END IF
chapter$ = Lot_GetNext()
WEND
END SUB