home *** CD-ROM | disk | FTP | other *** search
/ Becoming a Computer Animator / COMPANIMATE.ISO / pc / windemos / pcanim / pcasetup.ms_ / pcasetup.bin
Text File  |  1994-02-15  |  11KB  |  381 lines

  1. '**************************************************************************
  2. '*                 PC Animate for Windows Setup Template
  3. '**************************************************************************
  4.  
  5. ''$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST CUSTINST      = 6200
  19. CONST TOOBIG        = 6300
  20. CONST BADPATH       = 6400
  21.  
  22. ''Bitmap ID
  23. CONST LOGO = 1
  24.  
  25. GLOBAL DEST$        ''Default destination directory.
  26. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  27. GLOBAL OPTIONCOSTS$ ''List of Costs for each option
  28. GLOBAL OPTIONNAMES$ ''List of Option Section Names
  29. GLOBAL COSTARRAY$   ''List of Costs per drive
  30.  
  31. DECLARE SUB Install
  32. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  33.  
  34.  
  35. INIT:
  36.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  37.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  38.  
  39.     SetBitmap CUIDLL$, LOGO
  40.     SetTitle "PC Animate for Windows Setup"
  41.  
  42.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  43.     IF szInf$ = "" THEN
  44.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PCASETUP.INF"
  45.     END IF
  46.     ReadInfFile szInf$
  47.  
  48.     DEST$ = MakePath(GetWindowsDir, "ANIMATE")
  49.  
  50.     EXTRACOSTS$ = "ExtraCosts"
  51.     FOR i% = 1 TO 26 STEP 1
  52.         AddListItem EXTRACOSTS$, "0"
  53.     NEXT i%
  54.  
  55.     COSTARRAY$ = "CostArray"
  56.     SetSymbolValue COSTARRAY$, ""
  57.     FOR i% = 1 TO 26 STEP 1
  58.         AddListItem COSTARRAY$, "0"
  59.     NEXT i%
  60.  
  61.     OPTIONNAMES$ = "OptionNames"
  62.     SetSymbolValue OPTIONNAMES$, ""
  63.     AddListItem OPTIONNAMES$, "Files"
  64.     AddListItem OPTIONNAMES$, "DOS"
  65.     AddListItem OPTIONNAMES$, "Tutorials"
  66.     AddListItem OPTIONNAMES$, "Archive"
  67.  
  68.     OPTIONCOSTS$ = "OptionCosts"
  69.     FOR i% = 1 TO 4 STEP 1
  70.         AddListItem OPTIONCOSTS$, "0"
  71.     NEXT i%
  72.  
  73.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  74.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  75.     IF IsDriveValid(WinDrive$) = 0 THEN
  76.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  77.         GOTO QUIT
  78.     END IF
  79.  
  80.     IF HasMouseInstalled() = 0 THEN
  81.         i% = DoMsgBox("PC Animate for Windows Requires a Mouse.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  82.         GOTO QUIT
  83.     END IF
  84.  
  85.     i% = GetWindowsMajorVersion()
  86.     IF i% > 3 THEN
  87.         i% = DoMsgBox("PC Animate for Windows Requires Windows 3.1.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  88.         GOTO QUIT
  89.     END IF
  90.  
  91.     IF i% < 3 OR GetWindowsMinorVersion() < 10 THEN
  92.         i% = DoMsgBox("PC Animate for Windows Requires Windows 3.1.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  93.         GOTO QUIT
  94.     ENDIF
  95.  
  96. WELCOME:
  97.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  98.     IF sz$ = "CONTINUE" THEN
  99.         UIPop 1
  100.     ELSE
  101.         GOSUB ASKQUIT
  102.         GOTO WELCOME
  103.     END IF
  104.  
  105.  
  106. OPTION:
  107.     SetSymbolValue "CheckItemsState", ""
  108.     FOR i% = 1 TO 4 STEP 1
  109.         AddListItem "CheckItemsState", "ON"
  110.     NEXT i%
  111.  
  112. NEWDESTPATH:
  113.     IF MID$(DEST$, 2, 1) = ":" THEN
  114.     DESTDRV$ = MID$(DEST$, 1, 1)
  115.     ELSE
  116.         DESTDRV$ = WinDrive$
  117.     END IF
  118.  
  119.     FOR i% = 1 TO 26 STEP 1
  120.         ReplaceListItem EXTRACOSTS$, i%, "0"
  121.     NEXT i%
  122.  
  123.     FOR i% = 1 TO 4 STEP 1
  124.         ClearCopyList
  125.         IF i% = 3 THEN
  126.         AddSectionFilesToCopyList GetListItem(OPTIONNAMES$, i%), GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "tutorial")
  127.         ELSE
  128.         AddSectionFilesToCopyList GetListItem(OPTIONNAMES$, i%), GetSymbolValue("STF_SRCDIR"), DEST$
  129.         END IF
  130.  
  131.         IF i% = 2 THEN
  132.             AddSectionFilesToCopyList "Drivers", GetSymbolValue("STF_SRCDIR"), MakePath(DEST$, "drivers")
  133.         END IF
  134.  
  135.         StillNeed& = GetCopyListCost(EXTRACOSTS$, COSTARRAY$, "")
  136.  
  137.         Cost& = 0
  138.         FOR n% = 1 to 26 STEP 1
  139.             Cost& = Cost& + VAL(GetListItem(COSTARRAY$, n%))
  140.         NEXT N%
  141.         IF i% = 1 THEN
  142.             Cost& = Cost& + 5120
  143.         END IF
  144.         ReplaceListItem OPTIONCOSTS$, i%, STR$(Cost)
  145.     NEXT i%
  146.     ClearCopyList
  147.  
  148.     SetSymbolValue "StatusItemsText", ""
  149.     FOR i% = 1 TO 4 STEP 1
  150.     AddListItem "StatusItemsText", "Requires " + STR$(VAL(GetListItem(OPTIONCOSTS$, i%)) / 1024) + " K"
  151.     NEXT i%
  152.  
  153. NEWOPTIONS:
  154. ''  Calculate Costs based on selected Options
  155.     Costs& = 0
  156.  
  157.     FOR i% = 1 TO 4 STEP 1
  158.         sz$ = GetListItem("CheckItemsState", i%)
  159.     IF sz$ = "ON" THEN
  160.         Costs& = Costs& + VAL(GetListItem(OPTIONCOSTS$, i%))
  161.         IF (i% = 1) AND (WinDrive$ = DESTDRV$) THEN
  162.         Costs& = Costs& + 5120
  163.         END IF
  164.     END IF
  165.     NEXT i%
  166.  
  167.     SetSymbolValue "DriveStatusText", ""
  168.     AddListItem "DriveStatusText", DESTDRV$+":"
  169.  
  170.     AddListItem "DriveStatusText", STR$(Costs& / 1024) + " K"
  171.  
  172.     FreeSpace& = GetFreeSpaceForDrive(DESTDRV$)
  173.     AddListItem "DriveStatusText", STR$(FreeSpace& / 1024) + " K"
  174.  
  175.     IF WinDrive$ = DESTDRV$ THEN
  176.         AddListItem "DriveStatusText", ""
  177.         AddListItem "DriveStatusText", ""
  178.         AddListItem "DriveStatusText", ""
  179.     ELSE
  180.         AddListItem "DriveStatusText", WinDrive$ + ":"
  181.  
  182.         sz$ = GetListItem("CheckItemsState", 1)
  183.     IF sz$ = "ON" THEN
  184.             AddListItem "DriveStatusText", "5 K"
  185.     ELSE
  186.             AddListItem "DriveStatusText", "0 K"
  187.     ENDIF
  188.         FreeSpace& = GetFreeSpaceForDrive(WinDrive$)
  189.         AddListItem "DriveStatusText", STR$(FreeSpace& / 1024) + " K"
  190.     END IF
  191.     AddListItem "DriveStatusText", DEST$
  192.  
  193. OPTL1:
  194.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  195.  
  196.     IF sz$ = "CONTINUE" THEN
  197.     FOR i% = 1 TO 26 STEP 1
  198.         ReplaceListItem EXTRACOSTS$, i%, "0"
  199.     NEXT i%
  200.  
  201.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  202.     ClearCopyList
  203.     FOR i% = 1 TO 4 STEP 1
  204.         sz$ = GetListItem("CheckItemsState", i%)
  205.         IF sz$ = "ON" THEN
  206.             IF i% = 1 THEN
  207.             ndrive% = ASC(ucase$(WinDrive$)) - ASC("A") + 1
  208.             ReplaceListItem EXTRACOSTS$, ndrive%, "5120"
  209.             END IF
  210.             IF i% = 3 THEN
  211.                 CreateDir MakePath(DEST$, "tutorial"), cmoNone
  212.                 AddSectionFilesToCopyList GetListItem(OPTIONNAMES$, i%), SrcDir$, MakePath(DEST$, "tutorial")
  213.             ELSE
  214.             AddSectionFilesToCopyList GetListItem(OPTIONNAMES$, i%), SrcDir$, DEST$
  215.             END IF
  216.             IF i% = 2 THEN
  217.                 CreateDir MakePath(DEST$, "drivers"), cmoNone
  218.                 AddSectionFilesToCopyList "Drivers", SrcDir$, MakePath(DEST$, "drivers")
  219.             END IF
  220.         END IF
  221.     NEXT i%
  222.  
  223.     StillNeed& = GetCopyListCost(EXTRACOSTS$, COSTARRAY$, "")
  224.     IF StillNeed& <> 0 THEN
  225.           GOSUB TOOBIG
  226.         GOTO OPTL1
  227.     END IF
  228.  
  229.         UIPop(1)
  230.     ELSEIF sz$ = "REACTIVATE" THEN
  231.         GOTO OPTL1
  232.     ELSEIF sz$ = "PATH" THEN
  233.         GOSUB ASKPATH
  234.     GOTO NEWDESTPATH
  235.     ELSEIF MID$(sz$, 1, 3) = "CHK" THEN
  236.         GOTO NEWOPTIONS
  237.     ELSE
  238.         GOSUB ASKQUIT
  239.         GOTO OPTL1
  240.     END IF
  241.  
  242.     Install
  243.  
  244.  
  245. QUIT:
  246.     ON ERROR GOTO ERRQUIT
  247.  
  248.     IF ERR = 0 THEN
  249.         dlg% = EXITSUCCESS
  250.     ELSEIF ERR = STFQUIT THEN
  251.         dlg% = EXITQUIT
  252.     ELSE
  253.         dlg% = EXITFAILURE
  254.     END IF
  255. QUITL1:
  256.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  257.     IF sz$ = "REACTIVATE" THEN
  258.         GOTO QUITL1
  259.     END IF
  260.     UIPop 1
  261.  
  262.     END
  263.  
  264. ERRQUIT:
  265.     i% = DoMsgBox("Setup sources were corrupted, call Pacific Motion Technical Support at (415) 386-3173!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  266.     END
  267.  
  268.  
  269. BADPATH:
  270.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  271.     IF sz$ = "REACTIVATE" THEN
  272.         GOTO BADPATH
  273.     END IF
  274.     UIPop 1
  275.     RETURN
  276.  
  277.  
  278. ASKQUIT:
  279.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  280.  
  281.     IF sz$ = "EXIT" THEN
  282.         UIPopAll
  283.         ERROR STFQUIT
  284.     ELSEIF sz$ = "REACTIVATE" THEN
  285.         GOTO ASKQUIT
  286.     ELSE
  287.         UIPop 1
  288.     END IF
  289.     RETURN
  290.  
  291.  
  292. ASKPATH:
  293.     SetSymbolValue "EditTextIn", DEST$
  294.     SetSymbolValue "EditFocus", "END"
  295. GETPATHL1:
  296.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  297.     DEST$ = GetSymbolValue("EditTextOut")
  298.  
  299.     IF sz$ = "CONTINUE" THEN
  300.     IF MID$(DEST$, LEN(DEST$), 1) <> "\" THEN
  301.         DEST$ = DEST$ + "\"
  302.     END IF
  303.  
  304.         CreateDir DEST$, cmoNone
  305.         IF IsDirWritable(DEST$) = 0 THEN
  306.             GOSUB BADPATH
  307.             GOTO GETPATHL1
  308.         END IF
  309.         UIPop 1
  310.     ELSEIF sz$ = "REACTIVATE" THEN
  311.         GOTO GETPATHL1
  312.     ELSEIF sz$ = "BACK" THEN
  313.         UIPop 1
  314.         GOTO OPTION
  315.     ELSE
  316.         GOSUB ASKQUIT
  317.         GOTO ASKPATH
  318.     END IF
  319.     RETURN
  320.  
  321. TOOBIG:
  322.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  323.     IF sz$ = "REACTIVATE" THEN
  324.         GOTO TOOBIG
  325.     END IF
  326.     UIPop 1
  327.     RETURN
  328.  
  329. '**
  330. '** Purpose:
  331. '**     Performs all installation operations.
  332. '** Arguments:
  333. '**     none.
  334. '** Returns:
  335. '**     none.
  336. '*************************************************************************
  337. SUB Install STATIC
  338.  
  339.     CreateDir DEST$, cmoNone
  340.  
  341.     CopyFilesInCopyList
  342.  
  343.     sz$ = GetListItem("CheckItemsState", 1)
  344.     IF sz$ = "ON" THEN
  345.     CreateProgmanGroup "PC Animate for Windows", "", cmoNone
  346.     ShowProgmanGroup  "PC Animate for Windows", 1, cmoNone
  347.     CreateProgmanItem "PC Animate for Windows", "PC Animate for Windows", MakePath(DEST$, "PCAWIN.EXE"), "", cmoOverwrite
  348.     CreateProgmanItem "PC Animate for Windows", "Animation Player", MakePath(DEST$, "ANIPLAY.EXE"), "", cmoOverwrite
  349.     CreateProgmanItem "PC Animate for Windows", "PC Animate Help", "WINHELP.EXE "+MakePath(DEST$,"PCAWIN.HLP"), "", cmoOverwrite
  350.     CreateProgmanItem "PC Animate for Windows", "PC Animate Player Help", "WINHELP.EXE "+MakePath(DEST$,"ANIPLAY.HLP"), "", cmoOverwrite
  351.  
  352.     CreateIniKeyValue "WIN.INI", "Extensions", "ani", MakePath(DEST$, "aniplay.exe")+" ^.ani", cmoOverwrite
  353.     CreateIniKeyValue "WIN.INI", "Extensions", "as", MakePath(DEST$, "aniplay.exe")+" ^.as", cmoOverwrite
  354.     ENDIF
  355. END SUB
  356.  
  357.  
  358.  
  359. '**
  360. '** Purpose:
  361. '**     Appends a file name to the end of a directory path,
  362. '**     inserting a backslash character as needed.
  363. '** Arguments:
  364. '**     szDir$  - full directory path (with optional ending "\")
  365. '**     szFile$ - filename to append to directory
  366. '** Returns:
  367. '**     Resulting fully qualified path name.
  368. '*************************************************************************
  369. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  370.     IF szDir$ = "" THEN
  371.         MakePath = szFile$
  372.     ELSEIF szFile$ = "" THEN
  373.         MakePath = szDir$
  374.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  375.         MakePath = szDir$ + szFile$
  376.     ELSE
  377.         MakePath = szDir$ + "\" + szFile$
  378.     END IF
  379. END FUNCTION
  380.  
  381.