home *** CD-ROM | disk | FTP | other *** search
/ Home Entertainment Cube … Strategy Shareware Games / STRATEGY.ISO / for_pc / pixsetup.ms_ < prev    next >
Text File  |  1994-04-18  |  27KB  |  920 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit PixFolio
  3. '**************************************************************************
  4. ''  Revised Pixfolio Setup Script
  5. ''   Feb 94: David H. Goeb
  6. ''   Apr 94: David H. Goeb
  7.  
  8. ''   Additions
  9. ''     Changed to have PCD files as part of application files
  10. ''     Added a WIN.INI check function to see if catalog was 
  11. ''      already installed, and also check if new version.
  12. ''      All Aztech Text files are also added to the program group
  13. ''      Further Enhancements are custom Install call and Multi
  14. ''      Catalog support
  15. ''     Additional bug fixes and addition of gems catalog
  16.  
  17.  
  18. ''$DEFINE DEBUG  ''Define for script development/debugging
  19.  
  20. '$INCLUDE 'setupapi.inc'
  21. '$INCLUDE 'msdetect.inc'
  22. '$INCLUDE 'mscuistf.inc'
  23.  
  24. ''Dialog ID's
  25. CONST WELCOME       = 100
  26. CONST ASKQUIT       = 200
  27. CONST DESTPATH      = 300
  28. CONST EXITFAILURE   = 400
  29. CONST EXITQUIT      = 600
  30. CONST EXITSUCCESS   = 700
  31. CONST EXITREGISTERED= 750
  32. CONST OPTIONS       = 800
  33. CONST APPHELP       = 900
  34. CONST CUSTHELP      = 910
  35. CONST REGHELP       = 920
  36. CONST CUSTINST      = 6200
  37. CONST TOOBIG        = 6300
  38. CONST NOAVI         = 6350
  39. CONST NOAPP         = 6360
  40. CONST BADPATH       = 6400
  41. CONST CDGETNAMEORG  = 7500
  42. CONST MODELESS      = 5000
  43. CONST QUITWIN       = 6500
  44.  
  45. ''Bitmap ID
  46. CONST LOGO = 1
  47.  
  48. ''File Types
  49. CONST APPFILES     = 1
  50. CONST OPTFILES1    = 2
  51. CONST OPTFILES2    = 3
  52. CONST OPTFILES3    = 4
  53. CONST SYMFILES     = 5
  54. CONST CATFILES     = 6
  55. ''================================
  56. GLOBAL CATCOST%
  57.  
  58. GLOBAL CC$
  59.  
  60. GLOBAL DEST$        ''Default destination directory.
  61. GLOBAL WINDRIVE$    ''Windows drive letter.
  62. GLOBAL OPTCUR$      ''Option selection from option dialog.
  63. GLOBAL CUIDLL$      ''Custom user interface DLL
  64. GLOBAL szTempDir$   ''Working directory
  65. GLOBAL SysDir$      ''Windows System Directory
  66. GLOBAL ini$         ''INI file path
  67. GLOBAL astr$        ''Usefull little string
  68.  
  69. GLOBAL NOPT$     ''Option selection from OptFiles1 option dialog.
  70.  
  71. GLOBAL OPT1OPT$     ''?? Option selection from OptFiles1 option dialog.
  72. GLOBAL OPT2OPT$     ''?? Option selection from OptFiles2 option dialog.
  73. GLOBAL OPT3OPT$
  74. GLOBAL SYMOPT$      ''Option selection for symbol files.
  75.  
  76. ''CustInst list symbol names
  77. GLOBAL APPNEEDS$    ''Option list costs per drive
  78. GLOBAL OPT1NEEDS$
  79. GLOBAL OPT2NEEDS$
  80. GLOBAL OPT3NEEDS$   ''Multimedia files
  81. GLOBAL SYMNEEDS$
  82. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  83. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  84.  
  85. ''Dialog list symbol names
  86. GLOBAL CHECKSTATES$
  87. GLOBAL STATUSTEXT$
  88. GLOBAL DRIVETEXT$
  89.  
  90.  
  91. DECLARE SUB AddOptFilesToCopyList (ftype%)
  92. DECLARE SUB RecalcOptFiles (ftype%)
  93. DECLARE SUB RecalcPath
  94. DECLARE SUB SetDriveStatus
  95. DECLARE SUB Install
  96. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  97.  
  98.  
  99. INIT:
  100.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  101.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  102.  
  103.     SetBitmap CUIDLL$, LOGO
  104.     SetTitle "PixFolio Setup"
  105.     szTempDir$ = GetSymbolValue("STF_CWDDIR")
  106.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  107.     IF szInf$ = "" THEN
  108.        szInf$ = GetSymbolValue("STF_CWDDIR") + "PIXSETUP.INF"
  109.     END IF
  110.     ReadInfFile szInf$
  111.     '' Force Catalog to be include unless selected off
  112.  
  113.     NOPT$ = "1"
  114.  
  115.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  116. ''    DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  117.     DEST$ = ".............................................................................................................................."
  118.     GetPixDir DEST$
  119.     if DEST$ = "" THEN
  120.         DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  121.     END IF
  122.     ini$ = MakePath(GetWindowsDir, "WIN.INI")
  123.  
  124.     ''CustInst list symbols
  125.     CHECKSTATES$ = "CheckItemsState"
  126.     STATUSTEXT$  = "StatusItemsText"
  127.     DRIVETEXT$   = "DriveStatusText"
  128. '   FOR i% = 1 TO 3 STEP 1
  129.         AddListItem CHECKSTATES$, "ON"  '' Main program files
  130.         AddListItem CHECKSTATES$, "ON"  '' PCD files
  131.         AddListItem CHECKSTATES$, "OFF" '' VFW
  132.         AddListItem CHECKSTATES$, "ON" '' Multimedia
  133.         AddListItem CHECKSTATES$, "OFF" '' Symbols
  134. '    NEXT i%
  135.     FOR i% = 1 TO 5 STEP 1
  136.         AddListItem STATUSTEXT$, ""
  137.     NEXT i%
  138.     FOR i% = 1 TO 7 STEP 1
  139.         AddListItem DRIVETEXT$, ""
  140.     NEXT i%
  141.     ReplaceListItem DRIVETEXT$, 7, DEST$
  142.  
  143.     ''Disk cost list symbols
  144.     APPNEEDS$   = "AppNeeds"
  145.     OPT1NEEDS$  = "Opt1Needs"
  146.     OPT2NEEDS$  = "Opt2Needs"
  147.     OPT3NEEDS$  = "Opt3Needs"
  148.     SYMNEEDS$   = "SymNeeds"
  149.     EXTRACOSTS$ = "ExtraCosts"
  150.     BIGLIST$    = "BigList"
  151.     FOR i% = 1 TO 5 STEP 1
  152.         AddListItem BIGLIST$, ""
  153.     NEXT i%
  154.     FOR i% = 1 TO 26 STEP 1
  155.         AddListItem EXTRACOSTS$, "0"
  156.     NEXT i%
  157.  
  158.     ''File Option Variables
  159.     OPT1OPT$ = "1"
  160.     OPT2OPT$ = "1"
  161.     OPT3OPT$ = "1"
  162.     SYMOPT$  = "1"
  163.  
  164.     SysDir$ = GetWindowsSysDir()
  165.     RecalcPath
  166. ''    i% = DoMsgBox("RecalcPath OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  167.     SetDriveStatus
  168. ''    i% = DoMsgBox("SetDriveStatus OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  169.  
  170.  
  171.      OPTCUR$ = "1"
  172. '    DEST$ = "C:\PIXFOLIO"
  173.  
  174. '$IFDEF DEBUG
  175.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  176.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  177.     IF IsDriveValid(WinDrive$) = 0 THEN
  178.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  179.     GOTO QUIT
  180.     END IF
  181. '$ENDIF ''DEBUG
  182.  
  183.  
  184. WELCOME:
  185.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  186.     IF sz$ = "CONTINUE" THEN
  187.     UIPop 1
  188.     ELSE
  189.     GOSUB ASKQUIT
  190.     GOTO WELCOME
  191.     END IF
  192.  
  193.  
  194. OPTION:
  195.     SetSymbolValue "RadioDefault", OPTCUR$
  196. OPTL1:
  197.  
  198.     NOPT$ = "0"
  199.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  200.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  201.  
  202. '$IFDEF DEBUG
  203.      i% = DoMsgBox("Result ('"+OPTCUR$+"') Was Returned.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  204. '$ENDIF ''DEBUG
  205.  
  206.     IF OPTCUR$ = "1" THEN
  207.       NOPT$ = "0"
  208.     ELSE
  209.       NOPT$ = "1"
  210.     END IF
  211.  
  212.     IF sz$ = "CONTINUE" THEN
  213.     UIPop(1)
  214.     ELSEIF sz$ = "REACTIVATE" THEN
  215.     GOTO OPTL1
  216.     ELSE
  217.     GOSUB ASKQUIT
  218.     GOTO OPTION
  219.     END IF
  220.  
  221.  
  222. CUSTINST:
  223.     SetDriveStatus
  224.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  225.  
  226.     IF sz$ = "CONTINUE" THEN
  227.         ''Install only if it will fit.
  228.         FOR i% = 1 TO 5 STEP 1
  229.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  230.                 GOSUB TOOBIG
  231.                 GOTO CUSTINST
  232.             END IF
  233.         NEXT i%
  234.         UIPop 1
  235.         GOTO INSTALLIT
  236.     ELSEIF sz$ = "PATH" THEN
  237.         GOTO GETPATH
  238.     ELSEIF sz$ = "CHK1" THEN
  239.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 0 AND GetListItem(CHECKSTATES$, APPFILES) = "OFF" THEN
  240.             GOSUB NOAPP
  241.             GOTO CUSTINST
  242.         END IF
  243.         RecalcOptFiles APPFILES
  244.         RecalcOptFiles SYMFILES
  245.         SetDriveStatus
  246.         GOTO CUSTINST
  247.     ELSEIF sz$ = "CHK2" THEN
  248.         RecalcOptFiles OPTFILES1
  249.         RecalcOptFiles SYMFILES
  250.         SetDriveStatus
  251.         GOTO CUSTINST
  252.     ELSEIF sz$ = "CHK3" THEN
  253.         IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  254.             IF CheckForAVI = 0 THEN
  255.                 GOSUB NOAVI
  256.                 ReplaceListItem CHECKSTATES$, OPTFILES2, "OFF"
  257.             END IF
  258.         END IF
  259.         RecalcOptFiles OPTFILES2
  260.         RecalcOptFiles SYMFILES
  261.         SetDriveStatus
  262.         GOTO CUSTINST
  263.     ELSEIF sz$ = "CHK4" THEN
  264.         RecalcOptFiles OPTFILES3
  265.         RecalcOptFiles SYMFILES
  266.         SetDriveStatus
  267.         GOTO CUSTINST
  268.     ELSEIF sz$ = "CHK5" THEN
  269.         RecalcOptFiles SYMFILES
  270.         SetDriveStatus
  271.         GOTO CUSTINST
  272.  
  273.     ELSEIF sz$ = "BTN2" THEN
  274.         GOTO OPTFILES1
  275.     ELSEIF sz$ = "BTN3" THEN
  276.         GOTO OPTFILES2
  277.     ELSEIF sz$ = "BTN4" THEN
  278.         GOTO OPTFILES3
  279.     ELSEIF sz$ = "BTN5" THEN
  280.         GOTO SYMFILES
  281.     ELSEIF sz$ = "REACTIVATE" THEN
  282.         RecalcPath
  283.         SetDriveStatus
  284.         GOTO CUSTINST
  285.     ELSE
  286.         GOTO OPTION
  287.         '' Allow to reverse back to change CD option
  288.         ''GOSUB ASKQUIT
  289.         ''GOTO CUSTINST
  290.     END IF
  291.  
  292.  
  293. GETPATH:
  294.     SetSymbolValue "EditTextIn", DEST$
  295.     SetSymbolValue "EditFocus", "END"
  296. GETPATHL1:
  297.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  298.  
  299.     IF sz$ = "CONTINUE" THEN
  300.         olddest$ = DEST$
  301.         DEST$ = GetSymbolValue("EditTextOut")
  302.  
  303.         ''Validate new path.
  304.         IF IsDirWritable(DEST$) = 0 THEN
  305.             GOSUB BADPATH
  306.             GOTO GETPATHL1
  307.         END IF
  308.         UIPop 1
  309.  
  310.         ''Truncate display if too long.
  311.         IF LEN(DEST$) > 23 THEN
  312.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  313.         ELSE
  314.             ReplaceListItem DRIVETEXT$, 7, DEST$
  315.         END IF
  316.  
  317.         ''Recalc if path changed.
  318.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  319.             RecalcPath
  320.             SetDriveStatus
  321.         END IF
  322.  
  323.         olddest$ = ""
  324.         GOTO CUSTINST
  325.     ELSEIF sz$ = "REACTIVATE" THEN
  326.         RecalcPath
  327.         SetDriveStatus
  328.         GOTO GETPATHL1
  329.     ELSEIF sz$ = "EXIT" THEN
  330.         GOSUB ASKQUIT
  331.         GOTO GETPATHL1
  332.     ELSE
  333.         UIPop 1
  334.         GOTO CUSTINST
  335.     END IF
  336.  
  337. INSTALLIT:
  338.     SetSymbolValue "SERIAL", "2X09AA001302"
  339.     SetSymbolValue "OWNER", "Aztech New Media Corp."
  340.     IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 1 THEN
  341.         l& = GetStringTable(DEST$)
  342.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.INI"), femReadWrite) = 1 THEN
  343.             ini$ = MakePath(DEST$, "PIXFOLIO.INI")
  344.         END IF
  345.     END IF
  346.     SERIAL$ = GetSymbolValue("SERIAL")
  347.     OWNER$  = GetSymbolValue("OWNER")
  348.     SERIAL1$ = GetIniKeyString(ini$, "PixFolio", "Registration Nbr")
  349.     OWNER1$ = GetIniKeyString(ini$, "PixFolio", "Registered To")
  350. '*    i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  351.  
  352.     IF ValidateReg(SERIAL1$) = 1 THEN
  353.         SERIAL$ = SERIAL1$
  354.         OWNER$ = OWNER1$
  355. '*        i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  356.     END IF
  357.     SetSymbolValue "SERIAL", SERIAL$
  358.     SetSymbolValue "OWNER", OWNER$
  359.  
  360.     Install
  361.  
  362.     IF(DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 OR DoesFileExist(MakePath(DEST$, "PIXAVI.DLL"), femReadWrite) = 1) AND MID$(SERIAL$, 6, 1) <> "B" THEN
  363.         GOTO GETSERIAL
  364.     END IF
  365.  
  366.     IF ValidateReg(SERIAL$) = 1 THEN
  367.         GOTO UPDATEIT
  368.     END IF
  369.  
  370. GETSERIAL:
  371.  
  372.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$)
  373.     DEST$ = GetSymbolValue("EditTextOut")
  374.  
  375.     IF sz$ = "CONTINUE" THEN
  376.         UIPop 1
  377.     ELSEIF sz$ = "CANCEL" THEN
  378.         UIPop 1
  379.     ELSE
  380.         GOSUB ASKQUIT
  381.         GOTO GETSERIAL
  382.     END IF
  383.  
  384.     SERIAL$ = GetSymbolValue("SERIAL")
  385.     OWNER$  = GetSymbolValue("OWNER")
  386.  
  387. UPDATEIT:
  388.     IF ValidateReg(SERIAL$) = 1 THEN
  389. '*        l& = PutStringTable(DEST$)
  390.         CreateIniKeyValue ini$, "PixFolio", "Registration Nbr", SERIAL$, cmoOverwrite
  391.         CreateIniKeyValue ini$, "PixFolio", "Registered To", OWNER$, cmoOverwrite
  392.     ELSE
  393.         CreateProgmanItem "PixFolio", "Register", "notepad.exe "+MakePath(DEST$,"PIXREGST.FRM"), "", cmoOverwrite
  394.     END IF
  395.  
  396. '*    Install
  397. QUITWIN:
  398.     ii% = RestartListEmpty()
  399.     IF ii% = 0 THEN
  400.         sz$ = UIStartDlg(CUIDLL$, QUITWIN, "FQuitWinDlgProc", 0, "")
  401.         IF sz$ = "CONTINUE" THEN
  402.             UIPop 1
  403.         ELSEIF sz$ = "REACTIVATE" THEN
  404.             GOTO QUITWIN
  405.         ELSE
  406.             GOSUB ASKQUIT
  407.             GOTO QUITWIN
  408.         END IF
  409.         ij% = ExitExecRestart()
  410.     END IF
  411.  
  412.  
  413. QUIT:
  414.     ON ERROR GOTO ERRQUIT
  415.  
  416.     IF ERR = 0 THEN
  417.         IF ValidateReg(SERIAL$) = 1 THEN
  418.             dlg% = EXITREGISTERED
  419.         ELSE
  420.             dlg% = EXITSUCCESS
  421.         END IF
  422.     ELSEIF ERR = STFQUIT THEN
  423.     dlg% = EXITQUIT
  424.     ELSE
  425.     dlg% = EXITFAILURE
  426.     END IF
  427. QUITL1:
  428.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  429.     IF sz$ = "REACTIVATE" THEN
  430.     GOTO QUITL1
  431.     END IF
  432.     UIPop 1
  433.  
  434.     END
  435.  
  436. ERRQUIT:
  437.     i% = DoMsgBox("Setup sources were corrupted, call (502) 955-7527!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  438.     END
  439.  
  440. OPTFILES1:
  441.     SetSymbolValue "RadioDefault", OPT1OPT$
  442. OPT1L1:
  443.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  444.     newopt$ = GetSymbolValue("ButtonChecked")
  445.  
  446.     IF sz$ = "CONTINUE" THEN
  447.         UIPop 1
  448.         IF newopt$ <> OPT1OPT$ THEN
  449.             OPT1OPT$ = newopt$
  450.             RecalcOptFiles OPTFILES1
  451.             SetDriveStatus
  452.         END IF
  453.         newopt$ = ""
  454.         GOTO CUSTINST
  455.     ELSEIF sz$ = "REACTIVATE" THEN
  456.         RecalcPath
  457.         SetDriveStatus
  458.         GOTO OPT1L1
  459.     ELSEIF sz$ = "EXIT" THEN
  460.         GOSUB ASKQUIT
  461.         GOTO OPT1L1
  462.     ELSE
  463.         UIPop 1
  464.         newopt$ = ""
  465.         GOTO CUSTINST
  466.     END IF
  467.  
  468.  
  469.  
  470. OPTFILES2:
  471.     SetSymbolValue "RadioDefault", OPT2OPT$
  472. OPT2L1:
  473.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  474.     newopt$ = GetSymbolValue("ButtonChecked")
  475.  
  476.     IF sz$ = "CONTINUE" THEN
  477.         UIPop 1
  478.         IF newopt$ <> OPT2OPT$ THEN
  479.             OPT2OPT$ = newopt$
  480.             RecalcOptFiles OPTFILES2
  481.             SetDriveStatus
  482.         END IF
  483.         newopt$ = ""
  484.         GOTO CUSTINST
  485.     ELSEIF sz$ = "REACTIVATE" THEN
  486.         RecalcPath
  487.         SetDriveStatus
  488.         GOTO OPT2L1
  489.     ELSEIF sz$ = "EXIT" THEN
  490.         GOSUB ASKQUIT
  491.         GOTO OPT2L1
  492.     ELSE
  493.         UIPop 1
  494.         newopt$ = ""
  495.         GOTO CUSTINST
  496.     END IF
  497.  
  498. OPTFILES3:
  499.     SetSymbolValue "RadioDefault", OPT3OPT$
  500. OPT3L1:
  501.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  502.     newopt$ = GetSymbolValue("ButtonChecked")
  503.  
  504.     IF sz$ = "CONTINUE" THEN
  505.         UIPop 1
  506.         IF newopt$ <> OPT3OPT$ THEN
  507.             OPT3OPT$ = newopt$
  508.             RecalcOptFiles OPTFILES3
  509.             SetDriveStatus
  510.         END IF
  511.         newopt$ = ""
  512.         GOTO CUSTINST
  513.     ELSEIF sz$ = "REACTIVATE" THEN
  514.         RecalcPath
  515.         SetDriveStatus
  516.         GOTO OPT3L1
  517.     ELSEIF sz$ = "EXIT" THEN
  518.         GOSUB ASKQUIT
  519.         GOTO OPT3L1
  520.     ELSE
  521.         UIPop 1
  522.         newopt$ = ""
  523.         GOTO CUSTINST
  524.     END IF
  525.  
  526. SYMFILES:
  527.     SetSymbolValue "RadioDefault", SYMOPT$
  528. OPTSL1:
  529.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  530.     newopt$ = GetSymbolValue("ButtonChecked")
  531.  
  532.     IF sz$ = "CONTINUE" THEN
  533.         UIPop 1
  534.         IF newopt$ <> SYMOPT$ THEN
  535.             SYMOPT$ = newopt$
  536.             RecalcOptFiles SYMFILES
  537.             SetDriveStatus
  538.         END IF
  539.         newopt$ = ""
  540.         GOTO CUSTINST
  541.     ELSEIF sz$ = "REACTIVATE" THEN
  542.         RecalcPath
  543.         SetDriveStatus
  544.         GOTO OPTSL1
  545.     ELSEIF sz$ = "EXIT" THEN
  546.         GOSUB ASKQUIT
  547.         GOTO OPTSL1
  548.     ELSE
  549.         UIPop 1
  550.         newopt$ = ""
  551.         GOTO CUSTINST
  552.     END IF
  553.  
  554.  
  555. TOOBIG:
  556.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  557.     IF sz$ = "REACTIVATE" THEN
  558.         RecalcPath
  559.         SetDriveStatus
  560.         GOTO TOOBIG
  561.     END IF
  562.     UIPop 1
  563.     RETURN
  564.  
  565. NOAVI:
  566.     sz$ = UIStartDlg(CUIDLL$, NOAVI, "FInfo0DlgProc", 0, "")
  567.     IF sz$ = "REACTIVATE" THEN
  568.         RecalcPath
  569.         SetDriveStatus
  570.         GOTO NOAVI
  571.     END IF
  572.     UIPop 1
  573.     RETURN
  574.  
  575. NOAPP:
  576.     sz$ = UIStartDlg(CUIDLL$, NOAPP, "FInfo0DlgProc", 0, "")
  577.     IF sz$ = "REACTIVATE" THEN
  578.         RecalcPath
  579.         SetDriveStatus
  580.         GOTO NOAPP
  581.     END IF
  582.     UIPop 1
  583.     RETURN
  584.  
  585.  
  586. BADPATH:
  587.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  588.     IF sz$ = "REACTIVATE" THEN
  589.     GOTO BADPATH
  590.     END IF
  591.     UIPop 1
  592.     RETURN
  593.  
  594.  
  595. ASKQUIT:
  596.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  597.  
  598.     IF sz$ = "EXIT" THEN
  599.     UIPopAll
  600.     ERROR STFQUIT
  601.     ELSEIF sz$ = "REACTIVATE" THEN
  602.     GOTO ASKQUIT
  603.     ELSE
  604.     UIPop 1
  605.     END IF
  606.     RETURN
  607.  
  608.  
  609.  
  610. '**
  611. '** Purpose:
  612. '**     Builds the copy list and performs all installation operations.
  613. '** Arguments:
  614. '**     none.
  615. '** Returns:
  616. '**     none.
  617. '*************************************************************************
  618. SUB Install STATIC
  619.  
  620.       lTicks& = 20
  621.  
  622.       SrcDir$ = GetSymbolValue("STF_SRCDIR")
  623.       CreateDir DEST$, cmoNone
  624.       ClearBillboardList
  625.       AddToBillboardList CUIDLL$, MODELESS, "FModelessDlgProc", lTicks&
  626.  
  627.       OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  628.       WriteToLogFile ""
  629.       WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  630.       WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  631.       WriteToLogFile ""
  632.       WriteToLogFile "May have had to create the directory: " + DEST$
  633.       WriteToLogFile ""
  634.  
  635.       SetRestartDir(szTempDir)
  636.  
  637.       ClearCopyList
  638.       AddOptFilesToCopyList APPFILES
  639.       AddOptFilesToCopyList OPTFILES1
  640.       AddOptFilesToCopyList OPTFILES2
  641.       AddOptFilesToCopyList OPTFILES3
  642.       AddOptFilesToCopyList SYMFILES
  643.  
  644.  
  645.       AddSectionFilesToCopyList "Remove List", SrcDir$, DEST$
  646.  
  647.       IF NOPT$ = "0" THEN
  648.         cat1$ = MakePath(SrcDir$, "SMPL_"+MID$(SrcDir$,1,1)+".CAT")
  649.         cat2$ = MakePath(SrcDir$, "VR_I_E.CAT")
  650.         cat3$ = MakePath(SrcDir$, "WB_1TO3.CAT")
  651.         cat4$ = MakePath(SrcDir$, "WB_4to6.CAT")
  652.         cat5$ = MakePath(SrcDir$, "DINO_I.CAT")
  653.         cat6$ = MakePath(SrcDir$, "FAL_I_D.CAT")
  654.         cat7$ = MakePath(SrcDir$, "GEM_I_D.CAT")
  655.         cat8$ = MakePath(SrcDir$, "AGB_I_E.CAT")
  656.        ELSE
  657.         AddSectionFilesToCopyList "Catalogs", SrcDir$, DEST$
  658.         AddSectionFilesToCopyList "Sampler_"+MID$(SrcDir$,1,1), SrcDir$, DEST$
  659.         cat1$ = MakePath(DEST$, "SMPL_"+MID$(SrcDir$,1,1)+".CAT")
  660.         cat2$ = MakePath(DEST$, "VR_I_E.CAT")
  661.         cat3$ = MakePath(DEST$, "WB_1TO3.CAT")
  662.         cat4$ = MakePath(DEST$, "WB_4to6.CAT")
  663.         cat5$ = MakePath(DEST$, "DINO_I.CAT")
  664.         cat6$ = MakePath(DEST$, "FAL_I_D.CAT")
  665.         cat7$ = MakePath(DEST$, "GEM_I_D.CAT")
  666.         cat8$ = MakePath(DEST$, "AGB_I_E.CAT")
  667.       END IF
  668.  
  669.       CopyFilesInCopyList
  670.  
  671.       vol$ = "              "
  672.       GetVolume SrcDir$, vol$
  673.       Ext$ = "*.GIF;*.BMP;*.TIF;*.TGA;*.IFF;*.PCX;*.WMF;*.EPS;*.WPG;*.PCD"
  674.       i% = DoesFileExist(cat$, femExists)
  675.       j% = DoesIniSectionExist("WIN.INI", "PixFolio")
  676.       IF i = 1 And j = 0 THEN
  677.         '' CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog1", "Default," + cat$ + "," + Ext$ +"," + vol$ + ",READONLY", cmoNone
  678.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat6$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  679.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog98", "Visual Rythms," + cat2$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  680.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog97", "WorldBank Volumes I to III," + cat3$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  681.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog96", "WorldBank Volumes IV to VI," + cat4$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  682.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog95", "Jurassic Dinosaurs," + cat5$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  683.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog94", "Sample Images from WorldBank," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  684.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog93", "Gems," + cat7$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  685.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog92", "Abstract & Graphic Backgrounds," + cat8$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  686.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  687.     ELSE
  688.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat6$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  689.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog98", "Visual Rythms," + cat2$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  690.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog97", "WorldBank Volumes I to III," + cat3$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  691.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog96", "WorldBank Volumes IV to VI," + cat4$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  692.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog95", "Jurassic Dinosaurs," + cat5$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  693.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog94", "Sample Images from WorldBank," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  694.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog93", "Gems," + cat7$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  695.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog92", "Abstract & Graphic Backgrounds," + cat8$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  696.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  697.     ENDIF
  698.  
  699.     IF DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 THEN
  700.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Resolution", "3", cmoNone
  701.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Format", "2", cmoNone
  702.     END IF
  703.  
  704.     CreateProgmanGroup "PixFolio", "", cmoNone
  705.     ShowProgmanGroup  "PixFolio", 1, cmoNone
  706.     CreateProgmanItem "PixFolio", "PixFolio", MakePath(DEST$,"PixFolio"), "", cmoOverwrite
  707.     CreateProgmanItem "PixFolio", "Read Me", "NotePad.exe "+MakePath(DEST$,"PIXREAD.ME"), "", cmoOverwrite
  708.     CreateProgmanItem "PixFolio", "User Guide", "Write.exe "+MakePath(DEST$,"UsrGuide.wri"), "", cmoOverwrite
  709.     CreateProgmanItem "PixFolio", "License Agreement", "Notepad.exe "+MakePath(DEST$,"LICENSE.TXT"), "", cmoOverwrite
  710.     CreateProgmanItem "PixFolio", "Other Products", "NotePad.exe "+MakePath(DEST$,"OTH_PROD.TXT"), "", cmoOverwrite
  711.     CloseLogFile
  712.  
  713. END SUB
  714.  
  715.  
  716.  
  717. '**
  718. '** Purpose:
  719. '**     Appends a file name to the end of a directory path,
  720. '**     inserting a backslash character as needed.
  721. '** Arguments:
  722. '**     szDir$  - full directory path (with optional ending "\")
  723. '**     szFile$ - filename to append to directory
  724. '** Returns:
  725. '**     Resulting fully qualified path name.
  726. '*************************************************************************
  727. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  728.     IF szDir$ = "" THEN
  729.     MakePath = szFile$
  730.     ELSEIF szFile$ = "" THEN
  731.     MakePath = szDir$
  732.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  733.     MakePath = szDir$ + szFile$
  734.     ELSE
  735.     MakePath = szDir$ + "\" + szFile$
  736.     END IF
  737. END FUNCTION
  738.  
  739. '**
  740. '** Purpose:
  741. '**     Adds the specified option files to the copy list.
  742. '** Arguments:
  743. '**     ftype%  - type of files to add, one of the following:
  744. '**             APPFILES, OPTFILES1, OPTFILES2
  745. '** Returns:
  746. '**     none.
  747. '*************************************************************************
  748. SUB AddOptFilesToCopyList (ftype%) STATIC
  749.  
  750.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  751.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  752.         IF ftype% = APPFILES THEN
  753.             AddSectionFilesToCopyList "PixFolio Files", SrcDir$, DEST$
  754.             AddSectionFilesToCopyList "System Files", SrcDir$, SysDir$
  755.         ELSEIF ftype% = OPTFILES1 THEN
  756.                         '' Not any more
  757.             AddSectionFilesToCopyList "PCD Files", SrcDir$, DEST$
  758.         ELSEIF ftype% = OPTFILES2 THEN
  759.             AddSectionFilesToCopyList "VFW Files", SrcDir$, DEST$
  760.         ELSEIF ftype% = OPTFILES3 THEN
  761.             AddSectionFilesToCopyList "Multimedia Files", SrcDir$, DEST$
  762.         ELSEIF ftype% = SYMFILES THEN
  763. ''            i% = DoMsgBox("AddOptFiles" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  764.             IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  765.                 AddSectionFilesToCopyList "PixFolio Symbols", SrcDir$, DEST$
  766.             END IF
  767.             IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  768.                 AddSectionFilesToCopyList "PCD Symbols", SrcDir$, DEST$
  769.             END IF
  770.             IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  771.                 AddSectionFilesToCopyList "VFW Symbols", SrcDir$, DEST$
  772.             END IF
  773.             IF GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
  774.                 AddSectionFilesToCopyList "Multimedia Symbols", SrcDir$, DEST$
  775.             END IF
  776.         END IF
  777.         SrcDir$ = ""
  778.     END IF
  779. END SUB
  780.  
  781. '**
  782. '** Purpose:
  783. '**     Recalculates disk space for the given option files and sets
  784. '**     the status info symbol "StatusItemsText".
  785. '** Arguments:
  786. '**     ftype% - type of files to add, one of the following:
  787. '**             APPFILES, OPTFILES1, OPTFILES2
  788. '** Returns:
  789. '**     none.
  790. '*************************************************************************
  791. SUB RecalcOptFiles (ftype%) STATIC
  792.     CursorSave% = ShowWaitCursor()
  793.     ClearCopyList
  794.     AddOptFilesToCopyList ftype%
  795. ''    i% = DoMsgBox("Added files to copy list " + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  796.     fExtra% = 0
  797.     IF ftype% = APPFILES THEN
  798.         ListSym$ = APPNEEDS$
  799.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  800.             ''Add extra cost to Windows drive for ini/progman, etc.
  801.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  802.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  803.             fExtra% = 1
  804.         END IF
  805.     ELSEIF ftype% = OPTFILES1 THEN
  806.         ListSym$ = OPT1NEEDS$
  807.     ELSEIF ftype% = OPTFILES2 THEN
  808.         ListSym$ = OPT2NEEDS$
  809.     ELSEIF ftype% = OPTFILES3 THEN
  810.         ListSym$ = OPT3NEEDS$
  811.     ELSEIF ftype% = SYMFILES THEN
  812.         ListSym$ = SYMNEEDS$
  813.     END IF
  814. ''    i% = DoMsgBox("ListSym$ =" + ListSym$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  815.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  816.  
  817.     cost& = 0
  818.  
  819.     FOR i% = 1 TO 26 STEP 1
  820.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  821.     NEXT i%
  822.     IF NOPT$ = "1" THEN
  823.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K (Including Catalog)"
  824.     ELSE
  825.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  826.     END IF
  827.  
  828.  
  829.     IF StillNeed& > 0 THEN
  830.         ReplaceListItem BIGLIST$, ftype%, "YES"
  831.     ELSE
  832.         ReplaceListItem BIGLIST$, ftype%, ""
  833.     END IF
  834.  
  835.     IF fExtra% THEN
  836.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  837.     END IF
  838.     RestoreCursor CursorSave%
  839.     ListSym$ = ""
  840. ''    i% = DoMsgBox("RecalcPath OK" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  841. END SUB
  842.  
  843.  
  844. '**
  845. '** Purpose:
  846. '**     Recalculates disk space and sets option status info according
  847. '**     to the current destination path.
  848. '** Arguments:
  849. '**     none.
  850. '** Returns:
  851. '**     none.
  852. '*************************************************************************
  853. SUB RecalcPath STATIC
  854.  
  855.     CursorSave% = ShowWaitCursor()
  856.  
  857.     RecalcOptFiles APPFILES
  858.     RecalcOptFiles OPTFILES1
  859.     RecalcOptFiles OPTFILES2
  860.     RecalcOptFiles OPTFILES3
  861.     RecalcOptFiles SYMFILES
  862.  
  863.     RestoreCursor CursorSave%
  864. END SUB
  865.  
  866.  
  867. '**
  868. '** Purpose:
  869. '**     Sets drive status info according to latest disk space calcs.
  870. '** Arguments:
  871. '**     none.
  872. '** Returns:
  873. '**     none.
  874. '*************************************************************************
  875. SUB SetDriveStatus STATIC
  876.  
  877.     drive$ = MID$(DEST$, 1, 1)
  878.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  879.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(SYMNEEDS$, ndrive%))
  880.     free& = GetFreeSpaceForDrive(drive$)
  881.  
  882. ''======================================================================
  883. '' Manual posting of catalog size for now until new version is made.
  884. ''======================================================================
  885. '' If catalog on HD is selected add 41472626 to total needed.        
  886.  
  887.     IF NOPT$ = "1" THEN
  888.       cost& = cost& + 42284334
  889.     END IF
  890.  
  891. ''=====================================================================
  892.     
  893.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  894.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  895.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  896.  
  897.     IF drive$ = WINDRIVE$ THEN
  898.         ReplaceListItem DRIVETEXT$, 4, ""
  899.         ReplaceListItem DRIVETEXT$, 5, ""
  900.         ReplaceListItem DRIVETEXT$, 6, ""
  901.     ELSE
  902.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  903.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  904.         IF cost& = 0 THEN
  905.             ReplaceListItem DRIVETEXT$, 4, ""
  906.             ReplaceListItem DRIVETEXT$, 5, ""
  907.             ReplaceListItem DRIVETEXT$, 6, ""
  908.         ELSE
  909.             ''IF NOPT$ = "1" THEN
  910.             ''  cost& = cost& + 1146712
  911.             ''END IF
  912.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  913.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  914.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  915.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  916.         END IF
  917.     END IF
  918. END SUB
  919.  
  920.