home *** CD-ROM | disk | FTP | other *** search
/ swCHIP 1991 January / swCHIP_95-1.bin / demo / wit4711 / witsetup.ms_ / witsetup.ms
Text File  |  1995-12-09  |  9KB  |  294 lines

  1. '**************************************************************************
  2. '*                                WiT Setup
  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 OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST BADPATH       = 6400
  20. CONST AUTOEXEC      = 7802
  21.  
  22. ''Bitmap ID
  23. CONST LOGO = 1
  24.  
  25. ''Other IDs
  26. CONST MB_YESNO           = 4
  27. CONST MB_YESNOCANCEL     = 3
  28. CONST MB_ICONQUESTION    = 32
  29. CONST MB_ICONEXCLAMATION = 48
  30. CONST IDCANCEL           = 2
  31. CONST IDYES              = 6
  32. CONST IDNO               = 7
  33.  
  34. GLOBAL SRC$         ''Source directory
  35. GLOBAL DEST$        ''Default destination directory.
  36. GLOBAL OPTCUR$      ''Option selection from option dialog.
  37. GLOBAL TMPDIR$      ''TMP environment variable
  38.  
  39. DECLARE SUB Install
  40. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  41.  
  42. INIT:
  43.     SRC$ = GetSymbolValue("STF_SRCDIR")
  44.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  45.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  46.  
  47.     SetBitmap CUIDLL$, LOGO
  48.     SetTitle "WiT Setup"
  49.  
  50.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  51.     IF szInf$ = "" THEN
  52.         szInf$ = GetSymbolValue("STF_CWDDIR") + "WITSETUP.INF"
  53.     END IF
  54.     ReadInfFile szInf$
  55.  
  56.     DEST$ = "C:\WIT"
  57.  
  58. WELCOME:
  59.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  60.     IF sz$ = "CONTINUE" THEN
  61.         UIPop 1
  62.     ELSE
  63.         GOSUB ASKQUIT
  64.         GOTO WELCOME
  65.     END IF
  66.  
  67. ''CHECKWIN32S:
  68. ''    w32sysdll$ = GetWindowsSysDir() + "W32SYS.DLL"
  69. ''    exist% = DoesFileExist(w32sysdll, femExists)
  70. ''    IF exist% = 0 THEN
  71. ''        msg$ = "WIN32S is not installed on the system. "
  72. ''        msg$ = "You must install WIN32S before installing WiT."
  73. ''        i% = DoMsgBox(msg$, "Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  74. ''        dlg% = EXITFAILURE
  75. ''        GOTO QUITL1
  76. ''    END IF
  77.  
  78. GETPATH:
  79.     SetSymbolValue "EditTextIn", DEST$
  80.     SetSymbolValue "EditFocus", "ALL"
  81. GETPATHL1:
  82.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  83.     DEST$ = GetSymbolValue("EditTextOut")
  84.     
  85.     IF sz$ = "CONTINUE" THEN
  86.         IF IsDirWritable(DEST$) = 0 THEN
  87.             GOSUB BADPATH
  88.             GOTO GETPATHL1
  89.         END IF
  90.         IF DoesDirExist(DEST$) THEN
  91.             msg$ = "The specified directory already exists! "
  92.             msg$ = msg$ + "Do you want to overwrite the directory?"
  93.             i% = DoMsgBox(msg$, "Confirm Overwrite", MB_YESNO+MB_APPLMODAL+MB_ICONQUESTION)
  94.             IF i% = IDYES THEN
  95.                 ''RemoveDir DEST$, cmoForce
  96.             ELSE
  97.                 GOTO GETPATHL1
  98.             END IF
  99.         END IF
  100.         UIPop 1
  101.     ELSEIF sz$ = "REACTIVATE" THEN
  102.         GOTO GETPATHL1
  103.     ELSEIF sz$ = "BACK" THEN
  104.         UIPop 1
  105.         GOTO WELCOME
  106.     ELSE
  107.         GOSUB ASKQUIT
  108.         GOTO GETPATH
  109.     END IF
  110.     
  111. CHECKSIZE:
  112.     l& = GetFreeSpaceForDrive(DEST$)
  113.     IF l& < 8388608 THEN
  114.         msg$ = "WiT requires 8Mb of disk space to install. "
  115.         msg$ = msg$ + "There is only " + STR$(l&/1048576) + "Mb of free disk space on the drive specified. "
  116.         msg$ = msg$ + "If you choose Ok to continue, it may run out of disk space."
  117.         i% = DoMsgBox(msg$, "WARNING!", MB_YESNO+MB_TASKMODAL+MB_ICONHAND)
  118.         IF i% = IDNO THEN
  119.             GOTO GETPATH
  120.         END IF
  121.     END IF
  122.     
  123. CTL3D:
  124.     SRC$ = GetSymbolValue("STF_SRCDIR")
  125.     CTLDEST$ = GetWindowsSysDir() + "CTL3DV2.DLL"
  126.     CTLSRC$ = SRC$ + "CTL3DV2.DLL"
  127.     destdate$ = GetDateOfFile(CTLDEST$)
  128.     srcdate$ = GetDateOfFile(CTLSRC$)
  129.     IF srcdate$ > destdate$ THEN
  130.       exist% = DoesFileExist(CTLDEST$, femExists+femReadWrite)
  131.       IF NOT exist% = 0 THEN
  132.       msg$ = "SETUP detects that CTL3DV2.DLL is not up to date. "
  133.       msg$ = msg$ + "Do you want SETUP to update the file? "
  134.         msg$ = msg$ + "If you choose yes, any applications using CTL3DV2.DLL "
  135.       msg$ = msg$ + "may behave strangely in the current session. "
  136.       msg$ = msg$ + "Choose No if you want to continue without updating the file. "
  137.       msg$ = msg$ + "Choose Cancel to quit SETUP. "
  138.         i% = DoMsgBox(msg$, "Update CTL3DV2.DLL?", MB_YESNOCANCEL+MB_TASKMODAL+MB_ICONQUESTION)
  139.       IF i% = IDCANCEL THEN
  140.         dlg% = EXITFAILURE
  141.         GOTO QUITL1
  142.       ELSEIF i% = IDNO THEN
  143.         GOTO NOUPDATE
  144.       END IF
  145.       END IF
  146.     RemoveFile CTLDEST$, cmoNone
  147.       CopyFile CTLSRC$, CTLDEST$, cmoVital, 0
  148. NOUPDATE:
  149.     END IF
  150.  
  151. TMPPATH:
  152.     TMPDIR$ = GetEnvVariableValue("tmp")
  153.     IF TMPDIR$ = "" THEN
  154.         TMPDIR$ = MakePath(DEST$, "TMP")
  155.     ELSE
  156.         i% = DoesDirExist(TMPDIR$)
  157.         IF i% = 0 THEN
  158.             msg$ = "The TMP environment variable points to a non-existent directory. "
  159.             msg$ = msg$ + "SETUP will modify the variable to suit WiT."
  160.             i% = DoMsgBox(msg$, "TMP directory", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  161.             TMPDIR$ = MakePath(DEST$, "TMP")
  162.         END IF
  163.     END IF
  164.     Install
  165.  
  166. AUTOEXEC:
  167.     SetSymbolValue "AutoFileName", "C:\AUTOEXEC.BAT"
  168.     SetSymbolValue "TmpFileName", GetSymbolValue("STF_CWDDIR") + "AUTOEXEC.TMP"
  169.     SetSymbolValue "WiTPath", DEST$
  170.     SetSymbolValue "WiTTmp", TMPDIR$
  171.     SetSymbolValue "HostType", "WIN31"
  172. AUTOL1:
  173.     sz$ = UIStartDlg(CUIDLL$, AUTOEXEC, "FAutoDlgProc", APPHELP, HELPPROC$)
  174.     IF sz$ = "REACTIVATE" THEN
  175.         GOTO AUTOL1
  176.     ELSEIF sz$ = "CONTINUE" THEN
  177.         UIPop 1
  178.     RemoveFile "C:\AUTOEXEC.WIT", cmoForce
  179.     BackupFile "C:\AUTOEXEC.BAT", "AUTOEXEC.WIT"
  180.     NewAuto$ = GetSymbolValue("TmpFileName")
  181.     CopyFile NewAuto$, "C:\AUTOEXEC.BAT", cmoNone, 0
  182.     RemoveFile NewAuto$, cmoForce
  183.     ELSE
  184.         UIPop 1
  185.     NewAuto$ = GetSymbolValue("TmpFileName")
  186.     CopyFile NewAuto$, "C:\AUTOEXEC.WIT", cmoNone, 0
  187.     RemoveFile NewAuto$, cmoForce
  188.     END IF
  189.     UIPop 1
  190.     
  191.  
  192. QUIT:
  193.     ON ERROR GOTO ERRQUIT
  194.  
  195.     IF ERR = 0 THEN
  196.     msg$ = "You should exit Windows and REBOOT the system in order for WiT to work. "
  197.     msg$ = msg$ + "If you chose not to update AUTOEXEC.BAT, "
  198.     msg$ = msg$ + "modify the file yourself and reboot the system."
  199.     i% = DoMsgBox(msg$, "WiT Setup", MB_OK+MB_APPLMODAL+MB_ICONEXCLAMATION)
  200.     END
  201.     ELSEIF ERR = STFQUIT THEN
  202.         dlg% = EXITQUIT
  203.     ELSE
  204.         dlg% = EXITFAILURE
  205.     END IF
  206. QUITL1:
  207.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  208.     IF sz$ = "REACTIVATE" THEN
  209.         GOTO QUITL1
  210.     END IF
  211.     UIPop 1
  212.  
  213.     END
  214.  
  215. ERRQUIT:
  216.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  217.     END
  218.  
  219. BADPATH:
  220.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  221.     IF sz$ = "REACTIVATE" THEN
  222.         GOTO BADPATH
  223.     END IF
  224.     UIPop 1
  225.     RETURN
  226.  
  227. ASKQUIT:
  228.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  229.  
  230.     IF sz$ = "EXIT" THEN
  231.         UIPopAll
  232.         ERROR STFQUIT
  233.     ELSEIF sz$ = "REACTIVATE" THEN
  234.         GOTO ASKQUIT
  235.     ELSE
  236.         UIPop 1
  237.     END IF
  238.     RETURN
  239.  
  240. '**
  241. '** Purpose:
  242. '**     Builds the copy list and performs all installation operations.
  243. '** Arguments:
  244. '**     none.
  245. '** Returns:
  246. '**     none.
  247. '*************************************************************************
  248. SUB Install STATIC
  249.  
  250.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  251.     CreateDir DEST$, cmoNone
  252.  
  253.     ''OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  254.     ''WriteToLogFile ""
  255.     ''WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  256.     ''WriteToLogFile ""
  257.  
  258.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  259.     CopyFilesInCopyList
  260.     
  261.     CreateProgmanGroup "WiT", "wit", cmoNone
  262.     ShowProgmanGroup  "WiT", 1, cmoNone
  263.     CreateProgmanItem "WiT", "WiT", ""+MakePath(DEST$,"BIN\WIT.EXE"),",,,,"+MakePath(DEST$,"BIN"), cmoOverwrite
  264.     CreateProgmanItem "WiT", "WiT Builder", ""+MakePath(DEST$,"BIN\WITBUILD.EXE"), ",,,,"+MakePath(DEST$,"SERVERS"), cmoOverwrite
  265.     
  266.     ''CloseLogFile
  267.  
  268. END SUB
  269.  
  270.  
  271.  
  272. '**
  273. '** Purpose:
  274. '**     Appends a file name to the end of a directory path,
  275. '**     inserting a backslash character as needed.
  276. '** Arguments:
  277. '**     szDir$  - full directory path (with optional ending "\")
  278. '**     szFile$ - filename to append to directory
  279. '** Returns:
  280. '**     Resulting fully qualified path name.
  281. '*************************************************************************
  282. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  283.     IF szDir$ = "" THEN
  284.         MakePath = szFile$
  285.     ELSEIF szFile$ = "" THEN
  286.         MakePath = szDir$
  287.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  288.         MakePath = szDir$ + szFile$
  289.     ELSE
  290.         MakePath = szDir$ + "\" + szFile$
  291.     END IF
  292. END FUNCTION
  293.  
  294.