home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / vb_prgms / hwab40 / hwawins.ms_ / hwawins.ms
Text File  |  1994-05-26  |  8KB  |  286 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3.  
  4.  
  5. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  6. ''
  7. '' Constants:
  8. ''
  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10.  
  11. '' Dialog IDs
  12. CONST WELCOME           = 100
  13. CONST OPTHELP                    = 150
  14. CONST ASKQUIT           = 200
  15. CONST DIRHELP           = 250
  16. CONST DESTPATH          = 300
  17. CONST EXITFAILURE       = 400
  18. CONST EXITQUIT          = 600
  19. CONST EXITSUCCESS       = 700
  20. CONST OPTIONS           = 800
  21. CONST APPHELP                    = 900
  22. CONST BADPATH           = 6400
  23.  
  24. ''Bitmap ID
  25. CONST LOGO                =  1
  26.  
  27. '' MessageBox constants
  28. CONST MB_ABORTRETRYIGNORE = 2
  29. CONST MB_YESNO            = 4
  30. CONST MB_RETRYCANCEL      = 5
  31. CONST MB_ICONQUESTION     = 32
  32. CONST MB_ICONEXCLAMATION  = 48
  33. CONST IDRETRY             = 4
  34. CONST IDCANCEL            = 2
  35. CONST IDIGNORE            = 5
  36. CONST IDYES               = 6
  37. CONST IDNO                = 7
  38.  
  39. '' Show Window constants
  40. CONST SW_SHOWMAXIMIZED    =    3
  41.  
  42. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  43. DECLARE FUNCTION SzDiskError (cbNeeded, szDrive$) AS STRING
  44. DECLARE SUB SetConfigNumFiles (cfiles%)
  45.  
  46. DECLARE FUNCTION ShowWindow LIB "user" (hWnd%, style%) AS INTEGER
  47.  
  48. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  49. ''
  50. '' START MAIN
  51. ''
  52. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  53.  
  54. START:        
  55.         CUIDLL$ = "mscuistf.dll"
  56.         szHWA$ = "ON"
  57.  
  58.     SetTitle "Help Writer's Assistant for Windows Setup"
  59.     SetBitmap CUIDLL$, LOGO
  60.  
  61.     hwnd% = HwndFrame()                    '' window handle
  62.     ''ShowWindow hwnd%, 3
  63.     
  64.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  65.     IF szInf$ = "" THEN
  66.         szInf$ = GetSymbolValue("STF_CWDDIR") + "HWAWINS.INF"
  67.     ENDIF
  68.  
  69.     ReadInfFile szInf$
  70.     szInf$ = ""
  71.  
  72.     'Find Windows version
  73.     IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
  74.       f30% = 0
  75.     ELSE
  76.       iT% =DoMsgBox("HWA/w requires Windows 3.1 or later", "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION)
  77.       ERROR STFQUIT
  78.     END IF
  79.  
  80. WELCOME:
  81.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, "FHelpDlgProc")
  82.     IF sz$ = "CONTINUE" THEN
  83.       UIPop 1
  84.     ELSE
  85.       GOSUB ASKQUIT
  86.       GOTO WELCOME
  87.     END IF
  88.     
  89. GETHWAWDIR:
  90.     SetSymbolValue "EditFocus", "ALL"
  91.  
  92.     SetSymbolValue "EditTextIn", "C:\HWAWIN"
  93.     
  94. GETHWAWDIRL1:
  95.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", DIRHELP, "FHelpDlgProc")
  96.     szHWADir$ = GetSymbolValue("EditTextOut")
  97.  
  98.     IF sz$ = "EXIT" THEN
  99.       GOSUB ASKQUIT
  100.       GOTO GETHWAWDIR
  101.     ELSEIF sz$ = "BACK" THEN
  102.         UIPop 1
  103.         GOTO WELCOME
  104.     ELSEIF sz$ <> "CONTINUE" THEN
  105.        GOTO GETHWAWDIRL1
  106.     ENDIF
  107.  
  108.     IF IsDirWritable(szHWADir$) = 0 THEN
  109.       iMB% = DoMsgBox( "The path you entered is not a valid pathname.", "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
  110.       IF iMB% = IDRETRY THEN
  111.         GOTO GETHWAWDIR
  112.       ELSE
  113.         UIPop 1
  114.       ERROR STFQUIT
  115.       END IF
  116.     END IF
  117.  
  118.     UIPop 1
  119.  
  120. INSTALL:
  121.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  122.     szWinDir$ = GetWindowsDir
  123.     szSystemDir$ = GetWindowsSysDir
  124.     IF szSystemDir$ = "" THEN
  125.       szSystemDir$ = GetWindowsDir
  126.     END IF
  127.     
  128.     IF szHWA$ = "ON" THEN
  129.       AddSectionFilesToCopyList "hwawin", szSrcDir$, szHWADir$
  130.       AddSectionFilesToCopyList "hwawin dlls",       szSrcDir$, szSystemDir
  131.       AddSectionFilesToCopyList "hwasamp",       szSrcDir$, szHWADir$
  132.       AddSectionFilesToCopyList "tutorial",       szSrcDir$, szHWADir$
  133.     END IF
  134.     
  135.         ' Check for disk space, and do not proceed until there is enough.
  136.     WHILE GetCopyListCost("", "", "needed") > 0
  137.       iDrive = 1
  138.       szNeeded$ = GetListItem("needed", iDrive)
  139.       WHILE Val(szNeeded$) <= 0
  140.         iDrive = iDrive + 1
  141.         szNeeded$ = GetListItem("needed", iDrive)
  142.       WEND
  143.         iMB% = DoMsgBox(SzDiskError(Val(szNeeded$), Chr$(Asc("A") + iDrive - 1)), "HWA/w Setup", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
  144.         IF iMB% = IDCANCEL THEN
  145.           ERROR STFQUIT
  146.       END IF
  147.     WEND
  148.  
  149.     ' Copy all files
  150.     'SetRestartDir szWinDir$
  151.     t% = SetSizeCheckMode( scmOff )
  152.     CopyFilesInCopyList
  153.  
  154.     ' Advise that FILES= should be at least 50
  155.     IF szHWA$ = "ON" THEN
  156.       IF GetConfigNumFiles() < 50 THEN
  157.         szMessage1$ = "For best results, we recommend that the number of open files allowed by CONFIG.SYS be at least 50.  "
  158.         szMessage2$ = "Would you like for us to change this for you?"
  159.         iMB% = DoMsgBox(szMessage1$ + szMessage2$, "HWA/w Setup" , MB_YESNO + MB_ICONQUESTION )
  160.         szMessage1$ = ""
  161.         szMessage2$ = ""
  162.         IF iMB% = IDYES THEN
  163.           ON ERROR GOTO RESUMENEXT
  164.           SetConfigNumFiles(50)
  165.           ON ERROR GOTO 0
  166.           ' Should we tell them to reboot?
  167.         END IF
  168.       END IF
  169.     END IF
  170.  
  171.     ' Create Progman group and icons
  172.     
  173.     CreateProgmanGroup  "HWA/w", "", 0
  174.     ShowProgmanGroup    "HWA/w", 1, 0
  175.         
  176.     IF szHWA$ = "ON" THEN
  177.          szHWAFile$ = MakePath (szHWADir$, "hwawin.exe")
  178.       CreateProgmanItem   "HWA/w", "Help Writer's Assistant for Windows", szHWAFile$, ",1", 0
  179.       CreateProgmanItem   "HWA/w", "HWA/w Readme", "notepad.exe " + MakePath(szHWADir$, "readme.txt"), "", 0
  180.     END IF
  181.         
  182.     IF szHWA$ = "ON" THEN
  183.         RemoveIniKey "WIN.INI", "Extensions", "rtf", 0
  184.       CreateIniKeyValue "WIN.INI", "Extensions", "rtf", szHWAFile$ + " ^.rtf", 0
  185.     END IF
  186.  
  187.     IF RestartListEmpty() = 0 THEN
  188.       IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
  189.         ' Setup successful, but Windows must be restarted
  190.         sz$ = UIStartDlg(CUIDLL$, EXITRESTART, "FInfo0DlgProc", 0,"")
  191.         UIPopAll
  192.         i% = ExitExecRestart()
  193.       ELSE
  194.         ' User must run c:\_mssetup.bat to complete setup
  195.         sz$ = UIStartDlg(CUIDLL$, EXITRUNBATCH,"FInfo0DlgProc", 0,"")
  196.         UIPopAll
  197.       END IF
  198.       END
  199.     END IF
  200.  
  201. QUIT:
  202.     IF Err = 0 THEN
  203.         Dlg% = EXITSUCCESS
  204.     ELSEIF Err = STFQUIT THEN
  205.         Dlg% = EXITQUIT
  206.     ELSE
  207.         Dlg% = EXITFAILURE
  208.     ENDIF
  209.  
  210.     sz$ = UIStartDlg(CUIDLL$, Dlg%, "FInfo0DlgProc", 0, "")
  211.     UIPopAll
  212.  
  213.     END
  214.  
  215. RESUMENEXT:
  216.     RESUME NEXT
  217.     
  218. ASKQUIT:
  219.     ui$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  220.  
  221.     IF ui$ = "EXIT" THEN
  222.         UIPopAll
  223.         ERROR STFQUIT
  224.     ELSEIF ui$ = "REACTIVATE" THEN
  225.         GOTO ASKQUIT
  226.     ELSE
  227.         UIPop 1
  228.     END IF
  229.     RETURN
  230.  
  231.  
  232.  
  233. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  234.     IF szDir$ = "" THEN
  235.         MakePath = szFile$
  236.     ELSEIF szFile$ = "" THEN
  237.         MakePath = szDir$
  238.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  239.         MakePath = szDir$ + szFile$
  240.     ELSE
  241.         MakePath = szDir$ + "\" + szFile$
  242.     END IF
  243. END FUNCTION
  244.  
  245.  
  246. FUNCTION SzDiskError (cbNeeded, szDrive$) STATIC AS STRING
  247.  
  248.     szT$ = "You do not have enough disk space to install the selected items.  You need "
  249.     cbNeeded = (cbNeeded + 999)/1000
  250.     szT$ = szT$ + Str$(cbNeeded) + "K more space on your " + szDrive$ + ": drive."
  251.  
  252.     SzDiskError = szT$
  253.     szT$ = ""
  254.  
  255. END FUNCTION
  256.  
  257.  
  258. SUB SetConfigNumFiles (cfiles%) STATIC
  259.  
  260.     OPEN "C:\CONFIG.SYS" FOR INPUT AS #1
  261.     OPEN "C:\HWAWIN.~TM" FOR OUTPUT AS #2
  262.     WHILE EOF(1) <> -1
  263.         INPUT #1, szInput$
  264.         szInput$ = LTRIM$(szInput$)
  265.         IF MID$(UCASE$(szInput$), 1, 5) = "FILES" THEN
  266.             PRINT #2, "FILES = "; cfiles%
  267.         ELSE
  268.             PRINT #2, szInput$
  269.         ENDIF
  270.     WEND
  271.     CLOSE #1
  272.     CLOSE #2
  273.  
  274.     OPEN "C:\HWAWIN.~TM" FOR INPUT AS #1
  275.     OPEN "C:\CONFIG.SYS" FOR OUTPUT AS #2
  276.     WHILE EOF(1) <> -1
  277.         INPUT #1, szInput$
  278.         PRINT #2, szInput$
  279.     WEND
  280.     CLOSE #1
  281.     CLOSE #2
  282.  
  283.     KILL "C:\HWAWIN.~TM"
  284.  
  285. END SUB
  286.