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 >
Text File  |  1996-07-29  |  96KB  |  2,551 lines

  1. ''/*********************************************************************
  2. ''
  3. ''   Module Name:   main.lss
  4. ''
  5. ''   Module Code:   TOOLKIT
  6. ''
  7. ''   Author:  Marcel Meth
  8. ''
  9. ''   Creation Date:  Aug 31, 1993
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1991
  12. ''
  13. ''
  14. ''   Description: 
  15. ''     Lotus script file for common install
  16. ''     If you are trying to create an automated install, you need to
  17. ''     remove or comment out the Calls that bring up dialogs and
  18. ''     ensure that the symbols have valid values.
  19. ''     See "AUTOMATE" comments throughout the  code.
  20. ''     You should be able to easily automate a simple COMPLETE install.
  21. ''
  22. ''   SUGGESTION: You should be able to tailor an install to you users by
  23. ''               having shell variables setup for them and using the
  24. ''               the lotus script "ENVIRON$" variable.
  25. ''                e.g. suppose the user has the following line in their autoexec.bat
  26. ''                   set NAME=Marcel
  27. ''                then you can pick it up with:
  28. ''                   name$ = ENVIRON$("NAME")
  29. ''
  30. ''   The following diagram illustrates the basic execution path(s)
  31. ''   available in this script.
  32. ''
  33. ''   InitInstall
  34. ''   |
  35. ''   WELCOME DIALOG (SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$)
  36. ''   |
  37. ''   SERVERorDISTRIBUTION DIALOG (SYM_NETWORK$)
  38. ''   |
  39. ''   IF SMARTSUITE THEN   SUITE DIR DIALOG (SYM_BASEDIR$)
  40. ''   |
  41. ''   SELECT based on SYM_NETWORK$
  42. ''      |
  43. ''      gSTANDARD--.....
  44. ''      |        
  45. ''      gSERVER--.....
  46. ''      |        
  47. ''      gNODE--.....
  48. ''      |        
  49. ''      gDISTRIBUTION--.....
  50. ''
  51. ''     The main Drive for all Installs
  52. ''  
  53. ''   Tabs: 3 (In Brief do tabs 4 7)
  54. ''
  55. ''   Additional authors:  Mariana Zgripcea,   Dave Dupre,
  56. ''                        Thangarag Veerapan, Christopher Moy
  57. ''
  58. ''   Change History:
  59. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/main___@.lss  $
  60. '' 
  61. ''    Rev 1.222   19 Jul 1996 14:41:46   jdonohue
  62. '' Moved IncrementSharedDLLCount from main.lss to toolkit.lss
  63. '' 
  64. ''    Rev 1.221   11 Jul 1996 19:12:42   glutz
  65. '' Added SUB Lot_TurnOffNodeOptSections for cases where Suite does
  66. '' not surface the nodenodeoptions callback.
  67. '' 
  68. ''    Rev 1.220   11 Jul 1996 14:48:06   jdonohue
  69. '' Made sub IncrementSharedDLLCount Public
  70. '' 
  71. ''    Rev 1.219   11 Jul 1996 13:12:02   jdonohue
  72. '' Ref SPR:    CDWT37FR6B
  73. '' Do not reset copy list for shared server system files, just set all sections off
  74. '' 
  75. ''    Rev 1.218   05 Jul 1996 10:35:10   dfristro
  76. '' Simplified SetTheBaseSymbol to remove redundancy.  Also added check that
  77. '' the dir is writable when getting dir from registry.
  78. '' 
  79. ''    Rev 1.217   01 Jul 1996 15:37:56   jdonohue
  80. '' Detect whether shared windows system directory is writeable, not windows dir
  81. '' Set WINDIR, WINSYSDIR symbol values for shared windows server error dialog
  82. '' 
  83. ''    Rev 1.216   24 Jun 1996 15:51:46   jdonohue
  84. '' Ref SPR:     RWIS36THFG
  85. '' Added function TurnOffSharedWinsysSections to prevent attempting to copy
  86. '' windows system files during a node install in a shared windows environment
  87. '' 
  88. ''    Rev 1.215   14 Jun 1996 16:42:10   jdonohue
  89. '' Added RebootLater Flag to indicate reboot required but deferred
  90. '' 
  91. ''    Rev 1.214   04 Jun 1996 12:13:46   glutz
  92. '' Changed call for Suite case from Lot_IsAnyNodeOptAvailToNode to
  93. '' Lot_AreAnyNodeOptionsAvail.  SPR#AFOG366LGN
  94. '' 
  95. ''    Rev 1.213   16 May 1996 16:00:54   glutz
  96. '' Reset RemovePriorVersion buffer prior to calling PreCopyConfig.
  97. '' 
  98. ''    Rev 1.212   08 May 1996 16:05:04   schen
  99. '' fix automation install for Smartsuite.
  100. '' 
  101. ''    Rev 1.211   07 May 1996 10:15:00   glutz
  102. '' Rewrote logic for nodenodeoptions dialog.
  103. '' 
  104. ''    Rev 1.210   19 Apr 1996 11:55:00   jdonohue
  105. '' Fixed error evaluating Lot_IsDirWritable return (NOT Script TRUE/FALSE)
  106. '' 
  107. ''    Rev 1.209   10 Apr 1996 17:09:14   jdonohue
  108. '' Ref SPR: AGAO33XJT3
  109. '' Changed DetectSharedWindows logic to silently install server files if allowed
  110. '' 
  111. ''    Rev 1.208   05 Apr 1996 14:23:36   jdonohue
  112. '' Use new function FGetSectionFileList to get shared DLL filenames even if they
  113. '' have been renamed in the .INF file
  114. '' 
  115. ''    Rev 1.207   04 Apr 1996 21:49:00   glutz
  116. '' The nodenodeoptions dialog only pops up if there are options
  117. '' available for the selected products.
  118. '' 
  119. ''    Rev 1.206   04 Apr 1996 16:28:44   jdonohue
  120. '' Moved IncrementSharedDLLCount and Lot_DoSharedDLLs from inst.lss to main.lss
  121. '' since inst PostConfig processing not done for node since install not copied
  122. '' 
  123. ''    Rev 1.205   02 Apr 1996 11:49:36   jdonohue
  124. '' Call product INIT functions for server install before determining language install
  125. '' 
  126. ''    Rev 1.204   01 Apr 1996 08:25:56   jdonohue
  127. '' Moved function OneUp to toolkit.lss, made global
  128. '' Added call to Lot_FixupLanguageDirectories
  129. '' Rearranged code for determination of server language install
  130. '' 
  131. ''    Rev 1.203   20 Mar 1996 12:35:58   jdonohue
  132. '' Added function Lot_SetLotusFontsDir called after ResetWinWinSysSymbols
  133. '' 
  134. ''    Rev 1.202   19 Mar 1996 18:08:30   schen
  135. '' fix for Automate addiconoptions for server and node install.
  136. '' 
  137. ''    Rev 1.201   18 Mar 1996 13:12:26   jdonohue
  138. '' Ref SPR:LSCR32TQHP
  139. '' Use IsNewShell instead of WhatPlatform for determination of LOTUSFONTS directory
  140. '' 
  141. ''    Rev 1.200   06 Mar 1996 12:53:54   jdonohue
  142. '' Ref SPR: JMOY332R5H
  143. '' For low disk space on server install, loop back to server customize dialog if
  144. '' customize chosen
  145. '' 
  146. ''    Rev 1.199   05 Mar 1996 14:55:14   jdonohue
  147. '' Set the default basedir to value in HCU "User Path" for node, check if dir exists
  148. '' Added function OneUp to strip last path component
  149. '' 
  150. ''    Rev 1.198   04 Mar 1996 08:31:56   jdonohue
  151. '' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
  152. '' 
  153. ''    Rev 1.197   29 Feb 1996 13:38:10   jdonohue
  154. '' Move the Lot_DoServerSharedWindows function call AFTER writng features to
  155. '' cinstall.ini
  156. '' 
  157. ''    Rev 1.196   29 Feb 1996 07:57:28   jdonohue
  158. '' Ref SPR: JMOY332R5H
  159. '' Changed main.lss logic to return to the customize dialog when space is
  160. '' insufficient if you chose customize the first time
  161. '' 
  162. ''    Rev 1.195   25 Jan 1996 16:16:58   jdonohue
  163. '' Set Windows directory to point to server for shared windows install, which is
  164. '' assumed to be the parent of the Windows System Directory
  165. '' 
  166. ''    Rev 1.194   24 Jan 1996 11:10:58   jdonohue
  167. '' Ref SPR:    JHOH325K2M
  168. '' Fixed logic error in shared windows detection
  169. '' 
  170. ''    Rev 1.193   23 Jan 1996 16:08:58   cmoy
  171. '' HISHI: Merged FE changes
  172. '' 
  173. ''    Rev 1.192   18 Jan 1996 11:09:42   schen
  174. '' BUG fix for default install addicon    
  175. '' 
  176. ''    Rev 1.191   17 Jan 1996 16:57:32   schen
  177. '' Add Addicon key word in Automate install.
  178. '' 
  179. ''    Rev 1.190   17 Jan 1996 13:50:32   jdonohue
  180. '' Added support for server installation to a shared windows location -- new functions:
  181. '' Lot_DoServerSharedWindows     installs system files on shared server windows location
  182. '' Lot_DetectSharedWindows        detects a shared window system and if writeable sets flag
  183. '' 
  184. ''    Rev 1.189   15 Jan 1996 15:06:34   jdonohue
  185. '' Added function Lot_DetectSharedWindows to detect shared windows server install
  186. '' and present UI for confirmation (NOTE: this is not fully functional as yet!!,
  187. '' placeholder for now)
  188. '' 
  189. ''    Rev 1.188   04 Jan 1996 14:55:20   jdonohue
  190. '' Ref SPR:    KHAN2XZUGU        
  191. '' Don't exit if LOTUSAPP directory doesn't exist -- there is no need to create
  192. '' one if only 32 bit products are installed
  193. '' 
  194. ''    Rev 1.187   29 Dec 1995 08:49:30   jdonohue
  195. '' Added function InitStickyCopyList which preserves user choices on customize
  196. '' 
  197. ''    Rev 1.186   22 Dec 1995 10:13:22   jdonohue
  198. '' Removed all references to SYM_PARENTDIR$ -- is now SYM_BASEDIR$ for all
  199. '' 
  200. ''    Rev 1.185   11 Dec 1995 13:59:46   jdonohue
  201. '' Replaced call to RefreshLanguageSourceDirectories with call to
  202. '' Lot_FixupSourceDirectories
  203. '' 
  204. ''    Rev 1.184   08 Nov 1995 16:57:34   tveerapp
  205. '' Fixes fot SPR#RMOO2xQQDY
  206. '' 
  207. ''    Rev 1.183   25 Oct 1995 08:47:14   glutz
  208. '' SYM_PARENTDIR was not always getting set.
  209. '' 
  210. ''    Rev 1.182   Oct 24 1995 16:55:34   cmoy
  211. '' removed eof char
  212. '' 
  213. ''    Rev 1.181   24 Oct 1995 12:28:28   jdonohue
  214. '' Fixed handling of suite server MLC case
  215. '' 
  216. ''    Rev 1.180   24 Oct 1995 11:59:02   glutz
  217. '' SetTheBaseSymbol sets SYM_BASE16DIR.
  218. '' 
  219. ''    Rev 1.179   23 Oct 1995 16:36:48   tveerapp
  220. '' Fixed spr# LSCR2X6MUC. Call product UI functions for automation.
  221. '' 
  222. ''    Rev 1.178   19 Oct 1995 14:54:52   jdonohue
  223. '' Don't use ".." in resetting SYM_STF_SRCDIR$ for server language install
  224. '' 
  225. ''    Rev 1.177   18 Oct 1995 18:02:36   amontalv
  226. '' Commented out code to check priviledge level.
  227. '' 
  228. ''    Rev 1.176   17 Oct 1995 16:08:28   jdonohue
  229. '' Changed logic for COMPONENTSDIR and LOTUSAPPDIR defaults from cinstall.ini
  230. '' 
  231. ''    Rev 1.175   17 Oct 1995 13:14:54   jdonohue
  232. '' Fixed wrong ini section reference, moved dialog code
  233. '' 
  234. ''    Rev 1.174   13 Oct 1995 14:43:56   jdonohue
  235. '' Added call to Lot_RefreshLocalComponentDir
  236. '' 
  237. ''    Rev 1.173   03 Oct 1995 16:42:18   tveerapp
  238. '' Fixed spr#TVEN2WNS5V. Removed the conditional check for calling into the 
  239. '' product UI functions only during custom install. Lot_CallProductFunctions(UI)
  240. '' will now be called for all types of installs (default,min and custom). This
  241. '' check was removed from case gSTANDARD and case gSERVER. 
  242. '' 
  243. ''    Rev 1.172   27 Sep 1995 17:03:42   jdonohue
  244. '' Set server defaults for LOTUSAPPDIR and COMPONENTSDIR in cinstall.ini found
  245. '' 
  246. ''    Rev 1.171   27 Sep 1995 14:48:02   jdonohue
  247. '' Language install message always based on SYM_REG_PRODUCTNAME$ (prod #1)
  248. '' Set SYM_INSTALLKINDS$ as well as SYM_INSTALLKIND$
  249. '' 
  250. ''    Rev 1.170   26 Sep 1995 16:10:12   jdonohue
  251. '' For suite language install, dialog says "smart Suite" in product field
  252. '' Fixed error on server/language install
  253. '' 
  254. ''    Rev 1.169   25 Sep 1995 15:29:38   jdonohue
  255. '' Call all product functions for InitLanguage
  256. '' 
  257. ''    Rev 1.168   21 Sep 1995 16:22:00   jdonohue
  258. '' Moved resetting of gINSTALLINI$ for output after reading of cinstall.ini file
  259. '' 
  260. ''    Rev 1.167   21 Sep 1995 12:28:34   jdonohue
  261. '' Don't reset gINSTALLINI$ for server language install
  262. '' 
  263. ''    Rev 1.166   13 Sep 1995 14:47:22   tveerapp
  264. '' Fixed the logic in SetTheBase. The registry is read only for a std./node 
  265. '' installs.
  266. '' 
  267. ''    Rev 1.165   13 Sep 1995 14:44:46   jdonohue
  268. '' Moved check for server language install
  269. '' 
  270. ''    Rev 1.164   12 Sep 1995 13:21:38   jdonohue
  271. '' Popup message for server language install
  272. '' 
  273. ''    Rev 1.163   12 Sep 1995 10:53:14   tveerapp
  274. '' Added Lo_SaveFeaturesInInstNodeIni() for a node install. This records
  275. '' uinstall information in cinstnod.ini
  276. '' 
  277. ''    Rev 1.162   08 Sep 1995 16:56:02   tveerapp
  278. '' Fixed spr#KHAN2VUQVY,the change is in SetTheBase for automation.
  279. '' 
  280. ''    Rev 1.161   07 Sep 1995 14:51:54   tveerapp
  281. '' Moved the setting of INSTDIR duringa language server install to Inst.lss
  282. '' to fix spr#WEDS2VNRDZ
  283. '' 
  284. ''    Rev 1.160   02 Sep 1995 15:29:50   amontalv
  285. '' Added check at beginning, right after initialization to determine if we have
  286. '' enough priviledges to install.
  287. '' 
  288. ''    Rev 1.159   31 Aug 1995 11:42:50   jdonohue
  289. '' Added code to check that the parent directory obtained from the registry is
  290. '' a valid drive, and if not, uses default
  291. '' 
  292. ''    Rev 1.158   22 Aug 1995 16:13:46   tveerapp
  293. '' For a standalone and node language installs don not reset the product symbols
  294. '' during automation.
  295. '' 
  296. ''    Rev 1.157   22 Aug 1995 13:52:42   jdonohue
  297. '' SetBaseSymbols now looks in registry under ..\lotus\Components for default
  298. '' 
  299. ''    Rev 1.156   17 Aug 1995 14:53:26   jdonohue
  300. '' Added functions to recognize and handle node install from secondary server
  301. '' language
  302. '' 
  303. ''    Rev 1.155   17 Aug 1995 14:36:28   callanan
  304. '' Set the bitmap display mode for billboards
  305. '' 
  306. ''    Rev 1.154   17 Aug 1995 14:03:22   callanan
  307. '' Changed the default way to handle bitmaps in dialogs
  308. '' 
  309. ''    Rev 1.153   15 Aug 1995 16:40:16   mmeth
  310. '' Part 2 of SPR# RMOO2UPTZD
  311. '' In SUB ConfigureAUTOEXEC I have added a check as to which dialog should be
  312. '' posted.  If there were files marked "SYSTEM", that were busy, then
  313. '' I send a message to the install.exe's window to reboot.
  314. '' This of course is only true, if the user chooses to reebot.
  315. '' 
  316. ''    Rev 1.152   15 Aug 1995 07:53:04   jdonohue
  317. '' For a node install, if main product and install directories differ, sets
  318. '' main directory to parent of install (secondary language install)
  319. '' 
  320. ''    Rev 1.151   14 Aug 1995 11:32:12   jdonohue
  321. '' Added code to handle server language install
  322. '' 
  323. ''    Rev 1.150   14 Aug 1995 10:48:02   callanan
  324. '' Modify SYM_CUSTOM$ to keep track of where we are in install, to decide how we display bitmaps in dialogs
  325. '' 
  326. ''    Rev 1.149   09 Aug 1995 13:48:06   callanan
  327. '' Created global SYM_CUST which keeps track of when we are in the Custom dialog
  328. '' so we can display bitmaps correctly.
  329. '' 
  330. ''    Rev 1.148   04 Aug 1995 14:54:26   amontalv
  331. '' Added quotes around the directory name in the lsirun like written to install.lst
  332. '' 
  333. ''    Rev 1.147   02 Aug 1995 17:45:26   tveerapp
  334. '' Added Lot_AutoSetSrvOptions to gSERVER.
  335. '' 
  336. ''    Rev 1.146   02 Aug 1995 16:28:04   jdonohue
  337. '' Changed calling method for InitLanguage
  338. '' 
  339. ''    Rev 1.145   27 Jul 1995 15:47:00   glutz
  340. '' Took out some print statements.
  341. '' 
  342. ''    Rev 1.144   27 Jul 1995 13:33:28   glutz
  343. '' Added cost of unc files to NumberOfBytesPerBillbd.
  344. '' 
  345. ''    Rev 1.143   27 Jul 1995 10:11:16   amontalv
  346. '' Put a check for the new shell around the CreateProgmanGroup call -- all three
  347. '' of them.  
  348. '' 
  349. ''    Rev 1.142   10 Jul 1995 14:33:06   glutz
  350. '' If CheckForSpace fails return to Select Parent dir dialog.
  351. '' 
  352. ''    Rev 1.141   07 Jul 1995 16:47:32   mzgripce
  353. '' if lotusappdir is deleted before the node install put an error and exit
  354. '' 
  355. ''    Rev 1.140   28 Jun 1995 11:42:28   tveerapp
  356. '' Added check to customize shared components for a custom install only.
  357. '' 
  358. ''    Rev 1.139   22 Jun 1995 15:34:16   tveerapp
  359. '' Added logic to Welcome code.Install ends when the welcome dialogs returns
  360. '' gBACK$.
  361. '' 
  362. ''    Rev 1.138   21 Jun 1995 20:21:16   amontalv
  363. '' Attempt to get User name and Company from 4 different places.  The original, from
  364. '' the Windows registry entry for Windows, the Windows registry location for Windows NT
  365. '' and using GetUserName as last resort.
  366. '' 
  367. ''    Rev 1.137   21 Jun 1995 11:33:36   tveerapp
  368. '' When an STFQUIT error is raised, check for automation by getting the
  369. '' SYM_AUTOMATIONINST value. Script does not store the automation$ variable's
  370. '' value.
  371. '' 
  372. ''    Rev 1.136   20 Jun 1995 13:48:24   tveerapp
  373. '' Changed the call from Lot_AutoGetProgramGroup to Lot_GetProgramGroupOrFolder
  374. '' 
  375. ''    Rev 1.135   19 Jun 1995 17:10:30   tveerapp
  376. '' During automation allow the defaultreg function to be called for the 
  377. '' 1st product(similar to the regular install).
  378. '' Should fix spr#KHAN2T2PCQ.
  379. '' 
  380. ''    Rev 1.134   12 Jun 1995 12:46:12   amontalv
  381. '' Added code to Server and node to display folder instead of program group if
  382. '' on Win95.  The code doesn't completely work yet as I'm waiting for some UI
  383. '' issues to be worked out
  384. '' 
  385. ''    Rev 1.133   08 Jun 1995 17:08:58   tveerapp
  386. '' Fixed spr# CCOL2NULJ2. Moved the AutoGetProductDestDir function after
  387. '' smartsuite appselection for a standard and node install.
  388. '' 
  389. ''    Rev 1.132   08 Jun 1995 12:33:02   tveerapp
  390. '' Modified ConfigureAUTOEXEC. The autoexec modification code has been remmed
  391. '' out. This sub routine now brings up only the success dilaog.
  392. '' This should fix spr#KHAN2SKKQZ.
  393. '' 
  394. ''    Rev 1.131   07 Jun 1995 16:30:22   amontalv
  395. '' Changed the Win95 start folder so that it initializes
  396. '' earlier in the program.  This should make automation
  397. '' easier to implement for it.  There are still a couple of
  398. '' bugs that I need to work out, but I feel that I should
  399. '' check what I have now.
  400. '' 
  401. ''    Rev 1.130   06 Jun 1995 15:53:30   amontalv
  402. '' We are experiencing problems with LotusScript when we fill buffers with
  403. '' nulls and then pass them to C routines.  For the time being, it is suggested
  404. '' that we fill our buffers with spaces.  To this end (and to make it
  405. '' easier to change back later) I have created a small LotusScript routine
  406. '' named CreateBuffer.  You use it any time you ordinarily would use
  407. '' STRING$(num, 0).  CreateBuffer() just needs the num, it decides what to
  408. '' fill the buffer with (sorry about the grammer).  Right now it fill the
  409. '' buffer with spaces.  Later we will change it back to nulls.  Also look
  410. '' at the routine NullTrim().  It will get rid of final nulls and spaces.
  411. '' You can use this when getting a buffer that has been changed or filled
  412. '' in a external C routine.
  413. '' 
  414. ''    Rev 1.129   05 Jun 1995 18:11:54   tveerapp
  415. '' Changed AutoSetPArentCompDirs to AutoSetParentDir
  416. '' 
  417. ''    Rev 1.128   05 Jun 1995 16:37:12   amontalv
  418. '' Made changes for migrating to LotusScript version 3.0.37.
  419. '' 
  420. ''    Rev 1.127   01 Jun 1995 11:11:34   amontalv
  421. '' Added API function CreateLink to create shortcuts.  Also added functions
  422. '' to save and get the link path to support the CreateLink.  I also changed
  423. '' the startup program folder code to use the default dialog proc and changed
  424. '' the default dialog proc to process directory trees.
  425. '' 
  426. ''    Rev 1.126   30 May 1995 15:42:34   amontalv
  427. '' Made a new function PopupWithFunction.  PopupModalDlg now calls this.  Needed to
  428. '' do this to call dialog with my own dialog function.
  429. '' 
  430. ''    Rev 1.125   30 May 1995 09:25:28   amontalv
  431. '' Added back my changes.  Had not made changes to setupapi.lss to declare
  432. '' functions.
  433. '' 
  434. ''    Rev 1.124   26 May 1995 14:36:44   cmoy
  435. '' rolled back Andy's changes to revision 1.122
  436. '' 
  437. ''    Rev 1.122   22 May 1995 23:32:20   amontalv
  438. '' Added browse for Win 95 program folder.
  439. '' 
  440. ''    Rev 1.121   22 May 1995 09:28:22   mzgripce
  441. '' remove the function IsLotusappPromptNeeded() and the calls to it and remove
  442. '' the tags NODEPROMPTLOTUSAPP: STDSUITPROMPTLOTUSAPP: AND STDPROMPTLOTUSAPP
  443. '' FIXING THE GOTOs TO THEM 
  444. '' 
  445. ''    Rev 1.120   18 May 1995 12:17:36   tveerapp
  446. '' Added call AutoSetParentCompDirs inside SetTheBaseSymbol for a single
  447. '' product automated install.
  448. '' 
  449. ''    Rev 1.119   18 May 1995 12:07:26   mzgripce
  450. '' set default for baseDir to lotus and remove initlang... and use language 
  451. '' 
  452. ''    Rev 1.118   18 May 1995 09:54:48   mzgripce
  453. '' display userUI in server install only in customize case.
  454. '' 
  455. ''    Rev 1.117   17 May 1995 17:56:26   mzgripce
  456. '' display user UI only in customize for standalone install
  457. '' 
  458. ''    Rev 1.116   17 May 1995 08:54:12   jdonohue
  459. '' Added call to InitLanguage
  460. '' 
  461. ''    Rev 1.115   16 May 1995 13:45:30   mzgripce
  462. '' initialize SYM_PARENDIR and call PARENTDIRCB 
  463. '' 
  464. ''    Rev 1.114   16 May 1995 12:56:32   tveerapp
  465. '' Resourced the log file strings.
  466. '' 
  467. ''    Rev 1.113   16 May 1995 12:39:00   tveerapp
  468. '' Added  End of log file .
  469. '' 
  470. ''    Rev 1.112   15 May 1995 17:34:26   tveerapp
  471. '' Fixed gSERVER. For an automated server install do not process the individual
  472. '' product directories.
  473. '' 
  474. ''    Rev 1.111   15 May 1995 11:18:12   jdonohue
  475. '' Moved SetUpApi call to toolkit
  476. '' 
  477. ''    Rev 1.110   11 May 1995 17:26:52   tveerapp
  478. '' Commented out the gLOgFile$ setting in InitInstall.
  479. '' 
  480. ''    Rev 1.109   11 May 1995 14:51:50   tveerapp
  481. '' Added Status logging. Modified InitInstall.
  482. '' 
  483. ''    Rev 1.108   03 May 1995 18:12:24   mzgripce
  484. '' change cursor% to cursor& in one instance 
  485. '' 
  486. ''    Rev 1.107   03 May 1995 12:00:38   tveerapp
  487. '' Fixed cfbuild-c2build merge.
  488. '' 
  489. ''    Rev 1.106   02 May 1995 12:52:54   cmoy
  490. '' Merged c2 into cf build
  491. '' 
  492. ''    Rev 1.104   28 Apr 1995 15:57:44   mheerman
  493. '' Commented out the select program manager group dialog.
  494. ''    Rev 1.103   26 Apr 1995 09:54:24   tveerapp
  495. '' Added Customization during automation for a server install.
  496. '' 
  497. ''    Rev 1.102   25 Apr 1995 11:52:52   tveerapp
  498. '' Added Automation Customization to case gSTANDARD.
  499. '' 
  500. ''    Rev 1.103   10 Apr 1995 17:52:18   amontalv
  501. '' Changed code that removed null termination and trimmed spaces.  There
  502. '' is no longer any null termination to Script text gotten from C calls
  503. ''    Rev 1.101   06 Apr 1995 14:51:26   cmoy
  504. '' No change.
  505. '' 
  506. ''    Rev 1.102   07 Apr 1995 15:04:24   mzgripce
  507. '' 
  508. ''    Rev 1.100   05 Apr 1995 19:53:30   amontalv
  509. '' Porting to 32 bit.
  510. '' 
  511. ''    Rev 1.99   16 Mar 1995 09:58:14   mhishinu
  512. '' No change.
  513. '' 
  514. ''    Rev 1.98   22 Feb 1995 02:29:06   cmoy
  515. '' No change.
  516. '' 
  517. ''    Rev 1.97   02 Feb 1995 14:29:34   cmoy
  518. '' 
  519. '' Thangaraj fixed Pipeline Problem
  520. '' 
  521. ''    Rev 1.96   01 Feb 1995 17:51:18   tveerapp
  522. '' 
  523. '' Added the call to process Node Options for suite in NODENODEOPTIONS (for suite).
  524. '' 
  525. ''    Rev 1.95   19 Jan 1995 12:30:20   tveerapp
  526. '' 
  527. '' Fixed the lotusapp/node install problem when the product does not support
  528. '' lotusapp processing.
  529. '' 
  530. ''    Rev 1.94   09 Jan 1995 10:12:00   tveerapp
  531. '' 
  532. '' Fixed STFQUIT problem.Added UIPopAll before ending execution.
  533. '' 
  534. ''    Rev 1.93   29 Dec 1994 11:58:32   tveerapp
  535. '' 
  536. '' Commented out the call to reboot during automation.
  537. '' 
  538. ''    Rev 1.92   29 Dec 1994 11:11:06   tveerapp
  539. '' 
  540. '' Added the bitmap and new dialog for automation.
  541. '' 
  542. ''    Rev 1.91   23 Dec 1994 14:14:50   jplump
  543. '' 
  544. '' Added call to Lot_AutoGetSetLicenserInfo
  545. '' Removed print statement
  546. '' 
  547. ''    Rev 1.90   22 Dec 1994 15:07:00   tveerapp
  548. '' 
  549. '' Clean up print statements
  550. '' 
  551. ''    Rev 1.89   21 Dec 1994 17:10:22   tveerapp
  552. '' 
  553. '' Added node options processing for an automated node install in case gNODE.
  554. '' 
  555. ''    Rev 1.88   21 Dec 1994 15:01:28   tveerapp
  556. '' 
  557. '' Fixed the return value type on line 1423
  558. '' 
  559. ''    Rev 1.87   21 Dec 1994 13:55:36   tveerapp
  560. '' 
  561. '' Added Suite App selection processing to STANDARD,SERVER and NODE.
  562. '' 
  563. ''    Rev 1.86   21 Dec 1994 12:15:54   tveerapp
  564. '' 
  565. '' Modified SetTheBaseSymbol to add the check for a suite install.
  566. '' 
  567. ''    Rev 1.85   21 Dec 1994 12:03:50   tveerapp
  568. '' 
  569. '' Added automation code to SetTheBaseSymbol.Uses response file base during automation.
  570. '' 
  571. ''    Rev 1.84   12 Dec 1994 13:22:36   tveerapp
  572. '' 
  573. '' Added ResetWinWinsys call to case gSERVER$ for a server install
  574. '' to determine the win winsysdir symbols correctly.
  575. '' 
  576. ''    Rev 1.83   12 Dec 1994 13:20:00   tveerapp
  577. '' Added %s to lsirun cmd line modification.This is to account for
  578. '' the new automation command line arguments.
  579. '' 
  580. ''    Rev 1.82   12 Dec 1994 11:49:10   mzgripce
  581. '' 
  582. '' Use the SQL and Paradox Auto symbols
  583. '' 
  584. ''    Rev 1.81   08 Dec 1994 20:14:24   jplump
  585. '' 
  586. '' Added call to Lot_AutoWriteOutDebugFile
  587. '' 
  588. ''    Rev 1.80   06 Dec 1994 17:17:28   tveerapp
  589. '' Added automation processing to case gDISTRIBUTION$.
  590. '' Added response file processing from the command line (shell).
  591. '' 
  592. ''    Rev 1.79   06 Dec 1994 12:16:18   tveerapp
  593. '' Added Automation code to cases gSERVER$ and gNODE$.
  594. '' 
  595. ''    Rev 1.78   06 Dec 1994 10:21:38   tveerapp
  596. '' Added Lot_AutoConfigure and AutoInstallReboot calls.
  597. '' 
  598. ''    Rev 1.77   05 Dec 1994 16:51:44   tveerapp
  599. '' Added call to Lot_AutoGetUserInfo.
  600. '' 
  601. ''    Rev 1.76   02 Dec 1994 16:52:50   cmoy
  602. '' merged automation files
  603. '' 
  604. ''    Rev 1.75   18 Nov 1994 16:13:02   amontalv
  605. '' Japan DBCS: Added some resources to
  606. '' 
  607. ''    Rev 1.8   01 Dec 1994 17:23:14   tveerapp
  608. '' Added AutoCheckForSpace function.
  609. '' 
  610. ''    Rev 1.7   29 Nov 1994 12:49:12   tveerapp
  611. '' 
  612. '' Changed the return value of Lot_AutoGetSizeOfInstall to be an integer.
  613. '' 
  614. ''    Rev 1.6   29 Nov 1994 11:43:52   jplump
  615. '' 
  616. '' Added automation$, changed return type for Lot_AutoGetProgramGroup
  617. '' 
  618. ''    Rev 1.4   28 Nov 1994 15:52:46   tveerapp
  619. '' Added Lot_AutoGetSizeofInstall and other automation code for the standalone
  620. '' install.D
  621. '' 
  622. ''    Rev 1.3   23 Nov 1994 17:03:32   tveerapp
  623. '' 
  624. '' Added automation logic to the Init Symbol processor.
  625. '' 
  626. ''    Rev 1.2   23 Nov 1994 16:22:56   tveerapp
  627. '' 
  628. '' Added Lot_AutoGetInstallType to InitInstall. Added code to bring up
  629. '' a modeless dialog during automation.
  630. '' 
  631. ''    Rev 1.1   23 Nov 1994 14:50:40   tveerapp
  632. '' Added Automation code to InitInstall and called the auto init function.
  633. '' Also identified some of the changes to be made.
  634. ''==========
  635. '' 
  636. ''    Rev 1.74   02 Aug 1994 16:34:40   mzgripce
  637. '' No change.
  638. '' 
  639. ''    Rev 1.73   01 Aug 1994 10:27:00   cmoy
  640. '' No change.
  641. '' 
  642. ''    Rev 1.72   29 Jun 1994 10:54:18   thangv
  643. '' Moved the SYM_NETLOTUSAPP setting to inside the if statement (798,807).
  644. '' This was previously outside. The code is in NETLOTUSAPP processing. This
  645. '' should fix spr#31726.
  646. '' 
  647. ''    Rev 1.71   24 Jun 1994 11:10:38   thangv
  648. '' Moved the call to Initialize the product copylists during a node install
  649. '' to after the NODESSSAPPSEL dialog (smart suite dialog). The new lines are
  650. '' 729-733. This should fix the suite bug for node install when the user
  651. '' deselects apps but still gets them installed. The call was in the right pla
  652. '' for the std and server.
  653. '' 
  654. ''    Rev 1.70   03 Jun 1994 12:18:32   cmoy
  655. '' 
  656. '' substituted CreateProgmanGroup for ProgmanManageGroup
  657. '' 
  658. ''    Rev 1.69   02 Jun 1994 12:30:48   thangv
  659. '' Added code to process sys.admin.mapping for node install.
  660. '' 
  661. ''    Rev 1.68   31 May 1994 13:55:38   thangv
  662. '' Added restore cursor before CheckForSpace(in case node)and Showwait
  663. '' cursor after Checkfor space.
  664. '' 
  665. ''    Rev 1.67   31 May 1994 13:40:44   mmeth
  666. '' Added Function Calls for Suite to handle previous versions
  667. '' 
  668. ''    Rev 1.66   26 May 1994 18:40:06   cmoy
  669. '' 
  670. '' Replaced CreateProgmanGroup and ShowProgmanGroup with ProgmanManageGroup
  671. '' so that accented characters may be used.
  672. '' 
  673. ''    Rev 1.65   26 May 1994 17:35:12   thangv
  674. '' 
  675. '' Fixed the back link from SRVUI to SRVNODEOPTIONS (it was SRVDATALENS before
  676. '' 
  677. ''    Rev 1.64   25 May 1994 16:12:38   thangv
  678. '' Moved CheckForSpace after share is processed for node. This fixes
  679. '' the node install running out of space bug.
  680. '' 
  681. ''    Rev 1.63   17 May 1994 10:59:20   thangv
  682. '' Moved stdlotusappprompt to before stdcustomize.
  683. '' 
  684. ''    Rev 1.62   13 May 1994 12:13:32   thangv
  685. '' Changed the 2nd arg to ShowProgmanGroup to 1.(it is not minimized).
  686. '' 
  687. ''    Rev 1.61   11 May 1994 12:35:06   thangv
  688. '' Moved Showwaitcursor for the node further up before copying files.
  689. '' 
  690. ''    Rev 1.60   11 May 1994 11:11:06   thangv
  691. '' Bring up DB_PLESEWAIT twice (for std, server) and bring it up for node.
  692. '' Re-arranged Lot_CallPostCopyConifg(std,server,node).
  693. '' Added plese wait foe node install.
  694. '' 
  695. ''    Rev 1.59   11 May 1994 10:31:40   mzgripce
  696. '' sprs 29300 and 29280 (DoDatalens) 
  697. '' 
  698. ''    Rev 1.58   06 May 1994 14:15:20   mzgripce
  699. '' send the prognam name to the addicons
  700. '' 
  701. ''    Rev 1.57   05 May 1994 15:51:02   thangv
  702. '' 
  703. '' Fixed the prev. link from the SSAPPSEL.
  704. '' 
  705. ''    Rev 1.56   03 May 1994 11:09:06   mmeth
  706. '' Added back Confirm Dialog
  707. '' 
  708. ''    Rev 1.55   02 May 1994 18:56:30   mzgripce
  709. '' 
  710. '' put the addIconsXXX as its own call
  711. '' 
  712. ''    Rev 1.54   02 May 1994 14:52:42   cmoy
  713. '' 
  714. '' modified SUB AUTOEXECCONFIG to deal with different versions of windows.
  715. '' 
  716. ''    Rev 1.52   02 May 1994 13:58:22   thangv
  717. '' Added ResetCopyList calls.
  718. '' 
  719. ''    Rev 1.51   28 Apr 1994 18:33:42   cmoy
  720. '' Changed Lot_CallProductFunctions(billboards) to Lot_CallOneProductFunction
  721. '' (billboards)
  722. '' modified NumberOfBytesinBillboard to only check first product.
  723. '' 
  724. ''    Rev 1.50   26 Apr 1994 11:16:38   mzgripce
  725. '' 
  726. '' enable previous from consolidation in node
  727. '' 
  728. ''    Rev 1.49   25 Apr 1994 17:32:36   cmoy
  729. '' 
  730. '' Moved LAUNCHNAG so that it comes up after DB_DISKCOPYMETHOD dialog.
  731. '' 
  732. ''    Rev 1.48   25 Apr 1994 15:42:16   cmoy
  733. '' reset the base distribution directory to lotusdis\
  734. '' in SUB SetTheBaseSymbol
  735. '' main calls SetTheBaseSymbol after the DB_DISKCOPYMETHOD dialog
  736. '' instead of before it now.
  737. '' 
  738. ''    Rev 1.47   22 Apr 1994 14:34:14   mzgripce
  739. '' 
  740. '' set direction to back if consolidation returns back
  741. '' 
  742. ''    Rev 1.46   20 Apr 1994 16:22:06   mzgripce
  743. '' initialize SYM_DOSMAXPATHDIFF$
  744. '' 
  745. ''    Rev 1.45   20 Apr 1994 12:44:26   thangv
  746. '' Added the check AND app_flag<> FALSE to SRVNODEOPTIONS.
  747. '' When everything is unselected.
  748. '' 
  749. ''    Rev 1.44   19 Apr 1994 17:02:24   thangv
  750. '' Added code to fix the bug if all the products are
  751. '' deselected in ss dialogs in the case of standalone and
  752. '' server install.
  753. '' 
  754. ''    Rev 1.43   15 Apr 1994 11:58:26   mmeth
  755. '' NODENODEOPTIONSCB was not being registered for Personal directory dialog
  756. '' 
  757. ''    Rev 1.42   13 Apr 1994 17:06:02   mzgripce
  758. '' do not set sym_netlotusapp$ in main
  759. '' 
  760. ''    Rev 1.41   13 Apr 1994 09:31:12   cmoy
  761. '' 
  762. '' Added SUB ConfigureAUTOEXEC and implemented it
  763. '' 
  764. ''    Rev 1.40   11 Apr 1994 17:49:00   thangv
  765. '' Removed Reg_GetProdSupportforDist(1) <> TRUE check from SERVER_DISTRIBUTION
  766. '' Dialog case. (check only for Srv support.)
  767. '' which is correct.
  768. '' 
  769. ''    Rev 1.39   11 Apr 1994 12:32:16   mmeth
  770. '' 
  771. '' Cleaned up and made it more readable
  772. '' 
  773. ''    Rev 1.38   08 Apr 1994 13:53:04   thangv
  774. '' Fixed the problem with prev. button for Distribution install.
  775. '' Also added the lines in case gDISTRIBUTION that was nuked.
  776. '' 
  777. ''    Rev 1.37   07 Apr 1994 16:40:12   mmeth
  778. '' 
  779. '' Cleaned up main.lss
  780. '' 
  781. ''    Rev 1.36   06 Apr 1994 16:30:12   mmeth
  782. '' Added a list gEXTRA.  This list gets initialized with an etra 200000
  783. '' bytes for the Windows drive.  This can be modified by the product groups if
  784. '' necessary. 
  785. '' 
  786. ''*********************************************************************/
  787. OPTION DECLARE
  788.  
  789. USE "CALLBACK"
  790. USE "LANGUAGE"
  791.  
  792. DECLARE PUBLIC SUB Lot_SetLotusFontsDir
  793. DECLARE FUNCTION DoDatalens(BYVAL direction$) AS STRING
  794. DECLARE FUNCTION NumberOfBytesPerBillbd() AS LONG
  795.  
  796. DECLARE SUB      SetTheBaseSymbol()
  797. DECLARE SUB      InitInstall()
  798. DECLARE SUB      ConfigureAUTOEXEC()
  799. DECLARE SUB InitStickyCopyList(network$, direction$)
  800. DECLARE SUB Lot_DoServerSharedWindows()
  801. DECLARE SUB Lot_DetectSharedWindows() 
  802. DECLARE SUB Lot_DoSharedDLLs()
  803. DECLARE SUB TurnOffSharedWinsysSections()
  804.  
  805. '*************************************************************************
  806. '** SUB INITIALIZE
  807. '**
  808. '** Purpose: Initial entry point into Common Install
  809. '**            
  810. '** Author:    
  811. '** Arguments: None
  812. '** Returns:   NONE
  813. '*************************************************************************
  814.  
  815. DIM FirstTime$
  816.  
  817. SUB INITIALIZE
  818.    DIM network$, notused%, notused1$, nProducts%,prodIndex%, nDirs%, app_flag%, rc$,i%, cwd$
  819.    DIM inifile$, inf$, curcursor&, grouptitle$, dirSym$, lSize&, destdir$
  820.    DIM direction$, nbytes&, lic$, SameFlag$, netLotusapp$, installini$
  821.    DIM newnetpath$, automation$,longnotused&
  822.    DIM win95proggroup$,yesno&
  823.    DIM lang$, s$, listlen%, dlgID%
  824.  
  825.    '** Set up the error handlers
  826.    ON Error STFQUIT    GOTO MAINERROR
  827.    ON Error STFERR     GOTO STFERR_
  828.    ON Error STFTOGGLE  GOTO STFTOGGLEERR
  829.  
  830.    InitInstall
  831.  
  832. '   IF NOT IsNewShell() THEN
  833. '        IF Lot_CheckPriviledges(PRIVILEDGE_CHECKFLAG_REGSYSTEMPATH) <> ERROR_SUCCESS THEN
  834. '           ErrorMsg SID_ERR_SECURITY, "" 
  835. '           ERROR STFQUIT
  836. '        END IF
  837. '    END IF
  838.  
  839.    nProducts% = Reg_GetNumberOfProducts()
  840.  
  841.  
  842.    '****************************************
  843.    '******* START THE REAL WORK HERE *******
  844.    '****************************************
  845.  
  846. '***********AUTOMATION code*************************************************
  847.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  848.       SetListItem "IDC_BMP", 1, STR$(IDD_TKT_PROD_BMP)
  849.       notused1$ = PopupModelessDlg(DB_AUTOINSTWAIT, DB_AUTOINSTWAIT)
  850.    END IF
  851.    '** Allow the only the 1st product to change the registration default
  852.    '** product will set symbols SYM_NAME$, SYM_COMPANY$
  853.       notused1$  = Lot_CallOneProductFunction (1, "DefaultUserReg", gNEXT, TRUE, "")
  854.       notused%   = Lot_ReadSerialNumber()
  855.  
  856.  
  857. WELCOME:             '** WELCOME THE USER
  858.    direction$ = gNEXT
  859.    '** Call each product's "ProductReg function". Products register themselves with toolkit.
  860.    notused1$  = Lot_CallProductFunctions ("ProductReg", gNEXT, TRUE, gALLPRODUCTS$, "")
  861.  
  862.    '** AUTOMATE: comment out the "PopupModalDlg" stmts and
  863.    '**           and set SYM_NAME$, SYM_COMPANY$, SYM_NETWORK$.
  864.    IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
  865.      IF GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN
  866.    notused% = RegisterCallback("CALLBACK", "WELCOMECB")
  867.          rc$ = PopupModalDlg(DB_WELCOME_NODE, DB_WELCOME_NODE)
  868.      ELSE
  869.         notused% = RegisterCallback("CALLBACK", "WELCOMECB")
  870.         IF Reg_GetProdSupportForSrv(1)  OR _
  871.      Reg_GetProdSupportForDist(1) <> FALSE THEN
  872.      rc$ = PopupModalDlg(DB_WELCOME, DB_WELCOME)
  873.         ELSE
  874.      rc$ = PopupModalDlg(DB_WELCOMENOSRV, DB_WELCOMENOSRV)
  875.         END IF
  876.       END IF
  877.       '** if the welcome dialog returns gBACK end Install.
  878.       IF rc$ = gBACK$ THEN END
  879.       direction$ = Lot_ConfirmNamesDlg ()
  880.       IF direction$ = gBACK$ THEN  GOTO WELCOME
  881.    ELSE
  882.    notused% = Lot_AutoGetUserInfo()
  883.    END IF
  884.  
  885. SERVER_DISTRIBUTION: '** ASK IF THIS IS A SERVER OR DIST. INSTALL
  886.    network$ = GetSymbolValue(SYM_NETWORK$)
  887.    IF network$ = gSERVER$ OR network$ = gDISTRIBUTION$ THEN
  888.       IF Reg_GetProdSupportforSrv(1) <> FALSE THEN
  889.  
  890.     notused%   = RegisterCallback("CALLBACK","DISKCOPYMETHODCB")
  891.     '** AUTOMATE: comment out next line and explicitly set SYM_NETWORK
  892.     '**           SetSymbolValue SYM_NETWORK, gSERVER
  893.     '**    or
  894.     '**           SetSymbolValue SYM_NETWORK, gDISTRIBUTION
  895.     direction$ = PopupModalDlg (DB_DISKCOPYMETHOD, DB_DISKCOPYMETHOD )
  896.       END IF
  897.    END IF
  898.    IF direction$ = gBACK$ GOTO WELCOME
  899.  
  900. '***********AUTOMATION code*************************************************
  901.    SetTheBaseSymbol
  902.  
  903. LAUNCHNAG:
  904.    network$ = GetSymbolValue(SYM_NETWORK$)
  905.    IF network$ = gSERVER$ THEN
  906.       notused% = RegisterCallback("CALLBACK","LAUNCHNAGCB")
  907.       '** AUTOMATE: comment out next line and never get asked about launching NAG
  908.       direction$ = PopupModalDlg (DB_LAUNCHNAG, DB_LAUNCHNAG )
  909.    END IF
  910.    IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
  911.    
  912. '** Find out if this is a shared windows environment and confirm that this is
  913. '** what the user wants (server only)
  914.    IF network$ = gSERVER$ THEN Lot_DetectSharedWindows
  915.  
  916. '** Find out if we're a language install -- handle UI differently if so    
  917.       notused1$ = Lot_CallProductFunctions("InitLanguage", gNEXT, TRUE, gALLPRODUCTS$, "")
  918.       
  919. '***********AUTOMATION code*************************************************
  920. SMARTSUITE_BASEDIR: '** If this is SmartSuite: Ask the user for the BASEDIR
  921.    network$ = GetSymbolValue(SYM_NETWORK$)
  922.    'Don't allow user to change parent directory for a language install
  923.    IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  924.    IF network$ <> gDISTRIBUTION$ AND GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  925.       notused% = RegisterCallback("SUIT", "SUITEDIRCB")
  926.       '** AUTOMATE: comment out next line and explicitly set SYM_BASEDIR$
  927.       '**   SetSymbolValue SYM_BASEDIR$, "C:\lotsuite"     
  928.       direction$ = PopupModalDlg(DB_SUITEDIR, DB_SUITEDIR)
  929.    ELSEIF network$ <> gDISTRIBUTION$ THEN
  930.       notused% = RegisterCallback("CALLBACK", "PARENTDIRCB")
  931.       direction$ = PopupModalDlg(DB_PARENTDIR, DB_PARENTDIR)
  932.    END IF
  933.    END IF
  934.  
  935. '***********AUTOMATION code schen 5/9/97 *************************************
  936.    DIM autobase$, defDir$
  937.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
  938.        GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  939.        autobase$ = Lot_AutoGetBaseDirSymbol()
  940.        IF autobase$ <> "" THEN
  941.          defDir$ = autobase$
  942.        ELSE  
  943.          'ErrorMsg "Base Directory entry Invalid"
  944.          ErrorMsg SID_ERR_SETSYMBOLVALUE, LdString(SID_ERR_AUTO_BASEDIR) + "SUIT" 
  945.          ERROR STFQUIT
  946.        END IF
  947.    SetSymbolValue SYM_BASEDIR$, defDir$
  948.    END IF   
  949.  
  950.    IF direction$ = gBACK$ THEN GOTO LAUNCHNAG
  951.    '**************************
  952.    '** Some more intialization
  953.    '**************************
  954.  
  955.    '** Default all products to complete install
  956.    SetSymbolValue SYM_SIZEOFINSTALL$, gCOMPLETE$
  957.    FOR i% = 1 to nProducts%
  958.       Reg_SetSelectedInstallType i%, gCOMPLETE$
  959.    NEXT
  960.  
  961.    automation$ = GetSymbolValue(SYM_AUTOMATIONINST$)
  962.    network$ = GetSymbolValue(SYM_NETWORK$)
  963.    cwd$     = GetSymbolValue(SYM_STF_CWDDIR$)
  964.    inifile$ = MakePath(cwd$,gINSTALLINI$)
  965.  
  966.    SELECT CASE network$
  967.  
  968.    '**********************************************************************
  969.    '*********************** Standard Install *****************************
  970.    '**********************************************************************
  971.  
  972.    CASE gSTANDARD$
  973.  
  974.       '** Read the INF file and initialize the share engine
  975.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "STDINFFILE")
  976.       ReadInfFile inf$
  977.       notused% = Lot_CallSharedTool("InitSHARE()")
  978.  
  979.       '** Allow the products to do their initialization
  980.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  981.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  982.  
  983.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  984.       direction$  = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
  985.     IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  986.       END IF
  987.  
  988.  
  989. '***********AUTOMATION code*************************************************
  990. STDSSAPPSEL:
  991.         FirstTime$ = ""
  992.       '** In this dialog, the user can select/deselect applications to be
  993.       '** installed, and also specify directories for individual apps
  994.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  995.          IF automation$ <> gTRUE$ THEN
  996.          notused% = RegisterCallback("SUIT", "APPSELCB")
  997.          '** AUTOMATE: comment out to take defaults, too tricky
  998.          '** to automatically pick anything different.
  999.          direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
  1000.          ELSE
  1001.          notused% = Lot_AutoSuiteAppSelect()
  1002.          END IF   
  1003.       END IF
  1004.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1005.    
  1006.       '***********AUTOMATION code: Set The destination Dir symbols*********
  1007.       IF automation$ = gTRUE$ AND _
  1008.      GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  1009.       notused% = Lot_AutoGetProductDestDirSymbol ()
  1010.       END IF
  1011.  
  1012.       '** Consolidate the lotusapp if needed
  1013.       IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
  1014.     direction$ = gBACK$
  1015.       END IF
  1016.       IF direction$ = gBACK$  GOTO STDSSAPPSEL
  1017.  
  1018. '***********AUTOMATION code*************************************************
  1019. STDSIZEOFINSTALL:   '** Ask the user kind of install: (COMPLETE, CUSTOM, LAPTOP)   
  1020.      '** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
  1021.      '**   Result will be a default install of "COMPLETE", anything else is too tricky.
  1022.      '**   For a non-suite install you can set the destination directory:
  1023.      '**       dirSym$ = Reg_GetDirSymbolList(1)
  1024.      '**       dirSym$ = GetListItem(dirSym$, 1)
  1025.      '**       SetSymbolValue dirSym$, "c:\foo\"
  1026.      '**       Lot_RefreshDestination(dirSym$)
  1027.       nProducts% = Reg_GetNumberOfProducts() :  app_flag% = FALSE
  1028.       FOR prodIndex% = 1 to nProducts%
  1029.      If Reg_GetUIInOrOut (prodIndex%) <> FALSE  AND _
  1030.         Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
  1031.         app_flag% = TRUE
  1032.      End If
  1033.       NEXT
  1034.       If app_flag% <> FALSE  Then
  1035.    If automation$ = gTRUE$ Then
  1036.      notused% = Lot_AutoGetSizeOfInstall()
  1037.    Else
  1038.      direction$ = Lot_GetSizeOfInstall()
  1039.      IF direction$ = gBACK$ GOTO STDSSAPPSEL
  1040.    End If
  1041.       End If
  1042.  
  1043. STDINITIALIZECOPYLST:  
  1044.         '** Make the products initialize their own copy list
  1045.         InitStickyCopyList network$, direction$
  1046.       IF direction$ = gBACK$ GOTO STDSIZEOFINSTALL
  1047.  
  1048. '*****AUTOMATION code *****************************************************
  1049.       IF automation$ = gTRUE$ AND _
  1050.     GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1051.    notused% = Lot_AutoCustomizeShare()
  1052.       END IF
  1053.  
  1054.       Lot_SetCurrentProduct(1) 
  1055.  
  1056. STDCUSTOM:
  1057.  
  1058.      IF automation$ <> gTRUE$ Then
  1059.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1060.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1061.        notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
  1062.        direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
  1063.                DBM_CUSTOMIZEBASESINGLEPROD)
  1064.     ELSE
  1065.         If app_flag% <> FALSE  Then
  1066.        notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
  1067.        direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
  1068.                   DBSUIT_CUSTOMIZEAPPS)
  1069.         End If
  1070.     END IF
  1071.       END IF
  1072.      ELSE
  1073.    '*** Customize Suite before customizing individual products ***
  1074.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1075.         notused% = Lot_AutoInstallSuiteCustomize()
  1076.    END IF
  1077.    notused% = Lot_AutoInstallCustomize()
  1078.      END IF
  1079.  
  1080.      IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
  1081.  
  1082. STDDATALENS:   '** Process the Datalens modules
  1083.       direction$ = DoDatalens(direction$) 
  1084.       IF direction$ = gBACK$ GOTO STDINITIALIZECOPYLST
  1085.  
  1086. STDUSERUI:  '** Allow product to bring up any last minute UI
  1087.      '** AUTOMATE: comment out next line and  avoid product specific UI.
  1088.       direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1089.       IF direction$ = gBACK$ GOTO STDDATALENS
  1090.  
  1091. '***********AUTOMATION code*************************************************
  1092. IF  automation$ <> gTRUE$ THEN
  1093. STDPROGMAN: '** Put Progman Group UI
  1094.    notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1095.       '** AUTOMATE: comment out next line set the progman group name yourself
  1096.       '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1097.    IF Reg_GetRootFolder() = "" THEN
  1098.       direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1099.    ELSE  
  1100.       direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1101.    END IF
  1102.    IF direction$ = gBACK$ GOTO STDUSERUI
  1103. ELSE
  1104.    notused% = Lot_AutoGetProgramGroupOrFolder()
  1105. END IF
  1106.       
  1107.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1108.       
  1109.       '** Start the file copy
  1110.  
  1111.       notused% = Lot_AutoWriteOutDebugFile()
  1112.  
  1113.       direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
  1114.       IF direction$ = gBACK$ GOTO STDPROGMAN
  1115.  
  1116.       '*****AUTOMATIONCODE********************************
  1117.       '*** Precopy Config processor
  1118.  
  1119.       '** Give the products a last crack at the CopyList before it gets copied
  1120.       notused% =  RemovePriorVersion("reset","buffer")
  1121.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1122.  
  1123.       '** Make sure there is enough space
  1124.       IF automation$ = gTRUE$ THEN
  1125.    notused% = AutoCheckForSpace()
  1126.       ELSE      
  1127.    SELECT CASE GetSymbolValue(SYM_SIZEOFINSTALL$)
  1128.  
  1129.     CASE gCOMPLETE$
  1130.        IF CheckForSpace(DB_INSUFDISKSPACE)     = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
  1131.     CASE gLAPTOP$
  1132.        IF CheckForSpace(DB_INSUFDISKSPACEMIN)  = FAILURE GOTO SMARTSUITE_BASEDIR 'STDSIZEOFINSTALL
  1133.     CASE gCUSTOM$
  1134.        IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO STDINITIALIZECOPYLST 'STDCUSTOM
  1135.     END SELECT
  1136.       END IF
  1137.       '** Copy all the files in the copylist
  1138.    longnotused& = SetSizeCheckMode(CLNG(0))
  1139.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN 
  1140.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1141.       END IF
  1142.       nbytes& = NumberOfBytesPerBillbd()
  1143.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1144.       
  1145.       ''Display bmps centred in billboards
  1146.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1147.         '' Added language subdirectory to source/destination paths if needed
  1148.         Lot_FixupLanguageDirectories
  1149.       CopyFilesInCopyList
  1150.       ''Set it back to default now
  1151.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1152.  
  1153.       '** Configure the shared files
  1154.       curcursor& = ShowWaitCursor()
  1155.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1156.       notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1157.       notused% = Lot_SaveFeaturesInstaledInInstallIni()
  1158.         '**   Register shared DLLs for all sections that have the special "_SHRCNT"
  1159.         '**   suffix
  1160.       Lot_DoSharedDLLs
  1161.       
  1162.       '** Allow the products to configure the product after file copy
  1163.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1164.       
  1165.       UIPOP 1     '** Bring down DB_PLEASEWAIT
  1166.  
  1167.      IF NOT IsNewShell() THEN
  1168.          '** Create a program manager group for the product #1
  1169.         grouptitle$ = Reg_GetProgManagerGroupName(1)
  1170. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1171.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1172.      END IF
  1173.  
  1174.     
  1175.       '*** schen  AddiconOptions for Automate install 1/16/95
  1176.  
  1177.       IF automation$ = gTRUE$ Then
  1178.  
  1179.           notused% = Lot_AutoAddiconOptions ()
  1180.           if notused% Then
  1181.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1182.           end if
  1183.       ELSE
  1184.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1185.       END IF   
  1186.  
  1187.       '** Bring up DB_PLEASEWAIT again
  1188.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1189.       notused1$ = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1190.       
  1191.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1192.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1193.  
  1194.       UIPOP 1     '** Bring down DB_PLEASEWAIT
  1195.       RestoreCursor curcursor&
  1196.      
  1197.       '** Win32: This should do nothing except bring up the success dlg. 
  1198.       ConfigureAUTOEXEC
  1199.  
  1200.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1201.       'IF automation$ = gTRUE$ THEN
  1202.       '  AutoInstallReboot
  1203.       'END IF  
  1204.    '**********************************************************************
  1205.    '************************* Server Install *****************************
  1206.    '**********************************************************************
  1207.  
  1208.    CASE gSERVER$
  1209.  
  1210.       '** Read the Server INF and initialize SHARE
  1211.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "SRVINFFILE")
  1212.       ReadInfFile inf$
  1213.       notused% = Lot_CallSharedTool("InitSHARE()")
  1214.  
  1215.       '** Allow the products to do their initialization
  1216.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1217.       IF direction$ = gBACK$ GOTO WELCOME
  1218.  
  1219. '***********AUTOMATION code*************************************************
  1220. SMARTSUITE_COMPONENTSDIR:
  1221.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$  AND _
  1222.              Reg_GetProdSupportforShare(1) = 1 THEN
  1223.  
  1224.             'Set defaults for components and lotusapp directories based on
  1225.             'cinstall.ini found in parent directory
  1226.             s$ = GetSymbolValue(SYM_BASEDIR$)
  1227.             installini$ =  MakePath( s$, gINSTALLINI$)
  1228.             IF DoesFileExist(installini$,femExists) = 1 THEN
  1229.             '** Set server defaults for COMPONENTSDIR based on entries
  1230.             '** in cinstall.ini 
  1231.                 s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
  1232.                         "COMPONENTSDIR")
  1233.                 IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
  1234.         '** Check for language install by looking for the "LANGUAGE" key in 
  1235.         '** cinstall.ini
  1236.                 lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
  1237.                 s$ = GetIniKeyString(  installini$, "TOOLKIT", "Language")
  1238.                 IF s$ <> "" AND s$ <> lang$ THEN 
  1239.                     SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
  1240.                     'For suite/server, all products are language or not
  1241.                     listlen% = GetListLength(SYM_INSTALLKINDS$)
  1242.                     FOR i% = 1 TO listlen%
  1243.                         SetListItem SYM_INSTALLKINDS$, i%, gLANGUAGEINSTALL$
  1244.                     NEXT
  1245.             '** Inform the user what's happening
  1246.             '** The product name is based on first product (single product name or Suite)
  1247.                     s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
  1248.                     PopupLanguageInstallMessage( s$ )
  1249.                 END IF
  1250.  
  1251.             END IF
  1252.             IF GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN  
  1253.                 notused% = RegisterCallback ("CALLBACK", "GETCOMPONENTDIRCB")
  1254.          '** AUTOMATE: comment out next line and explicitly set SYM_COMPONENTSDIR$
  1255.          '**   SetSymbolValue SYM_COMPONENTSDIR$, "C:\lotus\compnent" 
  1256.          '**   Lot_RefreshDestination SYM_COMPONENTSDIR$
  1257.                 direction$ = PopupModalDlg (DBM_SPECIFY_SRVLOTUSAPPDIR, DBM_SPECIFY_SRVLOTUSAPPDIR)
  1258.             END IF
  1259.       
  1260.         END IF
  1261.  
  1262.         '** Language Install Code
  1263.         '**
  1264.         IF GetSymbolValue(SYM_SINGLESMARTSUITE$) <> gSMARTSUITE$ THEN
  1265.             s$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(1) + gTOP$)
  1266.             s$ = Lot_GetChapterValStr(s$, F_DESTDIRSYM)
  1267.             s$ = GetSymbolValue(s$)
  1268.             installini$ =  MakePath( s$, gINSTALLINI$)
  1269.             lang$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$)
  1270.             IF DoesFileExist(installini$,femExists) = 1 THEN
  1271.                 '** If cinstall.ini exists in the product dir, and the language is different
  1272.                 '** and we are a server install, then we are in a language install
  1273.                 '**
  1274.                 s$ = GetIniKeyString(  installini$, "TOOLKIT", "Language")
  1275.                 IF s$ <> "" AND s$ <> lang$ THEN
  1276.                     SetSymbolValue SYM_INSTALLKIND$, gLANGUAGEINSTALL$
  1277.                     SetListItem SYM_INSTALLKINDS$, 1, gLANGUAGEINSTALL$
  1278.                     '** Inform the user what's happening
  1279.                     '** The product name is based on first product (single product name or Suite)
  1280.                     s$ = GetSymbolValue(SYM_REG_PRODUCTNAME$)
  1281.                     PopupLanguageInstallMessage( s$ )
  1282.                     '** Reset server values for COMPONENTSDIR based on entries
  1283.                     '** in cinstall.ini 
  1284.                     s$ = GetIniKeyString(installini$, "Server Configuration of Shared Tools", _
  1285.                         "COMPONENTSDIR")
  1286.                     IF s$ <> "" THEN SetSymbolValue SYM_COMPONENTSDIR$, s$
  1287.                 END IF
  1288.             END IF
  1289.         END IF
  1290.         
  1291.       IF direction$ = gBACK$ THEN  GOTO SMARTSUITE_BASEDIR
  1292.  
  1293.       '** TV: These were called in the callbacks. They should be called in main
  1294.       '** instead.
  1295.       ResetWinWinsysSymbols
  1296.  
  1297.       '** Make sure fonts directory is set relative to location on server
  1298.         Lot_SetLotusFontsDir
  1299.  
  1300. SRVSSAPPSEL: '** In this dialog, the user can select/deselect applications to
  1301.         '** be installed, and also specify directories for individual apps
  1302.         FirstTime$ = ""
  1303.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1304.          IF automation$ <> gTRUE$ THEN
  1305. '** GEMINI
  1306. '**          notused% = RegisterCallback("SUIT", "APPSELCB")
  1307. '**          '** AUTOMATE: comment out to take defaults, too trickey
  1308. '**          '** to automatically pick anything different.
  1309. '**          direction$ = PopupModalDlg (DBSUIT_SAPPSEL, DBSUIT_SAPPSEL)
  1310. '** GEMINI
  1311.          ELSE
  1312.          notused% = Lot_AutoSuiteAppSelect()
  1313.          END IF   
  1314.       END IF
  1315.       IF direction$ = gBACK$ GOTO SMARTSUITE_COMPONENTSDIR
  1316.  
  1317. SRVSIZEOFINSTALL:  '** Ask kind of install to do (COMPLETE, CUSTOM, LAPTOP)   
  1318.  
  1319.      '** AUTOMATE: comment out call to "Lot_GetSizeOfInstall"
  1320.      '**   Result will be a default install of "COMPLETE", anything else is too tricky.
  1321.      '**   For a non-suite install you can set the destination directory:
  1322.      '**       dirSym$ = Reg_GetDirSymbolList(1)
  1323.      '**       dirSym$ = GetListItem(dirSym$, 1)
  1324.      '**       SetSymbolValue dirSym$, "c:\foo\"
  1325.      '**       Lot_RefreshDestination(dirSym$)
  1326.       nProducts% = Reg_GetNumberOfProducts() :  app_flag% = FALSE
  1327.       FOR prodIndex% = 1 to nProducts%
  1328.      If Reg_GetUIInOrOut (prodIndex%) <> FALSE  AND _
  1329.         Reg_GetAllowUserToPickInSuite(prodIndex%) <> FALSE Then
  1330.         app_flag% = TRUE
  1331.      End If
  1332.       NEXT
  1333.       If app_flag% <> FALSE  Then
  1334.    If automation$ = gTRUE$ Then
  1335.      notused% = Lot_AutoGetSizeOfInstall()
  1336.    Else
  1337.      direction$ = Lot_GetSizeOfInstall ()
  1338.            IF direction$ = gBACK$ GOTO SRVSSAPPSEL
  1339.    End If
  1340.       End If
  1341.  
  1342.       '** Make the products initialize their own copy list
  1343.         InitStickyCopyList network$, direction$
  1344.       IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
  1345.  
  1346. '*****AUTOMATION code *****************************************************
  1347.       IF automation$ = gTRUE$ AND _
  1348.     GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1349.    notused% = Lot_AutoCustomizeShare()
  1350.       END IF
  1351.      
  1352.       Lot_SetCurrentProduct(1) 
  1353.  
  1354. SRVCUSTOM:
  1355.  
  1356.      IF automation$ <> gTRUE$ Then
  1357.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ THEN
  1358.     IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1359.        notused% = RegisterCallback("CALLBACK","CUSTOM1CB")
  1360.        direction$ = PopupModalDlg (DBM_CUSTOMIZEBASESINGLEPROD, _
  1361.                DBM_CUSTOMIZEBASESINGLEPROD)
  1362.     ELSE
  1363.        If app_flag% <> FALSE  Then
  1364.          notused% = RegisterCallback("SUIT","CUSTOMIZEAPPSCB")
  1365.          direction$ = PopupModalDlg (DBSUIT_CUSTOMIZEAPPS,_
  1366.                DBSUIT_CUSTOMIZEAPPS)
  1367.        End If
  1368.     END IF
  1369.       END IF
  1370.      ELSE
  1371.    '*** Customize Suite before customizing individual products ***
  1372.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1373.         notused% = Lot_AutoInstallSuiteCustomize()
  1374.    END IF
  1375.    notused% = Lot_AutoInstallCustomize()
  1376.      END IF
  1377.      
  1378.      IF direction$ = gBACK$ GOTO SRVSIZEOFINSTALL
  1379.  
  1380. SRVDATALENS: '** Process the Datalens modules
  1381.       direction$ = DoDatalens(direction$) 
  1382.       if direction$ = gBACK$ GOTO SRVCUSTOM
  1383.  
  1384. SRVNODEOPTIONS: '** Process the Node Options
  1385.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCUSTOM$ AND _
  1386.     Lot_AreAnyNodeOptAvailToSrv() <> 0 AND _
  1387.     app_flag% <> FALSE THEN
  1388.    IF automation$ <> gTRUE$ THEN
  1389.     notused% = RegisterCallback("CALLBACK", "SRVNODEOPTIONSCB")
  1390.     '** AUTOMATE: comment out call toPopupmodalDlg and get default.
  1391.     direction$ = PopupModalDlg (DB_SRV_NODEOPTIONS, _
  1392.                DB_SRV_NODEOPTIONS)
  1393.    ELSE
  1394.     notused% = Lot_AutoSetSrvNodeOptions()
  1395.    END IF
  1396.       END IF
  1397.       IF direction$ = gBACK$ GOTO SRVDATALENS
  1398.  
  1399. SRVUI:  '** Allow product to bring up any last minute UI
  1400.      '** AUTOMATE: comment out next line and  avoid product specific UI.
  1401.  
  1402.  
  1403.             direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1404.             IF direction$ = gBACK$ GOTO SRVNODEOPTIONS
  1405.  
  1406.       IF automation$ = gTRUE$ THEN  
  1407.          notused% = Lot_AutoGetSetLicenserInfo()
  1408.       END IF  
  1409.  
  1410. '***********AUTOMATION code*************************************************
  1411. IF  automation$ <> gTRUE$ THEN
  1412. SRVPROGMAN: '** Put Progman Group UI
  1413.       notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1414.      '** AUTOMATE: comment out next line set the progman group name yourself
  1415.      '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1416.       IF Reg_GetRootFolder() = "" THEN
  1417.          direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1418.       ELSE  
  1419.          direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1420.       END IF
  1421.       IF direction$ = gBACK$ GOTO SRVUI
  1422. ELSE
  1423.       notused% = Lot_AutoGetProgramGroupOrFolder()
  1424. END IF
  1425.  
  1426.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1427.  
  1428.       notused% = Lot_AutoWriteOutDebugFile()
  1429.  
  1430.       direction$ = PopupModalDlg (DB_BEGINCOPYING, DB_BEGINCOPYING)
  1431.       IF direction$ = gBACK$ GOTO SRVPROGMAN
  1432.  
  1433.       '*****AUTOMATIONCODE********************************
  1434.       '*** Precopy Config processor
  1435.  
  1436.       '** Give the products a last crack at the CopyList before it gets copied
  1437.       ''* IF there is any product with licensing turned on, then
  1438.       ''* assume its on for all products.
  1439.       lic$ = CSTR(FALSE)
  1440.       FOR i% = 1 to nProducts%
  1441.     IF Reg_GetProdSupportForLicense (i%) <> FALSE   AND _
  1442.        Reg_IsLicenseSelected (i%)        <> FALSE   THEN
  1443.           lic$ = CSTR(TRUE)
  1444.           EXIT FOR
  1445.     END IF
  1446.       NEXT
  1447.       notused% =  RemovePriorVersion("reset","buffer")
  1448.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, lic$)
  1449.  
  1450.       '** Make sure there is enough space
  1451.       IF automation$ = gTRUE$ THEN
  1452.    notused% = AutoCheckForSpace()
  1453.       ELSE      
  1454.    IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
  1455.     IF CheckForSpace(DB_INSUFDISKSPACE)     = FAILURE GOTO SMARTSUITE_BASEDIR 'SRVSIZEOFINSTALL
  1456.         ELSE
  1457.     IF CheckForSpace(DB_INSUFDISKSPACECUST) = FAILURE GOTO SRVCUSTOM 'SRVCUSTOM
  1458.         END IF
  1459.       END IF
  1460.  
  1461.       '** Start the file copy
  1462.       notused% = SetSizeCheckMode(FALSE)
  1463.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1464.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1465.       END IF
  1466.       nbytes& = NumberOfBytesPerBillbd()
  1467.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1468.       ''Display bmps centred in billboards
  1469.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1470.         '' Added language subdirectory to source/destination paths if needed
  1471.         Lot_FixupLanguageDirectories
  1472.         CopyFilesInCopyList
  1473.       ''Set it back to default now
  1474.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1475.             
  1476.       ' Special case of server/language install
  1477.         ' Set cinstall.ini location to subdirectory for writing installed features
  1478.       IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN 
  1479.             s$ = GetSymbolValue(SYM_INSTALL_LANGUAGE$) 
  1480.             gINSTALLINI$ =  Lot_SetLanguageDirectory(s$) + "\" + gINSTALLINI$
  1481.         END IF
  1482.       '** Configure the shared files
  1483.       curcursor& = ShowWaitCursor()
  1484.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1485.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1486.       notused%   = Lot_SaveFeaturesInstaledInInstallIni()
  1487.  
  1488.         '' For a shared windows installation, copy the windows, windows system,
  1489.         '' and font files to the shared windows location
  1490.         Lot_DoServerSharedWindows
  1491.  
  1492.       '** All the products to configure after copy
  1493.       IF Lot_AreAnyNodeOptAvailToSrv() <> 0 THEN
  1494.     notused% = Lot_SaveTheNodeOptionsInInstallIni()
  1495.       END IF
  1496.  
  1497.       '** Allow the products to configure the product after file copy
  1498.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
  1499.       
  1500.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1501.  
  1502.       '** Create a program manager group for the product #1
  1503.       grouptitle$ = Reg_GetProgManagerGroupName(1)
  1504. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1505.       If NOT IsNewShell() THEN
  1506.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1507.       End If
  1508.       
  1509.       '***  schen 3/19 Automate Addicon for server
  1510.       IF automation$ = gTRUE$ Then
  1511.  
  1512.           notused% = Lot_AutoAddiconOptions ()
  1513.           if notused% Then
  1514.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1515.           end if
  1516.       ELSE
  1517.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1518.       END IF   
  1519.      
  1520.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1521.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1522.       
  1523.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1524.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1525.  
  1526.       '** Change the install.ini file so we can do NODE install from server
  1527.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1528.     dirSym$ = Reg_GetDirSymbolList(1)
  1529.     If GetListLength(dirSym$) <= 0 Then
  1530.        ErrorMsg SID_ERR_SRV_MUST_HAVE_MAINDIR, "" 
  1531.        ERROR STFQUIT
  1532.     End If
  1533.     dirSym$ = GetListItem(dirSym$, 1)
  1534.       ELSE
  1535.     dirSym$ = SYM_BASEDIR$
  1536.       END IF
  1537.       ' Special case of server/language install, use INSTDIR for install.lst
  1538.       IF GetSymbolValue(SYM_INSTALLKIND$) = gLANGUAGEINSTALL$ THEN _
  1539.             dirSym$ = "INSTDIR"
  1540.       CreateIniKeyValue GetSymbolValue(dirSym$) + "install.lst", _
  1541.          "Params", "CmdLine",                     _
  1542.          |lsirun.exe start /S "%s" %s /N|, cmoOverwrite
  1543.       
  1544.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1545.       RestoreCursor curcursor&
  1546.  
  1547.       '** Tell user we succeeded
  1548.       '* Only looks at first product! Won't work for smartsuite MMETH
  1549.       notused% = RegisterCallback("CALLBACK","SRV_SUCCESSCB")
  1550.       IF CINT(FIsKeywordInCopyList("LICTOP")) <> FALSE AND _
  1551.     Reg_IsLicenseSelected (1) <> FALSE THEN
  1552.     rc$ = PopupModalDlg (DB_SRV_SUCCESS_LIC, DB_SUCCESS)
  1553.       ELSE
  1554.     rc$ = PopupModalDlg (DB_SRV_SUCCESS, DB_SUCCESS)
  1555.       END IF
  1556.  
  1557.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1558.  
  1559.    '**********************************************************************
  1560.    '************************* Node Install *******************************
  1561.    '**********************************************************************
  1562.  
  1563.    CASE gNODE$
  1564.       
  1565.       '** Read in the INF file and init share
  1566.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "NODEINFFILE")
  1567.       ReadInfFile inf$
  1568.       notused% = Lot_CallSharedTool("InitSHARE()")
  1569.  
  1570.       '** Call the product initialization functions
  1571.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1572.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1573.  
  1574.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1575.             direction$  = Lot_CallOneProductFunction (1, "PrevVersions", gNEXT, TRUE, "")
  1576.     IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1577.       END IF
  1578.  
  1579.       '************** For smart suite, Application Selection Dialog *****
  1580. NODESSAPPSEL:
  1581.         FirstTime$ = ""
  1582.       '** In this dialog, the user can select/deselect applications to be
  1583.       '** installed, and also specify directories for individual apps
  1584.       IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1585.          IF automation$ <> gTRUE$ THEN
  1586.          notused% = RegisterCallback("SUIT", "APPSELCB")
  1587.          '** AUTOMATE: comment out to take defaults, too trickey
  1588.          '** to automatically pick anything different.
  1589.          direction$ = PopupModalDlg (DBSUIT_APPSEL, DBSUIT_APPSEL)
  1590.          ELSE
  1591.          notused% = Lot_AutoSuiteAppSelect()
  1592.          END IF   
  1593.       END IF
  1594.       IF direction$ = gBACK$ GOTO SMARTSUITE_BASEDIR
  1595.  
  1596.       '***********AUTOMATION code******************************
  1597.       IF automation$ = gTRUE$ AND _
  1598.      GetSymbolValue(SYM_INSTALLKIND$) <> gLANGUAGEINSTALL$ THEN
  1599.       notused% = Lot_AutoGetProductDestDirSymbol ()
  1600.       END IF
  1601.  
  1602.         '** Language Install Code
  1603.         ' install must be in a language subdirectory and the language a
  1604.         ' secondary language for the server
  1605.         IF IsServerSecondaryLanguage AND SrcDirResetFlag <> TRUE THEN 
  1606.             s$ = GetSymbolValue(SYM_STF_SRCDIR$)  
  1607.             s$ = OneUp(NullTrim(s$))
  1608.             SetSymbolValue SYM_STF_SRCDIR$, s$
  1609.             SrcDirResetFlag = TRUE
  1610.       END IF
  1611.       
  1612.       '** Make the products initialize their own copy list
  1613.         InitStickyCopyList network$, direction$
  1614.       IF direction$ = gBACK$ GOTO NODESSAPPSEL
  1615.  
  1616.       '** Consolidate the lotusapp if needed
  1617.       IF Lot_CallSharedTool("PreConfigSHARE()") = 2 THEN
  1618.     direction$ = gBACK$
  1619.       END IF
  1620.       IF direction$ = gBACK$  GOTO NODESSAPPSEL
  1621.  
  1622.  
  1623.       '************************ Change Node Path *************************
  1624. CHANGE_NODE_PATH:
  1625.       IF direction$ = gBACK$ GOTO NODESSAPPSEL
  1626. NODENODEOPTIONS:
  1627.  
  1628.   '**   For a non-suite install you can set the destination directory:
  1629.   '**       dirSym$ = Reg_GetDirSymbolList(1)
  1630.   '**       dirSym$ = GetListItem(dirSym$, 1)
  1631.   '**       SetSymbolValue dirSym$, "c:\foo\"
  1632.   '**       Lot_RefreshDestination(dirSym$)
  1633.     dlgID% = 0
  1634.   IF automation$ <> gTRUE$ THEN
  1635.         '** If it's standalone and there is a dir symbol
  1636.         IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  1637.             dirSym$ = Reg_GetDirSymbolList(1)
  1638.             IF GetListLength(dirSym$) >= 1  Then
  1639.                 IF Lot_IsAnyNodeOptAvailToNode() <> 0 THEN
  1640.                     dlgID% = DB_NODE_PERSONALDIRNODEOPT
  1641.                 ELSE
  1642.                     dlgID% = DB_NODE_PERSONALDIR
  1643.                 END IF
  1644.             END IF
  1645.         '** smartSuite
  1646.         ELSE
  1647.             IF Lot_AreAnyNodeOptionsAvail() <> 0 THEN
  1648.                 dlgID% = DB_NODE_NODEOPTIONS
  1649.             END IF
  1650.         END IF
  1651.         IF dlgID% <> 0 THEN
  1652.             notused% = RegisterCallback("CALLBACK", "NODENODEOPTIONSCB")
  1653.             direction$ = PopupModalDlg (dlgID%,CLng(dlgID%))
  1654.         ELSE
  1655.       Lot_TurnOffAllNodeOptSections
  1656.     END IF
  1657.     ELSE
  1658.         notused% = Lot_AutoProcessNodeoptions()
  1659.     END IF
  1660.   IF direction$ = gBACK$ GOTO CHANGE_NODE_PATH
  1661.  
  1662. NODEUI:  '** Allow the product to put up its UI
  1663.       direction$ = Lot_CallProductFunctions("UI", direction$, FALSE, g1PRODUCT, "")
  1664.       IF direction$ = gBACK$ GOTO NODENODEOPTIONS:
  1665.  
  1666. '***********AUTOMATION code*************************************************
  1667. IF  automation$ <> gTRUE$ THEN
  1668. NODEPROGMAN:  '** Put Progman Group UI
  1669.       notused% = RegisterCallback("CALLBACK","PROGMANGROUPCB")
  1670.      '** AUTOMATE: comment out next line set the progman group name yourself
  1671.      '**           Reg_SetProgManagerGroup 1, "MY GROUP"
  1672.       IF Reg_GetRootFolder() = "" THEN
  1673.          direction$ = PopupModalDlg (DBM_PROGMANGROUP, DBM_PROGMANGROUP)
  1674.       ELSE  
  1675.          direction$ = PopupModalDlg (DBM_PROGRAMFOLDER, DBM_PROGRAMFOLDER)
  1676.       END IF
  1677.       IF direction$ = gBACK$ GOTO NODEUI
  1678. ELSE
  1679.       notused% = Lot_AutoGetProgramGroupOrFolder()
  1680. END IF
  1681.  
  1682.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1683.  
  1684.       notused% = Lot_AutoWriteOutDebugFile()
  1685.  
  1686.       direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
  1687.       IF direction$ = gBACK$ GOTO NODEPROGMAN
  1688.  
  1689.       '*****AUTOMATIONCODE********************************
  1690.       '*** Precopy Config processor
  1691.  
  1692.       '** Configuration before copying
  1693.       notused% =  RemovePriorVersion("reset","buffer")
  1694.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1695.  
  1696.  
  1697.       curcursor& = ShowWaitCursor()
  1698.       '** Copy the files
  1699.       longnotused& = SetSizeCheckMode(CLNG(FALSE))
  1700.       notused% = Lot_CallSharedTool ("Lot_RefreshLocalLotusapp()")
  1701.       notused% = Lot_RefreshLocalComponentDir 
  1702.  
  1703.       RestoreCursor curcursor&
  1704.       '** Make sure there is enough space before continuing
  1705.       IF automation$ = gTRUE$ THEN
  1706.    notused% = AutoCheckForSpace()
  1707.       ELSE      
  1708.         IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO CHANGE_NODE_PATH
  1709.       END IF
  1710.       
  1711.       curcursor& = ShowWaitCursor()
  1712.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1713.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1714.       END IF
  1715.  
  1716.       nbytes& = NumberOfBytesPerBillbd()
  1717.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1718.  
  1719.         '** Fixup location of files on server based on cinstall.ini
  1720.         '** for symbols registered by clients 
  1721.         Lot_FixupSourceDirectories
  1722.         
  1723.       ''Turn off Windows System files for shared windows install
  1724.         Lot_DetectSharedWindows
  1725.         IF gIsSharedWindows% THEN TurnOffSharedWinsysSections
  1726.  
  1727.       ''Display bmps centred in billboards
  1728.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1729.         '' Added language subdirectory to source/destination paths if needed
  1730.         Lot_FixupLanguageDirectories
  1731.       CopyFilesInCopyList
  1732.       ''Set it back to default now
  1733.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1734.  
  1735.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1736.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1737.       notused% = Lot_SaveFeaturesInstaledInInstNodeIni()
  1738.         '**   Register shared DLLs for all sections that have the special "_SHRCNT"
  1739.         '**   suffix
  1740.       Lot_DoSharedDLLs
  1741.  
  1742.       notused1$ = Lot_CallProductFunctions("PostCopyConfig", gNEXT, FALSE, gALLPRODUCTS,|"|+grouptitle$+|"|)
  1743.       
  1744.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1745.       
  1746.       '** Allow the products to do their initialization
  1747.       grouptitle$ = Reg_GetProgManagerGroupName(1)
  1748. '**      notused% = ProgmanManageGroup(grouptitle$, ADD_GRP)
  1749.       If NOT IsNewShell() THEN
  1750.          CreateProgmanGroup CHR$(34) + grouptitle$ + CHR$(34), "", cmoVital
  1751.       End If
  1752.  
  1753.       '*** schen 3/19 for node Automate addicon
  1754.       
  1755.       IF automation$ = gTRUE$ Then
  1756.  
  1757.           notused% = Lot_AutoAddiconOptions ()
  1758.           if notused% Then
  1759.              notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1760.           end if
  1761.       ELSE
  1762.           notused1$ = Lot_CallProductFunctions("AddIcons", gNEXT, FALSE, gALLPRODUCTS, |"|+grouptitle$+|"|)
  1763.       END IF   
  1764.  
  1765.       SetListItem "IDC_BMP", 1, STR$(IDD_PLEASEWAIT_BMP) '** put up the bitmap
  1766.       notused1$  = PopupModelessDlg(DB_PLEASEWAIT, DB_PLEASEWAIT)
  1767.       
  1768.       '** Configure the shared files
  1769.       notused% = Lot_CallSharedTool("ConfigSHARE()")
  1770.       notused% = Lot_CallSharedTool("AddSHAREIcons()")
  1771.  
  1772.       '** DONE
  1773.       UIPOP 1 '** Bring Down DB_PLEASEWAIT
  1774.       RestoreCursor curcursor&
  1775.       
  1776.       '** Win32: This should do nothing except bring up the success dlg. 
  1777.       ConfigureAUTOEXEC
  1778.  
  1779.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1780.       'IF automation$ = gTRUE$ THEN
  1781.       '  AutoInstallReboot
  1782.       'END IF  
  1783.  
  1784.  
  1785.    '**********************************************************************
  1786.    '******************** Distribution Install ****************************
  1787.    '**********************************************************************
  1788.  
  1789.    CASE gDISTRIBUTION$
  1790.  
  1791.       '** Initialize
  1792.       inf$ = GetIniKeyString (inifile$, "TOOLKIT", "BYWIREINFFILE")
  1793.       ReadInfFile inf$
  1794.  
  1795.       '** Product initialiation
  1796.       direction$ = Lot_CallProductFunctions("Init", direction$, TRUE, gALLPRODUCTS$, "GetSymbolValue(SYM_BASEDIR$)")
  1797.       IF direction$ = gBACK$ GOTO WELCOME
  1798.  
  1799. '***********AUTOMATION code*************************************************
  1800. IF automation$ = gTRUE$ THEN
  1801.       notused% = Lot_AutoGetProductDestDirSymbol ()
  1802. ELSE
  1803.  
  1804.       '******************* Change Distribution Install *******************
  1805.  
  1806. ChangeDistPath:
  1807.  
  1808.       lSize& = Lot_GetInfSectionSize(gDISTRIBUTIONFILES$) \ 1024
  1809.       SetListItem "IDC_TEXT", 1, STR$(lSize&) + gStrK$
  1810.  
  1811.       notused% = RegisterCallback("CALLBACK","DISTSIZEINSTALLCB")
  1812.       '** AUTOMATE: comment out next line and explicitly set directory,
  1813.       '**           if you are not happy with the default
  1814.       '**       dirSym$ = Reg_GetDirSymbolList(1)
  1815.       '**       dirSym$ = GetListItem(dirSym$, 1)
  1816.       '**       SetSymbolValue dirSym$, "c:\foo\"
  1817.       '**       Lot_RefreshDestination(dirSym$)
  1818.       direction$ = PopupModalDlg (DB_CHOOSEPATHDIST, DB_CHOOSEPATHDIST)
  1819.  
  1820.  
  1821.       IF direction$ = gBACK$ GOTO SERVER_DISTRIBUTION
  1822. END IF
  1823.       
  1824.       dirSym$ = Reg_GetDirSymbolList(1)
  1825.       nDirs% = GetListLength(dirSym$)
  1826.       IF nDirs% > 0 THEN
  1827.     dirSym$  = GetListItem(dirSym$, 1)
  1828.     destdir$ = GetSymbolValue(dirSym$)
  1829.     AddSectionFilesToCopyList gDISTRIBUTIONFILES$,_
  1830.                 GetSymbolValue(SYM_STF_SRCDIR$),_
  1831.                 destdir$
  1832.       END IF
  1833.  
  1834.      UIPOP 1     '** Bring down automation PLEASEWAIT
  1835.  
  1836.  
  1837.       IF automation$ = gTRUE$ THEN
  1838.    notused% = AutoCheckForSpace()
  1839.       ELSE      
  1840.         IF CheckForSpace(DB_INSUFDISKSPACE) = FAILURE GOTO ChangeDistPath
  1841.       END IF
  1842.  
  1843.       '' These UI Pops have a funny interaction with CheckFOrSpace
  1844.       '' When Check for SPace putsup a dialog.  (DAVE LOOK AT)
  1845.  
  1846.       '** Ask the user if we should copy files
  1847.       notused% = Lot_AutoWriteOutDebugFile()
  1848.  
  1849.       direction$ = PopupModalDlg (DB_BEGINCOPYING,DB_BEGINCOPYING)
  1850.       IF direction$ = gBACK$ GOTO ChangeDistPath
  1851.  
  1852.       '*****AUTOMATIONCODE********************************
  1853.       '*** Precopy Config processor
  1854.  
  1855.       '** Configuration before copying
  1856.       notused% =  RemovePriorVersion("reset","buffer")
  1857.       notused1$ = Lot_CallProductFunctions("PreCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1858.  
  1859.       '** Copy the distribution files
  1860.       longnotused& = SetSizeCheckMode(CLNG(0))
  1861.       IF GetSymbolValue(SYM_LOGFILE$) <> "" THEN
  1862.     DumpCopyList GetSymbolValue(SYM_LOGFILE$)
  1863.       END IF
  1864.  
  1865.       nbytes& = NumberOfBytesPerBillbd()
  1866.       notused1$ = Lot_CallOneProductFunction(1,"AddTheBillBoards", gNEXT, FALSE, CSTR(nbytes&))
  1867.       ''Display bmps centred in billboards
  1868.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, "CENTERED"
  1869.       CopyFilesInCopyList
  1870.       ''Set it back to default now
  1871.       SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  1872.  
  1873.       ' ** TV:
  1874.       'notused1$ = Lot_CallProductFunctions("PostCopyConfig", direction$, FALSE, gALLPRODUCTS, "FALSE")
  1875.  
  1876.       '** Tell the user you are done
  1877.       rc$ = PopupModalDlg (DB_SUCCESS, DB_SUCCESS)
  1878.    
  1879.       notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNEXT, FALSE, gALLPRODUCTS,"")
  1880.  
  1881.    '********************* END OF INSTALL CASES ***************************
  1882.  
  1883.    '** IF you get here then it is an error
  1884.    CASE ELSE
  1885.       
  1886.       ERROR STFQUIT
  1887.  
  1888.    END SELECT
  1889.  
  1890.    IF automation$ = gTRUE$ THEN
  1891.       '** TV:Clean up dialogs before quitting 
  1892.       UIPopAll
  1893.       WriteToFile gLogFile$, LdString(SID_AUTOINST_COMPLETE)
  1894.       WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
  1895.       END 
  1896.    END IF
  1897. '*************************************************************************
  1898. '********************** ERROR HANDLERS ***********************************
  1899. '*************************************************************************
  1900.  
  1901. '** If major error, this will exit the program
  1902. MAINERROR:
  1903.    '** TV:Clean up dialogs before quitting 
  1904.    UIPopAll
  1905.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  1906.       WriteToFile gLogFile$, LdString(SID_AUTOINST_ERR)
  1907.       WriteToFile gLogFile$, LdString(SID_COMMLOGFILE_END)
  1908.    END IF   
  1909.    END
  1910.  
  1911. '** DND: Should we do anything else here?
  1912. STFERR_:
  1913.    RESUME NEXT
  1914.  
  1915. STFTOGGLEERR:
  1916.    RESUME NEXT
  1917.  
  1918. END SUB
  1919.  
  1920.  
  1921.  
  1922. '*************************************************************************
  1923. '** FUNCTION DoDatalens(direction$) AS STRING
  1924. '** Purpose:   Take care of all the datalens stuff
  1925. '**     
  1926. '**     
  1927. '** Author:    DND and MMETH
  1928. '** Arguments: SYM_NETWORK$
  1929. '**     
  1930. '** Returns: gBACK$ or ""
  1931. '**     
  1932. '*************************************************************************
  1933.  
  1934. FUNCTION DoDatalens(BYVAL direction$) AS STRING
  1935.  
  1936.     DIM notused%, rc$, chptname$ 
  1937.    If direction$ = gBACK Then GOTO PARADOXUI
  1938. %rem
  1939. 'This is left over from CARMEN
  1940.    IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$ THEN
  1941.  
  1942.       '** For COMPLETE installs, remove some datalens stuff from
  1943.       '** the copylist.
  1944.       IF GetSymbolValue(SYM_SIZEOFINSTALL$) = gCOMPLETE$ THEN
  1945.     If (CINT(FIsKeywordinCopyList ("SHRPARADOXPRG")) <> FALSE) Then   
  1946.         chptname$ =  Lot_GetChapterFromKeyword("SHRPARADOXPRG")
  1947.         Lot_ToggleChapterFilesInCopyList chptname$              
  1948.     end if 
  1949.     If (CINT(FIsKeywordinCopyList ("SHRSQLPRG")) <> FALSE) Then 
  1950.         chptname$ =  Lot_GetChapterFromKeyword("SHRSQLPRG")
  1951.         Lot_ToggleChapterFilesInCopyList chptname$              
  1952.     end if 
  1953.     If (CINT(FIsKeywordinCopyList ("SHRINFORMIXPRG")) <> FALSE) Then
  1954.         chptname$ =  Lot_GetChapterFromKeyword("SHRINFORMIXPRG")
  1955.         Lot_ToggleChapterFilesInCopyList chptname$              
  1956.     end if 
  1957.     If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
  1958.         chptname$ =  Lot_GetChapterFromKeyword("SHRIBMPRG")
  1959.         Lot_ToggleChapterFilesInCopyList chptname$              
  1960.     end if 
  1961.     If (CINT(FIsKeywordinCopyList ("SHRIBMPRG")) <> FALSE ) Then
  1962.         chptname$ =  Lot_GetChapterFromKeyword("SHRIBMPRG")
  1963.         Lot_ToggleChapterFilesInCopyList chptname$              
  1964.     end if 
  1965.        
  1966.       END IF
  1967.  
  1968.    END IF
  1969. %endrem
  1970.  
  1971.    '************** Standard SQL Server Dialog *************************
  1972.  
  1973. SQLUI:
  1974.  
  1975.    IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE THEN
  1976.  
  1977.     '** INSYMBOLS: ????
  1978.  
  1979.     notused% = RegisterCallback("SHARE", "SQLSERVERNAMECB")
  1980.     '** AUTOMATE: comment out next line and explicitly set SYM_SQLSERVERNAME$
  1981.          IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  1982.             SetSymbolValue SYM_SQLSERVERNAME$, GetSymbolValue(SYM_AUTO_SQLSERVER)
  1983.          END IF
  1984.        direction$ = PopupModalDlg (DBM_SQL_SERVER_NAME, DBM_SQL_SERVER_NAME)
  1985.  
  1986.     IF direction$ = gBACK$ THEN
  1987.        DoDatalens = direction$
  1988.        EXIT FUNCTION
  1989.     END IF
  1990.    END IF
  1991.  
  1992.    '************** Standard Paradox Dialog ***************************
  1993. PARADOXUI:
  1994.  
  1995.    IF Lot_CallSharedTool("Lot_IsParadoxSelected()") <> FALSE THEN
  1996.  
  1997.     '** INSYMBOLS: ????
  1998.       
  1999.     notused% = RegisterCallback("SHARE", "PARADOXNETWORKINFOCB")
  2000.     '** AUTOMATE: comment out next line and explicitly set SYM_PARADOXNETWORKINFO$
  2001.          IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  2002.        SetSymbolValue SYM_PARADOXNETWORKINFO$, GetSymbolValue(SYM_AUTO_PARADOXINFO$)
  2003.          END IF
  2004.  
  2005.     direction$ = PopupModalDlg (DBM_PARADOX_NETWORK_INFORMATION, DBM_PARADOX_NETWORK_INFORMATION )
  2006.  
  2007.     '** OUTSYMBOLS: ????
  2008.  
  2009.     IF direction$ = gBACK$ THEN
  2010.        IF Lot_CallSharedTool("Lot_IsSQLSelected()") <> FALSE GOTO SQLUI
  2011.        DoDatalens = gBACK$
  2012.        EXIT FUNCTION
  2013.     END IF
  2014.    END IF
  2015.  
  2016.    DoDatalens = direction$
  2017.    
  2018. END FUNCTION
  2019.  
  2020.  
  2021. '*************************************************************************
  2022. '** FUNCTION NumberOfBytesPerBillbd() AS LONG
  2023. '** Purpose:   Take care of all the datalens stuff
  2024. '**     
  2025. '**     
  2026. '** Author:    MMETH
  2027. '** Arguments: NONE
  2028. '**     
  2029. '** Returns: number of bytes per billboard
  2030. '**     
  2031. '*************************************************************************
  2032.  
  2033. FUNCTION NumberOfBytesPerBillbd() AS LONG
  2034.    DIM   n%, i% ,j%, costs&, nBillboards%, nProducts%, UNCSym$
  2035.  
  2036.    ''**** COMPUTE THE number of bytes for each billboard to stay up
  2037.    costs& = LcbGetChapterCost("", "", SYM_COST$, "")
  2038.    n% = GetListLength(SYM_COST$)
  2039.    costs& = 0
  2040.    for i% = 1 to n%
  2041.       costs& = costs& + CLNG(GetListItem(SYM_COST$, i%))
  2042.    next
  2043.    j%=GetListLength("UNCVOLLIST")
  2044.    FOR i% = 1 to j%
  2045.       UNCSym$ = GetListItem("UNCVOLLIST",i%)
  2046.       costs& = costs& + CLNG(GetListItem(UNCSym$, UNC_COST))
  2047.    NEXT
  2048.    nProducts% = Reg_GetNumberOfProducts()
  2049.    nBillboards% = Reg_GetBillboardNumber(1)
  2050.    If nBillboards% = 0 Then
  2051.       NumberOfBytesPerBillbd = 0
  2052.    Else
  2053.       NumberOfBytesPerBillbd = costs&\nBillboards%
  2054.    End If
  2055.  
  2056. END FUNCTION
  2057.  
  2058.  
  2059. '*************************************************************************
  2060. SUB SetTheBaseSymbol()
  2061. '** IN SYMBOLS ::: SYM_NETWORK$
  2062. '** OUT SYMBOLS::: SYM_BASEDIR$
  2063. '*************************************************************************
  2064. DIM network$, defBase$, lcbSpace&, defDir$, i%, nProducts%, s$
  2065. DIM keyvalue$, gbuf$, nsize&, ret&, bRegistryPath%
  2066.  
  2067.    bRegistryPath% = FALSE
  2068.    network$ = GetSymbolValue(SYM_NETWORK$)
  2069.  
  2070.     '** Find out if there's already installed products by querying registry
  2071.     '** Standard takes its value from HLM\SOFTWARE\Lotus\components\LocalPath
  2072.     '** Node takes its value from HCU\SOFTWARE\Lotus\components\User Path
  2073.     SELECT CASE network$
  2074.    CASE gSTANDARD$ 
  2075.      keyvalue$ = "LocalPath"
  2076.      ret& =  Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&) 
  2077.    CASE gNODE$ 
  2078.      keyvalue$ = "User Path"
  2079.      ret& =  Lot_GetRegKeyValueEx(HKEY_CURRENT_USER, gREGLOTUSCOMP, keyvalue$, 0, gbuf$, nsize&) 
  2080.     END SELECT 
  2081.     ' Strip off "compnent" part, e.g. d:\lotus\compnent ==> d:\lotus\
  2082.    IF gbuf$ <> "" AND IsDriveMapped(gbuf$) <> FALSE THEN
  2083.         s$ = OneUp(NullTrim(gbuf$))
  2084.         IF Lot_IsDirWritable(Lot_TrimEndSlash(s$)) THEN 
  2085.             defdir$ = s$
  2086.             bRegistryPath% = TRUE
  2087.         END IF
  2088.    END IF  
  2089.  
  2090.    '** Set the PARENT DIRECTORY based on minimum space required
  2091.     '** if not already gotten from registry
  2092.   IF bRegistryPath% = FALSE THEN
  2093.     lcbSpace& = 0
  2094.     defBase$ = "lotus\"
  2095.     nProducts% = Reg_GetNumberOfProducts()
  2096.     FOR i% = 1 to nProducts%
  2097.       lcbSpace& = lcbSpace& + Reg_GetProdMinSize(i%)
  2098.     NEXT
  2099.     defDir$ = Lot_GetAllHardDrive(lcbSpace&, defBase$)
  2100.     IF defDir$ = "" THEN 
  2101.       defDir$ = LCASE$(GetListItem(SYM_LOCALHARDDRIVES$, 1)) + ":\" + defBase$
  2102.     END IF
  2103.   END IF
  2104.  
  2105.    SetSymbolValue SYM_BASEDIR$, defDir$
  2106.  
  2107.    '*** AUTOMATION****************************************
  2108.   IF bRegistryPath% <> TRUE THEN
  2109.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ AND _
  2110.       GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSINGLE$ THEN
  2111.           AutoSetParentDir
  2112.    END IF   
  2113.   END IF
  2114.  
  2115.     ' Not sure if we still use SYM_BASE16DIR$
  2116.    SetSymbolValue SYM_BASE16DIR$, GetSymbolValue(SYM_BASEDIR$)   
  2117.  
  2118. END SUB
  2119.  
  2120. SUB GetNamesFromRegistry(buf1$, buf2$, RegLoc$)
  2121.    DIM ReturnVal&
  2122.    
  2123.    buf1$=CreateBuffer(260)
  2124.    ReturnVal&=260
  2125.    ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
  2126.              RegLoc$, gREGUSERNAME, 0, buf1$, ReturnVal&)
  2127.    buf2$=CreateBuffer(260)
  2128.    ReturnVal&=260
  2129.    ReturnVal& = Lot_GetRegKeyValueEx(HKEY_LOCAL_MACHINE,_
  2130.              RegLoc$, gREGORGNAME, 0, buf2$, ReturnVal&)
  2131.    buf1$ = LTrim$(NullTrim(buf1$))
  2132.    buf1$ = Trim$(buf1$)
  2133.    buf2$ = LTrim$(NullTrim(buf2$))
  2134.    buf2$ = Trim$(buf2$)
  2135. END SUB
  2136.  
  2137. SUB InitInstall
  2138.    DIM hUser&, notused%
  2139.    DIM buf1 AS STRING : buf1$ = CreateBuffer(80)
  2140.    DIM buf2 AS STRING : buf2$ = CreateBuffer(80)
  2141.    DIM count%, network$,ReturnVal&
  2142.  
  2143.    '** Initialize the Setup API
  2144.    '-- SetUpAPI  moved to toolkit
  2145.  
  2146.    '****************************************
  2147.    '******* INITIALIZE ALL GLOBAL SYMBOLS **
  2148.    '****************************************
  2149.  
  2150.    '** Default is Single, SmartSuite will override if it is present
  2151.    '** Even for single product installs there may be more that one
  2152.    SetSymbolValue SYM_SINGLESMARTSUITE, gSINGLE$
  2153.  
  2154.    '** Set up a symbol for where the copylist log will get written
  2155.    IF ENVIRON$(gLOTUS_COPYLIST$) <> "" THEN
  2156.       SetSymbolValue SYM_LOGFILE$, GetWindowsDir() + gCOPYLISTLOG$
  2157.    END IF
  2158.  
  2159.    '** Initialize the Win and Winsys symbols
  2160.    Lot_InitializeWinWinsysSym
  2161.  
  2162.    '** Initialize the expected len of subdirs in *.inf paths
  2163.    SetSymbolValue SYM_DOSMAXPATHDIFF$,"20"
  2164.  
  2165.    '** Initialize the gEXTRA list to allow for fudge
  2166.    '** on the windows drive. A deseprate application can add to it.
  2167.    Lot_InitializeEXTRA 
  2168.  
  2169.    ''We show bitmaps in 3 ways, with transparent backrgound (default), streched or centred
  2170.    SetSymbolValue SYM_BMP_DISPLAY_MODE$, ""
  2171.  
  2172.    '** Get The default Name & Company
  2173.    hUser& = GetModuleHandle(gUSER$)
  2174.    notused% = LoadString (hUser&, USERNAME,    buf1$, 80)
  2175.    notused% = LoadString (hUser&, COMPANYNAME, buf2$, 80)
  2176.  
  2177.    buf1$ = LTrim$(NullTrim(buf1$))
  2178.    buf1$ = Trim$(buf1$)
  2179.    buf2$ = LTrim$(NullTrim(buf2$))
  2180.    buf2$ = Trim$(buf2$)
  2181.  
  2182.    IF buf1$="" THEN
  2183.       GetNamesFromRegistry buf1$, buf2$, gREGWINNAME
  2184.       IF buf1$="" THEN
  2185.          GetNamesFromRegistry buf1$, buf2$, gREGWINNTNAME
  2186.          IF buf1$="" THEN
  2187.             buf1$=CreateBuffer(260)
  2188.             ReturnVal&=260
  2189.             notused%=GetUserName(buf1$,ReturnVal&)
  2190.             buf1$=NullTrim(buf1$)
  2191.             buf2$=buf1$
  2192.          END IF
  2193.       END IF
  2194.    END IF
  2195.  
  2196.    SetSymbolValue SYM_NAME$,    RTrim$(NullTrim(buf1$))
  2197.    SetSymbolValue SYM_COMPANY$, RTrim$(NullTrim(buf2$))
  2198.  
  2199. '***********AUTOMATION code*************************************************
  2200.    IF GetSymbolValue(SYM_AUTOMATIONINST$) = "1" THEN
  2201.       SetSymbolValue SYM_AUTOMATIONINST$, gTRUE$
  2202.         '*** default must be lotinst.log for automation, set in cmdline processing
  2203.      '*** gLogFile$ = GetWindowsDir() + "lotinst.log"
  2204.    ELSE
  2205.           SetSymbolValue SYM_AUTOMATIONINST$, gFALSE$
  2206.    END IF
  2207.       
  2208.    IF GetSymbolValue(SYM_LOGGING$) = "1" THEN
  2209.       IF GetSymbolValue(SYM_LOGGINGPATH$) <> "" THEN
  2210.           gLogFile$ = GetSymbolValue(SYM_LOGGINGPATH$)
  2211.       END IF
  2212.    END IF
  2213.  
  2214.    '** Check to see if command line asks for Node Install
  2215.    '** TV: This should be independent of automation
  2216.    IF INSTR(UCASE$(COMMAND$), "/N") <> 0 THEN
  2217.       SetSymbolValue SYM_NETWORK$, gNODE$
  2218.    ELSE 
  2219.      IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  2220.    network$ = Lot_AutoGetInstallType()
  2221.    SetSymbolValue SYM_NETWORK$, network$
  2222.      ELSE
  2223.    SetSymbolValue SYM_NETWORK$, gSTANDARD$
  2224.      END IF     
  2225.    END IF
  2226.  
  2227.  
  2228.    '****************************************
  2229.    '******* MISC TRIVIA (Initializing) *****
  2230.    '****************************************
  2231.  
  2232.    '** Even though a Window title is not shown, we need
  2233.    '**  to set the title, so it shows up in the task list.
  2234.    SetTitle LdString(SID_TKT_STD_TITLE)
  2235.  
  2236.    '** The default location of the copy gauge is centered at screen bottom
  2237.    SetCopyGaugePosition -1,32000
  2238.  
  2239. END SUB
  2240.  
  2241. '*************************************************************************
  2242. '** SUB ConfigureAUTOEXEC
  2243. '**
  2244. '** Purpose: Configure AUTOEXEC.BAT after copying files.
  2245. '**            
  2246. '** Author:    CHRISTOPHER MOY
  2247. '** Arguments: None
  2248. '** Returns:   NONE
  2249. '*************************************************************************
  2250. SUB ConfigureAUTOEXEC
  2251.    DIM n%, i%, notused%, notused1$, rc$
  2252.    DIM hwnd%, lr%
  2253.  
  2254. '** DETERMINE IF AUTOEXEC.BAT NEEDS MODIFICATIONS
  2255. SetSymbolValue SYM_NEEDSHARE$, gFALSE$   
  2256. SetSymbolValue SYM_NEEDNOTES$, gFALSE$    
  2257.  
  2258. '**** Win32 does not require autoexec modifictaion *********
  2259. %rem
  2260.  
  2261. n% = Reg_GetNumberOfProducts()
  2262.  
  2263. FOR i% = 1 to n%
  2264.    IF Reg_GetSHAREEXESupport(i%) <> FALSE THEN
  2265. '**      IF IsShareInAUTOEXEC() = FALSE THEN  '** if share is not in autoexec   
  2266. '**         SetSymbolValue SYM_NEEDSHARE$, gTRUE$   '** use symbols?
  2267. '**         EXIT FOR
  2268. '**      ELSE
  2269.       IF IsShareInstalled() = FALSE THEN '**if share is in autoexec
  2270.     SetSymbolValue SYM_NEEDSHARE$, gTRUE$    '**but not running.
  2271.     EXIT FOR
  2272.       END IF
  2273.    END IF
  2274. NEXT
  2275.  
  2276. FOR i% = 1 to n%
  2277.    IF Reg_GetNotesSupport(i%) <> FALSE THEN
  2278.       IF IsNotesInPath() = FALSE THEN
  2279.     SetSymbolValue SYM_NEEDNOTES$, gTRUE$    '** use symbols? 
  2280.     EXIT FOR
  2281.       END IF
  2282.    END IF
  2283. NEXT
  2284.  
  2285. IF GetSymbolValue(SYM_NEEDSHARE$) = gTRUE$ OR GetSymbolValue(SYM_NEEDNOTES$) = gTRUE$ THEN
  2286.   IF GetSymbolValue(SYM_AUTOMATIONINST$) <> gTRUE$ THEN
  2287.       notused% = RegisterCallback("CALLBACK", "AUTOEXECCB")
  2288.       notused1$ = PopupModalDlg(DB_AUTOEXEC, DB_AUTOEXEC)
  2289.  
  2290.       '** Get value in SYM_AUTOEXEC_CHOICE$ from button
  2291.       '** pressed in DB_AUTOEXEC dialog.
  2292.       notused% = RegisterCallback("CALLBACK", "INSTALLCOMPLETECB")
  2293.  
  2294.       SELECT CASE GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  2295.  
  2296.          CASE "AUTO"
  2297.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTO, DB_SUCCESS_AUTO)
  2298.  
  2299.          CASE "AUTOCOPY"   
  2300.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTOCOPY, DB_SUCCESS_AUTOCOPY)
  2301.  
  2302.          CASE "MAN"
  2303.       notused1$ = PopupModalDlg(DB_SUCCESS_AUTOMAN, DB_SUCCESS_AUTOMAN)
  2304.  
  2305.    END SELECT
  2306.   ELSE
  2307.    notused% = Lot_AutoConfigureAutoexec()
  2308.         '** Tell the user we are all done
  2309.       rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2310.   END IF
  2311.  
  2312. ELSE
  2313.    '** Tell the user we are all done
  2314.    rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2315.  
  2316. END IF
  2317.  
  2318. %endrem
  2319. '**** Win32 does not require autoexec modifictaion *********
  2320.  
  2321.    '** Tell the user we are all done
  2322.    
  2323.    IF ExitExecRestart=FALSE THEN
  2324.       rc$ = PopupModalDlg(DB_SUCCESS_REBOOT, DB_SUCCESS_REBOOT)
  2325.       IF rc$="OK"  THEN
  2326.          hwnd%=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  2327.          lr%=SendMessage(hwnd%, WM_COMMAND, UM_REBOOTFLAG, 0)
  2328.         ELSE
  2329.             RebootLater% = TRUE
  2330.       END IF
  2331.    ELSE
  2332.    
  2333.       rc$ = PopupModalDlg(DB_SUCCESS, DB_SUCCESS)
  2334.       
  2335.    END IF      
  2336.  
  2337. END SUB
  2338.  
  2339. SUB InitStickyCopyList(network$, direction$)
  2340. '*************************************************************************
  2341. '** Purpose: Initialize copy list, while preserving user settings from a
  2342. '**    previous customize; if the install type changes, local global flag
  2343. '**    FirstTime$ is reset.  This flag is reset when the user backs up to
  2344. '**   the xxxSSAPPSEL portion of the code
  2345. '**            
  2346. '** Author:    JMDonohue
  2347. '** Arguments: 
  2348. '** network$    install type: standard, server, node
  2349. '** direction$    direction
  2350. '*************************************************************************
  2351.     IF FirstTime$ <> network$ THEN
  2352.         ResetCopyList    '** Reset the copylist
  2353.     END IF
  2354.     IF FirstTime$ <> network$ OR _
  2355.             GetSymbolValue(SYM_SIZEOFINSTALL$) <> gCUSTOM$ THEN
  2356.         direction$ = Lot_CallProductFunctions("InitCopyList", direction$, FALSE, gALLPRODUCTS$, "")
  2357.         FirstTime$ = network$
  2358.     END IF
  2359. END SUB 
  2360.  
  2361. DIM ServerWinDir$
  2362. DIM ServerWinSysDir$
  2363.  
  2364. SUB Lot_DetectSharedWindows() 
  2365. '*************************************************************************
  2366. '** Purpose: Determine if this is a shared windows installation.
  2367. '**    For a server install determine if the shared windows location is 
  2368. '**    writeable.  If writeable, asks the user to confirm copying files 
  2369. '**    there, if not ask the user to confirm a standard server install.  
  2370. '**   Sets the value of global gIsSharedWindows% 
  2371. '**            
  2372. '** Author:    JMDonohue
  2373. '** Arguments: NONE
  2374. '*************************************************************************
  2375.     DIM windir$, network$, s$, i%
  2376.     DIM IsDirWriteable%, direction$
  2377. '' We assume that if there is a file names 'machines.ini' in the Windows
  2378. '' directory, then it it
  2379.     s$ = GetWindowsSysDir() 
  2380.     ServerWinSysDir$ = s$
  2381.     i% = Len(s$)     'Assume last character is \
  2382.     DO 
  2383.         i% = i% - 1
  2384.     LOOP    UNTIL Mid(s$, i%, 1) = "\"
  2385.     windir$ = Mid(s$, 1, i%)
  2386.     ServerWinDir$ = windir$
  2387.     IF DoesFileExist(windir$ + "machines.ini", femExists) THEN 
  2388.         gIsSharedWindows% = TRUE 
  2389.     ELSE
  2390.         gIsSharedWindows% = FALSE
  2391.     END IF
  2392.    network$ = GetSymbolValue(SYM_NETWORK$)
  2393.    IF network$ <> gSERVER$ THEN EXIT SUB
  2394.     IF gIsSharedWindows% = FALSE THEN EXIT SUB
  2395.  
  2396.     ' Set the values of these symbols to point to the shared server
  2397.     SetSymbolValue SYM_WINDIR$,     ServerWinDir$   
  2398.     SetSymbolValue SYM_WINSYSDIR$,ServerWinSysDir$ 
  2399.  
  2400. '' For server, this is a shared windows install only if location writeable 
  2401.     IsDirWriteable% = CInt(Lot_IsDirWritable(ServerWinSysDir$))
  2402.     IF IsDirWriteable% = 0 THEN
  2403.         gIsSharedWindows% = FALSE
  2404.         direction$ = Lot_SharedWindowsDlg (DB_NOSHAREDWINDOWS)
  2405.     END IF
  2406.     
  2407. END SUB    
  2408.  
  2409. SUB Lot_DoServerSharedWindows()
  2410. '*************************************************************************
  2411. '**    Purpose: For server shared windows, copy the system 
  2412. '**    and font files to the shared server locations, keyed on sections in the 
  2413. '**    inf file with the following special destination directory symbols:
  2414. '**    
  2415. '**    SYM_LOTUSFONTSDIR$, SYM_WINDIR$ and SYM_WINSYSDIR$ 
  2416. '**            
  2417. '** Author:    JMDonohue
  2418. '** Arguments: NONE
  2419. '*************************************************************************
  2420.    DIM chapter$, DirSym$, InorOut% 
  2421.     DIM SpecialDirectorySymbolList LIST AS INTEGER
  2422.     DIM WindowsChaptersList LIST AS INTEGER
  2423.    SpecialDirectorySymbolList(SYM_WINDIR$) = 1
  2424.    SpecialDirectorySymbolList(SYM_WINSYSDIR$) = 1
  2425.    SpecialDirectorySymbolList(SYM_LOTUSFONTSDIR$) = 1
  2426.  
  2427.     IF gIsSharedWindows% = FALSE THEN EXIT SUB
  2428.  
  2429.     ' We have a writeable shared windows location,
  2430.     ' Copy the system files to the shared windows location
  2431.     ' (have already been copied to normal server location)
  2432.  
  2433.     ' Find the chapters to copy
  2434.     chapter$ = Lot_GetFirst("", F_INOROUT)
  2435.     WHILE (chapter$ <> "")
  2436.         DirSym$ = Lot_GetChapterValStr(chapter$, F_DESTDIRSYM)
  2437.         IF IsElement(SpecialDirectorySymbolList(DirSym$)) = TRUE THEN 
  2438.             WindowsChaptersList(chapter$) = 1
  2439.         END IF
  2440.         chapter$ = Lot_GetNext()
  2441.     WEND
  2442.  
  2443.     ' Turn off all sections, turn on the ones in list
  2444.     chapter$ = Lot_GetFirst("", F_NOTHING)
  2445.     WHILE (chapter$ <> "")
  2446.         Lot_SetChapterFilesInCopyListInOrOut chapter$, 0
  2447.         chapter$ = Lot_GetNext()
  2448.     WEND
  2449.     
  2450.    FORALL sym IN WindowsChaptersList
  2451.         chapter$ = ListTag(sym) 
  2452.         Lot_SetChapterFilesInCopyListInOrOut chapter$, 1
  2453.    END FORALL
  2454.     
  2455.     ' Set the values of these symbols to point to the shared server
  2456.     SetSymbolValue SYM_WINDIR$,     ServerWinDir$   
  2457.     SetSymbolValue SYM_WINSYSDIR$,ServerWinSysDir$ 
  2458.     Lot_SetLotusFontsDir
  2459.  
  2460.     Lot_RefreshDestination(SYM_WINDIR$)
  2461.     Lot_RefreshDestination(SYM_WINSYSDIR$)
  2462.     CopyFilesInCopyList
  2463.    ERASE WindowsChaptersList
  2464.  
  2465. END SUB
  2466.  
  2467. PUBLIC SUB Lot_SetLotusFontsDir
  2468. '*************************************************************************
  2469. '**    Purpose: Sets the value of the special destination directory symbol
  2470. '**    LOTUSFONTSDIR to the official Windows fonts directory
  2471. '**   NOTE: SYM_WINDIR$ and SYM_WINSYSDIR$ must have been set prior to call
  2472. '**            
  2473. '** Author:    JMDonohue
  2474. '**     
  2475. '*************************************************************************
  2476.     IF IsNewShell() THEN
  2477.         SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINDIR$) _
  2478.             + LdString(SID_FONTS95_DIR) + "\"
  2479.     ELSE
  2480.         SetSymbolValue SYM_LOTUSFONTSDIR$, GetSymbolValue(SYM_WINSYSDIR$)
  2481.     END IF
  2482.     Lot_RefreshDestination (SYM_LOTUSFONTSDIR$)
  2483. END SUB
  2484.  
  2485. SUB Lot_DoSharedDLLs()
  2486. '*************************************************************************
  2487. '** Purpose: Traverses the copy list looking for sections whose section
  2488. '** keyword ends in "_SHRCNT", and increments the usage count in the registry
  2489. '** for these files
  2490. '**  
  2491. '** Author: JMDonohue
  2492. '**************************************************************************
  2493.     DIM s$, szSym$, szSect$, i%, n%, chapter$, Keyword$, DestDir$ 
  2494.     DIM SharedDLLList LIST AS STRING
  2495.     DIM ProdDLL$
  2496.  
  2497.     szSym$ = "SHAREDDLLS"
  2498. '' Traverse all copy list sections, find files in those using "_SHRCNT" suffix
  2499.     chapter$ = Lot_GetFirst("", F_INOROUT)
  2500.     WHILE (chapter$ <> "")
  2501.         Keyword$ = Lot_GetChapterValStr(chapter$, F_KEYWORD)
  2502.         DestDir$ = Lot_GetChapterValStr(chapter$, F_DESTDIR)
  2503.         s$ = Right$(Keyword$,7)
  2504.         IF s$ = "_SHRCNT" THEN 
  2505.             szSect$ = Lot_GetChapterValStr(chapter$, F_NOTHING)
  2506.             ' Get the renamed filename if it exists
  2507.             n% = FGetSectionFileList (szSym$, szSect$, 1)
  2508.             n% = GetListLength(szSym$)
  2509.             '' For each shared DLL in section, create fully qualified pathname
  2510.             '' and add to list of filenames 
  2511.             FOR i% = 1 TO n%
  2512.                 s$ = DestDir$ + GetListItem(szSym$, i%) 
  2513.                 '' Save an entry for each product that uses the file(prodno-file)
  2514.                 ProdDLL$ = LEFT(chapter$,1) +  "-" + s$
  2515.                 IF ISELEMENT(SharedDLLList(ProdDLL$)) = FALSE THEN _
  2516.                     SharedDLLList(ProdDLL$) = s$
  2517.             NEXT
  2518.             RemoveSymbol szSym$
  2519.         END IF
  2520.         chapter$ = Lot_GetNext()
  2521.     WEND
  2522. '' Traverse list, increment the usage count in the registry
  2523.     FORALL sym IN SharedDLLList
  2524.         IncrementSharedDLLCount(sym)
  2525.     END FORALL
  2526.     
  2527. END SUB
  2528.  
  2529.  
  2530. SUB TurnOffSharedWinsysSections()
  2531. '****************************************************************************
  2532. '** Purpose: For a shared windows installation, don't copy system files, since
  2533. '**                these should already be on the shared windows server
  2534. '**
  2535. '** Author:  JMD
  2536. '**
  2537. '****************************************************************************
  2538. DIM DirSym$, chapter$
  2539.     IF gIsSharedWindows% = FALSE THEN EXIT SUB
  2540.  
  2541.     ' Find the chapters to turn off
  2542.     chapter$ = Lot_GetFirst("", F_INOROUT)
  2543.     WHILE (chapter$ <> "")
  2544.         DirSym$ = Lot_GetChapterValStr(chapter$, F_DESTDIRSYM)
  2545.         IF DirSym$ =  SYM_WINSYSDIR$ THEN 
  2546.             Lot_SetChapterFilesInCopyListInOrOut chapter$, 0
  2547.         END IF
  2548.         chapter$ = Lot_GetNext()
  2549.     WEND
  2550. END SUB
  2551.