home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1993-09-15 | 49.1 KB | 1,473 lines
'************************************************************************** '* Frame Setup Script '************************************************************************** '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' '$INCLUDE 'msregdb.inc' '$INCLUDE 'fmapi.inc' ''Dialog ID's CONST ASKEXIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST MAKER30 = 800 CONST PATHHELP = 900 CONST INSTALLTYPE = 1000 CONST FILTHELP = 1100 CONST REGHELP = 1300 CONST CUSTHELP = 1400 CONST INTLCUSTINST = 1600 CONST INSTALLHELP = 1800 CONST EXITNETINSTALL = 1900 CONST FILTERS = 5200 CONST CUSTINST = 6200 CONST TOOBIG = 6300 CONST BADPATH = 6400 CONST BADREGNUM = 7100 CONST CDGETNAMEORG = 7500 CONST REGALERT = 7700 CONST NAMEALERT = 1500 CONST SINGLEPROD = 2200 CONST ONECUSTINST = 7600 CONST ONEINSTHELP = 7800 ''Splash screen dialogs CONST SCREEN1 = 2300 CONST SCREEN2 = 2400 CONST SCREEN3 = 2500 CONST SCREEN4 = 2600 CONST SCREEN5 = 2700 CONST SCREEN6 = 2800 CONST SCREEN7 = 2900 CONST SCREEN8 = 3000 CONST FM_LOGO = 1999 ''Boolean constants CONST FMTRUE = -1 CONST FMFALSE = 0 ''File Types '$IFDEF SINGLEPROD CONST BASEFILES = 1 CONST HELPFILES = 2 CONST FILTERFILES = 3 CONST SAMPLEFILES = 4 CONST CLIPARTFILES = 5 CONST TRAINFILES = 6 CONST NETFILES = 7 CONST NUMOPTIONS = 6 ''Number of options '$ELSE CONST BASEFILES = 1 CONST HELPFILES = 2 CONST DICTFILES = 3 CONST FILTERFILES = 4 CONST SAMPLEFILES = 5 CONST CLIPARTFILES = 6 CONST TRAINFILES = 7 CONST NETFILES = 8 CONST NUMOPTIONS = 7 ''Number of options '$ENDIF CONST WS_VISIBLE = &H10000000 CONST WS_BORDER = &H00800000 CONST WS_CLIPCHILDREN = &H02000000 CONST GWL_STYLE = -16 CONST SW_SHOWMAXIMIZED = 3 CONST FM30 = 3 ''FrameMaker 3.0 CONST FM40 = 4 ''FrameMaker 4.0 CONST NUMENTRIES = 39 ''Max number of filter entries in maker.ini GLOBAL DEST$ ''Default destination directory. GLOBAL WINDRIVE$ ''Windows drive letter. GLOBAL DEMO& ''Demo version? GLOBAL INSTALLOPT$ ''Type of installation GLOBAL USERNAME$ ''User name GLOBAL COMPANY$ ''Company GLOBAL REGNUM$ ''Registration number GLOBAL NUMTRY% ''Number of times user enters invalid regnum. ''Give them 3 chances. GLOBAL NUMFILTERS% ''Number of filters '$IFNDEF SINGLEPROD GLOBAL LANGUIOPT$ ''US or UK English GLOBAL INSTDLG% ''ID of install dialog to use (demo, us, or intl) '$ENDIF ''CustInst list symbol names GLOBAL BASENEEDS$ ''Option list costs per drive GLOBAL SAMPLENEEDS$ GLOBAL HELPNEEDS$ GLOBAL TRAINNEEDS$ GLOBAL CLIPARTNEEDS$ '$IFNDEF SINGLEPROD GLOBAL DICTNEEDS$ '$ENDIF GLOBAL FILTERNEEDS$ GLOBAL NETNEEDS$ GLOBAL LOGNEED& ''max size of install.log file - 39430 bytes GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive GLOBAL BIGLIST$ ''List of option files cost calc results (boolean) ''Dialog list symbol names GLOBAL CHECKSTATES$ GLOBAL STATUSTEXT$ GLOBAL DRIVETEXT$ GLOBAL FILTLISTIN$ GLOBAL FILTLISTOUT$ GLOBAL SAVELISTOUT$ GLOBAL NETINSTALL& GLOBAL NETINI$ 'netsetup.ini file GLOBAL INCRINSTALL& 'Incremenetal install GLOBAL NETINCINSTALL& 'Incremental network install GLOBAL MAKER_30& 'Installing over FM 3.0 GLOBAL FMRESPATH$ 'fmres.dll GLOBAL MAKERINI$ 'maker.ini file GLOBAL CHANGEDPATH& 'Brought up SET PATH dialog GLOBAL DISPLAYMSG& 'Display installing over 3.0 warning message GLOBAL DISPLAYED& 'Warning message already displayed for path GLOBAL MAPTABLE(NUMENTRIES) AS STRING 'mapping for filters TYPE FILTREC id AS STRING*3 entry AS STRING*59 END TYPE GLOBAL FILTTABLE(NUMENTRIES) AS FILTREC '** Pass arguments as fixed strings to FMGetFields DIM tmpUser AS STRING *30 DIM tmpOrg AS STRING *30 DIM tmpReg AS STRING *30 DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG DECLARE FUNCTION GetDialogBaseUnits LIB "user.exe" AS LONG DECLARE SUB AddOptFilesToCopyList (ftype%) DECLARE SUB RecalcOptFiles (ftype%) DECLARE SUB RecalcPath DECLARE SUB SetDriveStatus DECLARE SUB ModifyMakerIni DECLARE SUB UpdateNetIni DECLARE FUNCTION FMInstalled (makerDir$, version%) AS INTEGER DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING INIT: CUIDLL$ = "mscuistf.dll" ''custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure LOGFILE$ = "install.log" ''Installation log file LOGNEED& = 39430 hWnd% = HwndFrame() k& = SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) j% = ShowWindow(hWnd%,SW_SHOWMAXIMIZED) SetBitmap CUIDLL$, FM_LOGO szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILE$ END IF ReadInfFile szInf$ 'Set default destination WINDRIVE$ = MID$(GetWindowsDir, 1, 1) 'Is maker already installed? IF (DoesIniSectionExist("WIN.INI", "FrameMaker4") = 1) THEN DEST$ = GetIniKeyString("WIN.INI", "FrameMaker4", "FMHome") IF ((DoesFileExist(MakePath(DEST$, "frame.exe"), femExists) = 1) AND (DoesFileExist(MakePath(DEST$, "maker.ini"), femExists) = 1)) THEN '' gpk - changed maker.exe to frame.exe INCRINSTALL& = FMTRUE 'Was it a network install? NETINI$ = MakePath(DEST$, "netsetup\netsetup.ini") IF (DoesFileExist(NETINI$,femExists) = 1) THEN IF (GetIniKeyString(NETINI$, "FMNetPath", "NetPath") = DEST$) THEN NETINCINSTALL& = FMTRUE ELSE NETINCINSTALL& = FMFALSE END IF ELSE NETINCINSTALL& = FMFALSE END IF 'network install ELSE INCRINSTALL& = FMFALSE DEST$ = "C:\MAKER4" END IF 'incremental install ELSE DEST$ = "C:\MAKER4" INCRINSTALL& = FMFALSE END IF CHANGEDPATH = FMFALSE DISPLAYMSG = FMFALSE DISPLAYED = FMFALSE MAKER_30 = FMFALSE DEMO = FMFALSE NETINSTALL = FMFALSE USERNAME$ = "" COMPANY$ = "" REGNUM$ = "" NUMTRY% = 0 ''CustInst list symbols CHECKSTATES$ = "CheckItemsState" STATUSTEXT$ = "StatusItemsText" DRIVETEXT$ = "DriveStatusText" CONFIRMTEXT$ = "ConfirmTextIn" FILTLISTIN$ = "ListItemsIn" FILTLISTOUT$ = "ListItemsOut" SAVELISTOUT$ = "SaveListOut" FOR i% = 1 TO (NUMOPTIONS+1) STEP 1 AddListItem STATUSTEXT$, "" NEXT i% FOR i% = 1 TO 7 STEP 1 AddListItem DRIVETEXT$, "" NEXT i% ReplaceListItem DRIVETEXT$, 7, DEST$ ''Get all filters for display in scroll list MakeListFromSectionKeys FILTLISTIN$, "filters" NUMFILTERS = GetListLength(FILTLISTIN$) ''All filters selected by default MakeListFromSectionKeys FILTLISTOUT$, "filters" ''Initialize filter maptable MAPTABLE(0) = "w4w33f.dll" ''Ami Professional MAPTABLE(1) = "imcgm9.flt" ''CGM MAPTABLE(2) = "imcdr9.flt" ''CorelDraw MAPTABLE(3) = "w4w15f.dll" ''DCA/RFT MAPTABLE(4) = "w4w15f.dll" ''DCA/RFT - DisplayWrite 5 MAPTABLE(5) = "frame.exe" ''DIB MAPTABLE(6) = "w4w15f.dll" ''DisplayWrite 2,3,4 MAPTABLE(7) = "w4w15f.dll" ''DisplayWrite 5 MAPTABLE(8) = "imdxf9.flt" ''DXF MAPTABLE(9) = "frame.exe" ''EPS(F) MAPTABLE(10) = "imgem9.flt" ''GEM MAPTABLE(11) = "grphfilt.dll" ''GIF MAPTABLE(12) = "imhgl9.flt" ''HPGL MAPTABLE(13) = "g4g607f.dll" ''IGES MAPTABLE(14) = "macpaint.dll" ''MacPaint MAPTABLE(15) = "imdrw9.flt" ''Micrografx Drawing Format MAPTABLE(16) = "frame.exe" ''MIF MAPTABLE(17) = "frame.exe" ''MML MAPTABLE(18) = "w4w05f.dll" ''Microsoft Word 3.0, 3.1 MAPTABLE(19) = "w4w05f.dll" ''Microsoft Word 4.0 MAPTABLE(20) = "w4w05f.dll" ''Microsoft Word 5.0, 5.5 MAPTABLE(21) = "w4w44f.dll" ''MS Word for Windows 1.x MAPTABLE(22) = "w4w44f.dll" ''MS Word for Windows 2.0 MAPTABLE(23) = "w4w54f.dll" ''MS Word for Mac 4.0 MAPTABLE(24) = "w4w42t.dll" ''MSI MAPTABLE(25) = "grphfilt.dll" ''PCX MAPTABLE(26) = "impct9.flt" ''QuickDraw PICT MAPTABLE(27) = "w4w19f.dll" ''RTF MAPTABLE(28) = "frame.exe" ''SunRF MAPTABLE(29) = "frame.exe" ''Text MAPTABLE(30) = "grphfilt.dll" ''TIFF MAPTABLE(31) = "vp2mif.dll" ''Ventura Publisher 1.0-4.0 MAPTABLE(32) = "frame.exe" ''WMF MAPTABLE(33) = "w4w07f.dll" ''WordPerfect 5.0 MAPTABLE(34) = "w4w07f.dll" ''WordPerfect 5.1 MAPTABLE(35) = "w4w59f.dll" ''WordPerfect Mac 1.0 MAPTABLE(36) = "w4w60f.dll" ''WordPerfect Mac 2.0 MAPTABLE(37) = "imwpg9.flt" ''WordPerfect Graphics MAPTABLE(38) = "grphfilt.dll" ''XWD ''Initialize filter entries for maker.ini FILTTABLE(0).id = "100" FILTTABLE(0).entry = """Ami Professional"" ""MSI"" DOCUMENT W4W33F.DLL ^.SAM" FILTTABLE(1).id = "120" FILTTABLE(1).entry = """CGM"" ""WMF"" OBJECT FRME_INT.DLL ^.CGM" FILTTABLE(2).id = "125" FILTTABLE(2).entry = """CorelDRAW"" ""WMF"" OBJECT FRME_INT.DLL ^.CDR" FILTTABLE(3).id = "130" FILTTABLE(3).entry = """DCA/RFT"" ""MSI"" DOCUMENT W4W15F.DLL" FILTTABLE(4).id = "131" FILTTABLE(4).entry = """DCA/RFT - DisplayWrite 5"" ""MSI"" DOCUMENT W4W15F.DLL" FILTTABLE(5).id = "132" FILTTABLE(5).entry = """DIB"" ""DIB"" OBJECT frame.exe ^.BMP" FILTTABLE(6).id = "133" FILTTABLE(6).entry = """DisplayWrite 2,3,4"" ""MSI"" DOCUMENT W4W15F.DLL" FILTTABLE(7).id = "134" FILTTABLE(7).entry = """DisplayWrite 5"" ""MSI"" DOCUMENT W4W15F.DLL" FILTTABLE(8).id = "136" FILTTABLE(8).entry = """DXF"" ""WMF"" OBJECT FRME_INT.DLL ^.DXF" FILTTABLE(9).id = "140" FILTTABLE(9).entry = """EPS(F)"" ""DIB"" OBJECT frame.exe ^.EPS" FILTTABLE(10).id = "150" FILTTABLE(10).entry = """GEM"" ""WMF"" OBJECT FRME_INT.DLL ^.GEM" FILTTABLE(11).id = "160" FILTTABLE(11).entry = """GIF"" ""DIB"" OBJECT grphfilt.dll ^.GIF" FILTTABLE(12).id = "170" FILTTABLE(12).entry = """HPGL"" ""WMF"" OBJECT FRME_INT.DLL ^.HGL" FILTTABLE(13).id = "180" FILTTABLE(13).entry = """IGES"" ""WMF"" OBJECT G4G607F.DLL ^.IGS" FILTTABLE(14).id = "220" FILTTABLE(14).entry = """MacPaint"" ""DIB"" OBJECT macpaint.dll ^.MPT" FILTTABLE(15).id = "221" FILTTABLE(15).entry = """Micrografx Drawing Format"" ""WMF"" OBJECT FRME_INT.DLL ^.DRW" FILTTABLE(16).id = "222" FILTTABLE(16).entry = """MIF"" ""MKR"" DOCUMENT frame.exe ^.MIF" FILTTABLE(17).id = "223" FILTTABLE(17).entry = """MML"" ""MIF"" DOCUMENT frame.exe ^.MML" FILTTABLE(18).id = "224" FILTTABLE(18).entry = """Microsoft Word 3.0, 3.1"" ""MSI"" DOCUMENT W4W05F.DLL" FILTTABLE(19).id = "225" FILTTABLE(19).entry = """Microsoft Word 4.0"" ""MSI"" DOCUMENT W4W05F.DLL" FILTTABLE(20).id = "226" FILTTABLE(20).entry = """Microsoft Word 5.0, 5.5"" ""MSI"" DOCUMENT W4W05F.DLL" FILTTABLE(21).id = "227" FILTTABLE(21).entry = """MS Word for Windows 1.x"" ""MSI"" DOCUMENT W4W44F.DLL" FILTTABLE(22).id = "228" FILTTABLE(22).entry = """MS Word for Windows 2.0"" ""MSI"" DOCUMENT W4W44F.DLL" FILTTABLE(23).id = "229" FILTTABLE(23).entry = """MS Word Mac 4.0"" ""MSI"" DOCUMENT W4W54F.DLL" FILTTABLE(24).id = "230" FILTTABLE(24).entry = """MSI"" ""MIF"" DOCUMENT W4W42T.DLL ^.MSI" FILTTABLE(25).id = "250" FILTTABLE(25).entry = """PCX"" ""DIB"" OBJECT grphfilt.dll ^.PCX" FILTTABLE(26).id = "251" FILTTABLE(26).entry = """QuickDraw PICT"" ""WMF"" OBJECT FRME_INT.DLL ^.PCT" FILTTABLE(27).id = "270" FILTTABLE(27).entry = """RTF"" ""MSI"" DOCUMENT W4W19F.DLL ^.RTF" FILTTABLE(28).id = "280" FILTTABLE(28).entry = """SunRF"" ""DIB"" OBJECT frame.exe ^.RF" FILTTABLE(29).id = "290" FILTTABLE(29).entry = """Text"" ""MKR"" DOCUMENT frame.exe ^.TXT" FILTTABLE(30).id = "291" FILTTABLE(30).entry = """TIFF"" ""DIB"" OBJECT grphfilt.dll ^.TIF" FILTTABLE(31).id = "300" FILTTABLE(31).entry = """Ventura Publisher 1.0-4.0"" ""MIF"" DOCUMENT VP2MIF.DLL ^.CHP" FILTTABLE(32).id = "310" FILTTABLE(32).entry = """WMF"" ""WMF"" OBJECT frame.exe ^.WMF" FILTTABLE(33).id = "313" FILTTABLE(33).entry = """WordPerfect 5.0"" ""MSI"" DOCUMENT W4W07F.DLL" FILTTABLE(34).id = "314" FILTTABLE(34).entry = """WordPerfect 5.1"" ""MSI"" DOCUMENT W4W07F.DLL" FILTTABLE(35).id = "315" FILTTABLE(35).entry = """WordPerfect Mac 1.0"" ""MSI"" DOCUMENT W4W59F.DLL" FILTTABLE(36).id = "316" FILTTABLE(36).entry = """WordPerfect Mac 2.0"" ""MSI"" DOCUMENT W4W60F.DLL" FILTTABLE(37).id = "317" FILTTABLE(37).entry = """WordPerfect Graphics"" ""WMF"" OBJECT FRME_INT.DLL ^.WPG" FILTTABLE(38).id = "330" FILTTABLE(38).entry = """XWD"" ""DIB"" OBJECT grphfilt.dll ^.XWD" ''Disk cost list symbols BASENEEDS$ = "BaseNeeds" SAMPLENEEDS$ = "SampleNeeds" HELPNEEDS$ = "HelpNeeds" TRAINNEEDS$ = "TrainNeeds" CLIPARTNEEDS$ = "ClipArtNeeds" '$IFNDEF SINGLEPROD DICTNEEDS$ = "DictNeeds" '$ENDIF FILTERNEEDS$ = "FilterNeeds" NETNEEDS$ = "NetNeeds" EXTRACOSTS$ = "ExtraCosts" BIGLIST$ = "BigList" FOR i% = 1 TO (NUMOPTIONS+1) STEP 1 AddListItem BIGLIST$, "" NEXT i% FOR i% = 1 TO 26 STEP 1 AddListItem EXTRACOSTS$, "0" NEXT i% '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal '$ENDIF ''DEBUG PREWELCOME: '$IFNDEF SINGLEPROD IF (GetIniKeyString("WIN.INI", "intl", "sLanguage") <> "enu") THEN SetSymbolValue "RadioDefault2", "2" ELSE SetSymbolValue "RadioDefault2", "1" END IF '$ENDIF IF (NETINCINSTALL) THEN SetSymbolValue "RadioDefault", "3" END IF WELCOME: '$IFDEF SINGLEPROD sz$ = UIStartDlg(CUIDLL$, SINGLEPROD, "FRadioDlgProc", ONEINSTHELP, HELPPROC) '$ELSE sz$ = UIStartDlg(CUIDLL$, INSTALLTYPE, "FRadio2DlgProc", INSTALLHELP, HELPPROC) LANGUIOPT = GetSymbolValue("ButtonChecked2") '$ENDIF INSTALLOPT = GetSymbolValue("ButtonChecked") IF sz$ = "CONTINUE" THEN '$IFDEF SINGLEPROD INSTDLG = ONECUSTINST '$ELSE IF (LANGUIOPT = "2") THEN INSTDLG = INTLCUSTINST ELSE INSTDLG = CUSTINST END IF '$ENDIF IF (INSTALLOPT = "2") THEN DEMO = FMTRUE USERNAME = "Demo User" UIPop 1 GOTO PRECUSTINST ELSEIF (INSTALLOPT = "3") THEN NETINSTALL = FMTRUE UIPop 1 GOTO PRECUSTINST END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO WELCOME ELSE GOSUB ASKQUIT GOTO WELCOME END IF PREREG: IF (INCRINSTALL) THEN FMRESPATH$ = MakePath(DEST$,"fminit\fmres.dll") IF (FMGetFields(tmpUser,tmpOrg,tmpReg,FMRESPATH) <> 1) THEN USERNAME = "" COMPANY = "" REGNUM = "" END IF USERNAME = tmpUser COMPANY = tmpOrg REGNUM = tmpReg SetSymbolValue "NameIn", USERNAME SetSymbolValue "OrgIn", COMPANY SetSymbolValue "RegIn", REGNUM END IF REGISTRATION: sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$) USERNAME$ = GetSymbolValue("NameOut") COMPANY$ = GetSymbolValue("OrgOut") REGNUM$ = GetSymbolValue("RegOut") IF sz$ = "CONTINUE" THEN IF (USERNAME$ = "") THEN GOSUB NONAME GOTO REGISTRATION END IF IF REGNUM$ = "" THEN GOSUB NOREG GOTO REGISTRATION END IF IF (FMValidateRegNo(REGNUM$) <> 1) THEN NUMTRY% = NUMTRY% + 1 IF (NUMTRY% > 3) THEN dlg% = EXITFAILURE UIPop 1 GOTO QUITL1 END IF GOSUB BADREG GOTO REGISTRATION END IF UIPop 1 ELSE ''User chose EXIT option GOSUB ASKQUIT GOTO REGISTRATION END IF PRECUSTINST: CursorSave% = ShowWaitCursor() 'If incremental installation, turn off all options by default. IF (INCRINSTALL) THEN FOR i% = 1 TO NUMOPTIONS STEP 1 AddListItem CHECKSTATES$, "OFF" NEXT i% ELSE FOR i% = 1 TO NUMOPTIONS STEP 1 AddListItem CHECKSTATES$, "ON" NEXT i% END IF RecalcPath SetDriveStatus RestoreCursor CursorSave% CUSTINST: sz$ = UIStartDlg(CUIDLL$, INSTDLG, "FCustInstDlgProc", CUSTHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN ''Warn user about installing over 3.0 IF (NOT DISPLAYED) AND (NOT CHANGEDPATH) AND (FMInstalled(DEST$,FM30) = 1) THEN DISPLAYMSG = FMTRUE DISPLAYED = FMTRUE END IF IF (DISPLAYMSG) THEN GOSUB WARNING DISPLAYMSG = FMFALSE GOTO CUSTINST END IF ''Install only if it will fit. FOR i% = 1 TO NUMOPTIONS STEP 1 IF GetListItem(BIGLIST$, i%) <> "" THEN GOSUB TOOBIG GOTO CUSTINST END IF NEXT i% UIPop 1 GOTO INSTALL ELSEIF sz$ = "PATH" THEN GOTO GETPATH ELSEIF sz$ = "CHK1" THEN RecalcOptFiles BASEFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK2" THEN RecalcOptFiles HELPFILES SetDriveStatus GOTO CUSTINST '$IFDEF SINGLEPROD ELSEIF sz$ = "CHK3" THEN RecalcOptFiles FILTERFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK4" THEN RecalcOptFiles SAMPLEFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK5" THEN RecalcOptFiles CLIPARTFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK6" THEN RecalcOptFiles TRAINFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK7" THEN NETINSTALL& = FMTRUE RecalcOptFiles NETFILES SetDriveStatus GOTO CUSTINST '$ELSE ELSEIF sz$ = "CHK3" THEN RecalcOptFiles DICTFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK4" THEN RecalcOptFiles FILTERFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK5" THEN RecalcOptFiles SAMPLEFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK6" THEN RecalcOptFiles CLIPARTFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK7" THEN RecalcOptFiles TRAINFILES SetDriveStatus GOTO CUSTINST ELSEIF sz$ = "CHK8" THEN NETINSTALL& = FMTRUE RecalcOptFiles NETFILES SetDriveStatus GOTO CUSTINST '$ENDIF ELSEIF sz$ = "BTN1" THEN UIPop 1 GOTO FILTOPT ELSEIF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO CUSTINST ELSE GOSUB ASKQUIT GOTO CUSTINST END IF INSTALL: ClearCopyList CreateDir DEST$, cmoNone OpenLogFile MakePath(DEST$, LOGFILE$), 0 ''open install.log for writing AddOptFilesToCopyList BASEFILES AddOptFilesToCopyList HELPFILES '$IFNDEF SINGLEPROD AddOptFilesToCopyList DICTFILES '$ENDIF AddOptFilesToCopyList FILTERFILES AddOptFilesToCopyList SAMPLEFILES AddOptFilesToCopyList CLIPARTFILES AddOptFilesToCopyList TRAINFILES IF NETINSTALL THEN AddOptFilesToCopyList NETFILES END IF '$IFDEF DEBUG i% = SetCopyMode(0) DumpCopyList "e:\tmp\install.lst" '$ENDIF IF (FMInstalled(DEST$, 3) = 1) THEN MAKER_30 = FMTRUE ENDIF '*** Add splash screens to billboard list ClearBillboardList AddToBillboardList CUIDLL$, SCREEN1, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN2, "FModelessDlgProc", 2 AddToBillboardList CUIDLL$, SCREEN3, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN4, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN5, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN6, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN7, "FModelessDlgProc", 1 AddToBillboardList CUIDLL$, SCREEN8, "FModelessDlgProc", 1 ''Calculate where to place copy gauge so that it is below the ''splash screens and centered regardless of display. Don't need ''to calculate width, because a -1 automatically centers gauge ''horizontally. ''(look at GetDialogBaseUnits for formula) ht% = GetScreenHeight() htunit% = ((GetDialogBaseUnits() AND &HFFFF0000))/&HFFFF SetCopyGaugePosition -1, (8*((ht*3)/4))/htunit CopyFilesInCopyList '$IFDEF REG_DB_ENABLED CreateRegKeyValue "Frame", "Frame" CreateRegKeyValue "Frame\shell\print\ddeexec", "[FileOpen(%1)][FilePrint()]" CreateRegKeyValue "Frame\shell\print\ddeexec\topic", "system" CreateRegKeyValue "Frame\shell\print\ddeexec\application", "Frame" CreateRegKeyValue "Frame\shell\print\command", MakePath(DEST$,"frame.exe") CreateRegKeyValue "Frame\shell\open\command", MakePath(DEST$,"frame.exe") CreateRegKeyValue "Frame\shell\open\ddeexec", "[FileOpen(%1)]" CreateRegKeyValue "Frame\shell\open\ddeexec\topic", "system" CreateRegKeyValue "Frame\shell\open\ddeexec\application", "Frame" IF (DoesRegKeyExist(".DOC") = 0) THEN CreateRegKeyValue ".DOC", "Frame" END IF IF (DoesRegKeyExist(".FRM") = 0) THEN CreateRegKeyValue ".FRM", "Frame" END IF IF (DoesRegKeyExist(".BK") = 0) THEN CreateRegKeyValue ".BK", "Frame" END IF '$ENDIF IF (NOT NETINSTALL) THEN '**** Put username and registration number in fmres.dll. Also whether or '**** not if demomaker. FMRESPATH$ = MakePath(DEST$,"fminit\fmres.dll") IF (DEMO) THEN stat% = FMUpdateRes((FMRESPATH$),(USERNAME$),(COMPANY$),(REGNUM$),1) ELSE stat% = FMUpdateRes((FMRESPATH$),(USERNAME$),(COMPANY$),(REGNUM$),0) END IF 'Demo IF (stat% <> 0) THEN dlg% = EXITFAILURE GOTO QUITL1 END IF '**** Create Program Group for FrameMaker 4 and update win.ini IF GetListItem(CHECKSTATES$, BASEFILES) = "ON" THEN CreateIniKeyValue "WIN.INI", "FrameMaker4", "FMHome", DEST$, cmoOverwrite CreateIniKeyValue "WIN.INI", "FrameMaker4", "IniFile", "maker.ini", cmoAll ''Add extensions to win.ini keystring$ = MakePath(DEST$,"frame.exe") + " ^.doc" IF (DoesIniKeyExist("WIN.INI", "Extensions", "doc") = 1) THEN pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "doc"), "maker.exe") pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "doc"), "frame.exe") IF ((pos1% > 1) OR (pos2% > 1)) THEN CreateIniKeyValue "WIN.INI", "Extensions", "doc", keystring$, cmoOverwrite END IF ELSE CreateIniKeyValue "WIN.INI", "Extensions", "doc", keystring$, cmoOverwrite END IF keystring$ = MakePath(DEST$,"frame.exe") + " ^.bk" IF (DoesIniKeyExist("WIN.INI", "Extensions", "bk") = 1) THEN pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "bk"), "maker.exe") pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "bk"), "frame.exe") IF ((pos1% > 1) OR (pos2% > 1)) THEN CreateIniKeyValue "WIN.INI", "Extensions", "bk", keystring$, cmoOverwrite END IF ELSE CreateIniKeyValue "WIN.INI", "Extensions", "bk", keystring$, cmoOverwrite END IF keystring$ = MakePath(DEST$,"frame.exe") + " ^.frm" IF (DoesIniKeyExist("WIN.INI", "Extensions", "frm") = 1) THEN pos1% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "frm"), "maker.exe") pos2% = INSTR(GetIniKeyString("WIN.INI", "Extensions", "frm"), "frame.exe") IF ((pos1% > 1) OR (pos2% > 1)) THEN CreateIniKeyValue "WIN.INI", "Extensions", "frm", keystring$, cmoOverwrite END IF ELSE CreateIniKeyValue "WIN.INI", "Extensions", "frm", keystring$, cmoOverwrite END IF CreateProgmanGroup PROGGROUP$, "", cmoNone ShowProgmanGroup PROGGROUP$, 1, cmoNone CreateProgmanItem PROGGROUP$, MAKERITEM$, MakePath(DEST$,"frame.exe -maker"), "", cmoOverwrite '' gpk - changed "maker.exe" with "frame.exe -maker" '' ELSE 'basefiles '' CreateIniKeyValue "WIN.INI", "FrameMaker4", "FMHome", DEST$, cmoAll END IF 'installed basefiles '** Copy fminit\fmfont.ttf to windows system directory '** Copy fmdbms.dll and fmheap.dll to windows system directory -gpk winsysdir$ = GetWindowsSysDir() CopyFile MakePath(DEST$,"fminit\fmfont.ttf"),MakePath(winsysdir,"fmfont.ttf"),cmoOverwrite,0 CopyFile MakePath(DEST$,"fmdbms.dll"),MakePath(winsysdir,"fmdbms.dll"),cmoOverwrite,0 CopyFile MakePath(DEST$,"fmheap.dll"),MakePath(winsysdir,"fmheap.dll"),cmoOverwrite,0 END IF 'not network install MAKERINI = MakePath(DEST$, "maker.ini") '$IFNDEF SINGLEPROD IF (LANGUIOPT$ = "2") THEN CreateIniKeyValue MAKERINI, "Frame", "Language", "UKEnglish", cmoAll END IF '$ENDIF '*** If user installed base files (includes some filters) or optional '*** filters, update with entries in [Filters] section of maker.ini. '*** If installing to a network server, do not update maker.ini or '*** setup will complain about a difference in size when installing '*** from the network. Besides, users will not run maker from the '*** network server directory. IF (NOT NETINSTALL) THEN IF (GetListItem(CHECKSTATES$, BASEFILES) = "ON" OR GetListItem(CHECKSTATES$, FILTERFILES) = "ON") THEN filterpath$ = MakePath(DEST$,"filters") IF (DoesIniSectionExist(MAKERINI, "Filters") = 1) THEN RemoveIniSection MAKERINI, "Filters", cmoNone END IF FOR i% = 0 TO (NUMENTRIES-1) STEP 1 IF (MAPTABLE(i) = "frame.exe") THEN tmpfile$ = MakePath(DEST$, "frame.exe") ELSE tmpfile$ = MakePath(filterpath, MAPTABLE(i)) END IF IF (DoesFileExist(tmpfile, femExists) = 1) THEN CreateIniKeyValue MAKERINI, "Filters", FILTTABLE(i).id, FILTTABLE(i).entry, cmoVital END IF NEXT i END IF END IF 'Copy over some user set preferences from the old maker.ini to the 'new maker.ini IF (MAKER_30 AND NOT NETINSTALL) THEN ModifyMakerIni END IF 'Installing on network server. Need to update entries 'in netsetup.ini file. IF (NETINSTALL) THEN UpdateNetIni END IF CloseLogFile QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN IF (NETINSTALL) THEN dlg% = EXITNETINSTALL ELSE dlg% = EXITSUCCESS END IF ''Remove log file if installation was successful. RemoveFile MakePath(DEST$,LOGFILE$), cmoNone ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT ELSE dlg% = EXITFAILURE END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END ERRQUIT: i% = DoMsgBox(ERRMSG$, ERRTITLE$, MB_OK+MB_TASKMODAL+MB_ICONHAND) END FILTOPT: ''Take snapshot of FILTLISTOUT$ in case user chooses "CANCEL" numfilters% = GetListLength(FILTLISTOUT$) FOR i% = 1 TO numfilters% STEP 1 filter$ = GetListItem(FILTLISTOUT$, i%) IF (filter$ <> "") THEN AddListItem SAVELISTOUT$, filter$ END IF NEXT i% FILTOPT1: sz$ = UIStartDlg(CUIDLL$, FILTERS, "FMultiDlgProc", FILTHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN numfilters% = GetListLength(FILTLISTOUT$) IF (numfilters% = 0) THEN ReplaceListItem CHECKSTATES$, FILTERFILES, "OFF" ELSE ''In case user clicks "select" pushbutton w/o checking "filters" box ReplaceListItem CHECKSTATES$, FILTERFILES, "ON" END IF RemoveSymbol SAVELISTOUT$ RecalcOptFiles FILTERFILES SetDriveStatus UIPop 1 GOTO CUSTINST ELSEIF sz$ = "EXIT" THEN GOSUB ASKQUIT GOTO FILTOPT1 ELSE numfilters% = GetListLength(FILTLISTOUT$) savenum% = GetListLength(SAVELISTOUT$) IF (numfilters% < savenum%) THEN FOR i% = (numfilters% + 1) TO savenum% STEP 1 AddListItem FILTLISTOUT$, "" NEXT i% FOR i% = 1 TO savenum% STEP 1 ReplaceListItem FILTLISTOUT$, i%, GetListItem(SAVELISTOUT$, i%) NEXT i% ELSEIF (numfilters% > savenum%) THEN RemoveSymbol FILTLISTOUT$ FOR i% = 1 TO savenum% STEP 1 AddListItem FILTLISTOUT$, GetListItem(SAVELISTOUT$, i%) NEXT i% ELSE FOR i% = 1 to NUMFILTERS% STEP 1 ReplaceListItem FILTLISTOUT$, i%, GetListItem(SAVELISTOUT$, i%) NEXT i% ENDIF RemoveSymbol SAVELISTOUT$ UIPop 1 GOTO CUSTINST END IF GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", PATHHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN CHANGEDPATH = FMTRUE olddest$ = DEST$ DEST$ = GetSymbolValue("EditTextOut") ''Validate new path. IF IsDirWritable(DEST$) = 0 THEN GOSUB BADPATH GOTO GETPATHL1 END IF UIPop 1 ''Truncate display if too long IF LEN(DEST$) > 32 THEN ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..." ELSE ReplaceListItem DRIVETEXT$, 7, DEST$ END IF ''Recalc if path changed. IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN ''Installing over FM 3.0? IF (FMInstalled(DEST$, FM30) = 1) THEN DISPLAYMSG = FMTRUE ELSEIF (FMInstalled(DEST$, FM40) = 0) AND (INCRINSTALL) THEN INCRINSTALL = FMFALSE FOR i% = 1 TO NUMOPTIONS STEP 1 ReplaceListItem CHECKSTATES$, i%, "ON" NEXT i% END IF RecalcPath SetDriveStatus ELSE IF (FMInstalled(DEST$, FM30) = 2) THEN DISPLAYMSG = FMFALSE END IF END IF olddest$ = "" GOTO CUSTINST ELSEIF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO GETPATHL1 ELSEIF sz$ = "EXIT" THEN GOSUB ASKQUIT GOTO GETPATHL1 ELSE UIPop 1 GOTO CUSTINST END IF TOOBIG: sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO TOOBIG END IF UIPop 1 RETURN BADPATH: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO BADPATH END IF UIPop 1 RETURN WARNING: sz$ = UIStartDlg(CUIDLL$, MAKER30, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN RecalcPath SetDriveStatus GOTO WARNING END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, ASKEXIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN NONAME: sz$ = UIStartDlg(CUIDLL$, NAMEALERT, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO NONAME END IF UIPop 1 RETURN NOREG: sz$ = UIStartDlg(CUIDLL$, REGALERT, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO NOREG END IF UIPop 1 RETURN BADREG: sz$ = UIStartDlg(CUIDLL$, BADREGNUM, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADREG ENDIF UIPop 1 RETURN '** '** Purpose: '** Adds the specified option files to the copy list. '** Arguments: '** ftype% - type of files to add, one of the following: '** BASEFILES, SAMPLEFILES, CLIPARTFILES, HELPFILES, '** TRAINFILES, DICTFILES, FILTERFILES '** Returns: '** none. '************************************************************************* SUB AddOptFilesToCopyList (ftype%) STATIC IF ftype% = NETFILES THEN IF (NOT NETINCINSTALL) THEN SrcDir$ = GetSymbolValue("STF_SRCDIR") AddSectionFilesToCopyList "netsetup", SrcDir$, DEST$ END IF SrcDir$ = "" ELSE IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN SrcDir$ = GetSymbolValue("STF_SRCDIR") IF ftype% = BASEFILES THEN AddSectionFilesToCopyList "base", SrcDir$, DEST$ '$IFNDEF SINGLEPROD IF LANGUIOPT$ = "1" THEN AddSectionFilesToCopyList "uscustom", SrcDir$, DEST$ AddSectionFilesToCopyList "usdictionaries", SrcDir$, DEST$ AddSectionFilesToCopyList "ustemplates", SrcDir$, DEST$ ELSE AddSectionFilesToCopyList "ukcustom", SrcDir$, DEST$ AddSectionFilesToCopyList "ukdictionaries", SrcDir$, DEST$ AddSectionFilesToCopyList "uktemplates", SrcDir$, DEST$ END IF '$ENDIF ELSEIF ftype% = SAMPLEFILES THEN '$IFDEF SINGLEPROD AddSectionFilesToCopyList "samples", SrcDir$, DEST$ '$ELSE IF LANGUIOPT$ = "1" THEN AddSectionFilesToCopyList "ussamples", SrcDir$, DEST$ ELSE AddSectionFilesToCopyList "uksamples", SrcDir$, DEST$ END IF '$ENDIF ELSEIF ftype% = HELPFILES THEN AddSectionFilesToCopyList "help", SrcDir$, DEST$ ELSEIF ftype% = TRAINFILES THEN '$IFDEF SINGLEPROD AddSectionFilesToCopyList "training", SrcDir$, DEST$ '$ELSE IF LANGUIOPT$ = "1" THEN AddSectionFilesToCopyList "ustraining", SrcDir$, DEST$ ELSE AddSectionFilesToCopyList "uktraining", SrcDir$, DEST$ END IF '$ENDIF ELSEIF ftype% = CLIPARTFILES THEN AddSectionFilesToCopyList "clipart", SrcDir$, DEST$ '$IFNDEF SINGLEPROD ELSEIF ftype% = DICTFILES THEN IF LANGUIOPT$ = "1" THEN AddSectionFilesToCopyList "ukdictionaries", SrcDir$, DEST$ ELSE AddSectionFilesToCopyList "usdictionaries", SrcDir$, DEST$ END IF '$ENDIF ELSEIF ftype% = FILTERFILES THEN AddSectionFilesToCopyList "filtini", SrcDir$, DEST$ numfilters% = GetListLength(FILTLISTOUT$) FOR i% = 1 TO numfilters% STEP 1 Filter$ = GetListItem(FILTLISTOUT$, i%) IF Filter$ <> "" THEN AddSectionKeyFileToCopyList "filters", Filter$, SrcDir$, DEST$ '** If imagemark filter, need to install its .ini file 'tmpfile$ = GetSectionKeyFileName("filters", Filter$) 'print "filter= ";tmpfile 'length% = LEN(tmpfile) 'print "len= ";length 'print "ext= ";MID$(tmpfile, length-2) 'IF (MID$(tmpfile, length-2) = "flt") THEN ' AddSectionKeyFileToCopyList "filtini", Filter$, SrcDir$, DEST$ 'END IF END IF NEXT i% END IF SrcDir$ = "" END IF END IF END SUB '** '** Purpose: '** Recalculates disk space for the given option files and sets '** the status info symbol "StatusItemsText". '** Arguments: '** ftype% - type of files to add, one of the following: '** BASEFILES, SAMPLEFILES, CLIPARTFILES, HELPFILES, '** TRAINFILES, DICTFILES, FILTERFILES, NETFILES '** Returns: '** none. '************************************************************************* SUB RecalcOptFiles (ftype%) STATIC CursorSave% = ShowWaitCursor() ClearCopyList AddOptFilesToCopyList ftype% fExtra% = 0 IF ftype% = BASEFILES THEN ListSym$ = BASENEEDS$ IF GetListItem(CHECKSTATES$, BASEFILES) = "ON" THEN ''Add extra cost to Windows drive for ini/progman, etc. ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1 ReplaceListItem EXTRACOSTS$, ndrive%, "6144" fExtra% = 1 END IF ELSEIF ftype% = SAMPLEFILES THEN ListSym$ = SAMPLENEEDS$ ELSEIF ftype% = HELPFILES THEN ListSym$ = HELPNEEDS$ ELSEIF ftype% = TRAINFILES THEN ListSym$ = TRAINNEEDS$ ELSEIF ftype% = CLIPARTFILES THEN ListSym$ = CLIPARTNEEDS '$IFNDEF SINGLEPROD ELSEIF ftype% = DICTFILES THEN ListSym$ = DICTNEEDS '$ENDIF ELSEIF ftype% = FILTERFILES THEN ListSym$ = FILTERNEEDS$ ELSEIF ftype% = NETFILES THEN ListSym$ = NETNEEDS$ END IF StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "") cost& = 0 FOR i% = 1 TO 26 STEP 1 cost& = cost& + VAL(GetListItem(ListSym$, i%)) NEXT i% ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K" IF StillNeed& > 0 THEN ReplaceListItem BIGLIST$, ftype%, "YES" ELSE ReplaceListItem BIGLIST$, ftype%, "" END IF IF fExtra% THEN ReplaceListItem EXTRACOSTS$, ndrive%, "0" END IF RestoreCursor CursorSave% ListSym$ = "" END SUB '** '** Purpose: '** Recalculates disk space and sets option status info according '** to the current destination path. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB RecalcPath STATIC CursorSave% = ShowWaitCursor() RecalcOptFiles BASEFILES RecalcOptFiles SAMPLEFILES RecalcOptFiles HELPFILES RecalcOptFiles TRAINFILES RecalcOptFiles CLIPARTFILES '$IFNDEF SINGLEPROD RecalcOptFiles DICTFILES '$ENDIF RecalcOptFiles FILTERFILES IF (NETINSTALL) AND (NOT NETINCINSTALL) THEN RecalcOptFiles NETFILES END IF RestoreCursor CursorSave% END SUB '** '** Purpose: '** Sets drive status info according to latest disk space calcs. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB SetDriveStatus STATIC drive$ = MID$(DEST$, 1, 1) ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1 'Have to split up to halfcost and totalcost, because cannot 'have more than 256 chars on one line. halfcost& = VAL(GetListItem(BASENEEDS$, ndrive%)) + VAL(GetListItem(SAMPLENEEDS$, ndrive%)) + VAL(GetListItem(CLIPARTNEEDS$, ndrive%)) + LOGNEED IF NETINSTALL THEN '$IFDEF SINGLEPROD totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%)) '$ELSE totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%)) '$ENDIF ELSE '$IFDEF SINGLEPROD totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) '$ELSE totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) '$ENDIF END IF 'netinstall free& = GetFreeSpaceForDrive(drive$) ReplaceListItem DRIVETEXT$, 1, drive$ + ":" ReplaceListItem DRIVETEXT$, 2, STR$(totalcost& / 1024) + " K" ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K" IF drive$ = WINDRIVE$ THEN ReplaceListItem DRIVETEXT$, 4, "" ReplaceListItem DRIVETEXT$, 5, "" ReplaceListItem DRIVETEXT$, 6, "" ELSE ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1 halfcost& = VAL(GetListItem(BASENEEDS$, ndrive%)) + VAL(GetListItem(SAMPLENEEDS$, ndrive%)) + VAL(GetListItem(CLIPARTNEEDS$, ndrive%)) IF (NETINSTALL) THEN '$IFDEF SINGLEPROD totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%)) '$ELSE totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) + VAL(GetListItem(NETNEEDS$, ndrive%)) '$ENDIF ELSE '$IFDEF SINGLEPROD totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) '$ELSE totalcost& = halfcost& + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(TRAINNEEDS$, ndrive%)) + VAL(GetListItem(DICTNEEDS$, ndrive%)) + VAL(GetListItem(FILTERNEEDS$, ndrive%)) '$ENDIF END IF 'net install IF totalcost& = 0 THEN ReplaceListItem DRIVETEXT$, 4, "" ReplaceListItem DRIVETEXT$, 5, "" ReplaceListItem DRIVETEXT$, 6, "" ELSE free& = GetFreeSpaceForDrive(WINDRIVE$) ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":" ReplaceListItem DRIVETEXT$, 5, STR$(totalcost& / 1024) + " K" ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K" END IF END IF END SUB '** '** Purpose: '** Copies some user set preferences in 3.0 maker.ini '** to 4.0 maker.ini. '** Arguments: '** none. '** Returns: '** none. '****************************************************************** SUB ModifyMakerIni STATIC Maker30Ini$ = MakePath(DEST$, "makerini.bak") CreateIniKeyValue MAKERINI$,"Frame","PCName",GetIniKeyString(Maker30Ini$,"FrameMaker","PCName"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","BackupOnSave",GetIniKeyString(Maker30Ini$,"Preferences","BackupOnSave"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","AutoSave",GetIniKeyString(Maker30Ini$,"Preferences","AutoSave"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","ShowErrors",GetIniKeyString(Maker30Ini$,"Preferences","ShowErrors"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","GreekSize",GetIniKeyString(Maker30Ini$,"Preferences","GreekSize"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","FMImage",GetIniKeyString(Maker30Ini$,"Preferences","FMImage"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","NetworkLock",GetIniKeyString(Maker30Ini$,"Preferences","NetworkLock"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","Zoom",GetIniKeyString(Maker30Ini$,"Preferences","Zoom"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","PenWidths",GetIniKeyString(Maker30Ini$,"Preferences","PenWidths"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","ClipboardFormatsPriorities",GetIniKeyString(Maker30Ini$,"Preferences","ClipboardFormatsPriorities"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Preferences","MonitorSize",GetIniKeyString(Maker30Ini$,"Preferences","MonitorSize"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","Sizes",GetIniKeyString(Maker30Ini$,"Fonts","Sizes"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","Angles",GetIniKeyString(Maker30Ini$,"Fonts","Angles"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","Variations",GetIniKeyString(Maker30Ini$,"Fonts","Variations"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","Weights",GetIniKeyString(Maker30Ini$,"Fonts","Weights"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","DefaultSize",GetIniKeyString(Maker30Ini$,"Fonts","DefaultSize"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","DefaultFamily",GetIniKeyString(Maker30Ini$,"Fonts","DefaultFamily"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","DefaultAngle",GetIniKeyString(Maker30Ini$,"Fonts","DefaultAngle"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","DefaultVariation",GetIniKeyString(Maker30Ini$,"Fonts","DefaultVariation"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","DefaultWeight",GetIniKeyString(Maker30Ini$,"Fonts","DefaultWeight"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","MathFamily",GetIniKeyString(Maker30Ini$,"Fonts","MathFamily"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Fonts","NonTextFamilies",GetIniKeyString(Maker30Ini$,"Fonts","NonTextFamilies"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Files","UserDictionary",GetIniKeyString(Maker30Ini$,"Files","UserDictionary"),cmoOverwrite CreateIniKeyValue MAKERINI$,"Files","SiteDictionary",GetIniKeyString(Maker30Ini$,"Files","SiteDictionary"),cmoOverwrite END SUB '** '** Purpose: '** Updates entries in netsetup.ini '** Arguments: '** none. '** Returns: '** none. '****************************************************************** SUB UpdateNetIni STATIC NETINI$ = MakePath(DEST$, "netsetup\netsetup.ini") CreateIniKeyValue NETINI$, "FMNetPath", "NetPath", DEST$, cmoAll FOR i% = 1 TO NUMOPTIONS STEP 1 IF (GetListItem(CHECKSTATES$, i%) = "ON") THEN IF i% = BASEFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "FrameExe", "Yes,Enable", cmoOverwrite CreateIniKeyValue NETINI$, "FMOptions", "FMInitFiles", "Yes,Enable", cmoOverwrite CreateIniKeyValue NETINI$, "FMOptions", "Templates", "No,Enable", cmoOverwrite '$IFDEF SINGLEPROD CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Enable", cmoOverwrite '$ENDIF ELSEIF i% = SAMPLEFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "Samples", "No,Enable", cmoOverwrite ELSEIF i% = HELPFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "Help", "No,Enable", cmoOverwrite ELSEIF i% = TRAINFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "Training", "Yes,Enable", cmoOverwrite ELSEIF i% = CLIPARTFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "ClipArt", "No,Enable", cmoOverwrite '$IFNDEF SINGLEPROD ELSEIF i% = DICTFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Enable", cmoOverwrite '$ENDIF ELSEIF i% = FILTERFILES THEN CreateIniKeyValue NETINI$, "FMOptions", "Filters", "No,Enable", cmoOverwrite END IF ELSE 'Option was not installed, so disable IF (NOT INCRINSTALL) THEN IF i% = BASEFILES THEN CreateIniKeyValue NETINI$,"FMOptions","FrameExe","No,Disable",cmoOverwrite CreateIniKeyValue NETINI$,"FMOptions","FMInitFiles","No,Disable",cmoOverwrite CreateIniKeyValue NETINI$,"FMOptions","Templates","No,Disable",cmoOverwrite '$IFDEF SINGLEPROD CreateIniKeyValue NETINI$, "FMOptions", "Dictionaries", "No,Disable", cmoOverwrite '$ENDIF ELSEIF i% = SAMPLEFILES THEN CreateIniKeyValue NETINI$,"FMOptions","Samples","No,Disable",cmoOverwrite ELSEIF i% = HELPFILES THEN CreateIniKeyValue NETINI$,"FMOptions","Help","No,Disable",cmoOverwrite ELSEIF i% = TRAINFILES THEN CreateIniKeyValue NETINI$,"FMOptions","Training","No,Disable",cmoOverwrite ELSEIF i% = CLIPARTFILES THEN CreateIniKeyValue NETINI$,"FMOptions","ClipArt","No,Disable",cmoOverwrite '$IFNDEF SINGLEPROD ELSEIF i% = DICTFILES THEN CreateIniKeyValue NETINI$,"FMOptions","Dictionaries","No,Disable",cmoOverwrite '$ENDIF ELSEIF i% = FILTERFILES THEN CreateIniKeyValue NETINI$,"FMOptions","Filters","No,Disable",cmoOverwrite END IF END IF 'Incremental install END IF 'Option installed NEXT i% 'If filters were installed, need to know which ones, so we know 'which ones to install for netsetup. IF (GetListItem(CHECKSTATES$, FILTERFILES) = "ON" OR GetListItem(CHECKSTATES$, BASEFILES) = "ON") THEN IF (NOT INCRINSTALL) THEN RemoveIniSection NETINI$, "Filters", cmoNone END IF IF (GetListItem(CHECKSTATES$, FILTERFILES) = "ON") THEN numfilters% = GetListLength(FILTLISTOUT$) FOR i% = 1 TO numfilters% STEP 1 Filter$ = GetListItem(FILTLISTOUT$, i%) IF (Filter$ <> "") THEN CreateIniKeyValue NETINI$,"Filters",Filter$,"Yes",cmoNone END IF NEXT i% END IF IF (GetListItem(CHECKSTATES$, BASEFILES) = "ON") THEN CreateIniKeyValue NETINI$,"Filters","BaseFilters","Yes",cmoNone END IF END IF 'Filters installed END SUB '** '** Purpose: '** Checks if FrameMaker is already installed in the '** specified directory. For our purposes, FrameMaker is '** considered installed if: '** a) maker.exe exists in the directory. '** b) The FMHome field in WIN.INI is that directory. '** Arguments: '** makerDir$ - directory name '** version% - FrameMaker version to check for (3 or 4) '** Return Value: '** Return 1 if FrameMaker is already installed. '** Otherwise return 0. '****************************************************************** FUNCTION FMInstalled (makerDir$, version%) STATIC AS INTEGER IniStat& = FMFALSE IF (version% = 3) THEN section$ = "FrameMaker3.00" IF (DoesFileExist(MakePath(makerDir$,"maker.ini"), femExists) = 1) THEN IF (GetIniKeyString(MakePath(makerDir$,"maker.ini"),"FrameMaker","Version") = "3.00") OR (GetIniKeyString(MakePath(makerDir$,"maker.ini"),"FrameMaker","Version") = "3.01") THEN IniStat& = FMTRUE END IF END IF ELSE section$ = "FrameMaker4" IF (DoesFileExist(MakePath(makerDir$,"maker.ini"), femExists) = 1) THEN keystring$ = GetIniKeyString(MakePath(makerDir$,"maker.ini"),"Frame","Version") IF (INSTR("4.0", keystring$) = 1) THEN IniStat& = FMTRUE END IF END IF END IF IF (DoesFileExist(MakePath(makerDir$,"frame.exe"), femExists) = 1) AND (IniStat) THEN '* gpk - changed maker.exe to frame.exe IF (DoesIniSectionExist("WIN.INI", section$) = 1) THEN fmhome$ = GetIniKeyString("WIN.INI", section$, "FMHome") ufmhome$ = UCASE$(fmhome$) IF (ufmhome$ = makerDir$) THEN FMInstalled = 1 ELSE FMInstalled = 0 END IF ELSE FMInstalled = 0 END IF ELSE FMInstalled = 0 END IF END FUNCTION '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING IF szDir$ = "" THEN MakePath = szFile$ ELSEIF szFile$ = "" THEN MakePath = szDir$ ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN MakePath = szDir$ + szFile$ ELSE MakePath = szDir$ + "\" + szFile$ END IF END FUNCTION