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