home *** CD-ROM | disk | FTP | other *** search
/ The Mother of All Windows Books / CD-MOM.iso / cd_mom / utility / graphics / pixfolio / disk1 / pixsetup.ms_ / pixsetup.bin
Text File  |  1993-06-30  |  21KB  |  759 lines

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