home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 610.GEPASI.MS_ / 610.GEPASI.MS
Text File  |  1992-11-21  |  12KB  |  404 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3.  
  4. CONST WELCOME      = 100
  5. CONST ASKQUIT      = 200
  6. CONST DESTPATH     = 300
  7. CONST EXITFAILURE  = 400
  8. CONST EXITQUIT     = 600
  9. CONST EXITSUCCESS  = 700
  10. CONST OPTIONS      = 800
  11. CONST APPHELP      = 900
  12. CONST CUSTINST     = 6200
  13. CONST TOOBIG       = 6300
  14. CONST BADPATH      = 6400
  15.  
  16. CONST LOGO         = 1
  17.  
  18. CONST APPFILES     = 1
  19. CONST OPTFILES1    = 2
  20. CONST OPTFILES2    = 3
  21.  
  22. GLOBAL DEST$
  23. GLOBAL DEST_EX$
  24. GLOBAL DEST_MAN$
  25. GLOBAL COMMPATH$
  26. GLOBAL WINDRIVE$
  27. GLOBAL OPT1OPT$
  28. GLOBAL OPT2OPT$
  29. GLOBAL NEEDSYS%
  30.  
  31. GLOBAL APPNEEDS$
  32. GLOBAL OPT1NEEDS$
  33. GLOBAL OPT2NEEDS$
  34. GLOBAL EXTRACOSTS$
  35. GLOBAL BIGLIST$
  36.  
  37. GLOBAL CHECKSTATES$
  38. GLOBAL STATUSTEXT$
  39. GLOBAL DRIVETEXT$
  40.  
  41. DECLARE SUB AddOptFilesToCopyList (ftype%)
  42. DECLARE SUB RecalcOptFiles (ftype%)
  43. DECLARE SUB RecalcPath
  44. DECLARE SUB SetDriveStatus
  45. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  46.  
  47. INIT:
  48.     CUIDLL$ = "mscuistf.dll"
  49.     HELPPROC$ = "FHelpDlgProc"
  50.     SetBitmap CUIDLL$, LOGO
  51.     SetTitle "GEPASI Setup"
  52.     SetAbout "GEPASI version 2", "This package is free software. It is provided as is WITHOUT ANY WARRANTY! ⌐ 1989/1992 Pedro Mendes"
  53.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  54.     IF szInf$ = "" THEN
  55.         szInf$ = GetSymbolValue("STF_CWDDIR") + "GEPASI.INF"
  56.     END IF
  57.     ReadInfFile szInf$
  58.  
  59.     NEEDSYS% = 0
  60.     IF GetWindowsMajorVersion() = 3 THEN
  61.      IF GetWindowsMinorVersion() = 0 THEN
  62.       NEEDSYS% = 1
  63.      END IF
  64.     END IF
  65.     IF GetWindowsMajorVersion() < 3 THEN
  66.      NEEDSYS% = 1
  67.     END IF
  68.  
  69.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  70.     DEST$ = WINDRIVE$ + ":\GEPASI"
  71.     DEST_EX$ = DEST$ + "\EXAMPLES"
  72.     DEST_MAN$ = DEST$ + "\DOCS"
  73.  
  74.     CHECKSTATES$ = "CheckItemsState"
  75.     STATUSTEXT$  = "StatusItemsText"
  76.     DRIVETEXT$   = "DriveStatusText"
  77.     FOR i% = 1 TO 3 STEP 1
  78.         AddListItem CHECKSTATES$, "ON"
  79.     NEXT i%
  80.     FOR i% = 1 TO 3 STEP 1
  81.         AddListItem STATUSTEXT$, ""
  82.     NEXT i%
  83.     FOR i% = 1 TO 7 STEP 1
  84.         AddListItem DRIVETEXT$, ""
  85.     NEXT i%
  86.     ReplaceListItem DRIVETEXT$, 7, DEST$
  87.  
  88.     APPNEEDS$   = "AppNeeds"
  89.     OPT1NEEDS$  = "Opt1Needs"
  90.     OPT2NEEDS$  = "Opt2Needs"
  91.     EXTRACOSTS$ = "ExtraCosts"
  92.     BIGLIST$    = "BigList"
  93.     FOR i% = 1 TO 3 STEP 1
  94.         AddListItem BIGLIST$, ""
  95.     NEXT i%
  96.     FOR i% = 1 TO 26 STEP 1
  97.         AddListItem EXTRACOSTS$, "0"
  98.     NEXT i%
  99.  
  100.     RecalcPath
  101.     SetDriveStatus
  102.  
  103. WELCOME:
  104.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  105.     IF sz$ = "CONTINUE" THEN
  106.         UIPop 1
  107.     ELSE
  108.         GOSUB ASKQUIT
  109.         GOTO WELCOME
  110.     END IF
  111.  
  112. CUSTINST:
  113.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  114.     IF sz$ = "CONTINUE" THEN
  115.         FOR i% = 1 TO 3 STEP 1
  116.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  117.                 GOSUB TOOBIG
  118.                 GOTO CUSTINST
  119.             END IF
  120.         NEXT i%
  121.         UIPop 1
  122.         GOTO INSTALL
  123.     ELSEIF sz$ = "PATH" THEN
  124.         GOTO GETPATH
  125.     ELSEIF sz$ = "CHK1" THEN
  126.         RecalcOptFiles APPFILES
  127.         SetDriveStatus
  128.         GOTO CUSTINST
  129.     ELSEIF sz$ = "CHK2" THEN
  130.         RecalcOptFiles OPTFILES1
  131.         SetDriveStatus
  132.         GOTO CUSTINST
  133.     ELSEIF sz$ = "CHK3" THEN
  134.         RecalcOptFiles OPTFILES2
  135.         SetDriveStatus
  136.         GOTO CUSTINST
  137.     ELSEIF sz$ = "REACTIVATE" THEN
  138.         RecalcPath
  139.         SetDriveStatus
  140.         GOTO CUSTINST
  141.     ELSE
  142.         GOSUB ASKQUIT
  143.         GOTO CUSTINST
  144.     END IF
  145.  
  146. INSTALL:
  147.     ClearCopyList
  148.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  149.      AddOptFilesToCopyList APPFILES
  150.      CreateDir DEST$, cmoNone
  151.     END IF
  152.     IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  153.      AddOptFilesToCopyList OPTFILES1
  154.      CreateDir DEST_EX$, cmoNone
  155.     END IF
  156.     IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  157.      AddOptFilesToCopyList OPTFILES2
  158.      CreateDir DEST_MAN$, cmoNone
  159.     END IF
  160.     CopyFilesInCopyList
  161.  
  162.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  163.         CreateProgmanGroup "GEPASI", "", cmoNone
  164.         ShowProgmanGroup  "GEPASI", 1, cmoNone
  165.         CreateProgmanItem "GEPASI", "Gepasi Simulation", MakePath(DEST$,"gwsim.exe"), "", cmoOverwrite
  166.         CreateProgmanItem "GEPASI", "Gepasi Topology", MakePath(DEST$,"gwtop.exe"), "", cmoOverwrite
  167.         IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  168.          CreateProgmanItem "GEPASI", "gepasi.wri", "write.exe "+MakePath(DEST_MAN$,"gepasi.wri"), "", cmoOverwrite
  169.         END IF
  170.     END IF
  171.  
  172. QUIT:
  173.     ON ERROR GOTO ERRQUIT
  174.     IF ERR = 0 THEN
  175.         dlg% = EXITSUCCESS
  176.     ELSEIF ERR = STFQUIT THEN
  177.         dlg% = EXITQUIT
  178.     ELSE
  179.         dlg% = EXITFAILURE
  180.     END IF
  181. QUITL1:
  182.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  183.     IF sz$ = "REACTIVATE" THEN
  184.         GOTO QUITL1
  185.     END IF
  186.     UIPop 1
  187.     END
  188.  
  189. ERRQUIT:
  190.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  191.     END
  192.  
  193. GETPATH:
  194.     SetSymbolValue "EditTextIn", DEST$
  195.     SetSymbolValue "EditFocus", "END"
  196. GETPATHL1:
  197.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  198.  
  199.     IF sz$ = "CONTINUE" THEN
  200.         olddest$ = DEST$
  201.         DEST$ = GetSymbolValue("EditTextOut")
  202.         DEST_EX$ = DEST$ + "\EXAMPLES"
  203.         DEST_MAN$ = DEST$ + "\DOCS"
  204.  
  205.         IF IsDirWritable(DEST$) = 0 THEN
  206.             GOSUB BADPATH
  207.             GOTO GETPATHL1
  208.         END IF
  209.         UIPop 1
  210.  
  211.         IF LEN(DEST$) > 23 THEN
  212.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  213.         ELSE
  214.             ReplaceListItem DRIVETEXT$, 7, DEST$
  215.         END IF
  216.  
  217.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  218.             RecalcPath
  219.             SetDriveStatus
  220.         END IF
  221.  
  222.         olddest$ = ""
  223.         GOTO CUSTINST
  224.     ELSEIF sz$ = "REACTIVATE" THEN
  225.         RecalcPath
  226.         SetDriveStatus
  227.         GOTO GETPATHL1
  228.     ELSEIF sz$ = "EXIT" THEN
  229.         GOSUB ASKQUIT
  230.         GOTO GETPATHL1
  231.     ELSE
  232.         UIPop 1
  233.         GOTO CUSTINST
  234.     END IF
  235.  
  236. TOOBIG:
  237.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  238.     IF sz$ = "REACTIVATE" THEN
  239.         RecalcPath
  240.         SetDriveStatus
  241.         GOTO TOOBIG
  242.     END IF
  243.     UIPop 1
  244.     RETURN
  245.  
  246. BADPATH:
  247.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  248.     IF sz$ = "REACTIVATE" THEN
  249.         RecalcPath
  250.         SetDriveStatus
  251.         GOTO BADPATH
  252.     END IF
  253.     UIPop 1
  254.     RETURN
  255.  
  256. ASKQUIT:
  257.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  258.     IF sz$ = "EXIT" THEN
  259.         UIPopAll
  260.         ERROR STFQUIT
  261.     ELSEIF sz$ = "REACTIVATE" THEN
  262.         GOTO ASKQUIT
  263.     ELSE
  264.         UIPop 1
  265.     END IF
  266.     RETURN
  267.  
  268. '** Purpose:
  269. '**     Adds the specified option files to the copy list.
  270. '** Arguments:
  271. '**     ftype%  - type of files to add, one of the following:
  272. '**             APPFILES, OPTFILES1, OPTFILES2
  273. '** Returns:  none.
  274. '*************************************************************************
  275. SUB AddOptFilesToCopyList (ftype%) STATIC
  276.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  277.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  278.         IF ftype% = APPFILES THEN
  279.             AddSectionFilesToCopyList "APPFILES", SrcDir$, DEST$
  280.             IF NEEDSYS% = 1 THEN
  281.              COMMPATH$ = MakePath(DEST$,"COMMDLG.DLL")
  282.              AddSpecialFileToCopyList "SYSFILES", "1", SrcDir$, COMMPATH$
  283.             END IF
  284.         ELSEIF ftype% = OPTFILES1 THEN
  285.             AddSectionFilesToCopyList "OPTFILES1", SrcDir$, DEST_EX$
  286.         ELSEIF ftype% = OPTFILES2 THEN
  287.             AddSectionFilesToCopyList "OPTFILES2", SrcDir$, DEST_MAN$
  288.         END IF
  289.         SrcDir$ = ""
  290.     END IF
  291. END SUB
  292.  
  293. '** Purpose:
  294. '**     Recalculates disk space for the given option files and sets
  295. '**     the status info symbol "StatusItemsText".
  296. '** Arguments:
  297. '**     ftype% - type of files to add, one of the following:
  298. '**             APPFILES, OPTFILES1, OPTFILES2
  299. '** Returns: none.
  300. '*************************************************************************
  301. SUB RecalcOptFiles (ftype%) STATIC
  302.     CursorSave% = ShowWaitCursor()
  303.     ClearCopyList
  304.     AddOptFilesToCopyList ftype%
  305.     fExtra% = 0
  306.     IF ftype% = APPFILES THEN
  307.         ListSym$ = APPNEEDS$
  308.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  309.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  310.             ReplaceListItem EXTRACOSTS$, ndrive%, "1024"
  311.             fExtra% = 1
  312.         END IF
  313.     ELSEIF ftype% = OPTFILES1 THEN
  314.         ListSym$ = OPT1NEEDS$
  315.     ELSEIF ftype% = OPTFILES2 THEN
  316.         ListSym$ = OPT2NEEDS$
  317.     END IF
  318.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  319.     cost& = 0
  320.     FOR i% = 1 TO 26 STEP 1
  321.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  322.     NEXT i%
  323.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  324.     IF StillNeed& > 0 THEN
  325.         ReplaceListItem BIGLIST$, ftype%, "YES"
  326.     ELSE
  327.         ReplaceListItem BIGLIST$, ftype%, ""
  328.     END IF
  329.     IF fExtra% THEN
  330.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  331.     END IF
  332.     RestoreCursor CursorSave%
  333.     ListSym$ = ""
  334. END SUB
  335.  
  336. '** Purpose:
  337. '**     Recalculates disk space and sets option status info according
  338. '**     to the current destination path.
  339. '** Arguments: none.
  340. '** Returns: none.
  341. '*************************************************************************
  342. SUB RecalcPath STATIC
  343.     CursorSave% = ShowWaitCursor()
  344.     RecalcOptFiles APPFILES
  345.     RecalcOptFiles OPTFILES1
  346.     RecalcOptFiles OPTFILES2
  347.     RestoreCursor CursorSave%
  348. END SUB
  349.  
  350. '** Purpose:
  351. '**     Sets drive status info according to latest disk space calcs.
  352. '** Arguments: none.
  353. '** Returns: none.
  354. '*************************************************************************
  355. SUB SetDriveStatus STATIC
  356.  
  357.     drive$ = MID$(DEST$, 1, 1)
  358.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  359.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  360.     free& = GetFreeSpaceForDrive(drive$)
  361.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  362.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  363.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  364.     IF drive$ = WINDRIVE$ THEN
  365.         ReplaceListItem DRIVETEXT$, 4, ""
  366.         ReplaceListItem DRIVETEXT$, 5, ""
  367.         ReplaceListItem DRIVETEXT$, 6, ""
  368.     ELSE
  369.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  370.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  371.         IF cost& = 0 THEN
  372.             ReplaceListItem DRIVETEXT$, 4, ""
  373.             ReplaceListItem DRIVETEXT$, 5, ""
  374.             ReplaceListItem DRIVETEXT$, 6, ""
  375.         ELSE
  376.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  377.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  378.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  379.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  380.         END IF
  381.     END IF
  382. END SUB
  383.  
  384. '** Purpose:
  385. '**     Appends a file name to the end of a directory path,
  386. '**     inserting a backslash character as needed.
  387. '** Arguments:
  388. '**     szDir$  - full directory path (with optional ending "\")
  389. '**     szFile$ - filename to append to directory
  390. '** Returns: Resulting fully qualified path name.
  391. '*************************************************************************
  392. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  393.     IF szDir$ = "" THEN
  394.         MakePath = szFile$
  395.     ELSEIF szFile$ = "" THEN
  396.         MakePath = szDir$
  397.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  398.         MakePath = szDir$ + szFile$
  399.     ELSE
  400.         MakePath = szDir$ + "\" + szFile$
  401.     END IF
  402. END FUNCTION
  403.  
  404.