home *** CD-ROM | disk | FTP | other *** search
/ Innerspace / Innerspace.iso / SETUP.MST < prev    next >
Text File  |  1994-12-16  |  9KB  |  351 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'mscpydis.inc'    ''System
  3. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  4.  
  5. ''Dialog ID's
  6. 'CONST WELCOME     = 100
  7. CONST ASKQUIT     = 200
  8. CONST DESTPATH    = 300
  9. CONST EXITFAILURE = 400
  10. CONST EXITQUIT    = 600
  11. CONST EXITSUCCESS = 700
  12. CONST APPHELP     = 900
  13. CONST CUSTINST    = 6200
  14. CONST TOOBIG      = 6300
  15. CONST BADPATH     = 6400
  16.  
  17. '' window sizing
  18. CONST WS_VISIBLE       = &H10000000
  19. CONST WS_CAPTION       = &H00C00000 
  20. CONST WS_CLIPCHILDREN  = &H02000000
  21. CONST WS_SYSMENU       = &H00080000
  22. CONST WS_MINIMIZEBOX   = &H00020000
  23. CONST WS_MAXIMIZEBOX   = &H00010000
  24. CONST WS_THICKFRAME        = &H00040000
  25. CONST GWL_STYLE        = -16
  26. CONST SW_SHOWMAXIMIZED = 3
  27.  
  28. '' File set to copy
  29. CONST FILEN1 = 1
  30.  
  31. ''Bitmap ID
  32. CONST LOGO = 1
  33. '' CONST ARIS = 2
  34.  
  35. '' File set symbol names
  36. GLOBAL NEEDS1$ 
  37. GLOBAL EXTRACOSTS$  
  38. GLOBAL BIGLIST$     
  39.  
  40.  
  41. GLOBAL DRIVETEXT$
  42. GLOBAL INSPCDEST$      
  43. GLOBAL WINDRIVE$    
  44. GLOBAL GROUP$           
  45. GLOBAL ITEM$            
  46. GLOBAL EXE$                     
  47. GLOBAL SRCDIR$ 
  48. GLOBAL WINDIR$ 
  49. GLOBAL WINSYSDIR$
  50. GLOBAL SETUPDIR$
  51.  
  52. DECLARE SUB AddOptFilesToCopyList (ftype%)
  53. DECLARE SUB RecalcOptFiles (ftype%)
  54. DECLARE SUB RecalcPath
  55. DECLARE SUB SetDriveStatus
  56. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  57. DECLARE FUNCTION ShowWindow LIB  "user.exe" (hWnd%, iShow%) AS INTEGER
  58. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  59. DECLARE FUNCTION GetCDDrive LIB "CDTSTV3.DLL" AS INTEGER
  60.  
  61. INIT:
  62.  
  63.     CUIDLL$   = "mscuistf.dll"          ''Custom user interface dll
  64.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  65.  
  66.     '' Initialize window
  67.     hWnd% = HwndFrame()
  68.     k&    = SetWindowLong(hWnd%, GWL_STYLE, WS_CAPTION+WS_VISIBLE+WS_CLIPCHILDREN+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_THICKFRAME)
  69.     j%    = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)                                            
  70.  
  71.     '' Check Windows Version Number
  72.     MajorVer% = GetWindowsMajorVersion()
  73.     MinorVer% = GetWindowsMinorVersion()
  74.  
  75.     IF  MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  76.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  77.     END
  78.     END IF
  79.                                                
  80.     SetBitmap CUIDLL$, LOGO
  81.     SetTitle "SoftKey InnerSpace"
  82.  
  83.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  84.     IF szInf$ = "" THEN
  85.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  86.     END IF
  87.  
  88.     ReadInfFile szInf$
  89.  
  90.     SRCDIR$    = GetSymbolValue("STF_SRCDIR")
  91.     WINDIR$    = GetWindowsDir()
  92.     WINSYSDIR$ = GetWindowsSysDir()
  93.     WINDRIVE$  = MID$(WINDIR$, 1, 1)
  94.     INSPCDEST$    = WINDRIVE$ + ":\INNERSPC"
  95.     EXE$       = "INNERSPC.EXE"
  96.     README$    = "README.TXT"
  97.     GROUP$     = "InnerSpace"
  98.     ITEM$      = "InnerSpace"
  99.     SETUPDIR$  = WINDRIVE$ + ":\~msstfqf.t"
  100.  
  101.     '' list symbols
  102.     DRIVETEXT$   = "DriveStatusText"
  103.  
  104.     FOR i% = 1 TO 3 STEP 1
  105.     AddListItem DRIVETEXT$, ""
  106.     NEXT i%
  107.  
  108.     ReplaceListItem DRIVETEXT$, 3, INSPCDEST$
  109.  
  110.     ''Disk cost list symbols
  111.     NEEDS1$     = "FileNeeds1"
  112.     EXTRACOSTS$ = "ExtraCosts"
  113.     BIGLIST$    = "BigList"
  114.  
  115.     FOR i% = 1 TO 5 STEP 1
  116.     AddListItem BIGLIST$, ""
  117.     NEXT i%
  118.     FOR i% = 1 TO 26 STEP 1
  119.     AddListItem EXTRACOSTS$, "0"
  120.     NEXT i%
  121.  
  122.     SetRestartDir SETUPDIR$
  123.     RecalcPath
  124.     SetDriveStatus
  125.  
  126. WELCOME:
  127. ''    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  128. ''    IF sz$ = "CONTINUE" THEN
  129. ''        UIPop 1
  130. ''    ELSE
  131. ''        GOSUB ASKQUIT
  132. ''        GOTO WELCOME
  133. ''    END IF
  134.  
  135. CHECKCDROM:
  136. ''        CDDrive% = GetCDDrive()
  137. ''        IF CDDrive% = -1 THEN
  138. ''                i% = DoMsgBox("CD-ROM drive not found", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  139. ''                END
  140. ''  END IF
  141. CUSTINST:
  142.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  143.     IF sz$ = "CONTINUE" THEN
  144.     ''Install only if it will fit.
  145.     FOR i% = 1 TO 5 STEP 1
  146.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  147.         GOSUB TOOBIG
  148.         GOTO CUSTINST
  149.         END IF
  150.     NEXT i%
  151.     UIPop 1
  152.     GOTO INSTALL    
  153.     ELSEIF sz$ = "PATH" THEN        
  154.     GOTO GETPATH        
  155.     ELSEIF sz$ = "REACTIVATE" THEN        
  156.     RecalcPath
  157.     SetDriveStatus
  158.     GOTO CUSTINST
  159.     ELSE
  160.     GOSUB ASKQUIT
  161.     GOTO CUSTINST        
  162.     END IF        
  163.     
  164. INSTALL:
  165.     ClearCopyList
  166.  
  167.     AddOptFilesToCopyList FILEN1
  168.  
  169.     CreateDir INSPCDEST$, cmoNone
  170.     CopyFilesInCopyList
  171.  
  172.     CreateProgmanGroup GROUP$, "", cmoNone
  173.     CreateProgmanItem GROUP$, ITEM$, MakePath(INSPCDEST$, EXE$), "", cmoOverwrite
  174. ''       CreateProgmanItem GROUP$, ITEM$, MakePath(INSPCDEST$, README$), "", cmoOverwrite
  175.  
  176. QUIT:
  177.     ON ERROR GOTO ERRQUIT
  178.     IF ERR = 0 THEN
  179.        dlg% = EXITSUCCESS
  180.     ELSEIF ERR = STFQUIT THEN
  181.     dlg% = EXITQUIT
  182.     ELSE
  183.     dlg% = EXITFAILURE
  184.     END IF
  185.  
  186. QUITL1:
  187.  
  188.     IF n% = 1 THEN
  189.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  190.     IF sz$ = "REACTIVATE" THEN
  191.         GOTO QUITL1
  192.     ELSEIF sz$ = "BACK" THEN
  193.         Run MakePath( INSPCDEST$, EXE$), NOWAIT 
  194.     END IF
  195.     END IF
  196.  
  197.     UIPop 1
  198.     END
  199.  
  200. ERRQUIT:
  201.     i% = DoMsgBox("Setup sources were corrupted, call SoftKey Technical Support", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  202.     END
  203.  
  204.  
  205. ASKQUIT:
  206.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  207.     IF sz$ = "EXIT" THEN
  208.     UIPopAll
  209. ''        ERROR STFQUIT
  210.     END
  211.     ELSEIF sz$ = "REACTIVATE" THEN
  212.     GOTO ASKQUIT
  213.     ELSE
  214.     UIPop 1
  215.     END IF
  216.     RETURN
  217.  
  218. TOOBIG:
  219.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  220.     IF sz$ = "REACTIVATE" THEN
  221.     GOTO TOOBIG
  222.     END IF
  223.     UIPop 1
  224.     RETURN
  225.  
  226.  
  227. BADPATH:
  228.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  229.     IF sz$ = "REACTIVATE" THEN
  230.     GOTO BADPATH
  231.     END IF
  232.     UIPop 1
  233.     RETURN
  234.  
  235.  
  236. GETPATH:
  237.     SetSymbolValue "EditTextIn", INSPCDEST$
  238.     SetSymbolValue "EditFocus", "END"
  239. GETPATHL1:
  240.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  241.     IF sz$ = "CONTINUE" THEN
  242.     olddest$ = INSPCDEST$
  243.     INSPCDEST$ = GetSymbolValue("EditTextOut")
  244.  
  245.     ''Validate new path.
  246.     IF IsDirWritable(INSPCDEST$) = 0 THEN
  247.         GOSUB BADPATH
  248.         GOTO GETPATHL1
  249.     END IF
  250.     UIPop 1
  251.  
  252.     ''Truncate display if too long.
  253.     IF LEN(INSPCDEST$) > 23 THEN
  254.         ReplaceListItem DRIVETEXT$, 3, MID$(INSPCDEST$, 1, 23)+"..."
  255.     ELSE
  256.         ReplaceListItem DRIVETEXT$, 3, INSPCDEST$
  257.     END IF
  258.  
  259.     ''Recalc if path changed.
  260.     IF (olddest$ <> INSPCDEST$) AND (olddest$ <> INSPCDEST$+"\") AND (olddest$+"\" <> INSPCDEST$) 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.  
  280. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  281.     IF szDir$ = "" THEN
  282.     MakePath = szFile$
  283.     ELSEIF szFile$ = "" THEN
  284.     MakePath = szDir$
  285.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  286.     MakePath = szDir$ + szFile$
  287.     ELSE
  288.     MakePath = szDir$ + "\" + szFile$
  289.     END IF
  290. END FUNCTION
  291.  
  292.  
  293. SUB RecalcOptFiles (ftype%) STATIC
  294.  
  295.     CursorSave% = ShowWaitCursor()
  296.     ClearCopyList
  297.     AddOptFilesToCopyList ftype%
  298.     fExtra% = 0
  299.     ListSym$ = NEEDS1$
  300.  
  301.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  302.   
  303.     cost& = 0
  304.     FOR i% = 1 TO 26 STEP 1
  305.     cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  306.     NEXT i%
  307.  
  308.     IF StillNeed& > 0 THEN
  309.     ReplaceListItem BIGLIST$, ftype%, "YES"
  310.     ELSE
  311.     ReplaceListItem BIGLIST$, ftype%, ""
  312.     END IF
  313.  
  314.     IF fExtra% THEN
  315.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  316.     END IF
  317.  
  318.     RestoreCursor CursorSave%
  319.     ListSym$ = ""
  320. END SUB
  321.  
  322.  
  323. SUB RecalcPath STATIC
  324.  
  325.     CursorSave% = ShowWaitCursor()
  326.     RecalcOptFiles FILEN1
  327.     RestoreCursor CursorSave%
  328. END SUB
  329.  
  330.  
  331. SUB SetDriveStatus STATIC
  332.  
  333.     drive$ = MID$(WINDIR$, 1, 1)
  334.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  335.  
  336.     drive2$ = MID$(INSPCDEST$, 1, 1)
  337.     ndrive2% = ASC(ucase$(drive2$)) - ASC("A") + 1
  338.  
  339.     cost& = VAL(GetListItem(NEEDS1$,ndrive%))
  340.     free& = GetFreeSpaceForDrive(drive$)
  341.  
  342.     ReplaceListItem DRIVETEXT$, 1, STR$(cost& / 1024) + " K"
  343.     ReplaceListItem DRIVETEXT$, 2, STR$(free& / 1024) + " K"
  344. END SUB
  345.  
  346. SUB AddOptFilesToCopyList (ftype%) STATIC
  347.    AddSectionFilesToCopyList "INNERSPC",   SRCDIR$, INSPCDEST$
  348. END SUB
  349.  
  350. REM End Of File
  351.