home *** CD-ROM | disk | FTP | other *** search
/ Arts On Disk: 1000 Miglia / 1000_miglia.bin / pixsetup.mst < prev    next >
Text File  |  1994-10-22  |  24KB  |  873 lines

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