home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1995 December / buyer-1295.iso / borland / viewer4 / viewer.ms_ / viewer.ms
Text File  |  1994-03-02  |  50KB  |  1,520 lines

  1. '**************************************************************************
  2. '*                       Frame Setup Script
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '$INCLUDE 'msregdb.inc'
  8. '$INCLUDE 'fmapi.inc'
  9.  
  10. ''Dialog ID's
  11. CONST ASKEXIT      = 200
  12. CONST DESTPATH     = 300
  13. CONST EXITFAILURE  = 400
  14. CONST EXITQUIT     = 600
  15. CONST EXITSUCCESS  = 700
  16. CONST MAKER30      = 800
  17. CONST PATHHELP     = 900
  18. CONST INSTALLTYPE  = 1000
  19. CONST FILTHELP     = 1100
  20. CONST REGHELP      = 1300
  21. CONST CUSTHELP     = 1400
  22. CONST INTLCUSTINST = 1600
  23. CONST INSTALLHELP  = 1800
  24. CONST EXITNETINSTALL = 1900
  25. CONST FILTERS      = 5200
  26. CONST CUSTINST     = 6200
  27. CONST TOOBIG       = 6300
  28. CONST BADPATH      = 6400
  29. CONST BADREGNUM    = 7100
  30. CONST QUITINST     = 7300
  31. CONST CDGETNAMEORG = 7500
  32. CONST REGALERT     = 7700
  33. CONST NAMEALERT    = 1500
  34. CONST SINGLEPROD   = 2200
  35. CONST ONECUSTINST  = 7600
  36. CONST ONEINSTHELP  = 7800
  37.  
  38. ''Splash screen dialogs
  39. CONST SCREEN1      = 2300
  40. CONST SCREEN2      = 2400
  41. CONST SCREEN3      = 2500
  42. CONST SCREEN4      = 2600
  43. CONST SCREEN5      = 2700
  44. CONST SCREEN6      = 2800
  45. CONST SCREEN7      = 2900
  46. CONST SCREEN8      = 3000
  47. CONST FM_LOGO      = 1999
  48.  
  49. ''Boolean constants
  50. CONST FMTRUE  = -1
  51. CONST FMFALSE =  0
  52.  
  53. ''File Types
  54. ''$IFDEF SINGLEPROD
  55.  
  56. 'CONST BASEFILES            = 1
  57. 'CONST HELPFILES            = 2
  58. 'CONST FILTERFILES   = 3
  59. 'CONST SAMPLEFILES   = 4
  60. 'CONST CLIPARTFILES  = 5
  61. 'CONST TRAINFILES    = 6
  62. 'CONST NETFILES     = 7
  63. 'CONST NUMOPTIONS = 6 ''Number of options
  64. ''$ELSE
  65. CONST BASEFILES     = 1
  66. CONST HELPFILES     = 2
  67. 'CONST DICTFILES     = 3
  68. CONST FILTERFILES   = 3
  69. CONST SAMPLEFILES   = 4
  70. 'CONST CLIPARTFILES  = 6
  71. 'CONST TRAINFILES    = 7
  72. 'CONST NETFILES     = 8
  73. CONST NUMOPTIONS = 4 ''Number of options
  74. ''$ENDIF
  75.  
  76. CONST WS_VISIBLE = &H10000000
  77. CONST WS_BORDER = &H00800000
  78. CONST WS_CLIPCHILDREN = &H02000000
  79. CONST GWL_STYLE = -16
  80. CONST SW_SHOWMAXIMIZED = 3
  81.  
  82. CONST FM30 = 3          ''FrameMaker 3.0
  83. CONST FM40 = 4          ''FrameMaker 4.0
  84. CONST FB10 = 1
  85. CONST NUMENTRIES = 22 ''Max number of filter entries in maker.ini
  86.  
  87. GLOBAL hinst%
  88. GLOBAL hinst1%
  89. GLOBAL hinst2%
  90. GLOBAL numdll%
  91. GLOBAL numframe%
  92.  
  93. GLOBAL DEST$        ''Default destination directory.
  94. GLOBAL WINDRIVE$    ''Windows drive letter.
  95.  
  96. GLOBAL DEMO&        ''Demo version?
  97. GLOBAL INSTALLOPT$  ''Type of installation
  98. GLOBAL USERNAME$    ''User name
  99. GLOBAL COMPANY$     ''Company
  100. GLOBAL REGNUM$      ''Registration number
  101. GLOBAL NUMTRY%      ''Number of times user enters invalid regnum.
  102.             ''Give them 3 chances.
  103. GLOBAL NUMFILTERS%  ''Number of filters
  104.  
  105. '$IFNDEF SINGLEPROD
  106. GLOBAL LANGUIOPT$   ''US or UK English
  107. GLOBAL INSTDLG%     ''ID of install dialog to use (demo, us, or intl)
  108. '$ENDIF
  109.  
  110. ''CustInst list symbol names
  111. GLOBAL BASENEEDS$    ''Option list costs per drive
  112. GLOBAL SAMPLENEEDS$
  113. GLOBAL HELPNEEDS$
  114. GLOBAL TRAINNEEDS$
  115. GLOBAL CLIPARTNEEDS$
  116. '$IFNDEF SINGLEPROD
  117. GLOBAL DICTNEEDS$
  118. '$ENDIF
  119. GLOBAL FILTERNEEDS$
  120. GLOBAL NETNEEDS$
  121. GLOBAL LOGNEED&     ''max size of install.log file - 39430 bytes
  122. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  123. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  124. GLOBAL NOSPACE%
  125.  
  126. ''Dialog list symbol names
  127. GLOBAL CHECKSTATES$
  128. GLOBAL STATUSTEXT$
  129. GLOBAL DRIVETEXT$
  130. GLOBAL FILTLISTIN$
  131. GLOBAL FILTLISTOUT$
  132. GLOBAL SAVELISTOUT$
  133.  
  134. GLOBAL NETINSTALL&
  135. GLOBAL NETINI$          'netsetup.ini file
  136. GLOBAL INCRINSTALL&     'Incremenetal install
  137. GLOBAL NETINCINSTALL&   'Incremental network install
  138. GLOBAL MAKER_30&        'Installing over FM 3.0
  139. GLOBAL FMRESPATH$       'fmres.dll
  140. GLOBAL VIEWERINI$       'builder.ini file
  141.  
  142. GLOBAL CHANGEDPATH&     'Brought up SET PATH dialog
  143. GLOBAL DISPLAYMSG&      'Display installing over 3.0 warning message
  144. GLOBAL DISPLAYED&       'Warning message already displayed for path
  145.  
  146. GLOBAL MAPTABLE(NUMENTRIES) AS STRING   'mapping for filters
  147. TYPE FILTREC
  148.     id AS STRING*3
  149.     entry AS STRING*59
  150. END TYPE
  151. GLOBAL FILTTABLE(NUMENTRIES) AS FILTREC
  152.  
  153. '** Pass arguments as fixed strings to FMGetFields
  154. DIM tmpUser AS STRING *30
  155. DIM tmpOrg AS STRING *30
  156. DIM tmpReg AS STRING *30
  157.  
  158. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  159. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  160. DECLARE FUNCTION GetDialogBaseUnits LIB "user.exe" AS LONG
  161. DECLARE FUNCTION GetModuleHandle LIB "kernel" (szMod$) AS INTEGER
  162. DECLARE FUNCTION GetModuleUsage LIB "kernel" (hinst%) AS INTEGER
  163. DECLARE FUNCTION LoadLibrary LIB "kernel" (szMod$) AS INTEGER
  164. DECLARE SUB FreeLibrary LIB "kernel" (hinst%)
  165. DECLARE SUB SetErrorMode LIB "krnl386.exe" (fuerrormode%)
  166.  
  167. DECLARE SUB AddOptFilesToCopyList (ftype%)
  168. DECLARE SUB RecalcOptFiles (ftype%)
  169. DECLARE SUB RecalcPath
  170. DECLARE SUB SetDriveStatus
  171. DECLARE SUB ModifyViewerIni
  172. DECLARE SUB UpdateNetIni
  173. DECLARE FUNCTION FMInstalled (makerDir$, version%) AS INTEGER
  174. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  175.  
  176.  
  177.  
  178. INIT:
  179.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  180.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  181.     LOGFILE$ = "install.log"            ''Installation log file
  182.     LOGNEED& = 39430
  183.  
  184.     hWnd% = HwndFrame()
  185.     k& = SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  186.     j% = ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  187.  
  188. '    SetBitmap CUIDLL$, FM_LOGO 
  189.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  190.     IF szInf$ = "" THEN
  191.     szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILE$ 
  192.     END IF
  193.     ReadInfFile szInf$
  194.  
  195. 'Set default destination
  196.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  197.  
  198.     'Is builder already installed?
  199.     IF (DoesIniSectionExist("WIN.INI", "FrameViewer4") = 1) THEN
  200.     DEST$ = GetIniKeyString("WIN.INI", "FrameViewer4", "FMHome")
  201.     IF ((DoesFileExist(MakePath(DEST$, "frame.exe"), femExists) = 1) AND (DoesFileExist(MakePath(DEST$, "viewer.ini"), femExists) = 1)) THEN
  202. '' gpk - changed maker.exe to frame.exe 
  203.         INCRINSTALL& = FMTRUE
  204.  
  205.         'Was it a network install?
  206.         NETINI$ = MakePath(DEST$, "netsetup\netsetup.ini")
  207.         IF (DoesFileExist(NETINI$,femExists) = 1) THEN
  208.         IF (GetIniKeyString(NETINI$, "FMNetPath", "NetPath") = DEST$) THEN
  209.             NETINCINSTALL& = FMTRUE
  210.         ELSE
  211.             NETINCINSTALL& = FMFALSE
  212.         END IF
  213.         ELSE
  214.         NETINCINSTALL& = FMFALSE
  215.         END IF      'network install
  216.         
  217.     ELSE
  218.         INCRINSTALL& = FMFALSE
  219.         DEST$ = "C:\VIEWER4"
  220.     END IF  'incremental install
  221.     ELSE
  222.     DEST$ = "C:\VIEWER4"
  223.     INCRINSTALL& = FMFALSE
  224.     END IF
  225.  
  226.     CHANGEDPATH = FMFALSE
  227.     DISPLAYMSG = FMFALSE
  228.     DISPLAYED = FMFALSE
  229.     MAKER_30 = FMFALSE
  230.     DEMO = FMFALSE
  231.     NETINSTALL = FMFALSE
  232.     
  233.     USERNAME$ = ""
  234.     COMPANY$ = ""
  235.     REGNUM$ = "06-0-01-01-4-003EC-D3923B"
  236.     NUMTRY% = 0
  237.  
  238.     ''CustInst list symbols
  239.     CHECKSTATES$ = "CheckItemsState"
  240.     STATUSTEXT$  = "StatusItemsText"
  241.     DRIVETEXT$   = "DriveStatusText"
  242.     CONFIRMTEXT$ = "ConfirmTextIn"
  243.     FILTLISTIN$  = "ListItemsIn"
  244.     FILTLISTOUT$ = "ListItemsOut"
  245.     SAVELISTOUT$ = "SaveListOut"
  246.  
  247.     FOR i% = 1 TO (NUMOPTIONS+1) STEP 1
  248.     AddListItem STATUSTEXT$, ""
  249.     NEXT i%
  250. '' ************* change from 7 options to 4 
  251.     FOR i% = 1 TO 7 STEP 1
  252.     AddListItem DRIVETEXT$, ""
  253.     NEXT i%
  254.     ReplaceListItem DRIVETEXT$, 7, DEST$  
  255.  
  256. ''Get all filters for display in scroll list
  257.     MakeListFromSectionKeys FILTLISTIN$, "filters"
  258.     NUMFILTERS = GetListLength(FILTLISTIN$)
  259. ''All filters selected by default
  260.     MakeListFromSectionKeys FILTLISTOUT$, "filters"
  261.  
  262. ''Initialize filter maptable
  263.     MAPTABLE(0) = "imcgm9.flt"          ''CGM
  264.     MAPTABLE(1) = "imcdr9.flt"          ''CorelDraw
  265.     MAPTABLE(2) = "frame.exe"           ''DIB
  266.     MAPTABLE(3) = "imdxf9.flt"          ''DXF
  267.     MAPTABLE(4) = "frame.exe"           ''EPS(F)
  268.     MAPTABLE(5) = "imgem9.flt"          ''GEM
  269.     MAPTABLE(6) = "grphfilt.dll"        ''GIF
  270.     MAPTABLE(7) = "imhgl9.flt"          ''HPGL
  271.     MAPTABLE(8) = "g4g607f.dll"         ''IGES
  272.     MAPTABLE(9) = "macpaint.dll"        ''MacPaint
  273.     MAPTABLE(10) = "imdrw9.flt"         ''Micrografx Drawing Format
  274.     MAPTABLE(11) = "frame.exe"          ''MIF
  275.     MAPTABLE(12) = "frame.exe"          ''MML
  276.     MAPTABLE(13) = "grphfilt.dll"       ''PCX
  277.     MAPTABLE(14) = "impct9.flt"         ''QuickDraw PICT
  278.     MAPTABLE(15) = "frame.exe"          ''SunRF
  279.     MAPTABLE(16) = "frame.exe"          ''Text
  280.     MAPTABLE(17) = "grphfilt.dll"       ''TIFF
  281.     MAPTABLE(18) = "frame.exe"          ''WMF
  282.     MAPTABLE(19) = "imwpg9.flt"         ''WordPerfect Graphics
  283.     MAPTABLE(20) = "grphfilt.dll"       ''XWD
  284.  
  285. ''Initialize filter entries for maker.ini
  286.     FILTTABLE(0).id = "120"
  287.     FILTTABLE(0).entry = """CGM"" ""WMF"" OBJECT FRME_INT.DLL ^.CGM"
  288.     FILTTABLE(1).id = "125"
  289.     FILTTABLE(1).entry = """CorelDRAW"" ""WMF"" OBJECT FRME_INT.DLL ^.CDR"
  290.     FILTTABLE(2).id = "132"
  291.     FILTTABLE(2).entry = """DIB"" ""DIB"" OBJECT frame.exe ^.BMP"
  292.     FILTTABLE(3).id = "136"
  293.     FILTTABLE(3).entry = """DXF"" ""WMF"" OBJECT FRME_INT.DLL ^.DXF"
  294.     FILTTABLE(4).id = "140"
  295.     FILTTABLE(4).entry = """EPS(F)"" ""DIB"" OBJECT frame.exe ^.EPS"
  296.     FILTTABLE(5).id = "150"
  297.     FILTTABLE(5).entry = """GEM"" ""WMF"" OBJECT FRME_INT.DLL ^.GEM"
  298.     FILTTABLE(6).id = "160"
  299.     FILTTABLE(6).entry = """GIF"" ""DIB"" OBJECT grphfilt.dll ^.GIF"
  300.     FILTTABLE(7).id = "170"
  301.     FILTTABLE(7).entry = """HPGL"" ""WMF"" OBJECT FRME_INT.DLL ^.HGL"
  302.     FILTTABLE(8).id = "180"
  303.     FILTTABLE(8).entry = """IGES"" ""WMF"" OBJECT G4G607F.DLL ^.IGS"
  304.     FILTTABLE(9).id = "220"
  305.     FILTTABLE(9).entry = """MacPaint"" ""DIB"" OBJECT macpaint.dll ^.MPT"
  306.     FILTTABLE(10).id = "221"
  307.     FILTTABLE(10).entry = """Micrografx Drawing Format"" ""WMF"" OBJECT FRME_INT.DLL ^.DRW" 
  308.     FILTTABLE(11).id = "222"
  309.     FILTTABLE(11).entry = """MIF"" ""MKR"" DOCUMENT frame.exe ^.MIF"
  310.     FILTTABLE(12).id = "223"
  311.     FILTTABLE(12).entry = """MML"" ""MIF"" DOCUMENT frame.exe ^.MML"
  312.     FILTTABLE(13).id = "250"
  313.     FILTTABLE(13).entry = """PCX"" ""DIB"" OBJECT grphfilt.dll ^.PCX"
  314.     FILTTABLE(14).id = "251"
  315.     FILTTABLE(14).entry = """QuickDraw PICT"" ""WMF"" OBJECT FRME_INT.DLL ^.PCT"
  316.     FILTTABLE(15).id = "280"
  317.     FILTTABLE(15).entry = """SunRF"" ""DIB"" OBJECT frame.exe ^.RF"
  318.     FILTTABLE(16).id = "290"
  319.     FILTTABLE(16).entry = """Text"" ""MKR"" DOCUMENT frame.exe ^.TXT"
  320.     FILTTABLE(17).id = "291"
  321.     FILTTABLE(17).entry = """TIFF"" ""DIB"" OBJECT grphfilt.dll ^.TIF"
  322.     FILTTABLE(18).id = "310"
  323.     FILTTABLE(18).entry = """WMF"" ""WMF"" OBJECT frame.exe ^.WMF"
  324.     FILTTABLE(19).id = "317"
  325.     FILTTABLE(19).entry = """WordPerfect Graphics"" ""WMF"" OBJECT FRME_INT.DLL ^.WPG"
  326.     FILTTABLE(20).id = "330"
  327.     FILTTABLE(20).entry = """XWD"" ""DIB"" OBJECT grphfilt.dll ^.XWD"
  328.  
  329.  
  330. ''Disk cost list symbols
  331.     BASENEEDS$   = "BaseNeeds"
  332.     SAMPLENEEDS$  = "SampleNeeds"
  333.     HELPNEEDS$ = "HelpNeeds"
  334. '    TRAINNEEDS$ = "TrainNeeds"
  335. '    CLIPARTNEEDS$  = "ClipArtNeeds"
  336. '$IFNDEF SINGLEPROD
  337. '    DICTNEEDS$ = "DictNeeds"
  338. '$ENDIF
  339.     FILTERNEEDS$ = "FilterNeeds"
  340. '    NETNEEDS$ = "NetNeeds"
  341.     EXTRACOSTS$ = "ExtraCosts"
  342.     BIGLIST$    = "BigList"
  343.     FOR i% = 1 TO (NUMOPTIONS+1) STEP 1
  344.     AddListItem BIGLIST$, ""
  345.     NEXT i%
  346.     FOR i% = 1 TO 26 STEP 1
  347.     AddListItem EXTRACOSTS$, "0"
  348.     NEXT i%
  349.  
  350.  
  351. '$IFDEF DEBUG
  352.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  353. '$ENDIF ''DEBUG
  354.  
  355.  
  356. PREWELCOME:
  357. '$IFNDEF SINGLEPROD
  358. '    IF (GetIniKeyString("WIN.INI", "intl", "sLanguage") <> "enu") THEN
  359. '       SetSymbolValue "RadioDefault2", "2"
  360. '    ELSE
  361. '       SetSymbolValue "RadioDefault2", "1"
  362. '    END IF
  363. '$ENDIF
  364. '    IF (NETINCINSTALL) THEN
  365. '       SetSymbolValue "RadioDefault", "3"
  366. '    END IF
  367. WELCOME:
  368. ''$IFDEF SINGLEPROD
  369. '    sz$ = UIStartDlg(CUIDLL$, SINGLEPROD, "FRadioDlgProc", ONEINSTHELP, HELPPROC)
  370.  
  371. ''$ELSE
  372. '    sz$ = UIStartDlg(CUIDLL$, INSTALLTYPE, "FRadio2DlgProc", INSTALLHELP, HELPPROC)
  373. '    LANGUIOPT = GetSymbolValue("ButtonChecked2")
  374.     LANGUIOPT = "1"
  375. ''$ENDIF
  376. '    INSTALLOPT = GetSymbolValue("ButtonChecked")
  377.     INSTALLOPT = "1"
  378.  
  379. '    IF sz$ = "CONTINUE" THEN
  380.  
  381. ''$IFDEF SINGLEPROD
  382. '       INSTDLG = ONECUSTINST
  383. ''$ELSE
  384. '        IF (LANGUIOPT = "2") THEN
  385. '            INSTDLG = INTLCUSTINST
  386. '        ELSE
  387.         INSTDLG = CUSTINST
  388. '        END IF
  389. ''$ENDIF
  390.  
  391. '       IF (INSTALLOPT = "2") THEN
  392. '           DEMO = FMTRUE
  393. '           USERNAME = "Demo User"
  394. '           UIPop 1
  395. '           GOTO PRECUSTINST
  396. '       ELSEIF (INSTALLOPT = "3") THEN
  397. '           NETINSTALL = FMTRUE
  398. '           UIPop 1
  399. '           GOTO PRECUSTINST
  400. '       END IF
  401. '       UIPop 1
  402. '    ELSEIF sz$ = "REACTIVATE" THEN
  403. '       GOTO WELCOME
  404. '    ELSE
  405. '       GOSUB ASKQUIT
  406. '       GOTO WELCOME
  407. '    END IF
  408.  
  409. FREEFVRES:
  410.     SetErrorMode(32768)
  411.     hinst1% = LoadLibrary("FVRES")
  412. ''    SetErrorMode(1)
  413.     print "hinst1 = "; hinst1
  414.     IF (hinst1% > 2) THEN
  415.     numdll% = GetModuleUsage(hinst1%)
  416.     print "numdll = "; numdll
  417.     FOR i% = 1 TO (numdll% - 1) STEP 1
  418.         FreeLibrary(hinst1%)
  419.     NEXT i%
  420.     END IF
  421.  
  422. CHECKFRAME:
  423.     SetErrorMode(32768)
  424.     hinst2% = LoadLibrary("FRAME")
  425. ''    SetErrorMode(1)
  426.     print "hinst2 = "; hinst2
  427.     IF (hinst2% > 2) THEN
  428.     numframe% = GetModuleUsage(hinst2%)
  429.     ERR = STFQUIT
  430.     GOSUB QUITIN
  431.     GOTO QUIT
  432.     print "numframe = ";numframe
  433.     IF (numframe% > 1) THEN
  434.         FreeLibrary(hinst2%)
  435.         GOSUB QUITIN
  436.     ELSE
  437.         FreeLibrary(hinst2%)
  438.     ENDIF
  439.     ENDIF
  440.  
  441. PREREG:
  442.     IF (INCRINSTALL) THEN
  443.     FMRESPATH$ = MakePath(DEST$,"fminit\fvres.dll")
  444.     IF (FMGetFields(tmpUser,tmpOrg,tmpReg,FMRESPATH) <> 1) THEN
  445.         USERNAME = ""
  446.         COMPANY = ""
  447.         REGNUM = REGNUM
  448.     END IF
  449.     USERNAME = tmpUser
  450.     COMPANY = tmpOrg
  451.     REGNUM = REGNUM
  452.     SetSymbolValue "NameIn", USERNAME
  453.     SetSymbolValue "OrgIn", COMPANY
  454.     SetSymbolValue "RegIn", REGNUM
  455.     END IF
  456. REGISTRATION:
  457.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$)
  458.     USERNAME$ = GetSymbolValue("NameOut")
  459.     COMPANY$ = GetSymbolValue("OrgOut")
  460. '    REGNUM$ = GetSymbolValue("RegOut")
  461.  
  462.     IF sz$ = "CONTINUE" THEN
  463.     IF (USERNAME$ = "") THEN
  464.         GOSUB NONAME
  465.         GOTO REGISTRATION
  466.     END IF
  467.  
  468.     IF REGNUM$ = "" THEN
  469.         GOSUB NOREG
  470.         GOTO REGISTRATION
  471.     END IF
  472.     IF (FMValidateRegNo(REGNUM$) <> 1) THEN
  473.         NUMTRY% = NUMTRY% + 1
  474.         IF (NUMTRY% > 3) THEN
  475.         dlg% = EXITFAILURE
  476.         UIPop 1
  477.         GOTO QUITL1
  478.         END IF
  479.         GOSUB BADREG
  480.         GOTO REGISTRATION
  481.     END IF
  482.     UIPop 1
  483.     ELSE        ''User chose EXIT option
  484.     GOSUB ASKQUIT
  485.     GOTO REGISTRATION
  486.     END IF
  487.  
  488.  
  489. PRECUSTINST:
  490.     CursorSave% = ShowWaitCursor()
  491. 'If incremental installation, turn off all options by default.
  492.     IF (INCRINSTALL) THEN
  493.     FOR i% = 1 TO NUMOPTIONS STEP 1
  494.         AddListItem CHECKSTATES$, "OFF"
  495.     NEXT i%
  496.     ELSE
  497.     FOR i% = 1 TO NUMOPTIONS STEP 1
  498.         AddListItem CHECKSTATES$, "ON"
  499.     NEXT i%
  500.     END IF
  501.  
  502.     RecalcPath
  503.     SetDriveStatus
  504.     RestoreCursor CursorSave%
  505.  
  506. CUSTINST:
  507.     sz$ = UIStartDlg(CUIDLL$, INSTDLG, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  508.     IF sz$ = "CONTINUE" THEN
  509.     ''Warn user about installing over 3.0
  510.  
  511.     IF (NOSPACE = 1) THEN
  512.         GOSUB TOOBIG
  513.         GOTO CUSTINST
  514.     END IF
  515.  
  516.     IF (NOT DISPLAYED) AND (NOT CHANGEDPATH) AND (FMInstalled(DEST$,FM30) = 1) THEN
  517.         DISPLAYMSG = FMTRUE
  518.         DISPLAYED = FMTRUE
  519.     END IF
  520.  
  521.     IF (DISPLAYMSG) THEN
  522.         GOSUB WARNING
  523.         DISPLAYMSG = FMFALSE
  524.         GOTO CUSTINST
  525.     END IF
  526.      
  527.     ''Install only if it will fit.
  528.     FOR i% = 1 TO NUMOPTIONS STEP 1
  529.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  530.         GOSUB TOOBIG
  531.         GOTO CUSTINST
  532.         END IF
  533.     NEXT i%
  534.  
  535.     UIPop 1
  536.     GOTO INSTALL
  537.     ELSEIF sz$ = "PATH" THEN
  538.     GOTO GETPATH
  539.     ELSEIF sz$ = "CHK1" THEN
  540.     RecalcOptFiles BASEFILES
  541.     SetDriveStatus
  542.     GOTO CUSTINST
  543.     ELSEIF sz$ = "CHK2" THEN
  544.     RecalcOptFiles HELPFILES
  545.     SetDriveStatus
  546.     GOTO CUSTINST
  547. ''$IFDEF SINGLEPROD
  548.     ELSEIF sz$ = "CHK3" THEN
  549.     RecalcOptFiles FILTERFILES
  550.     SetDriveStatus
  551.     GOTO CUSTINST
  552.     ELSEIF sz$ = "CHK4" THEN
  553.     RecalcOptFiles SAMPLEFILES
  554.     SetDriveStatus
  555.     GOTO CUSTINST
  556. '    ELSEIF sz$ = "CHK5" THEN
  557. '        RecalcOptFiles CLIPARTFILES
  558. '        SetDriveStatus
  559. '        GOTO CUSTINST
  560. '    ELSEIF sz$ = "CHK6" THEN
  561. '        RecalcOptFiles TRAINFILES
  562. '        SetDriveStatus
  563. '        GOTO CUSTINST
  564. '    ELSEIF sz$ = "CHK7" THEN
  565. '       NETINSTALL& = FMTRUE
  566. '       RecalcOptFiles NETFILES
  567. '       SetDriveStatus
  568. '       GOTO CUSTINST
  569. ''$ELSE
  570. '    ELSEIF sz$ = "CHK3" THEN
  571. '        RecalcOptFiles DICTFILES
  572. '        SetDriveStatus
  573. '        GOTO CUSTINST
  574. '    ELSEIF sz$ = "CHK3" THEN
  575. '        RecalcOptFiles FILTERFILES
  576. '        SetDriveStatus
  577. '        GOTO CUSTINST
  578. '    ELSEIF sz$ = "CHK4" THEN
  579. '        RecalcOptFiles SAMPLEFILES
  580. '        SetDriveStatus
  581. '        GOTO CUSTINST
  582. ''    ELSEIF sz$ = "CHK6" THEN
  583. ''        RecalcOptFiles CLIPARTFILES
  584. ''        SetDriveStatus
  585. ''        GOTO CUSTINST
  586. '    ELSEIF sz$ = "CHK7" THEN
  587. '        RecalcOptFiles TRAINFILES
  588. '        SetDriveStatus
  589. '        GOTO CUSTINST
  590. '    ELSEIF sz$ = "CHK8" THEN
  591. '       NETINSTALL& = FMTRUE
  592. '       RecalcOptFiles NETFILES
  593. '       SetDriveStatus
  594. '       GOTO CUSTINST
  595. ''$ENDIF
  596.     ELSEIF sz$ = "BTN1" THEN
  597.     UIPop 1
  598.     GOTO FILTOPT
  599.     ELSEIF sz$ = "REACTIVATE" THEN
  600.     RecalcPath
  601.     SetDriveStatus
  602.     GOTO CUSTINST
  603.     ELSE
  604.     GOSUB ASKQUIT
  605.     GOTO CUSTINST
  606.     END IF
  607.  
  608.  
  609.  
  610. INSTALL:
  611.     ClearCopyList
  612.     CreateDir DEST$, cmoNone
  613.     OpenLogFile MakePath(DEST$, LOGFILE$), 0   ''open install.log for writing
  614.  
  615.     AddOptFilesToCopyList BASEFILES
  616.     AddOptFilesToCopyList HELPFILES
  617. ''$IFNDEF SINGLEPROD
  618. '    AddOptFilesToCopyList DICTFILES
  619. ''$ENDIF
  620.     AddOptFilesToCopyList FILTERFILES
  621.     AddOptFilesToCopyList SAMPLEFILES
  622. '    AddOptFilesToCopyList CLIPARTFILES
  623. '    AddOptFilesToCopyList TRAINFILES
  624. '    IF NETINSTALL THEN
  625. '        AddOptFilesToCopyList NETFILES
  626. '    END IF
  627.  
  628. '$IFDEF DEBUG
  629.     i% = SetCopyMode(0)
  630.     DumpCopyList "e:\tmp\install.lst"
  631. '$ENDIF
  632.  
  633. '    gpk-- don't care whether FrameMaker 3 or 4 is installed.
  634. '    IF (FMInstalled(DEST$, 3) = 1) THEN
  635. '       MAKER_30 = FMTRUE
  636. '    ENDIF 
  637.  
  638. '*** Add splash screens to billboard list
  639.     ClearBillboardList
  640. '    AddToBillboardList CUIDLL$, SCREEN1, "FModelessDlgProc", 1
  641. '    AddToBillboardList CUIDLL$, SCREEN2, "FModelessDlgProc", 2
  642. '    AddToBillboardList CUIDLL$, SCREEN3, "FModelessDlgProc", 1
  643. '    AddToBillboardList CUIDLL$, SCREEN4, "FModelessDlgProc", 1
  644. '    AddToBillboardList CUIDLL$, SCREEN5, "FModelessDlgProc", 1
  645. '    AddToBillboardList CUIDLL$, SCREEN6, "FModelessDlgProc", 1
  646. '    AddToBillboardList CUIDLL$, SCREEN7, "FModelessDlgProc", 1
  647. '    AddToBillboardList CUIDLL$, SCREEN8, "FModelessDlgProc", 1
  648.  
  649. ''Calculate where to place copy gauge so that it is below the
  650. ''splash screens and centered regardless of display. Don't need
  651. ''to calculate width, because a -1 automatically centers gauge
  652. ''horizontally.
  653. ''(look at GetDialogBaseUnits for formula)
  654.     ht% = GetScreenHeight()
  655.     htunit% = ((GetDialogBaseUnits() AND &HFFFF0000))/&HFFFF
  656.     SetCopyGaugePosition -1, (8*((ht*1)/2))/htunit
  657.  
  658.     CopyFilesInCopyList
  659.  
  660. '$IFDEF REG_DB_ENABLED
  661.     CreateRegKeyValue "Frame", "Frame"
  662.     CreateRegKeyValue "Frame\shell\print\ddeexec", "[FileOpen(%1)][FilePrint()]"
  663.     CreateRegKeyValue "Frame\shell\print\ddeexec\topic", "system"
  664.     CreateRegKeyValue "Frame\shell\print\ddeexec\application", "Frame"
  665.     CreateRegKeyValue "Frame\shell\print\command", MakePath(DEST$,"frame.exe")
  666.     CreateRegKeyValue "Frame\shell\open\command", MakePath(DEST$,"frame.exe")
  667.     CreateRegKeyValue "Frame\shell\open\ddeexec", "[FileOpen(%1)]"
  668.     CreateRegKeyValue "Frame\shell\open\ddeexec\topic", "system"
  669.     CreateRegKeyValue "Frame\shell\open\ddeexec\application", "Frame"
  670.     IF (DoesRegKeyExist(".DOC") = 0) THEN
  671.     CreateRegKeyValue ".DOC", "Frame"
  672.     END IF
  673.     IF (DoesRegKeyExist(".FRM") = 0) THEN
  674.     CreateRegKeyValue ".FRM", "Frame"
  675.     END IF
  676.     IF (DoesRegKeyExist(".BK") = 0) THEN
  677.     CreateRegKeyValue ".BK", "Frame"
  678.     END IF
  679. '$ENDIF
  680.  
  681.  
  682.     IF (NOT NETINSTALL) THEN
  683.  
  684. '**** Put username and registration number in fmres.dll. Also whether or
  685. '**** not if demomaker.
  686.     FMRESPATH$ = MakePath(DEST$,"fminit\fvres.dll")
  687.     IF (DEMO) THEN
  688.         stat% = FMUpdateRes((FMRESPATH$),(USERNAME$),(COMPANY$),(REGNUM$),1)
  689.     ELSE
  690.             REGNUM$ = "06-0-01-01-4-003EC-D3923B"
  691.         stat% = FMUpdateRes((FMRESPATH$),(USERNAME$),(COMPANY$),(REGNUM$),0)
  692.     END IF 'Demo
  693.     IF (stat% <> 0) THEN
  694.         dlg% = EXITFAILURE
  695.         GOTO QUITL1
  696.     END IF
  697.  
  698. '**** Create Program Group for FrameViewer and update win.ini
  699.         print "s0"
  700.     IF GetListItem(CHECKSTATES$, BASEFILES) = "ON" THEN
  701.         print "s1"
  702.         CreateIniKeyValue "WIN.INI", "FrameViewer4", "FMHome", DEST$, cmoOverwrite
  703.         print "s2"
  704.         CreateIniKeyValue "WIN.INI", "FrameViewer4", "IniFile", "viewer.ini", cmoAll
  705.         print "s4"
  706.  
  707.     ''Add extensions to win.ini
  708.         keystring$ = MakePath(DEST$,"frame.exe") + " ^.doc"
  709.         print "s5"
  710.         IF (DoesIniKeyExist("WIN.INI", "Extensions", "doc") = 1) THEN
  711.         pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "doc"), "viewer.exe")
  712.         pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "doc"), "frame.exe")
  713.         print "s6"
  714.         IF ((pos1% > 1) OR (pos2% > 1)) THEN
  715.             CreateIniKeyValue "WIN.INI", "Extensions", "doc", keystring$, cmoOverwrite
  716.         print "s7"
  717.         END IF
  718.         ELSE 
  719.         print "s8"
  720.         CreateIniKeyValue "WIN.INI", "Extensions", "doc", keystring$, cmoOverwrite
  721.         print "s9"
  722.         END IF
  723.         keystring$ = MakePath(DEST$,"frame.exe") + " ^.bk"
  724.         print "s10"
  725.         IF (DoesIniKeyExist("WIN.INI", "Extensions", "bk") = 1) THEN
  726.         pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "bk"), "viewer.exe")
  727.         pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "bk"), "frame.exe")
  728.         print "s11"
  729.         IF ((pos1% > 1) OR (pos2% > 1)) THEN
  730.             CreateIniKeyValue "WIN.INI", "Extensions", "bk", keystring$, cmoOverwrite
  731.         END IF
  732.         ELSE 
  733.         CreateIniKeyValue "WIN.INI", "Extensions", "bk", keystring$, cmoOverwrite
  734.         END IF
  735.         keystring$ = MakePath(DEST$,"frame.exe") + " ^.frm"
  736.         IF (DoesIniKeyExist("WIN.INI", "Extensions", "frm") = 1) THEN
  737.         pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "frm"), "viewer.exe")
  738.         pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "frm"), "frame.exe")
  739.         IF ((pos1% > 1) OR (pos2% > 1)) THEN
  740.             CreateIniKeyValue "WIN.INI", "Extensions", "frm", keystring$, cmoOverwrite
  741.         END IF
  742.         ELSE 
  743.         CreateIniKeyValue "WIN.INI", "Extensions", "frm", keystring$, cmoOverwrite
  744.         END IF
  745.         print "s12"
  746.         CreateProgmanGroup PROGGROUP$, "", cmoNone
  747.         print "s13"
  748.         ShowProgmanGroup  PROGGROUP$, 1, cmoNone
  749.         print 's14"
  750.         CreateProgmanItem PROGGROUP$, VIEWERITEM$, MakePath(DEST$,"frame.exe -viewer"), "", cmoOverwrite
  751. '' gpk - changed "maker.exe" with "frame.exe -maker" 
  752. ''      ELSE 'basefiles
  753. ''              CreateIniKeyValue "WIN.INI", "FrameViewer4", "FMHome", DEST$, cmoAll
  754.     END IF 'installed basefiles
  755.  
  756. '** Copy fminit\fmfont.ttf to windows system directory
  757. '** Copy fmdbms.dll and fmheap.dll to windows system directory -gpk
  758.     winsysdir$ = GetWindowsSysDir()
  759.     CopyFile MakePath(DEST$,"fminit\fmfont.ttf"),MakePath(winsysdir,"fmfont.ttf"),cmoOverwrite,0
  760.     CopyFile MakePath(DEST$,"fmdbms.dll"),MakePath(winsysdir,"fmdbms.dll"),cmoOverwrite,0
  761.     CopyFile MakePath(DEST$,"fmheap.dll"),MakePath(winsysdir,"fmheap.dll"),cmoOverwrite,0
  762.  
  763.     END IF      'not network install
  764.  
  765.  
  766.     VIEWERINI = MakePath(DEST$, "viewer.ini")
  767.  
  768. ''$IFNDEF SINGLEPROD
  769. '    IF (LANGUIOPT$ = "2") THEN
  770. '           CreateIniKeyValue BUILDERINI, "Frame", "Language", "UKEnglish", cmoAll
  771. '    END IF
  772. ''$ENDIF
  773.  
  774. '*** If user installed base files (includes some filters) or optional
  775. '*** filters, update with entries in [Filters] section of maker.ini.
  776. '*** If installing to a network server, do not update maker.ini or
  777. '*** setup will complain about a difference in size when installing
  778. '*** from the network. Besides, users will not run maker from the
  779. '*** network server directory.
  780.     IF (NOT NETINSTALL) THEN
  781.     IF (GetListItem(CHECKSTATES$, BASEFILES) = "ON" OR GetListItem(CHECKSTATES$, FILTERFILES) = "ON") THEN
  782.         filterpath$ = MakePath(DEST$,"filters")
  783.         IF (DoesIniSectionExist(VIEWERINI, "Filters") = 1) THEN
  784.         RemoveIniSection VIEWERINI, "Filters", cmoNone
  785.         END IF
  786.         FOR i% = 0 TO (NUMENTRIES-1) STEP 1
  787.         IF (MAPTABLE(i) = "frame.exe") THEN
  788.             tmpfile$ = MakePath(DEST$, "frame.exe")
  789.         ELSE
  790.             tmpfile$ = MakePath(filterpath, MAPTABLE(i))
  791.         END IF
  792.         IF (DoesFileExist(tmpfile, femExists) = 1) THEN
  793.             CreateIniKeyValue VIEWERINI, "Filters", FILTTABLE(i).id, FILTTABLE(i).entry, cmoVital 
  794.         END IF
  795.         NEXT i
  796.     END IF
  797.     END IF
  798.  
  799. 'Copy over some user set preferences from the old maker.ini to the
  800. 'new maker.ini
  801. '    IF (MAKER_30 AND NOT NETINSTALL) THEN
  802. '           ModifyBuilderIni
  803. '    END IF
  804.  
  805.     IF (NOT NETINSTALL) THEN
  806.         ModifyViewerIni
  807.     END IF
  808.  
  809. 'Installing on network server. Need to update entries
  810. 'in netsetup.ini file.
  811.  
  812. '    IF (NETINSTALL) THEN
  813. '           UpdateNetIni
  814. '       END IF
  815.  
  816.     CloseLogFile
  817.  
  818. QUIT:
  819.     ON ERROR GOTO ERRQUIT
  820.  
  821.     IF ERR = 0 THEN
  822.     IF (NETINSTALL) THEN
  823.         dlg% = EXITNETINSTALL
  824.     ELSE
  825.         dlg% = EXITSUCCESS
  826.     END IF
  827. ''Remove log file if installation was successful.
  828.     RemoveFile MakePath(DEST$,LOGFILE$), cmoNone
  829.     ELSEIF ERR = STFQUIT THEN
  830.     dlg% = EXITQUIT
  831.     ELSE
  832.     dlg% = EXITFAILURE
  833.     END IF
  834. QUITL1:
  835.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  836.     IF sz$ = "REACTIVATE" THEN
  837.     GOTO QUITL1
  838.     END IF
  839.     UIPop 1
  840.  
  841.     END
  842.  
  843. ERRQUIT:
  844.     i% = DoMsgBox(ERRMSG$, ERRTITLE$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  845.     END
  846.  
  847.  
  848. FILTOPT:
  849.     ''Take snapshot of FILTLISTOUT$ in case user chooses "CANCEL"
  850.     numfilters% = GetListLength(FILTLISTOUT$)
  851.     FOR i% = 1 TO numfilters% STEP 1
  852.     filter$ = GetListItem(FILTLISTOUT$, i%)
  853.     IF (filter$ <> "") THEN
  854.         AddListItem SAVELISTOUT$, filter$
  855.     END IF
  856.     NEXT i%
  857. FILTOPT1:
  858.     sz$ = UIStartDlg(CUIDLL$, FILTERS, "FMultiDlgProc", FILTHELP, HELPPROC$)
  859.  
  860.     IF sz$ = "CONTINUE" THEN
  861.     numfilters% = GetListLength(FILTLISTOUT$)
  862.     IF (numfilters% = 0) THEN
  863.         ReplaceListItem CHECKSTATES$, FILTERFILES, "OFF"
  864.     ELSE
  865.     ''In case user clicks "select" pushbutton w/o checking "filters" box
  866.         ReplaceListItem CHECKSTATES$, FILTERFILES, "ON"
  867.     END IF
  868.     RemoveSymbol SAVELISTOUT$
  869.     RecalcOptFiles FILTERFILES
  870.     SetDriveStatus
  871.     UIPop 1
  872.     GOTO CUSTINST
  873.    ELSEIF sz$ = "EXIT" THEN
  874.     GOSUB ASKQUIT
  875.     GOTO FILTOPT1
  876.    ELSE 
  877.     numfilters% = GetListLength(FILTLISTOUT$)
  878.     savenum% = GetListLength(SAVELISTOUT$)
  879.     IF (numfilters% < savenum%) THEN
  880.         FOR i% = (numfilters% + 1) TO savenum% STEP 1
  881.         AddListItem FILTLISTOUT$, ""
  882.         NEXT i%
  883.         FOR i% = 1 TO savenum% STEP 1
  884.         ReplaceListItem FILTLISTOUT$, i%, GetListItem(SAVELISTOUT$, i%)
  885.         NEXT i%
  886.     ELSEIF (numfilters% > savenum%) THEN
  887.         RemoveSymbol FILTLISTOUT$
  888.         FOR i% = 1 TO savenum% STEP 1
  889.         AddListItem FILTLISTOUT$, GetListItem(SAVELISTOUT$, i%)
  890.         NEXT i%
  891.     ELSE
  892.         FOR i% = 1 to NUMFILTERS% STEP 1
  893.         ReplaceListItem FILTLISTOUT$, i%, GetListItem(SAVELISTOUT$, i%)
  894.         NEXT i%
  895.     ENDIF
  896.     RemoveSymbol SAVELISTOUT$
  897.     UIPop 1
  898.     GOTO CUSTINST
  899.     END IF
  900.  
  901.  
  902. GETPATH:
  903.     SetSymbolValue "EditTextIn", DEST$
  904.     SetSymbolValue "EditFocus", "END"
  905. GETPATHL1:
  906.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", PATHHELP, HELPPROC$)
  907.  
  908.     IF sz$ = "CONTINUE" THEN
  909.     CHANGEDPATH = FMTRUE
  910.     olddest$ = DEST$
  911.     DEST$ = GetSymbolValue("EditTextOut")
  912.     print "new DEST = ", DEST$
  913.  
  914.     ''Validate new path.
  915.     IF IsDirWritable(DEST$) = 0 THEN
  916.         GOSUB BADPATH
  917.         GOTO GETPATHL1
  918.     END IF
  919.     UIPop 1
  920.  
  921.     ''Truncate display if too long
  922.     IF LEN(DEST$) > 32 THEN
  923.         print "b1"
  924.         ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  925.     ELSE
  926.         print "b2"
  927.         ReplaceListItem DRIVETEXT$, 7, DEST$
  928.         print "b3"
  929.     END IF
  930.  
  931.     ''Recalc if path changed.
  932.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  933. '           ''Installing over FM 3.0?
  934.         IF (FMInstalled(DEST$, FM30) = 1) THEN
  935.         DISPLAYMSG = FMTRUE
  936.         ELSEIF (FMInstalled(DEST$, FM40) = 0) AND (INCRINSTALL) THEN
  937.         INCRINSTALL = FMFALSE
  938.         FOR i% = 1 TO NUMOPTIONS STEP 1
  939.             ReplaceListItem CHECKSTATES$, i%, "ON"
  940.         NEXT i%
  941.         END IF
  942.         print "b4"
  943.         RecalcPath
  944.         print "b5"
  945.         SetDriveStatus
  946.         print "b6"
  947.     ELSE
  948.         IF (FMInstalled(DEST$, FM30) = 2) THEN
  949.         DISPLAYMSG = FMFALSE
  950.         END IF
  951.     END IF
  952.  
  953.     olddest$ = ""
  954.     GOTO CUSTINST
  955.     ELSEIF sz$ = "REACTIVATE" THEN
  956.     RecalcPath
  957.     SetDriveStatus
  958.     GOTO GETPATHL1
  959.     ELSEIF sz$ = "EXIT" THEN
  960.     GOSUB ASKQUIT
  961.     GOTO GETPATHL1
  962.     ELSE
  963.     UIPop 1
  964.     GOTO CUSTINST
  965.     END IF
  966.  
  967.  
  968.  
  969. TOOBIG:
  970.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  971.     IF sz$ = "REACTIVATE" THEN
  972.     RecalcPath
  973.     SetDriveStatus
  974.     GOTO TOOBIG
  975.     END IF
  976.     UIPop 1
  977.     RETURN
  978.  
  979.  
  980.  
  981. BADPATH:
  982.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  983.     IF sz$ = "REACTIVATE" THEN
  984.     RecalcPath
  985.     SetDriveStatus
  986.     GOTO BADPATH
  987.     END IF
  988.     UIPop 1
  989.     RETURN
  990.  
  991.  
  992. WARNING:
  993.     sz$ = UIStartDlg(CUIDLL$, MAKER30, "FInfo0DlgProc", 0, "")
  994.     IF sz$ = "REACTIVATE" THEN
  995.     RecalcPath
  996.     SetDriveStatus
  997.     GOTO WARNING
  998.     END IF
  999.     UIPop 1
  1000.     RETURN
  1001.  
  1002.  
  1003. ASKQUIT:
  1004.     sz$ = UIStartDlg(CUIDLL$, ASKEXIT, "FQuitDlgProc", 0, "")
  1005.  
  1006.     IF sz$ = "EXIT" THEN
  1007.     UIPopAll
  1008.     ERROR STFQUIT
  1009.     ELSEIF sz$ = "REACTIVATE" THEN
  1010.     GOTO ASKQUIT
  1011.     ELSE
  1012.     UIPop 1
  1013.     END IF
  1014.     RETURN
  1015.  
  1016.  
  1017. NONAME:
  1018.     sz$ = UIStartDlg(CUIDLL$, NAMEALERT, "FInfo0DlgProc", 0, "")
  1019.     IF sz$ = "REACTIVATE" THEN
  1020.         GOTO NONAME
  1021.     END IF
  1022.     UIPop 1
  1023.     RETURN
  1024.  
  1025. NOREG:
  1026.     sz$ = UIStartDlg(CUIDLL$, REGALERT, "FInfo0DlgProc", 0, "")
  1027.     IF sz$ = "REACTIVATE" THEN
  1028.         GOTO NOREG
  1029.     END IF
  1030.     UIPop 1
  1031.     RETURN
  1032.  
  1033. BADREG:
  1034.     sz$ = UIStartDlg(CUIDLL$, BADREGNUM, "FInfo0DlgProc", 0, "")
  1035.     IF sz$ = "REACTIVATE" THEN
  1036.         GOTO BADREG
  1037.     ENDIF
  1038.     UIPop 1
  1039.     RETURN
  1040.  
  1041. QUITIN:
  1042.     sz$ = UIStartDlg(CUIDLL$, QUITINST, "FInfo0DlgProc", 0, "")
  1043.     IF sz$ = "REACTIVATE" THEN
  1044.     GOTO QUITIN
  1045.     ENDIF
  1046.     UIPop 1
  1047.     RETURN
  1048.  
  1049. '**
  1050. '** Purpose:
  1051. '**     Adds the specified option files to the copy list.
  1052. '** Arguments:
  1053. '**     ftype%  - type of files to add, one of the following:
  1054. '**             BASEFILES, SAMPLEFILES, CLIPARTFILES, HELPFILES,
  1055. '**             TRAINFILES, DICTFILES, FILTERFILES
  1056. '** Returns:
  1057. '**     none.
  1058. '*************************************************************************
  1059. SUB AddOptFilesToCopyList (ftype%) STATIC
  1060.  
  1061.     IF ftype% = NETFILES THEN
  1062.     IF (NOT NETINCINSTALL) THEN
  1063.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1064.         AddSectionFilesToCopyList "netsetup", SrcDir$, DEST$
  1065.     END IF
  1066.     SrcDir$ = ""
  1067.     ELSE
  1068.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  1069.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1070.         IF ftype% = BASEFILES THEN
  1071.         AddSectionFilesToCopyList "base", SrcDir$, DEST$
  1072. ''$IFNDEF SINGLEPROD
  1073.         IF LANGUIOPT$ = "1" THEN
  1074.             AddSectionFilesToCopyList "uscustom", SrcDir$, DEST$
  1075.             AddSectionFilesToCopyList "usdictionaries", SrcDir$, DEST$
  1076. '                   AddSectionFilesToCopyList "ustemplates", SrcDir$, DEST$
  1077. '               ELSE
  1078. '                   AddSectionFilesToCopyList "ukcustom", SrcDir$, DEST$
  1079. '                   AddSectionFilesToCopyList "ukdictionaries", SrcDir$, DEST$
  1080. '                   AddSectionFilesToCopyList "uktemplates", SrcDir$, DEST$
  1081.         END IF
  1082. ''$ENDIF
  1083.         ELSEIF ftype% = SAMPLEFILES THEN
  1084. ''$IFDEF SINGLEPROD
  1085. '               AddSectionFilesToCopyList "samples", SrcDir$, DEST$
  1086. ''$ELSE
  1087.         IF LANGUIOPT$ = "1" THEN
  1088.             AddSectionFilesToCopyList "ussamples", SrcDir$, DEST$
  1089. '               ELSE
  1090. '                   AddSectionFilesToCopyList "uksamples", SrcDir$, DEST$
  1091.         END IF
  1092. ''$ENDIF
  1093.         ELSEIF ftype% = HELPFILES THEN
  1094.         AddSectionFilesToCopyList "help", SrcDir$, DEST$
  1095. '           ELSEIF ftype% = TRAINFILES THEN
  1096. ''$IFDEF SINGLEPROD
  1097. '               AddSectionFilesToCopyList "training", SrcDir$, DEST$
  1098. ''$ELSE
  1099. '               IF LANGUIOPT$ = "1" THEN
  1100. '                   AddSectionFilesToCopyList "ustraining", SrcDir$, DEST$
  1101. '               ELSE
  1102. '                   AddSectionFilesToCopyList "uktraining", SrcDir$, DEST$
  1103. '               END IF
  1104. ''$ENDIF
  1105. '           ELSEIF ftype% = CLIPARTFILES THEN
  1106. '               AddSectionFilesToCopyList "clipart", SrcDir$, DEST$
  1107. ''$IFNDEF SINGLEPROD
  1108. '           ELSEIF ftype% = DICTFILES THEN
  1109. '               IF LANGUIOPT$ = "1" THEN
  1110. '                   AddSectionFilesToCopyList "ukdictionaries", SrcDir$, DEST$
  1111. '               ELSE
  1112. '                   AddSectionFilesToCopyList "usdictionaries", SrcDir$, DEST$
  1113. '               END IF
  1114. ''$ENDIF
  1115.         ELSEIF ftype% = FILTERFILES THEN
  1116.         AddSectionFilesToCopyList "filtini", SrcDir$, DEST$
  1117.         numfilters% = GetListLength(FILTLISTOUT$)
  1118.         FOR i% = 1 TO numfilters% STEP 1
  1119.             Filter$ = GetListItem(FILTLISTOUT$, i%)
  1120.             IF Filter$ <> "" THEN
  1121.             AddSectionKeyFileToCopyList "filters", Filter$, SrcDir$, DEST$
  1122.             '** If imagemark filter, need to install its .ini file
  1123.             'tmpfile$ = GetSectionKeyFileName("filters", Filter$)
  1124.             'print "filter= ";tmpfile
  1125.             'length% = LEN(tmpfile)
  1126.             'print "len= ";length
  1127.             'print "ext= ";MID$(tmpfile, length-2)
  1128.             'IF (MID$(tmpfile, length-2) = "flt") THEN
  1129.             '    AddSectionKeyFileToCopyList "filtini", Filter$, SrcDir$, DEST$
  1130.             'END IF
  1131.             END IF
  1132.         NEXT i%
  1133.         END IF
  1134.     SrcDir$ = ""
  1135.     END IF
  1136.     END IF
  1137. END SUB
  1138.  
  1139.  
  1140. '**
  1141. '** Purpose:
  1142. '**     Recalculates disk space for the given option files and sets
  1143. '**     the status info symbol "StatusItemsText".
  1144. '** Arguments:
  1145. '**     ftype% - type of files to add, one of the following:
  1146. '**         BASEFILES, SAMPLEFILES, CLIPARTFILES, HELPFILES,
  1147. '**         TRAINFILES, DICTFILES, FILTERFILES, NETFILES
  1148. '** Returns:
  1149. '**     none.
  1150. '*************************************************************************
  1151. SUB RecalcOptFiles (ftype%) STATIC
  1152.     CursorSave% = ShowWaitCursor()
  1153.     ClearCopyList
  1154.     AddOptFilesToCopyList ftype%
  1155.  
  1156.     fExtra% = 0
  1157.     IF ftype% = BASEFILES THEN
  1158.     ListSym$ = BASENEEDS$
  1159.     IF GetListItem(CHECKSTATES$, BASEFILES) = "ON" THEN
  1160.         ''Add extra cost to Windows drive for ini/progman, etc.
  1161.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1162.         ReplaceListItem EXTRACOSTS$, ndrive%, "6144"
  1163.         fExtra% = 1
  1164.     END IF
  1165.     ELSEIF ftype% = SAMPLEFILES THEN
  1166.     ListSym$ = SAMPLENEEDS$
  1167.     ELSEIF ftype% = HELPFILES THEN
  1168.     ListSym$ = HELPNEEDS$
  1169. '    ELSEIF ftype% = TRAINFILES THEN
  1170. '        ListSym$ = TRAINNEEDS$
  1171. '    ELSEIF ftype% = CLIPARTFILES THEN
  1172. '        ListSym$ = CLIPARTNEEDS
  1173. ''$IFNDEF SINGLEPROD
  1174. '    ELSEIF ftype% = DICTFILES THEN
  1175. '        ListSym$ = DICTNEEDS
  1176. ''$ENDIF
  1177.     ELSEIF ftype% = FILTERFILES THEN
  1178.     ListSym$ = FILTERNEEDS$
  1179. '    ELSEIF ftype% = NETFILES THEN
  1180. '        ListSym$ = NETNEEDS$
  1181.     END IF
  1182.  
  1183.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  1184.  
  1185.     cost& = 0
  1186.     FOR i% = 1 TO 26 STEP 1
  1187.     cost& = cost& + VAL(GetListItem(ListSym$, i%))
  1188.     NEXT i%
  1189.  
  1190.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  1191.  
  1192.     IF StillNeed& > 0 THEN
  1193.     ReplaceListItem BIGLIST$, ftype%, "YES"
  1194.     ELSE
  1195.     ReplaceListItem BIGLIST$, ftype%, ""
  1196.     END IF
  1197.  
  1198.     IF fExtra% THEN
  1199.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  1200.     END IF
  1201.     RestoreCursor CursorSave%
  1202.     ListSym$ = ""
  1203. END SUB
  1204.  
  1205.  
  1206. '**
  1207. '** Purpose:
  1208. '**     Recalculates disk space and sets option status info according
  1209. '**     to the current destination path.
  1210. '** Arguments:
  1211. '**     none.
  1212. '** Returns:
  1213. '**     none.
  1214. '*************************************************************************
  1215. SUB RecalcPath STATIC
  1216.  
  1217.     CursorSave% = ShowWaitCursor()
  1218.     RecalcOptFiles BASEFILES
  1219.     RecalcOptFiles SAMPLEFILES
  1220.     RecalcOptFiles HELPFILES
  1221. '    RecalcOptFiles TRAINFILES
  1222. '    RecalcOptFiles CLIPARTFILES
  1223. ''$IFNDEF SINGLEPROD
  1224. '    RecalcOptFiles DICTFILES
  1225. ''$ENDIF
  1226.     RecalcOptFiles FILTERFILES
  1227. '    IF (NETINSTALL) AND (NOT NETINCINSTALL) THEN
  1228. '        RecalcOptFiles NETFILES
  1229. '    END IF
  1230.  
  1231.     RestoreCursor CursorSave%
  1232. END SUB
  1233.  
  1234.  
  1235. '**
  1236. '** Purpose:
  1237. '**     Sets drive status info according to latest disk space calcs.
  1238. '** Arguments:
  1239. '**     none.
  1240. '** Returns:
  1241. '**     none.
  1242. '*************************************************************************
  1243. SUB SetDriveStatus STATIC
  1244.  
  1245.     drive$ = MID$(DEST$, 1, 1)
  1246.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  1247.  
  1248. 'Have to split up to halfcost and totalcost, because cannot
  1249. 'have more than 256 chars on one line.
  1250.  
  1251.     halfcost& = VAL(GetListItem(BASENEEDS$, ndrive%)) + VAL(GetListItem(SAMPLENEEDS$, ndrive%)) + LOGNEED
  1252.  
  1253.     IF NETINSTALL THEN
  1254. ''$IFDEF SINGLEPROD
  1255.     totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%))
  1256. ''$ELSE
  1257.     totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%))
  1258. ''$ENDIF
  1259.     ELSE
  1260. ''$IFDEF SINGLEPROD
  1261. '        totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%))
  1262. ''$ELSE
  1263.     totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%))
  1264. ''$ENDIF
  1265.     END IF  'netinstall
  1266.  
  1267.     free& = GetFreeSpaceForDrive(drive$)
  1268.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  1269.     ReplaceListItem DRIVETEXT$, 2, STR$(totalcost& / 1024) + " K"
  1270.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  1271.  
  1272.     NOSPACE = 0
  1273.     IF (totalcost& > free&) THEN
  1274.     NOSPACE = 1
  1275.     END IF
  1276.  
  1277.     IF drive$ = WINDRIVE$ THEN
  1278.     ReplaceListItem DRIVETEXT$, 4, ""
  1279.     ReplaceListItem DRIVETEXT$, 5, ""
  1280.     ReplaceListItem DRIVETEXT$, 6, ""
  1281.     ELSE
  1282.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1283.  
  1284.  
  1285.     halfcost& = VAL(GetListItem(BASENEEDS$, ndrive%)) + VAL(GetListItem(SAMPLENEEDS$, ndrive%)) 
  1286.  
  1287.     IF (NETINSTALL) THEN
  1288. ''$IFDEF SINGLEPROD
  1289. '           totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%))
  1290. ''$ELSE
  1291.         totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%))
  1292. ''$ENDIF
  1293.     ELSE
  1294. ''$IFDEF SINGLEPROD
  1295. '           totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%))
  1296. ''$ELSE
  1297.         totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%))
  1298. ''$ENDIF
  1299.     END IF  'net install
  1300.  
  1301.     IF totalcost& = 0 THEN
  1302.         ReplaceListItem DRIVETEXT$, 4, ""
  1303.         ReplaceListItem DRIVETEXT$, 5, ""
  1304.         ReplaceListItem DRIVETEXT$, 6, ""
  1305.     ELSE
  1306.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  1307.         ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  1308.         ReplaceListItem DRIVETEXT$, 5, STR$(totalcost& / 1024) + " K"
  1309.         ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  1310.     END IF
  1311.  
  1312.     END IF
  1313.  
  1314. END SUB
  1315.  
  1316.  
  1317. '**
  1318. '** Purpose:
  1319. '**     Copies some user set preferences in 3.0 maker.ini
  1320. '**     to 4.0 maker.ini.
  1321. '** Arguments:
  1322. '**     none.
  1323. '** Returns:
  1324. '**     none.
  1325. '******************************************************************
  1326. SUB ModifyViewerIni STATIC
  1327. '
  1328. '    BuilderIni$ = MakePath(DEST$, "bldini.bak")
  1329. '    CreateIniKeyValue BUILDERINI$,"Frame","PCName",GetIniKeyString(BuilderIni$,"FrameBuilder","PCName"),cmoOverwrite
  1330. '    CreateIniKeyValue BUILDRINI$,"Preferences","BackupOnSave",GetIniKeyString(BuilderIni$,"Preferences","BackupOnSave"),cmoOverwrite
  1331. '    CreateIniKeyValue BUILDERINI$,"Preferences","AutoSave",GetIniKeyString(BuilderIni$,"Preferences","AutoSave"),cmoOverwrite
  1332. '    CreateIniKeyValue BUILDRINI$,"Preferences","ShowErrors",GetIniKeyString(BuilderIni$,"Preferences","ShowErrors"),cmoOverwrite
  1333. '    CreateIniKeyValue BUILDERINI$,"Preferences","GreekSize",GetIniKeyString(Builder0Ini$,"Preferences","GreekSize"),cmoOverwrite
  1334. '    CreateIniKeyValue BUILDERINI$,"Preferences","FMImage",GetIniKeyString(BuilderIni$,"Preferences","FMImage"),cmoOverwrite
  1335. '    CreateIniKeyValue BUILDERINI$,"Preferences","NetworkLock",GetIniKeyString(BuilderIni$,"Preferences","NetworkLock"),cmoOverwrite
  1336. '    CreateIniKeyValue BUILDERINI$,"Preferences","Zoom",GetIniKeyString(BuilderIni$,"Preferences","Zoom"),cmoOverwrite
  1337. '    CreateIniKeyValue BUILDERINI$,"Preferences","PenWidths",GetIniKeyString(BuilderIni$,"Preferences","PenWidths"),cmoOverwrite
  1338. '    CreateIniKeyValue BUILDERINI$,"Preferences","ClipboardFormatsPriorities",GetIniKeyString(BuilderIni$,"Preferences","ClipboardFormatsPriorities"),cmoOverwrite
  1339. '    CreateIniKeyValue BUILDERINI$,"Preferences","MonitorSize",GetIniKeyString(BuilderIni$,"Preferences","MonitorSize"),cmoOverwrite
  1340. '    CreateIniKeyValue BUILDERINI$,"Fonts","Sizes",GetIniKeyString(BuilderIni$,"Fonts","Sizes"),cmoOverwrite
  1341. '    CreateIniKeyValue BUILDERINI$,"Fonts","Angles",GetIniKeyString(BuilderIni$,"Fonts","Angles"),cmoOverwrite
  1342. '    CreateIniKeyValue BUILDERINI$,"Fonts","Variations",GetIniKeyString(BuilderIni$,"Fonts","Variations"),cmoOverwrite
  1343. '    CreateIniKeyValue BUILDERINI$,"Fonts","Weights",GetIniKeyString(BuilderIni$,"Fonts","Weights"),cmoOverwrite
  1344. '    CreateIniKeyValue BUILDERINI$,"Fonts","DefaultSize",GetIniKeyString(BuilderIni$,"Fonts","DefaultSize"),cmoOverwrite
  1345. '    CreateIniKeyValue BUILDERINI$,"Fonts","DefaultFamily",GetIniKeyString(BuilderIni$,"Fonts","DefaultFamily"),cmoOverwrite
  1346. '    CreateIniKeyValue BUILDERINI$,"Fonts","DefaultAngle",GetIniKeyString(BuilderIni$,"Fonts","DefaultAngle"),cmoOverwrite
  1347. '    CreateIniKeyValue BUILDERINI$,"Fonts","DefaultVariation",GetIniKeyString(BuilderIni$,"Fonts","DefaultVariation"),cmoOverwrite
  1348. '    CreateIniKeyValue BUILDERINI$,"Fonts","DefaultWeight",GetIniKeyString(BuilderIni$,"Fonts","DefaultWeight"),cmoOverwrite
  1349. '    CreateIniKeyValue BUILDERINI$,"Fonts","MathFamily",GetIniKeyString(BuilderIni$,"Fonts","MathFamily"),cmoOverwrite
  1350. '    CreateIniKeyValue BUILDERINI$,"Fonts","NonTextFamilies",GetIniKeyString(BuilderIni$,"Fonts","NonTextFamilies"),cmoOverwrite
  1351.  '   CreateIniKeyValue BUILDERINI$,"Files","UserDictionary",GetIniKeyString(BuilderIni$,"Files","UserDictionary"),cmoOverwrite
  1352.  '   CreateIniKeyValue BUILDERINI$,"Files","SiteDictionary",GetIniKeyString(BuilderIni$,"Files","SiteDictionary"),cmoOverwrite
  1353. END SUB
  1354.  
  1355.  
  1356.  
  1357. '**
  1358. '** Purpose:
  1359. '**     Updates entries in netsetup.ini
  1360. '** Arguments:
  1361. '**     none.
  1362. '** Returns:
  1363. '**     none.
  1364. '******************************************************************
  1365. SUB UpdateNetIni STATIC
  1366. '       NETINI$ = MakePath(DEST$, "netsetup\netsetup.ini")
  1367. '       CreateIniKeyValue NETINI$, "FMNetPath", "NetPath", DEST$, cmoAll
  1368. '
  1369. '       FOR i% = 1 TO NUMOPTIONS STEP 1
  1370. '           IF (GetListItem(CHECKSTATES$, i%) = "ON") THEN
  1371. '               IF i% = BASEFILES THEN
  1372. '                   CreateIniKeyValue NETINI$, "FMOptions", "FrameExe", "Yes,Enable", cmoOverwrite
  1373. '                   CreateIniKeyValue NETINI$, "FMOptions", "FMInitFiles", "Yes,Enable", cmoOverwrite
  1374. '                   CreateIniKeyValue NETINI$, "FMOptions", "Templates", "No,Enable", cmoOverwrite
  1375. ''$IFDEF SINGLEPROD
  1376. '                   CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Enable", cmoOverwrite
  1377. ''$ENDIF
  1378. '               ELSEIF i% = SAMPLEFILES THEN
  1379. '                   CreateIniKeyValue NETINI$, "FMOptions", "Samples", "No,Enable", cmoOverwrite
  1380. '               ELSEIF i% = HELPFILES THEN
  1381. '                   CreateIniKeyValue NETINI$, "FMOptions", "Help", "No,Enable", cmoOverwrite
  1382. '               ELSEIF i% = TRAINFILES THEN
  1383. '                   CreateIniKeyValue NETINI$, "FMOptions", "Training", "Yes,Enable", cmoOverwrite
  1384. '               ELSEIF i% = CLIPARTFILES THEN
  1385. '                   CreateIniKeyValue NETINI$, "FMOptions", "ClipArt", "No,Enable", cmoOverwrite
  1386. ''$IFNDEF SINGLEPROD
  1387. '               ELSEIF i% = DICTFILES THEN
  1388. '                   CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Enable", cmoOverwrite
  1389. ''$ENDIF
  1390. '               ELSEIF i% = FILTERFILES THEN
  1391. '                   CreateIniKeyValue NETINI$, "FMOptions", "Filters", "No,Enable", cmoOverwrite
  1392. '               END IF
  1393. '
  1394. '           ELSE        'Option was not installed, so disable
  1395. '               IF (NOT INCRINSTALL) THEN
  1396. '                   IF i% = BASEFILES THEN
  1397. '                       CreateIniKeyValue NETINI$,"FMOptions","FrameExe","No,Disable",cmoOverwrite
  1398. '                       CreateIniKeyValue NETINI$,"FMOptions","FMInitFiles","No,Disable",cmoOverwrite
  1399. '                       CreateIniKeyValue NETINI$,"FMOptions","Templates","No,Disable",cmoOverwrite
  1400. ''$IFDEF SINGLEPROD
  1401. '                   CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Disable", cmoOverwrite
  1402. ''$ENDIF
  1403. '                   ELSEIF i% = SAMPLEFILES THEN
  1404. '                       CreateIniKeyValue NETINI$,"FMOptions","Samples","No,Disable",cmoOverwrite
  1405. '                   ELSEIF i% = HELPFILES THEN
  1406. '                       CreateIniKeyValue NETINI$,"FMOptions","Help","No,Disable",cmoOverwrite
  1407. '                   ELSEIF i% = TRAINFILES THEN
  1408. '                       CreateIniKeyValue NETINI$,"FMOptions","Training","No,Disable",cmoOverwrite
  1409. '                   ELSEIF i% = CLIPARTFILES THEN
  1410. '                       CreateIniKeyValue NETINI$,"FMOptions","ClipArt","No,Disable",cmoOverwrite
  1411. ''$IFNDEF SINGLEPROD
  1412. '                   ELSEIF i% = DICTFILES THEN
  1413. '                       CreateIniKeyValue NETINI$,"FMOptions","Dictionaries","No,Disable",cmoOverwrite
  1414. ''$ENDIF
  1415. '                   ELSEIF i% = FILTERFILES THEN
  1416. '                       CreateIniKeyValue NETINI$,"FMOptions","Filters","No,Disable",cmoOverwrite
  1417. '                   END IF
  1418. '               END IF          'Incremental install
  1419. '           END IF      'Option installed
  1420. '       NEXT i%
  1421. '
  1422. 'If filters were installed, need to know which ones, so we know
  1423. 'which ones to install for netsetup.
  1424. '
  1425. '       IF (GetListItem(CHECKSTATES$, FILTERFILES) = "ON" OR GetListItem(CHECKSTATES$, BASEFILES) = "ON") THEN
  1426. '           IF (NOT INCRINSTALL) THEN
  1427. '               RemoveIniSection NETINI$, "Filters", cmoNone
  1428. '           END IF
  1429. '           IF (GetListItem(CHECKSTATES$, FILTERFILES) = "ON") THEN
  1430. '               numfilters% = GetListLength(FILTLISTOUT$)
  1431. '               FOR i% = 1 TO numfilters% STEP 1
  1432. '                   Filter$ = GetListItem(FILTLISTOUT$, i%)
  1433. '                   IF (Filter$ <> "") THEN
  1434. '                       CreateIniKeyValue NETINI$,"Filters",Filter$,"Yes",cmoNone       
  1435. '                   END IF
  1436. '               NEXT i%
  1437. '           END IF
  1438. '           IF (GetListItem(CHECKSTATES$, BASEFILES) = "ON") THEN
  1439. '               CreateIniKeyValue NETINI$,"Filters","BaseFilters","Yes",cmoNone
  1440. '           END IF
  1441. '       END IF  'Filters installed
  1442. END SUB
  1443.  
  1444.  
  1445.  
  1446. '**
  1447. '** Purpose:
  1448. '**     Checks if FrameMaker is already installed in the
  1449. '**     specified directory. For our purposes, FrameMaker is
  1450. '**     considered installed if:
  1451. '**             a) maker.exe exists in the directory.
  1452. '**             b) The FMHome field in WIN.INI is that directory.
  1453. '** Arguments:
  1454. '**     makerDir$ - directory name
  1455. '**     version% - FrameMaker version to check for (3 or 4)
  1456. '** Return Value:
  1457. '**     Return 1 if FrameMaker is already installed.
  1458. '**     Otherwise return 0.
  1459. '******************************************************************
  1460. FUNCTION FMInstalled (makerDir$, version%) STATIC AS INTEGER
  1461.     IniStat& = FMFALSE
  1462.     IF (version% = 3)  THEN
  1463.     section$ = "FrameMaker3.00"
  1464.     IF (DoesFileExist(MakePath(makerDir$,"maker.ini"), femExists) = 1) THEN
  1465.         IF (GetIniKeyString(MakePath(makerDir$,"maker.ini"),"FrameMaker","Version") = "3.00") OR (GetIniKeyString(MakePath(makerDir$,"maker.ini"),"FrameMaker","Version") = "3.01") THEN
  1466.         IniStat& = FMTRUE
  1467.         END IF
  1468.     END IF
  1469.     ELSE
  1470.     section$ = "FrameMaker4"
  1471.     IF (DoesFileExist(MakePath(makerDir$,"maker.ini"), femExists) = 1) THEN
  1472.         keystring$ = GetIniKeyString(MakePath(makerDir$,"maker.ini"),"Frame","Version")
  1473.         IF (INSTR("4.0", keystring$) = 1) THEN
  1474.         IniStat& = FMTRUE
  1475.         END IF
  1476.     END IF
  1477.     END IF
  1478.     IF (DoesFileExist(MakePath(makerDir$,"frame.exe"), femExists) = 1) AND (IniStat) THEN 
  1479. '* gpk - changed maker.exe to frame.exe 
  1480.     IF (DoesIniSectionExist("WIN.INI", section$) = 1) THEN  
  1481.         fmhome$ = GetIniKeyString("WIN.INI", section$, "FMHome")
  1482.         ufmhome$ = UCASE$(fmhome$)
  1483.         IF (ufmhome$ = makerDir$) THEN
  1484.         FMInstalled = 1
  1485.         ELSE
  1486.         FMInstalled = 0
  1487.         END IF
  1488.     ELSE
  1489.         FMInstalled = 0
  1490.     END IF
  1491.     ELSE
  1492.     FMInstalled = 0
  1493.     END IF
  1494. END FUNCTION
  1495.  
  1496.  
  1497. '**
  1498. '** Purpose:
  1499. '**     Appends a file name to the end of a directory path,
  1500. '**     inserting a backslash character as needed.
  1501. '** Arguments:
  1502. '**     szDir$  - full directory path (with optional ending "\")
  1503. '**     szFile$ - filename to append to directory
  1504. '** Returns:
  1505. '**     Resulting fully qualified path name.
  1506. '*************************************************************************
  1507. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1508.     IF szDir$ = "" THEN
  1509.     MakePath = szFile$
  1510.     ELSEIF szFile$ = "" THEN
  1511.     MakePath = szDir$
  1512.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1513.     MakePath = szDir$ + szFile$
  1514.     ELSE
  1515.     MakePath = szDir$ + "\" + szFile$
  1516.     END IF
  1517. END FUNCTION
  1518.  
  1519.  
  1520.