home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m017 / 2.ddi / T2S.MS_ / T2S.MS
Encoding:
Text File  |  1994-01-17  |  10.3 KB  |  401 lines

  1. '**************************************************************************
  2. '*                       MSSetup for Text-to-Speech
  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 SDESTPATH     = 300
  14. CONST MDESTPATH     = 350
  15. CONST TDESTPATH     = 360
  16. CONST EXITFAILURE   = 400
  17. CONST EXITQUIT      = 600
  18. CONST EXITSUCCESS   = 700
  19. CONST APPHELP       = 900
  20. CONST OPTION        = 2500
  21. CONST BADPATH       = 6400
  22. CONST NOSPACE       = 6500
  23. CONST BADOPT        = 6600
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. ''Destination directories.
  29. GLOBAL DEST$
  30. GLOBAL SDEST$
  31. GLOBAL MDEST$
  32. GLOBAL TDEST$
  33.  
  34. ''Minimum free space required in destination drive.
  35. GLOBAL FREESPACE&
  36.  
  37. ''Dialog list symbol names
  38. GLOBAL CHECKSTATES$
  39.  
  40. '' Options
  41. GLOBAL InsSchedule%
  42. GLOBAL InsMonologw%
  43. GLOBAL CheckState$
  44.  
  45. DECLARE SUB Install
  46. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  47.  
  48.  
  49. INIT:
  50.    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  51.    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  52. '   FREESPACE& = 1597152   ''Message box shows 2MB required.  500KB was
  53.                            ''for initializing MSSETUP.
  54.  
  55.    CheckState$ = "ON"
  56.  
  57.    SetBitmap CUIDLL$, LOGO
  58.    SetTitle "Installing Text-to-Speech applications"
  59.  
  60.    szInf$ = GetSymbolValue("STF_SRCINFPATH")
  61.    IF szInf$ = "" THEN
  62.        szInf$ = GetSymbolValue("STF_CWDDIR") + "T2S.INF"
  63.    END IF
  64.    ReadInfFile szInf$
  65.  
  66.  ''Set installation directories
  67.    OPTCUR$ = "1"
  68.    SDEST$ = GetEnvVariableValue("SOUND")
  69.    IF SDEST$ = "" THEN
  70.       TDEST$ = "C:\SB16"
  71.       SDEST$ = "C:\SB16\SCHEDULE"
  72.    ELSE
  73.       TDEST$ = SDEST$
  74.       SDEST$ = SDEST$ + "\SCHEDULE"
  75.    END IF
  76.    MDEST$ = "C:\MONOLOGW"
  77.  
  78. '$IFDEF DEBUG
  79.    i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  80.    WinDrive$ = MID$(GetWindowsDir, 1, 1)
  81.    IF IsDriveValid(WinDrive$) = 0 THEN
  82.       i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  83.       GOTO QUIT
  84.    END IF
  85. '$ENDIF ''DEBUG
  86.  
  87.  
  88. WELCOME:
  89.    InsSchedule% = 1
  90.    InsMonologw% = 1
  91.  
  92.    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  93.    IF sz$ = "CONTINUE" THEN
  94.       UIPop 1
  95.    ELSE
  96.       GOSUB ASKQUIT
  97.       GOTO WELCOME
  98.    END IF
  99.  
  100.  
  101. GETOPT0:
  102.    SetSymbolValue "CheckItemsIn", ""      ''empty the checkbox list
  103.    AddListItem "CheckItemsIn", CheckState$
  104.    AddListItem "CheckItemsIn", CheckState$
  105.  
  106. GETOPT:
  107.    IF InsSchedule% = 1 THEN
  108.       CheckState$ = "ON"
  109.    ELSE
  110.       CheckState$ = "OFF"
  111.    ENDIF
  112.    ReplaceListItem "CheckItemsIn", 1, CheckState$
  113.    IF InsMonologw% = 1 THEN
  114.       CheckState$ = "ON"
  115.    ELSE
  116.       CheckState$ = "OFF"
  117.    ENDIF
  118.    ReplaceListItem "CheckItemsIn", 2, CheckState$
  119.  
  120.    sz$ = UIStartDlg(CUIDLL$, OPTION, "FCheckDlgProc", APPHELP, HELPPROC$)
  121.    UIPop 1
  122.    IF GetListItem ("CheckItemsOut", 1) = "ON" THEN
  123.       InsSchedule% = 1
  124.    ELSE
  125.       InsSchedule% = 0
  126.    END IF
  127.    IF GetListItem ("CheckItemsOut", 2) = "ON" THEN
  128.       InsMonologw% = 1
  129.    ELSE
  130.       InsMonologw% = 0
  131.    END IF
  132.    IF sz$ = "CONTINUE" THEN
  133.       IF InsSchedule% = 0 AND InsMonologw% = 0 THEN
  134.          InsSchedule% = 1
  135.          InsMonologw% = 1
  136.          GOSUB BADOPT
  137.          GOTO GETOPT
  138.       ENDIF
  139.    ELSEIF sz$ = "BACK" THEN
  140.       GOTO WELCOME
  141.    ELSE
  142.       GOSUB ASKQUIT
  143.       GOTO GETOPT
  144.    END IF
  145.  
  146. 'Calculate free space needed.
  147.    FREESPACE& = 600000
  148.    IF InsSchedule% = 1 THEN
  149.       FREESPACE& = FREESPACE& + 350000
  150.    ENDIF
  151.    IF InsMonologw% = 1 THEN
  152.       FREESPACE& = FREESPACE& + 40000
  153.    ENDIF
  154.  
  155. 'Query Scheduler's path
  156.    IF InsSchedule% = 1 THEN
  157. GETSPATH:
  158.       SetSymbolValue "EditTextIn", SDEST$
  159.       SetSymbolValue "EditFocus", "END"
  160.  
  161. GETSPATHL1:
  162.       sz$ = UIStartDlg(CUIDLL$, SDESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  163.       SDEST$ = GetSymbolValue("EditTextOut")
  164.       UIPop 1
  165.       IF sz$ = "CONTINUE" THEN
  166.          IF IsDirWritable(SDEST$) = 0 THEN
  167.             GOSUB BADPATH
  168.             GOTO GETSPATHL1
  169.          END IF
  170.          IF GetFreeSpaceForDrive (SDEST$) < FREESPACE& THEN
  171.             GOSUB NOSPACE
  172.             GOTO GETSPATHL1
  173.          END IF
  174.       ELSEIF sz$ = "REACTIVATE" THEN
  175.          GOTO GETSPATHL1
  176.       ELSEIF sz$ = "BACK" THEN
  177.          GOTO GETOPT
  178.       ELSE
  179.          GOSUB ASKQUIT
  180.          GOTO GETSPATH
  181.       END IF
  182.    EndIf
  183.  
  184. 'Query Monologue's path
  185.    IF InsMonologw% = 1 THEN
  186. GETMPATH:
  187.       SetSymbolValue "EditTextIn", MDEST$
  188.       SetSymbolValue "EditFocus", "END"
  189.  
  190. GETMPATHL1:
  191.       sz$ = UIStartDlg(CUIDLL$, MDESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  192.       MDEST$ = GetSymbolValue("EditTextOut")
  193.       UIPop 1
  194.       IF sz$ = "CONTINUE" THEN
  195.          IF IsDirWritable(MDEST$) = 0 THEN
  196.             GOSUB BADPATH
  197.             GOTO GETMPATHL1
  198.          END IF
  199.          IF GetFreeSpaceForDrive (MDEST$) < FREESPACE& THEN
  200.             GOSUB NOSPACE
  201.             GOTO GETMPATHL1
  202.          END IF
  203.       ELSEIF sz$ = "REACTIVATE" THEN
  204.          GOTO GETMPATHL1
  205.       ELSEIF sz$ = "BACK" THEN
  206.          UIPop 1
  207.          IF InsSchedule% = 1 THEN
  208.             GOTO GETSPATH
  209.          ELSE
  210.             GOTO GETOPT
  211.          ENDIF
  212.       ELSE
  213.          GOSUB ASKQUIT
  214.          GOTO GETMPATH
  215.       END IF
  216.    ENDIF
  217.  
  218.    Install
  219.  
  220.  
  221. QUIT:
  222.    ON ERROR GOTO ERRQUIT
  223.  
  224.    IF ERR = 0 THEN
  225.       GOSUB ASKSBTALKER
  226.       dlg% = EXITSUCCESS
  227.    ELSEIF ERR = STFQUIT THEN
  228.       dlg% = EXITQUIT
  229.    ELSE
  230.       dlg% = EXITFAILURE
  231.    END IF
  232.  
  233. QUITL1:
  234.    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  235.    IF sz$ = "REACTIVATE" THEN
  236.       GOTO QUITL1
  237.    END IF
  238.    UIPop 1
  239.  
  240.    END
  241.  
  242. ERRQUIT:
  243.    i% = DoMsgBox("Installation sources were corrupted, call Creative Technical Support!", "Installation Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  244.    END
  245.  
  246. BADPATH:
  247.    sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  248.    IF sz$ = "REACTIVATE" THEN
  249.       GOTO BADPATH
  250.    END IF
  251.    UIPop 1
  252.    RETURN
  253.  
  254. NOSPACE:
  255.    sz$ = UIStartDlg(CUIDLL$, NOSPACE, "FInfo0DlgProc", 0, "")
  256.    IF sz$ = "REACTIVATE" THEN
  257.       GOTO NOSPACE
  258.    END IF
  259.    UIPop 1
  260.    RETURN
  261.  
  262. BADOPT:
  263.    sz$ = UIStartDlg(CUIDLL$, BADOPT, "FInfo0DlgProc", 0, "")
  264.    IF sz$ = "REACTIVATE" THEN
  265.       GOTO BADOPT
  266.    END IF
  267.    UIPop 1
  268.    RETURN
  269.  
  270. ASKQUIT:
  271.    sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  272.    IF sz$ = "EXIT" THEN
  273.       UIPopAll
  274.       ERROR STFQUIT
  275.    ELSEIF sz$ = "REACTIVATE" THEN
  276.       GOTO ASKQUIT
  277.    ELSE
  278.       UIPop 1
  279.    END IF
  280.    RETURN
  281.  
  282. '**
  283. '** Purpose:
  284. '**     Ask whether to install SBTALKER.  Builds the copy list and performs
  285. '**     installation operations for SBTALKER if yes.
  286. '** Arguments:
  287. '**     none.
  288. '** Returns:
  289. '**     none.
  290. '*************************************************************************
  291. ASKSBTALKER:
  292.    UIPopAll
  293.    i% = DoMsgBox("Do you want to install SBTALKER to your hard disk?", "SBTALKER Installation", MB_YESNO+MB_TASKMODAL+MB_ICONQUESTION)
  294.  
  295.    If i% = 6 THEN
  296.       FREESPACE& = 300000
  297. GETTPATH:
  298.       SetSymbolValue "EditTextIn", TDEST$
  299.       SetSymbolValue "EditFocus", "END"
  300.  
  301. GETTPATHL1:
  302.       sz$ = UIStartDlg(CUIDLL$, TDESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  303.       TDEST$ = GetSymbolValue("EditTextOut")
  304.       UIPop 1
  305.       IF sz$ = "CONTINUE" THEN
  306.          IF IsDirWritable(TDEST$) = 0 THEN
  307.             GOSUB BADPATH
  308.             GOTO GETTPATHL1
  309.          END IF
  310.          IF GetFreeSpaceForDrive (TDEST$) < FREESPACE& THEN
  311.             GOSUB NOSPACE
  312.             GOTO GETTPATHL1
  313.          END IF
  314.  
  315.          SrcDir$ = GetSymbolValue("STF_SRCDIR")
  316.          SrcDir$ = SrcDir$ + "SBTALKER"
  317.  
  318.          DEST$ = TDEST$ + "\SBTALKER"
  319.          CreateDir DEST$, cmoNone
  320.          AddSectionFilesToCopyList "SBTALKER", SrcDir$, DEST$
  321.          DEST$ = TDEST$ + "\DRV"
  322.          CreateDir DEST$, cmoNone
  323.          AddSectionFilesToCopyList "SBTALKERDRV", SrcDir$, DEST$
  324.  
  325.          CopyFilesInCopyList
  326.       ELSEIF sz$ = "REACTIVATE" THEN
  327.          GOTO GETTPATHL1
  328.       ELSEIF sz$ = "BACK" THEN
  329.          GOTO ASKSBTALKER
  330.       ELSE
  331.          GOSUB ASKQUIT
  332.          GOTO GETTPATH
  333.       END IF
  334.    END IF
  335.    RETURN
  336.  
  337. '**
  338. '** Purpose:
  339. '**     Builds the copy list and performs installation operations for
  340. '**     Scheduler and Monologue.
  341. '** Arguments:
  342. '**     none.
  343. '** Returns:
  344. '**     none.
  345. '*************************************************************************
  346. SUB Install STATIC
  347.  
  348.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  349.    szWinDir$ = GetWindowsDir()
  350.    szWinSysDir$ = GetWindowsSysDir()
  351.  
  352.    AddSectionFilesToCopyList "Common WinFiles", SrcDir$, szWinDir$
  353.  
  354.    IF InsSchedule% = 1 THEN
  355.       CreateDir SDEST$, cmoNone
  356.       AddSectionFilesToCopyList "Schedule WinFiles", SrcDir$, szWinDir$
  357.       AddSectionFilesToCopyList "Schedule", SrcDir$, SDEST$
  358.    END IF
  359.    IF InsMonologw% = 1 THEN
  360.       CreateDir MDEST$, cmoNone
  361.       AddSectionFilesToCopyList "Monologw", SrcDir$, MDEST$
  362.    END IF
  363.  
  364.    CopyFilesInCopyList
  365.  
  366.    CreateProgmanGroup "Text-to-Speech", "", cmoNone
  367.    ShowProgmanGroup  "Text-to-Speech", 1, cmoNone
  368.    IF InsSchedule% = 1 THEN
  369.       CreateProgmanItem "Text-to-Speech", "Scheduler", MakePath(SDEST$,"schedule.exe"), "", cmoOverwrite
  370.    END IF
  371.    IF InsMonologw% = 1 THEN
  372.       CreateProgmanItem "Text-to-Speech", "Monologue 8-bit", MakePath(MDEST$,"monologw.exe"), "", cmoOverwrite
  373.       CreateProgmanItem "Text-to-Speech", "Dictionary Manager", MakePath(MDEST$,"dictmgr.exe"), "", cmoOverwrite
  374.    END IF
  375.  
  376. END SUB
  377.  
  378.  
  379. '**
  380. '** Purpose:
  381. '**     Appends a file name to the end of a directory path,
  382. '**     inserting a backslash character as needed.
  383. '** Arguments:
  384. '**     szDir$  - full directory path (with optional ending "\")
  385. '**     szFile$ - filename to append to directory
  386. '** Returns:
  387. '**     Resulting fully qualified path name.
  388. '*************************************************************************
  389. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  390.    IF szDir$ = "" THEN
  391.       MakePath = szFile$
  392.    ELSEIF szFile$ = "" THEN
  393.       MakePath = szDir$
  394.    ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  395.       MakePath = szDir$ + szFile$
  396.    ELSE
  397.       MakePath = szDir$ + "\" + szFile$
  398.    END IF
  399. END FUNCTION
  400.  
  401.