home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 January / pcwk_01_1999_B.iso / Lotus123 / GERMAN / INSTALL.DSK / AUTOMATE.LSS < prev    next >
Text File  |  1996-05-23  |  45KB  |  1,406 lines

  1. ''/*********************************************************************
  2. ''
  3. ''   Module Name:   automate.lss
  4. ''
  5. ''   Module Code:   TOOLKIT
  6. ''
  7. ''   Author:  Thangaraj Veerappan
  8. ''
  9. ''   Creation Date:  Aug 31, 1994
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1991
  12. ''
  13. ''
  14. ''   Description: 
  15. ''
  16. ''   Additional authors:  
  17. ''                       
  18. ''
  19. ''   Change History:
  20. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/automate.l@s  $
  21. '' 
  22. ''    Rev 1.27   23 May 1996 12:21:00   jdonohue
  23. '' Replaced LEFTBP calls with LEFT
  24. '' 
  25. ''    Rev 1.26   07 May 1996 12:55:04   glutz
  26. '' In Lot_AutoGetProgramGroupOrFolder changed WhatPlatform calls to 
  27. '' IsNewShell. SPR#CDWT34LJLA
  28. '' 
  29. ''    Rev 1.25   07 May 1996 10:16:24   glutz
  30. '' fixed up logic for node options handling SPR#CDWT353MX9.
  31. '' 
  32. ''    Rev 1.24   04 Mar 1996 08:31:08   jdonohue
  33. '' Remove 16 bit shared component support -- pass 1 : eliminate LOTUSAPP
  34. '' 
  35. ''    Rev 1.23   01 Mar 1996 10:57:18   glutz
  36. '' The Lot_AutoProcessNodeOptions uses the CustomizeNodeOptions ACRONYM keyword
  37. '' for setting node options
  38. '' 
  39. ''    Rev 1.22   28 Feb 1996 15:07:32   glutz
  40. '' Lot_AutoProcessNodeOptions now processes available options individually.
  41. '' 
  42. ''    Rev 1.21   28 Feb 1996 14:50:34   cmoy
  43. '' added header
  44. ''
  45. ''*********************************************************************/
  46.  
  47.  
  48. USE "TOOLKIT"
  49. OPTION DECLARE
  50.  
  51.  
  52.  
  53. '*****
  54. 'AUTOMATION
  55. PUBLIC gAutoFile$
  56. PUBLIC gLogFile$
  57. DECLARE PUBLIC FUNCTION Lot_AutoGetProductDestDirSymbol () AS INTEGER
  58. DECLARE PUBLIC FUNCTION Lot_AutoGetBaseDirSymbol () AS STRING
  59. DECLARE PUBLIC FUNCTION Lot_GetKeyValFromResponseFile (Section$, Key$) AS STRING
  60. DECLARE PUBLIC FUNCTION Lot_AutoGetInstallType () AS STRING
  61. DECLARE PUBLIC FUNCTION Lot_AutoGetProgramGroupOrFolder () AS INTEGER
  62. DECLARE PUBLIC FUNCTION Lot_AutoGetSizeOfInstall () AS INTEGER
  63. DECLARE PUBLIC FUNCTION AutoCheckForSpace () AS INTEGER
  64. DECLARE PUBLIC FUNCTION Lot_AutoGetUserInfo () AS INTEGER
  65. DECLARE PUBLIC FUNCTION Lot_AutoConfigureAutoexec () AS INTEGER
  66. DECLARE PUBLIC SUB AutoInstallReboot () 
  67. DECLARE PUBLIC FUNCTION Lot_AutoWriteOutDebugFile () AS INTEGER
  68. DECLARE PUBLIC FUNCTION Lot_AutoIsThisNetLotusApp (LotusIniPath$, ExistingCommDir$) AS INTEGER
  69. DECLARE PUBLIC FUNCTION Lot_AutoConsolidateMoveCopy () AS INTEGER
  70. DECLARE PUBLIC FUNCTION Lot_AutoConsolidateLotusAppDir (gConsolidateSize&) AS INTEGER
  71. DECLARE PUBLIC FUNCTION Lot_AutoChangeLotusAppDir () AS INTEGER
  72. DECLARE PUBLIC FUNCTION Lot_AutoSuiteAppSelect () AS INTEGER
  73. DECLARE PUBLIC FUNCTION Lot_AutoProcessNodeOptions () AS INTEGER
  74. DECLARE PUBLIC FUNCTION Lot_AutoGetSetLicenserInfo () AS INTEGER
  75. DECLARE PUBLIC FUNCTION Lot_AutoInstallCustomize () AS INTEGER
  76. DECLARE PUBLIC FUNCTION Lot_AutoCustomizeShare () AS INTEGER
  77. DECLARE PUBLIC FUNCTION Lot_AutoInstallSuiteCustomize () AS INTEGER
  78. DECLARE PUBLIC FUNCTION Lot_AutoSetSrvNodeOptions () AS INTEGER
  79. DECLARE PUBLIC FUNCTION Lot_AutoAddiconOptions () AS INTEGER
  80. DECLARE PUBLIC SUB AutoSetParentDir 
  81.  
  82. DECLARE FUNCTION Lot_AutoCheckRSPPath (rsppath$) AS STRING
  83.  
  84.  
  85. '*************************************************************************
  86. '**                             AUTOMATION
  87. '*************************************************************************
  88. '** PUBLIC FUNCTION Lot_GetKeyValFromResponseFile (Section$, Key$) AS STRING
  89. '**
  90. '** Purpose:   reads in values from the response file. 
  91. '** Author:    Thangv
  92. '** Arguments:  section and key 
  93. '** Returns:   the key value
  94. '*************************************************************************
  95. PUBLIC FUNCTION Lot_GetKeyValFromResponseFile (Section$, Key$) AS STRING
  96.    
  97.    DIM Platform%
  98.    '** Automation Intialization: needs to be moved else where.
  99.    IF gAutoFile$ = "" THEN
  100.     gAutoFile$ = GetSymbolValue(SYM_RSPPATH$)
  101.  
  102.     '** For win95 the FFileExists(init.c)function seems to return true if
  103.     '** the file is in the CWD or at the root.
  104.     '** if in the cwd build the path to rsp file for Getinikey to work.
  105.     Platform% = WhatPlatForm()
  106.     IF (PlatForm% = PLATFORM_WIN95 OR PlatForm% = PLATFORM_WINNT) _
  107.         AND INSTR(gAutoFile$,"\") = 0 THEN 
  108.        gAutoFile$ = GetSymbolValue(SYM_STF_SRCDIR$)+ gAutoFile$ 
  109.     END IF
  110.  
  111.        'DEBUGGING INFO -- PLEASE RETAIN
  112.        'gAutoFile$ = GetSymbolValue(SYM_STF_CWDDIR$)+"auto.rsp"
  113.        'gAutoFile$ = GetSymbolValue(SYM_STF_CWDDIR$)+"autosuit.rsp"
  114.  
  115.     IF DoesFileExist (gAutoFile$,femExists) = 0 THEN
  116.            ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_NORSP)
  117.            ERROR STFQUIT
  118.     END IF
  119.    END IF
  120.    
  121.    Lot_GetKeyValFromResponseFile = GetIniKeyString(gAutoFile$,Section$,Key$)
  122.  
  123. END FUNCTION
  124.  
  125. '*************************************************************************
  126. PUBLIC FUNCTION Lot_AutoGetProductDestDirSymbol () AS INTEGER
  127. '** Purpose:    Get the destination directory symbols
  128. '**             from the RSP file -- used in AUTOMATION             
  129. '**             
  130. '** Author:     Jill Salter Plump     
  131. '** Arguments:  
  132. '** Returns:    TRUE if successful    
  133. '**             
  134. '*************************************************************************
  135. DIM notused%, prodno%, lname$, n%, i%, d%, DirSymbol1$, DirListSymbol$
  136. DIM proddirectory$, errText$, rc$
  137. DIM saveproddirectory$
  138.  
  139. Lot_AutoGetProductDestDirSymbol = FALSE
  140.  n% = Reg_GetNumberOfProducts()
  141.  
  142. ' IF GetSymbolValue(SYM_SINGLESMARTSUITE$) <> gSMARTSUITE$ THEN
  143.     For prodno% = 1 to n%
  144.         lname$ = Reg_GetProductAcronym(prodno%)
  145.         IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" AND lname$ <> "SUIT" Then
  146.             DirListSymbol$ = Reg_GetDirSymbolList(prodno%)  
  147.             d% = Reg_GetNumOfDirectories(prodno%)
  148.             'd% = GetListLength(DirListSymbol$)
  149.             For i% = 1 to d%
  150.                 DirSymbol1$ = GetListItem(DirListSymbol$, i%)
  151.                 ' Save the original value in case if fails
  152.                 saveproddirectory$ = GetSymbolValue (DirSymbol1$)
  153.                 proddirectory$ = Lot_GetKeyValFromResponseFile (lname$,DirSymbol1$)
  154.                 
  155.                 proddirectory$ = Lot_AutoCheckRSPPath(proddirectory$)
  156.  
  157.                 IF LEN(proddirectory$)  > 0 THEN
  158.                     SetSymbolValue DirSymbol1$, proddirectory$
  159.  
  160.                    rc$ = Lot_CallOneProductFunction(prodno%, "PathChange",gNEXT$, _
  161.                          FALSE, |"| + DirSymbol1$ + |",TRUE|)
  162.                     IF rc$ = gBACK THEN
  163.                         SetSymbolValue DirSymbol1$, saveproddirectory$
  164.                         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PRODDIR) + "  " + lname$
  165.                         ERROR STFQUIT
  166.                     END IF
  167.  
  168.                 ELSE
  169.                     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PRODDIR) + "  " + lname$
  170.                     ERROR STFQUIT
  171.                 END IF
  172.             Next
  173.         END IF
  174.     Next
  175. ' END IF
  176. Lot_AutoGetProductDestDirSymbol = TRUE
  177. END FUNCTION
  178. '*************************************************************************
  179. FUNCTION Lot_AutoCheckRSPPath (rsppath$) AS STRING
  180. '** Purpose:    To validate paths from RSP file
  181. '**                          
  182. '**             
  183. '** Author:     Jill Salter Plump     
  184. '** Arguments:  The path from the RSP file
  185. '** Returns:    Valid path input -- path with "\" on the end        
  186. '**             Invalid path input (includes bad path, non-existent path
  187. '**                      and empty path) -- empty string
  188. '**
  189. '**             IMPORTANT!!! -- calling functions should check path length
  190. '**                             upon return for LEN > 0 before proceeding.
  191. '**                             If LEN (path$) < 1, caller should singal
  192. '**                             error in RSP file path and quit if default
  193. '**                             path not available.
  194. '*************************************************************************
  195.  
  196. Lot_AutoCheckRSPPATH = ""
  197.  
  198. IF LEN(rsppath$) > 0 THEN
  199.  
  200.     IF RIGHT$(rsppath$, 1) <> "\" THEN
  201.         rsppath$ = rsppath$+ "\"
  202.     END IF
  203.  
  204.     IF ValidatePath(rsppath$) <> FALSE THEN
  205.         Lot_AutoCheckRSPPATH = rsppath$
  206.     END IF
  207.     
  208. END IF
  209.  
  210. END FUNCTION
  211. '*************************************************************************
  212. PUBLIC FUNCTION Lot_AutoGetBaseDirSymbol () AS STRING
  213. '** Purpose:    Get the BASEDIR symbol (for Suite)
  214. '**             from the RSP file -- used in AUTOMATION             
  215. '**             
  216. '** Author:     Jill Salter Plump     
  217. '** Arguments:  
  218. '** Returns:    TRUE if successful    
  219. '**                         
  220. '*************************************************************************
  221. DIM notused%, lname$
  222. DIM proddirectory$
  223.  
  224. Lot_AutoGetBaseDirSymbol = ""
  225.  
  226. lname$ = "SUIT"
  227. proddirectory$ = Lot_GetKeyValFromResponseFile (lname$,SYM_BASEDIR$)
  228.  
  229.  
  230. proddirectory$ = Lot_AutoCheckRSPPath(proddirectory$)
  231.  
  232. IF LEN(proddirectory$)  < 1 THEN
  233.     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_BASEDIR) + "  " + lname$
  234.     ERROR STFQUIT
  235. END IF
  236.  
  237. Lot_AutoGetBaseDirSymbol = proddirectory$
  238.  
  239. END FUNCTION
  240.  
  241. '*************************************************************************
  242. '** PUBLIC FUNCTION Lot_AutoGetInstallType () AS STRING
  243. '**
  244. '** Purpose:   reads in values from the response file. 
  245. '** Author:    Thangv
  246. '** Arguments:  section and key 
  247. '** Returns:   the key value
  248. '*************************************************************************
  249. PUBLIC FUNCTION Lot_AutoGetInstallType () AS STRING
  250.  
  251.     DIM installtype$
  252.     DIM lname$ 
  253.  
  254.     lname$ = "General Information"
  255.  
  256.     installtype$ = Lot_GetKeyValFromResponseFile(lname$,"InstallType")
  257.  
  258.     SELECT CASE installtype$
  259.       case "1"
  260.      Lot_AutoGetInstallType = gSTANDARD$
  261.       case "2"
  262.      Lot_AutoGetInstallType = gSERVER$
  263.       case "3"
  264.      Lot_AutoGetInstallType = gDISTRIBUTION$
  265.       case "4"
  266.      IF GetSymbolValue (SYM_NETWORK$) <> gNODE$ THEN
  267.         ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_NODE)
  268.         ERROR STFQUIT
  269.      END IF        
  270.       case else
  271.      ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_INSTALLTYPE)+ "  " + lname$
  272.      ERROR STFQUIT
  273.     'Log Error: Invalid entry
  274.      Lot_AutoGetInstallType = ""    
  275.     END SELECT
  276.  
  277. END FUNCTION
  278.  
  279.  
  280. '*************************************************************************
  281. '** PUBLIC FUNCTION Lot_AutoGetProgramGroupOrFolder () AS INTEGER
  282. '**
  283. '** Purpose:   Reads in values from the response file for Program Group
  284. '**            or start menu folder, to be created under programs in Win95.
  285. '**            Checks value for validity, uses the Default Group for the
  286. '**            first registered product or "Lotus Applications" if the
  287. '**            user's value is invalid. 
  288. '** Author:    Jill Salter Plump, Thangaraj Veerappan
  289. '** Arguments: 
  290. '** Returns:   
  291. '** Replaces:   PROGMANGROUPCB
  292. '*************************************************************************
  293. PUBLIC FUNCTION Lot_AutoGetProgramGroupOrFolder () AS INTEGER
  294. DIM proggroup$, DefaultGroup$, CheckName$, failed%, count%, errText$
  295. DIM lname$, newShell%
  296. DIM InvChar LIST AS STRING
  297.    
  298.    InvChar("*") = "1"
  299.    InvChar("+") = "1"
  300.    InvChar("|") = "1"
  301.    InvChar(":") = "1"
  302.    InvChar(|"|) = "1"
  303.    InvChar("<") = "1"
  304.    InvChar(">") = "1"
  305.    InvChar("?") = "1"
  306.    InvChar("=") = "1"
  307.    InvChar("[") = "1"
  308.    InvChar("]") = "1"
  309.    InvChar("\") = "1"
  310.    InvChar(";") = "1"
  311.    InvChar(",") = "1"
  312.    InvChar("/") = "1"
  313.    InvChar(")") = "1"
  314.    InvChar("(") = "1"
  315.    InvChar(".") = "1"  '* MMETH; I believe that this is a valid character
  316.  
  317.    'TV: These are also invalid characters.
  318.    InvChar("'") = "1" 
  319.    InvChar("@") = "1" 
  320.    InvChar("{") = "1" 
  321.    InvChar("}") = "1" 
  322.    InvChar("#") = "1" 
  323.    InvChar("%") = "1" 
  324.    InvChar("!") = "1" 
  325.    InvChar("`") = "1" 
  326.    InvChar("$") = "1" 
  327.    InvChar("^") = "1" 
  328.    InvChar("~") = "1" 
  329.    InvChar("-") = "1" 
  330.    InvChar("_") = "1" 
  331.    InvChar("&") = "1" 
  332.  
  333. DefaultGroup$=Reg_GetProgManagerGroupName(1)
  334. IF DefaultGroup$="" THEN
  335.    DefaultGroup$="Lotus Application"
  336. END IF
  337.  
  338. lname$ = "General Information"
  339. newShell% = IsNewShell()
  340. IF newShell% <> FALSE  THEN
  341.     '** Win95 and NT 4.x
  342.     proggroup$ = Lot_GetKeyValFromResponseFile(lname$,"StartmenuFolder")
  343.  
  344. ELSE
  345.     '** WinNT 3.x and Win3.x                                                                
  346.      proggroup$ = Lot_GetKeyValFromResponseFile(lname$,"ProgramGroup")
  347. END IF
  348.     
  349. IF proggroup$ = "" THEN
  350.     proggroup$=DefaultGroup$
  351. END IF
  352.  
  353. ' Validate the name if it is a new one
  354. ' The ilegal characters in the name are:
  355. ' * + | : " < > ? + { } \ ; ,  /  MMETH removed the period
  356. ' if the path consists only of " then the group name will be )]
  357. ' if the path consists only of ) or ] or , the group is not created
  358. failed% = 1
  359.  
  360. '** TV: Reject only if the group name consists entirely of Invalid 
  361. '**characters
  362. CheckName$ = proggroup$  
  363. FOR count% = 1 TO LEN(proggroup$)
  364.    IF ISELEMENT(InvChar(LEFT$(CheckName$,1))) = FALSE THEN
  365.       failed% = 0
  366.       EXIT FOR
  367.    END IF 
  368.    CheckName$ = RIGHT$(Checkname$,LEN(CheckName$)-1)
  369. NEXT
  370.  
  371. '*** TV: The " character cannot be permitted.
  372. '** This breaks the script execution later!!
  373. IF INSTR(1,proggroup$,|"|) <> 0 THEN
  374.       failed% = 1
  375. END IF 
  376.  
  377. IF failed% <> 0 THEN
  378.     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_PROGGROUP) + "  " + lname$
  379.     ERROR STFQUIT
  380. END IF
  381.  
  382. IF newShell% <> FALSE THEN
  383.      '** Win95: SelectedFolder has complete path 
  384.      proggroup$ = Reg_GetRootFolder() + "\" + proggroup$
  385.      Reg_SetSelectedFolder  1,proggroup$
  386. ELSE
  387.      Reg_SetProgManagerGroup 1,proggroup$
  388. END IF
  389.  
  390. END FUNCTION
  391.  
  392. '*************************************************************************
  393. '** PUBLIC FUNCTION Lot_AutoGetSizeOfInstall () AS STRING
  394. '**
  395. '** Purpose:   reads in values from the response file. 
  396. '** Author:    Jill Salter Plump
  397. '** Arguments: 
  398. '** Returns:   
  399. '** Replaces:   
  400. '*************************************************************************
  401. PUBLIC FUNCTION Lot_AutoGetSizeOfInstall () AS INTEGER
  402.     DIM size$, lname$, i%, nProds%
  403.  
  404.    Lot_AutoGetSizeOfInstall = FALSE
  405.  
  406.    '**** TV: we don't need this check for now
  407.    '** If GetSymbolValue(SYM_SINGLESMARTSUITE$)= gSINGLE$ Then
  408.         lname$ = Reg_GetProductAcronym(1)
  409.         size$ = Lot_GetKeyValFromResponseFile(lname$,"SizeOfInstall")
  410.    '** Else
  411.     'SMARTSUITE: Full & Min for all products. Custom : Set Size of install
  412.     'for each product
  413.    '** End IF
  414.  
  415.    SELECT CASE size$
  416.       case "1"
  417.      size$ = gCOMPLETE$
  418.       case "2"
  419.      size$ = gLAPTOP$
  420.       case "3"
  421.      size$ = gCUSTOM$
  422.       case else
  423.      ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_SIZEOFINSTALL)+ "  " + lname$
  424.      ERROR STFQUIT
  425.     'Log Error: Invalid entry
  426.    END SELECT
  427.  
  428.    SetSymbolValue SYM_SIZEOFINSTALL$, size$
  429.  
  430.    '** Reset all the sizes
  431.    size$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  432.    nProds% = Reg_GetNumberOfProducts()
  433.    FOR i% = 1 to nProds%
  434.       Reg_SetSelectedInstallType i%, size$
  435.    NEXT
  436.    
  437.    Lot_AutoGetSizeOfInstall = TRUE
  438.  
  439. END FUNCTION
  440. '*************************************************************************
  441.  
  442. PUBLIC FUNCTION AutoCheckForSpace() AS INTEGER
  443. '** Purpose: Checks to see if there is enough space on dest directories
  444. '**          First does a cheap check, followed, if need be by a high
  445. '**          granularity check.
  446. '** Author: Thangaraj Veerappan
  447. '** Arguments:
  448. '**     
  449. '**     
  450. '** Returns: SUCCESS/FAILURE
  451. '**     
  452. '*************************************************************************
  453.     DIM lTicks&, lcb&, lNew&, i%, lcbNeed&, dr$, s$, helpId&, rc$
  454.     DIM notused1$, curcursor&, j%, UNCSym$
  455.  
  456.    '** Try a quick check
  457.    AutoCheckForSpace = SUCCESS
  458.    lcb&          = LcbGetChapterCost("", "", SYM_COST$, SYM_NEEDED$)
  459.    IF lcb& = CLNG(0) THEN
  460.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  461.       GOTO ENDCHECK
  462.    END IF
  463.    '** Try A High Granularity Check
  464.    curcursor& = ShowWaitCursor()
  465.    SetListItem "IDC_BMP", 1, STR$(IDD_MAXSCAN_BMP) '** put up the bitmap
  466.    notused1$ = PopupModelessDlg(DB_CHECKSPACE, DB_CHECKSPACE)
  467.    lcb& = GetCopyListCost (gEXTRA, SYM_COST$, SYM_NEEDED$)
  468.    UIPOP 1     '** Bring down DB_CHECKSPACE
  469.    RestoreCursor curcursor&
  470.    IF lcb& = CLNG(0) THEN
  471.       DisplayWhenSpaceIsTight SYM_COST$, SYM_NEEDED$
  472.       GOTO ENDCHECK
  473.    END IF
  474.  
  475.    '** If you get here then there was not enough space (Tab is CHR$(9))
  476.    FOR i% = 1 TO 26
  477.       lcbNeed& = CLNG(GetListItem(SYM_NEEDED$, i%))
  478.       IF  lcbNeed& > 0 THEN
  479.      dr$ = CHR$(ASC("A")+i%-1) + ": " 
  480.      s$  = dr$ & (lcbNeed& + 4)
  481.       END IF
  482.    NEXT
  483.  
  484.    '** unc stuff 
  485.    j%=GetListLength("UNCVOLLIST")
  486.    FOR i% = 1 to j%
  487.       UNCSym$ = GetListItem("UNCVOLLIST",i%)
  488.       lcbNeed& = CLNG(GetListItem(UNCSym$, 3))
  489.       IF lcbNeed&  > 0 THEN
  490.          IF IsDBCSFirstAtOffset(UNCSym$, 18) = 0 THEN
  491.             s$ = Left(UNCSym$, 18)
  492.          ELSE
  493.             s$ = Left(UNCSym$, 17)
  494.          END IF
  495.          s$ = s$ & CHR$(9) & (lcbNeed& + 4)
  496.      AddlistItem "IDC_LIST1", s$ + gStrK$
  497.       END IF
  498.    NEXT
  499.  
  500.     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_DRV_INSUFSPACE)+ s$ + LdString(SID_KBYTE_CHAR)
  501.     ERROR STFQUIT                           
  502.    'Log space needed and drive information: s$
  503.    AutoCheckForSpace = FAILURE
  504.  
  505. ENDCHECK:
  506.  
  507.    RemoveSymbol(SYM_COST$)
  508.    RemoveSymbol(SYM_NEEDED$)
  509.  
  510. END FUNCTION
  511.  
  512. '*************************************************************************
  513. '** PUBLIC FUNCTION Lot_AutoGetUserInfo () AS INTEGER
  514. '**
  515. '** Purpose:   Reads in values from the response file for User Name and
  516. '**            Company Name
  517. '**            
  518. '**            
  519. '** Author:    Jill Salter Plump
  520. '** Arguments: 
  521. '** Returns:   
  522. '** Replaces:   WELCOMECB
  523. '*************************************************************************
  524. PUBLIC FUNCTION Lot_AutoGetUserInfo () AS INTEGER
  525. DIM uname$, company$, defname$, defcompany$
  526. DIM lname$
  527.  
  528. Lot_AutoGetUserInfo = FALSE
  529.  
  530. 'Get Defaults
  531. defname$   = GetSymbolValue(SYM_NAME$)
  532. defcompany$ = GetSymbolValue(SYM_COMPANY$)
  533.  
  534. 'Get User Name from Command Line
  535. uname$ = GetSymbolValue(SYM_USERNAME$)
  536.  
  537. lname$ = "User Registration"
  538.  
  539. IF LEN (uname$) < 1 THEN
  540.     uname$ = Lot_GetKeyValFromResponseFile(lname$,"UserName")
  541.     IF LEN (uname$) < 1 THEN
  542.         IF LEN (defname$) < 1 THEN
  543.               uname$ = GetSymbolValue(SYM_NAME$)
  544.               IF LEN (uname$) < 1 THEN
  545.             uname$ = "Unknown User"
  546.             'ADD ERROR
  547.             'print "Warning:  Unknown User"                                             
  548.               END IF      
  549.         ELSE
  550.              uname$ = defname$
  551.         END IF                
  552.     END IF        
  553. END IF
  554.     SetSymbolValue SYM_NAME$, uname$
  555.  
  556. company$ = Lot_GetKeyValFromResponseFile(lname$,"CompanyName")
  557. IF LEN (company$) < 1 THEN
  558.     IF LEN (defcompany$) < 1 THEN
  559.           company$ = GetSymbolValue(SYM_COMPANY$)
  560.           IF LEN (company$) < 1  THEN
  561.         company$ = "Unknown Company"
  562.         'ADD ERROR
  563.           END IF      
  564.     ELSE
  565.          company$ = defcompany$
  566.     END IF                
  567. END IF        
  568.  
  569.     SetSymbolValue SYM_COMPANY$, company$
  570.  
  571.     Lot_AutoGetUserInfo = TRUE
  572.  
  573. END FUNCTION
  574.  
  575. '*************************************************************************
  576. '** PUBLIC FUNCTION Lot_AutoConfigureAutoexec () AS INTEGER
  577. '**
  578. '** Purpose:  Determines if the autoexec needs to be configured and the
  579. '**           system rebooted. 
  580. '** Author:    Thangv
  581. '** Arguments:   
  582. '** Returns:   TRUE or FALSE
  583. '*************************************************************************
  584. PUBLIC FUNCTION Lot_AutoConfigureAutoexec () AS INTEGER
  585. DIM modflag%, notused1$, reboot$, lname$
  586.  
  587.  Lot_AutoConfigureAutoexec = FALSE
  588.     lname$ = "General Information"
  589.     reboot$ = Lot_GetKeyValFromResponseFile(lname$, "Autoexec")
  590.  
  591.    SELECT CASE reboot$
  592.  
  593.       CASE "1"            ''** Yes button:IDC_OK
  594.      modflag% = 0
  595.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  596.         modflag% = 1            '** autoexec needs notes
  597.      END IF
  598.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  599.         modflag% = modflag% + 2 '** autoexec needs share
  600.      END IF
  601.      IF modflag% <> FALSE THEN
  602.         notused1$=ModifyAutoexec(modflag%, 1, "AUTOEXEC.LTS")
  603.      END IF
  604.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTO$
  605.  
  606.       CASE "2"                      '** Make Copy button **
  607.      modflag% = 0               '** test flag situation
  608.      IF GetSymbolValue(SYM_NEEDNOTES$) <> gFALSE$ THEN
  609.         modflag% = 1            '** autoexec needs notes
  610.      END IF
  611.      IF GetSymbolValue(SYM_NEEDSHARE$) <> gFALSE$ THEN
  612.         modflag% = modflag% + 2 '** autoexec needs share
  613.      END IF
  614.      IF modflag% <> FALSE THEN
  615.         notused1$=ModifyAutoexec(modflag%, 0, "AUTOEXEC.LTS")
  616.      END IF
  617.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gAUTOCOPY$
  618.  
  619.       CASE "3"                  '** No button
  620.      SetSymbolValue SYM_AUTOEXEC_CHOICE$, gMAN$
  621.  
  622.       CASE ELSE
  623.      ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_REBOOT) + "  " + lname$
  624.      ERROR STFQUIT
  625.     'Log Error: Invalid entry
  626.    END SELECT
  627.  
  628.     SELECT CASE GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  629.  
  630.     CASE "AUTO"
  631.              'Log appropriate message
  632.     CASE "AUTOCOPY"   
  633.              'Log appropriate message
  634.  
  635.     CASE "MAN"
  636.              'Log appropriate message
  637.  
  638.     END SELECT
  639.  
  640.  Lot_AutoConfigureAutoexec = TRUE
  641.  
  642.  
  643.      
  644.  
  645. END FUNCTION
  646.  
  647. '*************************************************************************
  648. '** PUBLIC SUB AutoInstallReboot () 
  649. '**
  650. '** Purpose:  reboots the system. 
  651. '** Author:    Thangv
  652. '** Arguments:   
  653. '** Returns:   TRUE or FALSE
  654. '*************************************************************************
  655. PUBLIC SUB AutoInstallReboot () 
  656.    DIM notused1$, hwnd&, lr&
  657.       'notused1$ = Lot_CallProductFunctions("PostSuccessReg", gNext, FALSE, gALLPRODUCTS,"")
  658.       hwnd&=FindWindow("LInstallWClass",LdString(SID_INST_WINDOW_TITLE))
  659. ' Japanese build
  660. '     hwnd&=FindWindow("LInstallWClass","âìü[â^âX âCâôâXâgü[âïâvâìâOâëâÇé╓éµéñé▒é╗")
  661.       lr&=SendMessage(hwnd&, WM_COMMAND, UM_REBOOTFLAG, 0)
  662.  
  663. END SUB
  664.  
  665. '*************************************************************************
  666. '** PUBLIC FUNCTION Lot_AutoWriteOutDebugFile () AS INTEGER
  667. '**
  668. '** Purpose:   
  669. '**            
  670. '**            
  671. '**            
  672. '** Author:    Jill Salter Plump
  673. '** Arguments: 
  674. '** Returns:   
  675. '*************************************************************************
  676. PUBLIC FUNCTION Lot_AutoWriteOutDebugFile () AS INTEGER
  677. DIM notused%, mybuffer$, symbolbuff$, uname$
  678. DIM FileExist&, TBD$, spacer$
  679. DIM rc%, lrc&, SectionName$, SectionPref$, SectionNumber%, SectionTag$
  680. DIM KeywordName$, KeywordPref$, KeywordNumber%, KeywordTag$, KeywordValue$
  681. DIM DebugLog$, DebugIni$, AutoRsp$
  682. DIM sname$, scompany$, stype$, sproggroup$, slotusappdir$, ssize$
  683. DIM i%, n%, licensedprod%
  684.  
  685. Lot_AutoWriteOutDebugFile = 0
  686.  
  687. IF GetSymbolValue(SYM_AUTOMATIONINST$) = gTRUE$ THEN
  688.  
  689.   IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  690.     DebugLog$ = GetWindowsDir() + "autosuit.out"
  691.     DebugIni$ = GetWindowsDir() + "autosuit.ini"
  692.   ELSE
  693.     DebugLog$ = GetWindowsDir() + "auto.out"
  694.     DebugIni$ = GetWindowsDir() + "auto.ini"
  695.   END IF        
  696.  
  697. FileExist&=DoesFileExist(DebugIni$, femExists)
  698.  
  699. IF FileExist& <> 1 THEN
  700.     GOTO NODEBUGLOG
  701. END IF
  702.  
  703. TBD$ = "NOT YET IMPLEMENTED!!!"
  704. spacer$ = ""
  705.  
  706. FileExist&=DoesFileExist(DebugLog$, femExists)
  707.  
  708. IF FileExist&=1 THEN
  709.      RemoveFile DebugLog$, cmoNone
  710. END IF 
  711.  
  712.  
  713.  
  714. 'Initialize the loop
  715. SectionPref$="section"
  716. SectionNumber%=1
  717. SectionTag$=SectionPref$+LTRIM$(STR(SectionNumber%))
  718. SectionName$ = GetIniKeyString(DebugIni$,"Sections", SectionTag$)
  719.  
  720. 'Using auto.ini as a data driver I find all the section entries and
  721. 'log them to the debugging file
  722.  
  723. DO
  724.  
  725. mybuffer$ = spacer$
  726. 'WriteToFile DebugLog$, mybuffer$
  727.  
  728. lrc& = DoesIniSectionExist (gAutoFile$, SectionName$) 
  729.  
  730. mybuffer$ = "[" + SectionName$ + "]"
  731.  
  732. IF lrc& = 1 THEN
  733. '        WriteToFile DebugLog$, mybuffer$
  734.     KeywordPref$="option"
  735.     KeywordNumber%=1
  736.     KeywordTag$=KeywordPref$+LTRIM$(STR(KeywordNumber%))
  737.     'DoMsgBox("KeywordTag$",KeywordTag$ ,MB_OK)
  738.     'DoMsgBox("gSharedIniFile$ where used",gSharedIniFile$ ,MB_OK)
  739.     KeywordName$ = GetIniKeyString(DebugIni$,SectionName$, KeywordTag$)
  740.  
  741.     DO
  742.     SELECT CASE KeywordName$
  743.  
  744.       case "UserName"
  745.         KeywordValue$ = GetSymbolValue(SYM_NAME$)
  746.         sname$ = "UserName: " + KeywordValue$
  747.  
  748.         uname$ = GetSymbolValue(SYM_USERNAME$)
  749.  
  750.         IF LEN (uname$) >= 1 THEN
  751.             IF KeywordValue$ <> uname$ THEN
  752.             KeywordValue$ = "Mismatch:" + uname$ + "from command" + KeywordValue$ + "used"
  753.             ELSE
  754.             KeywordValue$ = KeyWordValue$ + "     <----   From Command Line"
  755.             END IF
  756.         END IF
  757.  
  758.       case "CompanyName"
  759.         KeywordValue$ = GetSymbolValue(SYM_COMPANY$)
  760.         scompany$ = "CompanyName:" + KeywordValue$ 
  761.  
  762.       case "InstallType"
  763.         KeywordValue$ = GetSymbolValue(SYM_NETWORK$)
  764.         SELECT CASE KeywordValue$                
  765.               case gSTANDARD$
  766.              KeywordValue$ = "1 (Standard)" 
  767.               case gSERVER$
  768.              KeywordValue$ = "2 (Server)"
  769.               case gDISTRIBUTION$
  770.              KeywordValue$ = "3 (Distribution)"
  771.         END SELECT
  772.         stype$ = "InstallType:" + KeywordValue$
  773.  
  774.       case "Autoexec"
  775.         KeywordValue$ = GetSymbolValue(SYM_AUTOEXEC_CHOICE$)
  776.         SELECT CASE KeywordValue$
  777.             case gAUTO$
  778.                KeywordValue$ = "1 (Auto)"         
  779.             case gAUTOCOPY$                
  780.                KeywordValue$ = "2 (AutoCopy)"
  781.             case gMAN$
  782.                KeywordValue$ = "0 (Manual)"
  783.         END SELECT
  784.  
  785.       case "ProgramGroup"
  786.         KeywordValue$ = Reg_GetProgManagerGroupName(1)
  787.         sproggroup$ = "ProgramGroup:" + KeywordValue$
  788.  
  789.       case "Licenser"
  790.         KeywordValue$ = "NOT IMPLEMENTED YET!!!" 
  791.     
  792.       case "LICDIR"
  793.         KeywordValue$ = GetSymbolValue(SYM_LICDIR$)
  794.  
  795.       case "LICCOUNTDIR"
  796.         n% = Reg_GetNumberOfProducts()
  797.         FOR i% = 1 to n%
  798.           IF Reg_GetProdSupportForLicense (i%) <> FALSE THEN
  799.             licensedprod% = i%
  800.             KeywordValue$ = Reg_GetCountDirectory(licensedprod%)
  801.             EXIT FOR
  802.           ELSE
  803.             KeywordValue$ = "Licenser not supported"    
  804.           END IF
  805.         NEXT
  806.  
  807.       case "NodeOptions"
  808.         KeywordValue$ = TBD$
  809.  
  810.       case "Consolidation"
  811.         KeywordValue$ = TBD$
  812.  
  813.       case "SQLServerName"
  814.         KeywordValue$ = TBD$
  815.  
  816.       case "PARADOXNetInfo"
  817.         KeywordValue$ = TBD$
  818.  
  819.       case "BASEDIR"
  820.         KeywordValue$ =GetSymbolValue(SYM_BASEDIR$) 
  821.  
  822.       case "SizeofInstall"
  823.         KeywordValue$ = GetSymbolValue(SYM_SIZEOFINSTALL$)
  824.  
  825.         SELECT CASE KeywordValue$
  826.             case gCOMPLETE$
  827.                KeywordValue$ = "1 (Complete)"         
  828.             case gLAPTOP$                
  829.                KeywordValue$ = "2 (Laptop)"
  830.             case gCUSTOM$
  831.                KeywordValue$ = "3 (Custom)"
  832.         END SELECT
  833.         ssize$ = "SizeofInstall" + KeywordValue$        
  834.     
  835.       case "123"
  836.         KeywordValue$ = TBD$
  837.  
  838.       case "AMI"
  839.         KeywordValue$ = TBD$
  840.  
  841.       case "ORG"
  842.         KeywordValue$ = TBD$
  843.  
  844.       case "APR"
  845.         KeywordValue$ = TBD$
  846.  
  847.       case "123DIR"
  848.         KeywordValue$ = GetSymbolValue(KeywordName$)
  849.  
  850.       case "123WORKDIR"
  851.  
  852.         IF GetSymbolValue(SYM_NETWORK$) = gSTANDARD$  OR _
  853.            GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN
  854.             KeywordValue$ = GetSymbolValue(KeywordName$) 
  855.         ELSE
  856.         KeywordValue$ = "Only supported in Standalone or Node"
  857.         END IF
  858.  
  859.       case "Customize123"
  860.         KeywordValue$ = TBD$
  861.  
  862.       case "AMIDIR"
  863.         KeywordValue$ = GetListItem("AMIDIRS", 1) 
  864.  
  865.       case "ORGDIR"
  866.         KeywordValue$ = GetListItem("ORGDIRS", 1) 
  867.        
  868.  
  869.     END SELECT 
  870.  
  871.     mybuffer$ = KeywordName$ + "="+ KeywordValue$
  872. '        notused% = WriteToFile(DebugLog$, mybuffer$)
  873.  
  874.     KeywordNumber% = KeywordNumber% + 1
  875.     KeywordTag$=KeywordPref$+LTRIM$(STR(KeywordNumber%))
  876.     KeywordName$ = GetIniKeyString(DebugIni$,SectionName$, KeywordTag$)
  877.     LOOP UNTIL KeywordName$ = ""
  878.  
  879. ELSE
  880.     mybuffer$ = mybuffer$ + " missing from RSP"        
  881. '        notused% = WriteToFile(DebugLog$, mybuffer$)
  882. END IF
  883.  
  884.  
  885. SectionNumber% = SectionNumber% + 1
  886. SectionTag$=SectionPref$+LTRIM$(STR(SectionNumber%))
  887. 'DoMsgBox("SectionTag$",SectionTag$ ,MB_OK)
  888. 'DoMsgBox("gSharedIniFile$ where used",gSharedIniFile$ ,MB_OK)
  889. SectionName$ = GetIniKeyString(DebugIni$,"Sections", SectionTag$)
  890. 'DoMsgBox("SectionName$",SectionName$ ,MB_OK)
  891. LOOP UNTIL SectionName$ = ""
  892.  
  893. Lot_AutoWriteOutDebugFile = 1
  894.  
  895. 'print sname$,,scompany$,, stype$,, sproggroup$,, slotusappdir$,, ssize$
  896.  
  897. NODEBUGLOG:
  898.  
  899. ELSE
  900.  
  901. END IF
  902.  
  903.  
  904. END FUNCTION
  905.  
  906. '*************************************************************************
  907. '** PUBLIC FUNCTION Lot_AutoConsolidateMoveCopy () AS INTEGER
  908. '**
  909. '** Purpose:   Assums that at the prompt DBM_CONSOLIDATE_MOVECOPY the user
  910. '**            selected copy
  911. '**            
  912. '** Author:    MZ
  913. '** Arguments: NONE
  914. '** Returns:   TRUE
  915. '** Replaces:  CONSOLIDATEMOVECOPY
  916. '*************************************************************************
  917. PUBLIC FUNCTION Lot_AutoConsolidateMoveCopy () AS INTEGER
  918.    ' Is a copy
  919.    'print "copy"     
  920.    SetSymbolValue "SYM_MOVE", "0"
  921.    SetSymbolValue "SYM_COPY", "1"
  922.    Lot_AutoConsolidateMoveCopy = TRUE
  923. END FUNCTION
  924.  
  925. '*************************************************************************
  926. '** PUBLIC FUNCTION Lot_AutoSuiteAppSelect () AS INTEGER
  927. '**
  928. '** Purpose:   reads in values from the response file for suite app.selection. 
  929. '** Author:    Thangaraj Veerappan
  930. '** Arguments: 
  931. '** Returns:   TRUE or FALSE
  932. '** Replaces:   
  933. '*************************************************************************
  934. PUBLIC FUNCTION Lot_AutoSuiteAppSelect () AS INTEGER
  935.     DIM Selection%, lname$, prodno%, nProds%
  936.     DIM sname$, rspval$    
  937.  
  938.    Lot_AutoSuiteAppSelect = FALSE
  939.  
  940.    
  941.    If GetSymbolValue(SYM_SINGLESMARTSUITE$)= gSMARTSUITE$ Then
  942.  
  943.    sname$ = "Select Applications"     
  944.    nProds% = Reg_GetNumberOfProducts()
  945.      For prodno% = 2 to nProds%
  946.         lname$ = Reg_GetProductAcronym(prodno%)
  947.         IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" Then
  948.             rspval$ = Lot_GetKeyValFromResponseFile(sname$, lname$)
  949.             IF rspval$ <> "" THEN
  950.                 Selection% = CINT(rspval$)
  951.             ELSE
  952.                 Selection% = -1
  953.             END IF  
  954.             IF Selection% <> 0 AND Selection% <> 1 THEN
  955.             '** Error in response file
  956.                 ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_SELECTAPPS)
  957.                 ERROR STFQUIT
  958.             ELSE
  959.                 Reg_SetUIInOrOut prodno%, Selection%
  960.             END IF
  961.                 
  962.             ' Find out if product actually exists on the server
  963.             ' Set if off if not
  964.             IF GetSymbolValue(SYM_NETWORK$) = gNODE$ THEN 
  965.                 lname$ = Reg_GetProductAcronym(prodno%)
  966.                 IF Lot_IsTheFeatureInstalled(lname$ + "TOP") = 0 THEN
  967.                     Reg_SetUIInOrOut prodno%, 0
  968.                 END IF
  969.             END IF        
  970.         END IF        
  971.     Next
  972.  
  973.    End IF
  974.  
  975.    Lot_AutoSuiteAppSelect = TRUE
  976.  
  977. END FUNCTION
  978.  
  979. '*************************************************************************
  980. '** PUBLIC FUNCTION Lot_AutoProcessNodeOptions () AS INTEGER
  981. '**
  982. '** Purpose:   reads in values from the response file for node options and does
  983. '**            the processing. 
  984. '** Author:    Thangaraj Veerappan
  985. '** Arguments: 
  986. '** Returns:   TRUE or FALSE
  987. '** Replaces:   
  988. '*************************************************************************
  989. PUBLIC FUNCTION Lot_AutoProcessNodeOptions () AS INTEGER
  990.  
  991. DIM AllProdNum%,prodNum%,AllOptNum%,OptName$,OptNum%,notused%
  992. DIM nodeoption%, Chapter$, lname$, rspval$
  993.  
  994.    Lot_AutoProcessNodeOptions = TRUE
  995.    'Loop through the products and turn the options on
  996.    AllProdNum% = 0
  997.    AllProdNum% = Reg_GetNumberOfProducts()
  998.    IF AllProdNum% <> 0 THEN
  999.      FOR prodNum%=1 TO AllProdNum%
  1000.        AllOptNum% = 0
  1001.        AllOptNum% = Reg_GetNumofNodeOptions(prodNum%)
  1002.        IF AllOptNum% <> 0 THEN
  1003.          lname$ = "CustomizeNodeOptions" + Reg_GetProductAcronym(prodNum%)
  1004.          'Loop though registered options and toggle them according
  1005.          'to response file.  If they are not avail turn them off
  1006.          FOR OptNum%=1 TO AllOptNum% 
  1007.            OptName$ = Reg_GetNodeOptionStr(prodNum%,OptNum%)
  1008.            nodeoption% = 0
  1009.            Chapter$ = Lot_GetChapterFromKeyword(OptName$)
  1010.            IF Lot_IsTheNodeOptionsAvailToNode(prodNum%,OptName$) = 1 THEN
  1011.              rspval$ = Lot_GetKeyValFromResponseFile(lname$, OptName$)
  1012.              IF rspval$ = "1" THEN
  1013.                nodeoption% = 1
  1014.              END IF                
  1015.            END IF
  1016.            notused% = Lot_SetChapterFilesInCopyListInOrOut(Chapter$, _
  1017.                         nodeoption%)
  1018.          NEXT
  1019.        END IF
  1020.      NEXT
  1021.    END IF
  1022. END FUNCTION
  1023.  
  1024. '*************************************************************************
  1025. PUBLIC FUNCTION Lot_AutoGetSetLicenserInfo () AS INTEGER
  1026. '** Purpose:    Get the destination directory symbols
  1027. '**             from the RSP file -- used in AUTOMATION             
  1028. '**             
  1029. '** Author:     Jill Salter Plump     
  1030. '** Arguments:  
  1031. '** Returns:    TRUE if successful    
  1032. '**             
  1033. '*************************************************************************
  1034. STATIC licselected%, licensedprod% 
  1035. DIM i%, n%, dirtochange$, lname$
  1036. DIM chpt$, notused%, countdir$
  1037. DIM firstslash%, lastslash%, fullpath$
  1038. DIM countbasedir$, counttaildir$, rspval$
  1039.  
  1040.    Lot_AutoGetSetLicenserInfo = FALSE
  1041.  
  1042.    lname$ = "Server Install"
  1043.  
  1044.    licensedprod% = 0
  1045.    licselected% = 0
  1046.    n% = Reg_GetNumberOfProducts()
  1047.  
  1048.    '** FIND THE FIRST LICENSED PRODUCT. ONLY WORKS FOR SINGLE PRODUCT!
  1049.    FOR i% = 1 to n%
  1050.       IF Reg_GetProdSupportForLicense (i%) <> FALSE THEN
  1051.      licensedprod% = i%
  1052.      EXIT FOR
  1053.       END IF
  1054.    NEXT
  1055.  
  1056.    IF licensedprod% <> 0 THEN
  1057.  
  1058.       rspval$ = Lot_GetKeyValFromResponseFile (lname$, "Licenser")
  1059.  
  1060.       IF rspval$ <> "" THEN
  1061.      licselected% = CINT(rspval$)
  1062.       ELSE
  1063.      ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICENSER) + "  " + lname$
  1064.      ERROR STFQUIT        
  1065.       END IF                
  1066.  
  1067.    END IF
  1068.  
  1069.    IF GetSymbolValue(SYM_SINGLESMARTSUITE$) = gSMARTSUITE$ THEN
  1070.     '** For suite propagate the lic. selection to all products
  1071.     '** that are selected and support lic.
  1072.     FOR i% = 1 to n%
  1073.      IF Reg_GetProdSupportForLicense (i%) <> FALSE AND _
  1074.         Reg_GetUIInOrOut(i%) <> FALSE  THEN
  1075.           Reg_SetLicenseSelected i%, licselected%
  1076.      END IF
  1077.     NEXT
  1078.       ELSE      
  1079.      Reg_SetLicenseSelected licensedprod%, licselected%
  1080.       END IF
  1081.  
  1082. IF licselected% = 1 THEN
  1083.       '** CONFIGURE COPYLIST TO ACCOUNT FOR LICENSER FILES
  1084.       IF Reg_IsLicenseSelected(licensedprod%) <> FALSE Then
  1085.      chpt$ = Lot_GetChapterFromKeyword("LIC" + gTOP$)
  1086.      notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 1)    
  1087.       ELSE
  1088.      chpt$ = Lot_GetChapterFromKeyword("LIC" + gTOP$)
  1089.      notused% = Lot_SetChapterFilesInCopyListInOrOut(chpt$, 0)
  1090.       END IF
  1091.  
  1092.       IF Reg_IsLicenseSelected(licensedprod%) <> FALSE Then
  1093.      '** ACCOUNT FOR LOTUS LICENSER DIRECTORY CHANGE
  1094.      dirtochange$ = Lot_GetKeyValFromResponseFile ("Server Install", "LICDIR")  
  1095.      IF Lot_AutoCheckRSPPath(dirtochange$) <> "" THEN
  1096.          SetSymbolValue SYM_LICDIR$, dirtochange$
  1097.          Lot_RefreshDestination(SYM_LICDIR$)
  1098.       ELSE
  1099.          ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICDIR) + "  " + lname$
  1100.          ERROR STFQUIT
  1101.       END IF
  1102.  
  1103.        '** ACCOUNT FOR LOTUS COUNT DIRECTORY CHANGE
  1104.        dirtochange$ = Lot_GetKeyValFromResponseFile (lname$, "LICCOUNTDIR")   
  1105.        IF Lot_AutoCheckRSPPath(dirtochange$) = "" THEN
  1106.          ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICDIR) + "  " + lname$
  1107.          ERROR STFQUIT
  1108.        END IF
  1109.         licensedprod% = 0
  1110.         FOR i% = 1 to Reg_GetNumberofProducts()
  1111.             IF Reg_GetProdSupportForLicense(i%) <> FALSE THEN
  1112.                 licensedprod% = i%
  1113.                 countdir$ = Lot_TrimEndSlash(Reg_GetCountDirectory(licensedprod%))
  1114.                 firstslash% = INSTR(countdir$, "\") : lastslash% = firstslash%
  1115.                 WHILE firstslash% <> 0
  1116.                     lastslash% = firstslash% : firstslash% = INSTR(firstslash%+1, countdir$, "\")
  1117.                 WEND
  1118.                 countdir$ = countdir$ + "\"
  1119.                 counttaildir$ = RIGHT$(countdir$, LEN(countdir$) - lastslash%)
  1120.                 fullpath$ = MakePath(dirtochange$, counttaildir$)
  1121.                 IF ValidatePath(fullpath$) <> FALSE THEN
  1122.                     Reg_SetCountDirectory licensedprod%, fullpath$
  1123.                 ELSE
  1124.                     ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_LICCOUNTDIR) + "  " + lname$
  1125.                     ERROR STFQUIT
  1126.                 END IF
  1127.             END IF
  1128.         NEXT
  1129.       END IF
  1130.  
  1131. END IF                  'licselected = TRUE
  1132.  
  1133.  
  1134.  
  1135. Lot_AutoGetSetLicenserInfo = TRUE
  1136.  
  1137. END FUNCTION
  1138.  
  1139.  
  1140. '*************************************************************************
  1141. '** PUBLIC FUNCTION Lot_AutoInstallCustomize () AS INTEGER
  1142. '**
  1143. '** Purpose:   reads in values from the response file. 
  1144. '** Author:    Thangv
  1145. '** Arguments:   
  1146. '** Returns:   TRUE if successful
  1147. '*************************************************************************
  1148. PUBLIC FUNCTION Lot_AutoInstallCustomize () AS INTEGER
  1149. DIM tabchpt$, prodfeaturechpt$, RspInOrOut%, Rspval$
  1150. DIM lname$, rc%, prodno%, n%, chpt$, tab_name$, prodfeature$ 
  1151.  
  1152.     Lot_AutoInstallCustomize = FALSE
  1153.  
  1154.     n% = Reg_GetNumberOfProducts()
  1155.     For prodno% = 1 to n%
  1156.       lname$ = Reg_GetProductAcronym(prodno%)
  1157.       IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" AND _
  1158.      lname$ <> "SUIT"  Then
  1159.     IF Reg_GetUIInOrOut (prodno%) = 1 AND _
  1160.        Reg_GetProdSelectedInstallType (prodno%) = gCUSTOM$ THEN
  1161.         chpt$ = Lot_GetChapterFromKeyword(lname$ + gTOP$)
  1162.         '** DND: If no first chapter then we need to do somthing
  1163.         prodfeaturechpt$  = Lot_GetFirst(chpt$, F_DISPLAY + F_CUSTOM)
  1164.         WHILE (prodfeaturechpt$ <> "")
  1165.            prodfeature$ = Lot_GetChapterValStr (prodfeaturechpt$, F_KEYWORD)
  1166.            Rspval$ = Lot_GetKeyValFromResponseFile("Customize"+lname$,prodfeature$)
  1167.            '** script bug work around: generates Type mismatch and crashes
  1168.            IF Rspval$ <> "" THEN
  1169.          RspInOrOut% = CINT(Rspval$)
  1170.  
  1171.          IF RspInOrOut% <> 0 AND RspInOrOut% <> 1 THEN
  1172.            ErrorMsg SID_ERR_AUTO_INSTALL, "Feature selection entry in response file invalid: " + prodfeature$
  1173.            ERROR STFQUIT
  1174.          END IF
  1175.          rc% = Lot_SetChapterFilesInCopyListInOrOut(prodfeaturechpt$,RspInOrOut%)
  1176.            END IF
  1177.            '*** Goto next sibbling feature chpt$
  1178.            prodfeaturechpt$ = Lot_GetNext()  
  1179.         WEND
  1180.  
  1181.     END IF
  1182.       END IF
  1183.     Next
  1184.  
  1185. Lot_AutoInstallCustomize = TRUE
  1186.  
  1187. END FUNCTION
  1188.  
  1189. '*************************************************************************
  1190. '** PUBLIC FUNCTION Lot_AutoCustomizeShare () AS INTEGER
  1191. '**
  1192. '** Purpose:   reads in values from the response file. 
  1193. '** Author:    Thangv
  1194. '** Arguments:   
  1195. '** Returns:   TRUE if successful
  1196. '*************************************************************************
  1197. PUBLIC FUNCTION Lot_AutoCustomizeShare () AS INTEGER
  1198. DIM sharechpt$, RspInOrOut%, Rspval$, prodchpt$
  1199. DIM lname$, rc%, n%, chpt$, sharefeature$,prodkeyword$
  1200.  
  1201.     Lot_AutoCustomizeShare = FALSE
  1202.  
  1203.     lname$ = Reg_GetProductAcronym(1)
  1204.     sharechpt$ = Lot_GetFirst("", F_DISPLAY + F_CUSTOM + F_SHARE)
  1205.               
  1206.     '** DND: If no first chapter then we need to do somthing
  1207.         
  1208.     WHILE (sharechpt$ <> "")
  1209.  
  1210.       '** for the shared chpt check if the product it belongs to
  1211.       '** is in the copylist. 
  1212.       '** Only the shared chpt$ of a product being installed
  1213.       '** is processed. This works as long as the same shared keywords are
  1214.       '** listed in all the products for a specific shared feature.
  1215.  
  1216.       prodchpt$ = LEFT$(sharechpt$,1)
  1217.       prodkeyword$ = Lot_GetChapterValStr (prodchpt$, F_KEYWORD)
  1218.       IF FIsKeywordinCopyList (prodkeyword$) <> FALSE THEN
  1219.      sharefeature$ = Lot_GetChapterValStr (sharechpt$, F_KEYWORD)
  1220.      IF LEFT$(sharefeature$,5) = "WIN32" THEN
  1221.         '** 32 bit shared component
  1222.         Rspval$ = Lot_GetKeyValFromResponseFile("Shared Components", sharefeature$)
  1223.      ELSE
  1224.         '** 16 bit lotusapp component               
  1225.         Rspval$ = Lot_GetKeyValFromResponseFile("Lotusapp",sharefeature$)
  1226.      END IF
  1227.     '** script bug work around: generates Type mismatch and crashes
  1228.     IF Rspval$ <> "" THEN
  1229.        RspInOrOut% = CINT(Rspval$)
  1230.        IF RspInOrOut% <> 0 AND RspInOrOut% <> 1 THEN
  1231.            ErrorMsg SID_ERR_AUTO_INSTALL, LdString (SID_ERR_AUTO_SHRCOMPNENT) + sharefeature$
  1232.            ERROR STFQUIT
  1233.        END IF
  1234.        rc% = Lot_SetChapterFilesInCopyListInOrOut(sharechpt$,RspInOrOut%)
  1235.     ELSE
  1236.       '*** Log error: feature missing from the response file        
  1237.     END IF
  1238.       END IF
  1239.       '*** Goto next shared feature chpt$
  1240.       sharechpt$ = Lot_GetNext()  
  1241.     WEND
  1242.  
  1243. Lot_AutoCustomizeShare = TRUE
  1244.  
  1245. END FUNCTION
  1246.  
  1247. '*************************************************************************
  1248. '** PUBLIC FUNCTION Lot_AutoInstallSuiteCustomize () AS INTEGER
  1249. '**
  1250. '** Purpose:   reads in values from the response file. 
  1251. '** Author:    Thangv
  1252. '** Arguments:   
  1253. '** Returns:   TRUE if successful
  1254. '*************************************************************************
  1255. PUBLIC FUNCTION Lot_AutoInstallSuiteCustomize () AS INTEGER
  1256.  
  1257.     Lot_AutoInstallSuiteCustomize = FALSE
  1258.  
  1259.     DIM sizetype$, direction$ 
  1260.     DIM lname$, rc%, prodno%, n%  
  1261.     n% = Reg_GetNumberOfProducts()
  1262.     For prodno% = 1 to n%
  1263.       lname$ = Reg_GetProductAcronym(prodno%)
  1264.       IF lname$ <> "" AND lname$ <> "INST" AND lname$ <> "LIC" AND _
  1265.      lname$ <> "SUIT"  Then
  1266.        IF Reg_GetUIInOrOut(prodno%) = 1 THEN
  1267.          sizetype$ = Lot_GetKeyValFromResponseFile(lname$,"SizeOfInstall")
  1268.      IF sizetype$ = "" THEN
  1269.         ErrorMsg SID_ERR_AUTO_INSTALL, "SizeOfInstall entry missing from section: " + lname$
  1270.         ERROR STFQUIT
  1271.      END IF
  1272.         If sizetype$ = "1" Then         '*** gCOMPLETE$ 
  1273.         Reg_SetSelectedInstallType prodno%, gCOMPLETE$
  1274.         direction$ = Lot_CallOneProductFunction(prodno%, "InitCopyList", gNEXT, TRUE, "")
  1275.         ElseIf sizetype$ = "2" Then      '*** gLAPTOP$
  1276.         Reg_SetSelectedInstallType prodno%, gLAPTOP$
  1277.         direction$ = Lot_CallOneProductFunction(prodno%, "InitCopyList", gNEXT, TRUE, "")
  1278.         End If
  1279.        END IF
  1280.       END IF
  1281.     Next
  1282. Lot_AutoInstallSuiteCustomize = TRUE
  1283.  
  1284. END FUNCTION
  1285.  
  1286. '*************************************************************************
  1287. PUBLIC SUB AutoSetParentDir 
  1288. '** Purpose:    Get the BASEDIR symbol (for Single product),
  1289. '**             from the RSP file -- used in AUTOMATION             
  1290. '**             
  1291. '** Author:     TV     
  1292. '** Arguments:  
  1293. '** Returns:        
  1294. '**                         
  1295. '*************************************************************************
  1296. DIM notused%, lname$
  1297. DIM parentdirectory$
  1298.  
  1299.     '*** single product no is always 1 *****
  1300.     lname$ = Reg_GetProductAcronym(1)
  1301.     parentdirectory$ = Lot_GetKeyValFromResponseFile (lname$,SYM_BASEDIR$)
  1302.  
  1303.     parentdirectory$ = Lot_AutoCheckRSPPath(parentdirectory$)
  1304.  
  1305.     IF LEN(parentdirectory$)  < 1 THEN
  1306.        ErrorMsg SID_ERR_AUTO_INSTALL, LdString(SID_ERR_AUTO_BASEDIR) + "  " + lname$
  1307.        ERROR STFQUIT
  1308.     END IF
  1309.     
  1310.     SetSymbolValue SYM_BASEDIR$, parentdirectory$ 
  1311.  
  1312. END SUB
  1313.  
  1314. '*************************************************************************
  1315. '** PUBLIC FUNCTION Lot_AutoSetSrvNodeOptions () AS INTEGER
  1316. '**
  1317. '** Purpose:   reads in values from the response file. 
  1318. '** Author:    Thangv
  1319. '** Arguments:   
  1320. '** Returns:   TRUE if successful
  1321. '*************************************************************************
  1322. PUBLIC FUNCTION Lot_AutoSetSrvNodeOptions () AS INTEGER
  1323.  
  1324.    DIM chpt$, nodesel%, nodeoptsel$
  1325.    DIM NumOfProds%, OptNum%, OptName$, ProdNum%, prodno$
  1326.    DIM i%, j%,k%, notused%, OptKeyWord$
  1327.    DIM lname$   
  1328.    
  1329.    ' If no products are registered exit
  1330.    NumOfProds% = Reg_GetNumberOfProducts()
  1331.    IF NumOfProds%=0 THEN
  1332.       Lot_AutoSetSrvNodeOptions = TRUE
  1333.       EXIT FUNCTION
  1334.    END IF
  1335.    
  1336.    Lot_AutoSetSrvNodeOptions = FALSE
  1337.  
  1338.       ' Loop through products
  1339.      FOR i% = 1 TO NumOfProds%
  1340.      lname$ = "CustomizeNodeOptions" + Reg_GetProductAcronym(i%)
  1341.      Reg_ReSetAllNodeOptsSelToDefaults i%
  1342.      OptNum%=Reg_GetNumofNodeOptions(i%)
  1343.      IF OptNum% <> 0 THEN
  1344.     chpt$ = Lot_GetChapterFromKeyword(Reg_GetProductAcronym(i%) + gTOP$)
  1345.  
  1346.        ' Loop through the options
  1347.        FOR j% = 1 TO OptNum%
  1348.     ' Indent the option name under the product
  1349.     OptKeyWord$ = Reg_GetNodeOptionStr(i%,j%)
  1350.     chpt$ = Lot_GetChapterFromKeyword(OptKeyWord$)
  1351.     IF INT(Lot_GetChapterValInt(chpt$,F_INOROUT)) = 1 THEN
  1352.           nodeoptsel$ = Lot_GetKeyValFromResponseFile(lname$, OptKeyWord$) 
  1353.           'IF nodeoptsel$ <> "0" AND nodeoptsel$ <> "1" THEN
  1354.           '  ErrorMsg SID_ERR_AUTO_INSTALL, "Auto install error"
  1355.           ' ERROR STFQUIT
  1356.           'END IF
  1357.           IF nodeoptsel$ = "0" OR nodeoptsel$ = "1" THEN
  1358.         nodesel% = CINT (nodeoptsel$)   
  1359.         Reg_ReSetNodeOptionSelected i%,j%,nodesel%
  1360.           END IF
  1361.  
  1362.     END IF
  1363.        NEXT
  1364.  
  1365.      END IF
  1366.      NEXT
  1367.  
  1368. Lot_AutoSetSrvNodeOptions = TRUE
  1369.  
  1370. END FUNCTION
  1371.  
  1372. '*************************************************************************
  1373. '** PUBLIC FUNCTION Lot_AutoAddiconOptions () AS INTEGER
  1374. '**
  1375. '** Purpose:   reads AddiconOption values from the response file. 
  1376. '** Author:    Shu Chen
  1377. '** Arguments:   
  1378. '** Returns:   TRUE if successful
  1379. '*************************************************************************
  1380.  
  1381. PUBLIC FUNCTION Lot_AutoAddiconOptions () AS INTEGER
  1382.  
  1383.     DIM AddOption$
  1384.     DIM lname$ 
  1385.  
  1386.     Lot_AutoAddiconOptions = TRUE
  1387.  
  1388.     lname$ = "General Information"
  1389.  
  1390.     AddOption$ = Lot_GetKeyValFromResponseFile(lname$,"AddiconOption")
  1391.  
  1392.     SELECT CASE AddOption$
  1393.       case "1"
  1394.          Lot_AutoAddiconOptions = TRUE
  1395.       case "0"
  1396.          Lot_AutoAddiconOptions = FALSE
  1397.       case else
  1398.           Lot_AutoAddiconOptions = TRUE
  1399.  
  1400.     END SELECT
  1401.  
  1402. END FUNCTION
  1403.  
  1404.  
  1405.  
  1406.