home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Bookshelf 1992 / Image.iso / setup / mpgsetup.mst < prev    next >
Text File  |  1992-06-26  |  29KB  |  867 lines

  1. '**************************************************************************
  2. '*            Microsoft Multimedia Publishing Group Setup
  3. '*    Microsoft Bookshelf CD-ROM Reference Library - 1992 Edition
  4. '*       (c) 1992 Microsoft Corporation.  All Rights Reserved.
  5. '**************************************************************************
  6.  
  7. ''** disabled $DEFINE DEBUG  ''Define for script development/debugging
  8.  
  9. '$INCLUDE 'setupapi.inc'
  10. '$INCLUDE 'msdetect.inc'
  11.  
  12.  
  13. DECLARE FUNCTION WinExec LIB "kernel" (a$,b%) AS INTEGER
  14. DECLARE FUNCTION GetModuleHandle LIB "kernel" (a$) AS INTEGER
  15. DECLARE FUNCTION AddFontResource LIB "gdi" (a$) AS INTEGER
  16. DECLARE FUNCTION SendMessage LIB "user" (a%,b%,c%,d$) AS INTEGER
  17. DECLARE FUNCTION FAsyncAudio LIB "mscuistf.dll"  AS INTEGER
  18. DECLARE FUNCTION IReplaceTbarBmpsIfDifferent LIB "tbar.dll" (a$,b$,c%) AS INTEGER
  19.  
  20.  
  21.  
  22. ''SendMessage() IDs
  23. CONST WM_WININICHANGE  = &H001A
  24. CONST WM_FONTCHANGE    = &H001D
  25. CONST SW_SHOWMINIMIZED = 2
  26.  
  27. ''Dialog ID's
  28.  
  29. CONST WINSPACE        = 2000
  30. CONST WINSPACE_HELP    = 2050
  31.  
  32. CONST WELCOME       = 100
  33. CONST WELCOME_HELP  = 150
  34.  
  35. CONST ASKEXIT        = 200
  36.  
  37. CONST DESTPATH        = 300
  38. CONST DESTPATH_EXISTING = 305
  39. CONST DESTPATH_HELP    = 350
  40.  
  41. CONST NOLOCALSPACE    = 1000
  42. CONST NOLOCALSPACE_HELP    = 1050
  43.  
  44. CONST INVALID_DIR    = 1100
  45.  
  46. CONST TOOBIG        = 900
  47. CONST TOOBIG_HELP    = 950
  48.  
  49. CONST OPTIONS_1        = 800
  50. CONST OPTIONS_2        = 850
  51. CONST OPTIONS_QK    = 810
  52. CONST OPTIONS_WW    = 820
  53.  
  54.  
  55. CONST EXITQUIT        = 600
  56. CONST EXITSUCCESS    = 700
  57. CONST EXITSUCCESS_30    = 750
  58.  
  59. CONST BLBD_REGISTER    = 1300
  60.  
  61.  
  62. CONST WORD_INI$     = "Microsoft Word 2.0"
  63. CONST BOOK_INI$     = "Bookshelf"
  64. CONST PROG_GRP$     = "Bookshelf - 1992"
  65.  
  66. CONST CHECK_QK        = 1
  67. CONST CHECK_WW        = 2
  68.  
  69.  
  70. '' Size of how much space will be needed to instal base files.
  71. '' These estimates assuming 4k sector size on disk.
  72. CONST WIN_SIZE_K= 544
  73. CONST WIN_SIZE    = 544000
  74. CONST WORD_SIZE = 180000
  75. CONST BS_SIZE    = 900000
  76. CONST TOT_SIZE    = WIN_SIZE + WORD_SIZE + BS_SIZE
  77.  
  78.  
  79.  
  80. ''Bitmap ID
  81. CONST LOGO = 1
  82.  
  83. GLOBAL SRCDIR$      '' CD root path (location of setup.exe)
  84. GLOBAL WININI$      '' Fully-qualified path to WIN.INI
  85. GLOBAL DEST$        '' Default destination directory.
  86. GLOBAL WordDir$     '' Location of Winword.exe
  87.  
  88.  
  89. '**************************************************************************
  90. '**************************************************************************
  91. '**
  92. '**  Multimedia Publishing Group - Setup Script
  93. '**
  94. '**  Modify the following DEFINES and routines to customize setup
  95. '**    for a specific product
  96. '**
  97. '**************************************************************************
  98. '**************************************************************************
  99. DECLARE SUB Install        '' Modify for specific runtimes
  100. DECLARE SUB InstallFonts    '' Modify for custom fonts
  101. DECLARE SUB CreateProgMan    '' Modify for Program Groups/Items
  102. DECLARE SUB InstallQuicKeys    '' Install quickeys.
  103. DECLARE SUB InstallWinWord    '' Set DEFINE to enable/disable
  104.  
  105. DECLARE SUB UpdateQuicKeys (szInifile$ , szOldBook$, szNewBook$, szDefault$)
  106. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  107.  
  108. '**************************************************************************
  109. '**************************************************************************
  110.  
  111. '**************************************************************************
  112. '**  General Installation Script
  113. '**************************************************************************
  114. INIT:
  115.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  116.     HELPPROC$ = "FHelpDlgProc"        ''Help dialog procedure
  117.  
  118.     NL$ = Chr$(13) + Chr$(10)        '' Define newline
  119.     TAB$ = Chr$(9)                '' Define a tab
  120.  
  121.  
  122.     '' Use bad exit as default untill you've done a clean setup
  123.     dlg_EXIT% = EXITQUIT
  124.  
  125.     SetBitmap CUIDLL$, LOGO
  126.     SetTitle "Setup for " + PROG_GRP$
  127.  
  128.     SRCDIR$ = GetSymbolValue("STF_SRCDIR")
  129.     WININI$ = MakePath(GetWindowsDir(),"WIN.INI")
  130.  
  131.     '' Read in file list from mpgsetup.inf
  132.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  133.     IF szInf$ = "" THEN
  134.         szInf$ = GetSymbolValue("STF_CWDDIR") + "MPGSETUP.INF"
  135.     END IF
  136.     ReadInfFile szInf$
  137.  
  138.     '' Add the files that will always be needed for the windows directory
  139.     ''   so that we can find out if there is enough space to install on
  140.     ''   the windows dir.
  141.     AddSectionFilesToCopyList "BS92Sys", SRCDIR$, GetWindowsSysDir$
  142.     IF GetCopyListCost("","","") <> 0 THEN
  143.         SPLITPATH GetWindowsSysDir$,DRIVE$,PATH$,FILENAME$,EXT$
  144.         '' Fill in the Dialogue box
  145.         sz$ = "There is not enough space on the " + DRIVE$ + " drive to install Bookshelf." + NL$
  146.         sz$ = sz$ + "Setup must install some files in the Windows directory on this drive." + NL$
  147.         sz$ = sz$ + "Please remove some files to free " + Str$(WIN_SIZE_K) + "K of space, then run Setup again."
  148.  
  149.         i% = DoMsgBox(sz$ , "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  150.         UIPopAll
  151.         END '' Exit Setup
  152.     ENDIF
  153.  
  154.     '' Find out if Win 3.1 or above
  155.     IF (GetWindowsMajorVersion() > 3) OR ((GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() >= 10)) THEN
  156.         fWinThreeOne% = 1
  157.     ELSE
  158.         fWinThreeOne% = 0
  159.     ENDIF
  160.  
  161.  
  162.     ''  Find out if we can integrate with WinWord 2.0.
  163.     ''  Must be Win 3.1 or higher.
  164.     ''  Find out if the Winword 2.0 section is in win.ini and if
  165.     ''  the key 'programdir' point to a valid dir and it isn't a on a
  166.     ''  network drive, we aren't going to support integrating with
  167.     ''  network versions of Winword.
  168.     '' fWW% will be set to 0 if there is no valid version of Winword 2.0.
  169.     fWW% = 0
  170.  
  171.     IF (fWinThreeOne% <> 0) AND (DoesIniSectionExist(WININI$, WORD_INI$) <> 0) THEN
  172.         WordDir$ = GetIniKeyString(WININI$, WORD_INI$, "programdir")
  173.         IF WordDir$ <> "" THEN
  174.             SPLITPATH WordDir$,DRIVE$,PATH$,FILENAME$,EXT$
  175.             IF (IsDriveNetwork(DRIVE$) <> 1) AND (DoesFileExist(MakePath(WordDir$,"WINWORD.EXE"),femExists) = 1) THEN
  176.                 fWW% = 1
  177.             ENDIF
  178.         ENDIF
  179.     ENDIF
  180.  
  181.  
  182.     '' fQKrunning% will be set to 0 if it isn't QuickKeys isn't currently
  183.     ''  running
  184.     fQKrunning% = GetModuleHandle("QUICKEYS")
  185.  
  186.  
  187.     '' fMVrunning% will be set to 0 if it isn't Viewer isn't currently
  188.     ''  running
  189.     '' Currently this doesn't find the Module for some reason?????
  190.     ''  Would have to change to a toolhelp.dll function to try to fix.
  191.     ''  Wont fix at this time. -- MikkyA
  192.     fMVrunning% = GetModuleHandle("VIEWER")
  193.  
  194.  
  195.     '' fWWrunning% will be set to 0 if it isn't Winword isn't currently
  196.     ''  running or if fWW% is 0.
  197.     IF fWW% <> 0 THEN
  198.         fWWrunning% = GetModuleHandle("MSWORD")
  199.     ELSE
  200.         fWWrunning% = 0
  201.     ENDIF
  202.  
  203.  
  204.     IF (fQKrunning% <> 0) or (fWWrunning% <> 0) or (fMVrunning% <> 0) THEN
  205.         AreRunning$ = "Setup must update or change some of the files used by the following application(s):" + NL$
  206.         IF fQKrunning% <> 0 THEN
  207.             AreRunning$ = AreRunning$ + TAB$ + "- Viewer QuicKeys" +NL$
  208.         ENDIF
  209.  
  210.         IF fMVrunning% <> 0 THEN
  211.             AreRunning$ = AreRunning$ + TAB$ + "- Multimedia Viewer" +NL$
  212.         ENDIF
  213.  
  214.         IF fWWrunning% <> 0 THEN
  215.             AreRunning$ = AreRunning$ + TAB$ + "- Microsoft Word" +NL$
  216.         ENDIF
  217.  
  218.         AreRunning$ = AreRunning$ + NL$ + "Please close these application(s) and run Setup again." + NL$
  219.  
  220.         i% = DoMsgBox(AreRunning$ , "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  221.  
  222.         END  '' Exit Setup
  223.     ENDIF
  224.  
  225.  
  226.  
  227. WELCOME:
  228.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", WELCOME_HELP, HELPPROC$)
  229.     IF sz$ = "CONTINUE" THEN
  230.         UIPop 1
  231.     ELSE
  232.         GOSUB ASKEXIT
  233.         GOTO WELCOME
  234.     END IF
  235.  
  236.  
  237. GETPATH:
  238. '**
  239. '** 'Search for existing Viewer installation
  240. '**
  241.     DLG_VIEWER% = DESTPATH
  242.  
  243.     '' Look in win.ini for previous setup
  244.     DEST$ = GetIniKeyString(WININI$,"Multimedia Viewer", "ViewerPath")
  245.     IF DEST$ <> "" THEN
  246.         DLG_VIEWER% = DESTPATH_EXISTING
  247.  
  248.     ELSE '' Look in path for Mvapi.dll
  249.         DEST$ = FindTargetOnEnvVar("MVAPI.DLL", "PATH")
  250.         IF DEST$ <> "" THEN
  251.             SPLITPATH DEST$,DRIVE$,PATH$,FILENAME$,EXT$
  252.             DEST$ = DRIVE$ + PATH$
  253.             DLG_VIEWER% = DESTPATH_EXISTING
  254.         '' Look in C:\viewer
  255.         ELSEIF DoesFileExist("C:\VIEWER\MVAPI.DLL", femExists) = 1 THEN
  256.             DEST$ = "C:\VIEWER"
  257.             DLG_VIEWER% = DESTPATH_EXISTING
  258.         ELSE '' No old version of viewer found
  259.  
  260.             LocalDrives$ = "LocalDrives"
  261.  
  262.             GetLocalHardDrivesList LocalDrives$
  263.             n% = GetListLength(LocalDrives$)
  264.  
  265.             FOR i% = 1 TO n% STEP 1
  266.                 DRIVE$ = GetListItem(LocalDrives$,i%)
  267.                 Size& = GetFreeSpaceForDrive(DRIVE$)
  268.                 IF Size& > BS_SIZE THEN
  269.                     Dest_Drive$ = DRIVE$
  270.                     GOTO FOUND_SPACE
  271.                 ENDIF
  272.             NEXT i%
  273.  
  274.             '' Couldn't find any local Hard Drive with enough
  275.             ''   space for instaling bookshelf.
  276.             Dest_Drive$ = "C"
  277. NOSPACE:
  278.             sz$ = UIStartDlg(CUIDLL$, NOLOCALSPACE , "FEditDlgProc", NOLOCALSPACE_HELP, HELPPROC$)
  279.  
  280.             '' They want to continue anyway.
  281.             IF sz$ = "CONTINUE" THEN
  282.                 UIPop 1
  283.                 GOTO FOUND_SPACE
  284.             ELSEIF sz$ = "REACTIVATE" THEN
  285.                 GOTO NOSPACE
  286.             ELSE
  287.                 GOSUB ASKEXIT
  288.                 GOTO NOSPACE
  289.             END IF
  290.  
  291. FOUND_SPACE:
  292.             DEST$ = Dest_Drive$ + ":\VIEWER"
  293.             DLG_VIEWER% = DESTPATH
  294.         ENDIF
  295.     ENDIF
  296.  
  297.  
  298.     SetSymbolValue "EditTextIn", DEST$
  299.     SetSymbolValue "EditFocus", "END"
  300.  
  301. GETPATHL1:
  302.  
  303.     sz$ = UIStartDlg(CUIDLL$, DLG_VIEWER% , "FEditDlgProc", DESTPATH_HELP, HELPPROC$)
  304.  
  305.     DEST$ = GetSymbolValue("EditTextOut")
  306.  
  307.     IF sz$ = "CONTINUE" THEN
  308.         IF IsDirWritable(DEST$) = 0 THEN
  309.              dlg_WHAT_IS% = INVALID_DIR
  310.              GOSUB WHAT_IS
  311.              GOTO GETPATHL1
  312.         ENDIF
  313.  
  314.         ''   Find out if there is enough disk space.
  315.         Prev% = ShowWaitCursor()
  316.  
  317.         AddSectionFilesToCopyList "Viewer", SRCDIR$, DEST$
  318.         AddSectionFilesToCopyList "QuicKeys", SRCDIR$, DEST$
  319.         AddSectionFilesToCopyList "Bookshelf", SRCDIR$, DEST$
  320.  
  321.         IF GetCopyListCost("","","") <> 0 THEN
  322.             RestoreCursor Prev%
  323.             '' Not enough space
  324.             sz$ = UIStartDlg(CUIDLL$, TOOBIG , "FInfoDlgProc", 0, "")
  325.             IF sz$ <> "BACK" THEN
  326.                 GOSUB ASKEXIT
  327.             ENDIF
  328.  
  329.             '' clear list and put back the windows files
  330.             ClearCopyList
  331.             AddSectionFilesToCopyList "BS92Sys", SRCDIR$, GetWindowsSysDir$
  332.  
  333.             UIPop 1
  334.             GOTO GETPATHL1
  335.         ENDIF
  336.  
  337.         '' Find out if we there is enough space to prompt for the WinWord 2.0
  338.         ''  integration.
  339.  
  340.         IF fWW% <> 0 THEN
  341.             AddSectionFilesToCopyList "BS92Word", SRCDIR$, WordDir$
  342.             IF GetCopyListCost("","","") <> 0 THEN
  343.                 '' Not enough space for integration.
  344.                 fWW% = 0
  345.             ENDIF
  346.             '' clear list and put back all the other files
  347.             ClearCopyList
  348.             AddSectionFilesToCopyList "BS92Sys", SRCDIR$, GetWindowsSysDir$
  349.             AddSectionFilesToCopyList "Viewer", SRCDIR$, DEST$
  350.             AddSectionFilesToCopyList "QuicKeys", SRCDIR$, DEST$
  351.             AddSectionFilesToCopyList "Bookshelf", SRCDIR$, DEST$
  352.         ENDIF
  353.  
  354.         RestoreCursor Prev%
  355.  
  356.         UIPop 1
  357.     ELSEIF sz$ = "REACTIVATE" THEN
  358.         GOTO GETPATHL1
  359.     ELSEIF sz$ = "BACK" THEN
  360.         UIPop 1
  361.         GOTO WELCOME
  362.     ELSE
  363.         GOSUB ASKEXIT
  364.         GOTO GETPATHL1
  365.     END IF
  366.  
  367.  
  368. '' Prompt for putting quickeys in startup group and maybe word integration
  369.     '' Win31 needed for Startup group functionality
  370.     IF fWinThreeOne% <> 0 THEN
  371.         '' Initialize dlg box
  372.  
  373.         CheckItemsState$ = "CheckItemsState"
  374.  
  375.         AddListItem CheckItemsState$, "ON"
  376.  
  377.         dlg% = OPTIONS_1
  378.         IF fWW% <> 0 THEN
  379.             dlg% = OPTIONS_2
  380.             AddListItem CheckItemsState$, "ON"
  381.         ENDIF
  382. OPTIONS:
  383.         sz$ = UIStartDlg(CUIDLL$, dlg% , "FCustInstDlgProc", 0, "")
  384.         IF sz$ = "CONTINUE" THEN
  385.             UIPop 1
  386.  
  387.         ELSEIF sz$ = "REACTIVATE" THEN
  388.             GOTO OPTIONS
  389.  
  390.         ELSEIF sz$ = "BTN1" THEN
  391.             dlg_WHAT_IS% = OPTIONS_QK
  392.             GOSUB WHAT_IS
  393.             GOTO OPTIONS
  394.  
  395.         ELSEIF sz$ = "BTN2" THEN
  396.             dlg_WHAT_IS% = OPTIONS_WW
  397.             GOSUB WHAT_IS
  398.             GOTO OPTIONS
  399.  
  400.         ELSEIF sz$ = "CHK1" THEN
  401.             sz$ = GetListItem(CheckItemsState$, CHECK_QK)
  402.             IF sz$ = "ON" THEN
  403.                 ReplaceListItem CheckItemsState$, CHECK_QK, "OFF"
  404.             ELSEIF sz$ = "OFF" THEN
  405.                 ReplaceListItem CheckItemsState$, CHECK_QK, "ON"
  406.             ENDIF
  407.             GOTO OPTIONS
  408.  
  409.         ELSEIF sz$ = "CHK2" THEN
  410.             sz$ = GetListItem(CheckItemsState$, CHECK_WW)
  411.             IF sz$ = "ON" THEN
  412.                 ReplaceListItem CheckItemsState$, CHECK_WW, "OFF"
  413.             ELSEIF sz$ = "OFF" THEN
  414.                 ReplaceListItem CheckItemsState$, CHECK_WW, "ON"
  415.             ENDIF
  416.             GOTO OPTIONS
  417.  
  418.         ELSE '' Exit, Cancel, or unknown button
  419.             GOSUB ASKEXIT
  420.             GOTO OPTIONS
  421.         END IF
  422.  
  423.         '' Find out if they want winword integration
  424.         IF fWW% <> 0 THEN
  425.             sz$ = GetListItem(CheckItemsState$, CHECK_WW)
  426.             IF sz$ <> "ON" THEN
  427.                 fWW% = 0
  428.             ELSE
  429.                 fWW% = 1
  430.                 AddSectionFilesToCopyList "BS92Word", SRCDIR$, WordDir$
  431.             ENDIF
  432.         ENDIF
  433.  
  434.         fQKStartup% = 0
  435.         sz$ = GetListItem(CheckItemsState$, CHECK_QK)
  436.         IF sz$ = "ON" THEN
  437.             fQKStartup% = 1
  438.             '' clear out of load= line in win.ini if there.
  439.             Load$ = GetIniKeyString(WININI$, "windows", "load")
  440.  
  441.             l& = Instr(Ucase$(Load$), "QUICKEYS.EXE")
  442.             IF l& <> 0 THEN
  443.                 '' Look upto quickeys for spaces
  444.                 lLastSpace& = 1
  445.                 FOR l2& = 1 TO l& STEP 1
  446.                     IF MID$(Load$,l2&,1) = " " THEN
  447.                         lLastSpace& = l2&
  448.                     ENDIF
  449.                 NEXT l2&
  450.  
  451.                 '' Copy from start to last space and from end of quickeys.exe
  452.                 sz$ = MID$(Load$,1,lLastSpace& - 1) + MID$(Load$,l& + 12, LEN(Load$))
  453.                 CreateIniKeyValue WININI$, "windows","load", sz$ , cmoOverwrite
  454.  
  455.             ENDIF
  456.  
  457.         ENDIF
  458.  
  459.     ENDIF
  460.  
  461.  
  462.  
  463. ''*****************************************************************
  464.  
  465.     '' Install files, font, and update .ini files
  466.     Install
  467.  
  468.     '' Modify progman.
  469.     IF fQKStartup% <> 0 THEN
  470.         CreateProgmanItem "StartUp" , "QuicKeys", MakePath(DEST$, "QUICKEYS.EXE"), "", cmoOverwrite
  471.     ENDIF
  472.  
  473.     CreateProgMan
  474.  
  475.  
  476.     IF fWW% <> 0 THEN
  477.         InstallWinWord
  478.     ENDIF
  479.  
  480. ''*****************************************************************
  481.  
  482.     IF fWinThreeOne% <> 0 THEN
  483.         dlg_EXIT% = EXITSUCCESS
  484.     ELSE
  485.         dlg_EXIT% = EXITSUCCESS_30
  486.     ENDIF
  487.  
  488.  
  489.  
  490. QUIT:
  491.     ON ERROR GOTO ERRQUIT
  492.  
  493.     sz$ = UIStartDlg(CUIDLL$, dlg_EXIT%, "FInfoDlgProc", 0, "")
  494.     IF sz$ = "REACTIVATE" THEN
  495.         GOTO QUIT
  496.     ELSEIF sz$ = "BOOKSHELF" THEN
  497.         RUN MakePath(DEST$, "VIEWER.EXE") + " BOOKS92.MVB", NOWAIT
  498.     END IF
  499.     UIPop 1
  500.  
  501.     END
  502.  
  503. ERRQUIT:
  504.     i% = DoMsgBox("Setup sources were corrupted, call Microsoft Product Support Services at (206) 454-2030 for assistance.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  505.     END
  506.  
  507.  
  508. ASKEXIT:
  509.     sz$ = UIStartDlg(CUIDLL$, ASKEXIT, "FQuitDlgProc", 0, "")
  510.  
  511.     IF sz$ = "EXIT" THEN
  512.         UIPopAll
  513.         END '' Exit Setup
  514.     ELSEIF sz$ = "REACTIVATE" THEN
  515.         GOTO ASKEXIT
  516.     ELSE
  517.         UIPop 1
  518.     END IF
  519.     RETURN
  520.  
  521.  
  522. WHAT_IS:
  523.     sz$ = UIStartDlg(CUIDLL$, dlg_WHAT_IS%, "FInfoDlgProc", 0, "")
  524.  
  525.     IF sz$ = "REACTIVATE" THEN
  526.     GOTO WHAT_IS
  527.     END IF
  528.     UIPop 1
  529.     RETURN
  530.  
  531.  
  532.  
  533. '*************************************************************************
  534. '**
  535. '** Install
  536. '** -------
  537. '**
  538. '** Purpose:
  539. '**     Performs all installation operations.
  540. '** Arguments:
  541. '**     none.
  542. '** Returns:
  543. '**     none.
  544. '*************************************************************************
  545. SUB Install STATIC
  546.  
  547.     '' ASSERT DEST$ points to the selected drive to install viewer
  548.     '' ASSERT the copy list has been filled in.
  549.     CreateDir DEST$, cmoNone
  550.  
  551.     ''AddBlankToBillboardList 1024
  552.     AddToBillboardList "mscuistf.dll", BLBD_REGISTER, "FModelessDlgProc",2048
  553.     SetCopyGaugePosition 160, 20
  554.     CopyFilesInCopyList
  555.  
  556.     InstallFonts
  557.  
  558.     InstallQuicKeys
  559.  
  560.  
  561. '**
  562. '** Setup INI file settings
  563. '**
  564.  
  565. '** Update the loaction of viewer
  566.     CreateIniKeyValue WININI$, "Multimedia Viewer", "ViewerPath", DEST$, cmoOverwrite
  567.  
  568.  
  569. '** Create path to .MVBs on CD
  570.     ViewerIni$ = MakePath(GetWindowsDir,"Viewer.ini")
  571.     BookDir$ = MakePath(SRCDIR$,"BOOKS\")
  572.     CreateIniKeyValue ViewerIni$, "Cquote92","Path", BookDir$, cmoOverwrite
  573.     CreateIniKeyValue ViewerIni$, "BQuote92","Path", BookDir$, cmoOverwrite
  574.     CreateIniKeyValue ViewerIni$, "WA92",    "Path", BookDir$, cmoOverwrite
  575.     CreateIniKeyValue ViewerIni$, "Encyc92", "Path", BookDir$, cmoOverwrite
  576.     CreateIniKeyValue ViewerIni$, "Roget92", "Path", BookDir$, cmoOverwrite
  577.     CreateIniKeyValue ViewerIni$, "Dict92",  "Path", BookDir$, cmoOverwrite
  578.     CreateIniKeyValue ViewerIni$, "Atlas92", "Path", BookDir$, cmoOverwrite
  579.     CreateIniKeyValue ViewerIni$, "Books92", "Path", BookDir$, cmoOverwrite
  580.  
  581. '** Create Title to .MVBs on CD for QuicKeys
  582.     CreateIniKeyValue ViewerIni$, "Cquote92","Title", "Concise Columbia Quotations", cmoOverwrite
  583.     CreateIniKeyValue ViewerIni$, "BQuote92","Title", "Bartlett's Familiar Quotations", cmoOverwrite
  584.     CreateIniKeyValue ViewerIni$, "WA92",    "Title", "The World Almanac 1992", cmoOverwrite
  585.     CreateIniKeyValue ViewerIni$, "Encyc92", "Title", "Concise Columbia Encyclopedia", cmoOverwrite
  586.     CreateIniKeyValue ViewerIni$, "Roget92", "Title", "Roget's II Electronic Thesaurus", cmoOverwrite
  587.     CreateIniKeyValue ViewerIni$, "Dict92",  "Title", "American Heritage Dictionary", cmoOverwrite
  588.     CreateIniKeyValue ViewerIni$, "Atlas92", "Title", "Hammond Atlas", cmoOverwrite
  589.     CreateIniKeyValue ViewerIni$, "Books92", "Title", "Microsoft Bookshelf 1992", cmoOverwrite
  590.  
  591.  
  592. '** Setup Multibook FTSearch index file
  593.     CreateIniKeyValue ViewerIni$,"Cquote92","Indexfile","BOOKS92.IND",cmoOverwrite
  594.     CreateIniKeyValue ViewerIni$,"BQuote92","Indexfile","BOOKS92.IND",cmoOverwrite
  595.     CreateIniKeyValue ViewerIni$,"WA92",   "Indexfile","BOOKS92.IND",cmoOverwrite
  596.     CreateIniKeyValue ViewerIni$,"Encyc92","Indexfile","BOOKS92.IND",cmoOverwrite
  597.     CreateIniKeyValue ViewerIni$,"Roget92","Indexfile","BOOKS92.IND",cmoOverwrite
  598.     CreateIniKeyValue ViewerIni$,"Dict92", "Indexfile","BOOKS92.IND",cmoOverwrite
  599.     CreateIniKeyValue ViewerIni$,"Atlas92","Indexfile","BOOKS92.IND",cmoOverwrite
  600.     CreateIniKeyValue ViewerIni$,"Books92","Indexfile","BOOKS92.IND",cmoOverwrite
  601.  
  602. '** Setup 'Near' default for FTSearch
  603.     CreateIniKeyValue ViewerIni$, "Cquote92", "Near", "5", cmoOverwrite
  604.     CreateIniKeyValue ViewerIni$, "BQuote92", "Near", "5", cmoOverwrite
  605.     CreateIniKeyValue ViewerIni$, "WA92",     "Near", "5", cmoOverwrite
  606.     CreateIniKeyValue ViewerIni$, "Encyc92",  "Near", "5", cmoOverwrite
  607.     CreateIniKeyValue ViewerIni$, "Roget92",  "Near", "5", cmoOverwrite
  608.     CreateIniKeyValue ViewerIni$, "Dict92",   "Near", "5", cmoOverwrite
  609.     CreateIniKeyValue ViewerIni$, "Atlas92",  "Near", "5", cmoOverwrite
  610.     CreateIniKeyValue ViewerIni$, "Books92",  "Near", "5", cmoOverwrite
  611.  
  612. '** Setup 'Qflags' so that quickeys knows it can use both search and index on
  613. '   all of the books (Qflags=3).  Omit Books92 because we don't wan't it in
  614. '   the quickeys list.
  615.     CreateIniKeyValue ViewerIni$, "Cquote92", "Qflags", "3", cmoOverwrite
  616.     CreateIniKeyValue ViewerIni$, "BQuote92", "Qflags", "3", cmoOverwrite
  617.     CreateIniKeyValue ViewerIni$, "WA92",      "Qflags", "3", cmoOverwrite
  618.     CreateIniKeyValue ViewerIni$, "Encyc92",  "Qflags", "3", cmoOverwrite
  619.     CreateIniKeyValue ViewerIni$, "Roget92",  "Qflags", "3", cmoOverwrite
  620.     CreateIniKeyValue ViewerIni$, "Dict92",   "Qflags", "3", cmoOverwrite
  621.     CreateIniKeyValue ViewerIni$, "Atlas92",  "Qflags", "3", cmoOverwrite
  622.  
  623. '** Setup 'Disk not found' error message
  624.     ErrStr$ = "Please insert the " + PROG_GRP$ + " CD." 
  625.     CreateIniKeyValue ViewerIni$, "Files", "Cquote92.MVB", BookDir$ + "," + ErrStr$, cmoOverwrite
  626.     CreateIniKeyValue ViewerIni$, "Files", "BQuote92.MVB", BookDir$ + "," + ErrStr$, cmoOverwrite
  627.     CreateIniKeyValue ViewerIni$, "Files", "WA92.MVB",     BookDir$ + "," + ErrStr$, cmoOverwrite
  628.     CreateIniKeyValue ViewerIni$, "Files", "Encyc92.MVB",  BookDir$ + "," + ErrStr$, cmoOverwrite
  629.     CreateIniKeyValue ViewerIni$, "Files", "Roget92.MVB",  BookDir$ + "," + ErrStr$, cmoOverwrite
  630.     CreateIniKeyValue ViewerIni$, "Files", "Dict92.MVB",   BookDir$ + "," + ErrStr$, cmoOverwrite
  631.     CreateIniKeyValue ViewerIni$, "Files", "Atlas92.MVB",  BookDir$ + "," + ErrStr$, cmoOverwrite
  632.     CreateIniKeyValue ViewerIni$, "Files", "Books92.MVB",  BookDir$ + "," + ErrStr$, cmoOverwrite
  633.  
  634. END SUB
  635.  
  636.  
  637.  
  638. '*************************************************************************
  639. '**
  640. '** InstallWinWord
  641. '** -----------------
  642. '**
  643. '** Purpose:
  644. '**    Install special WinWord Integration files
  645. '** Arguments:
  646. '**     none.
  647. '** Returns:
  648. '**     none.
  649. '** Comments:
  650. '**
  651. '*************************************************************************
  652. SUB InstallWinWord STATIC
  653.  
  654. '** Obtain INI settings
  655.  
  656.     ' ASSERT: Word 2.0 section exists in the INI file
  657.     ' ASSERT: WordDir$ = valid path to winword.exe
  658.     DotPath$ = GetIniKeyString(WININI$, WORD_INI$, "DOT-PATH")
  659.     IF DotPath$ = "" THEN
  660.         DotPath$ = WordDir$
  661.         CreateIniKeyValue WININI$, WORD_INI$, "DOT-PATH", WordDir, cmoOverwrite
  662.     ENDIF
  663.  
  664.     IF (DoesFileExist(MakePath(DotPath$,"NORMAL.DOT"), femExists) = 1) AND (DoesFileExist(MakePath(DotPath$,"NORMAL.WAB"), femExists) = 0) THEN
  665.         CopyFile MakePath(DotPath$,"NORMAL.DOT"), MakePath(DotPath$,"NORMAL.WAB"), cmoNone, 0
  666.     ENDIF
  667.  
  668.     '' Make a backup of toolbar bitmap.  May be making a backup of
  669.     ''  a file just created from copylist.
  670.     '' ASSERT: The toolbar bitmaps exist because they were in the copy list.
  671.     IF DoesFileExist(MakePath(DotPath$,"V2TBAR.WAB"), femExists) = 0 THEN
  672.         CopyFile MakePath(DotPath$,"V2TBAR.BMP"), MakePath(DotPath$,"V2TBAR.WAB"), cmoNone, 0
  673.     ENDIF
  674.     i% = IReplaceTbarBmpsIfDifferent(MakePath(SRCDIR$,"VIEWER\BS92WORD\V2TBAR.BMP"), MakePath(DotPath$,"V2TBAR.BMP"), 25)
  675.  
  676.     IF DoesFileExist(MakePath(DotPath$,"82TBAR.WAB"), femExists) = 0 THEN
  677.         CopyFile MakePath(DotPath$,"82TBAR.BMP"), MakePath(DotPath$,"82TBAR.WAB"), cmoNone, 0
  678.     ENDIF
  679.     i% = IReplaceTbarBmpsIfDifferent(MakePath(SRCDIR$,"VIEWER\BS92WORD\82TBAR.BMP"), MakePath(DotPath$,"82TBAR.BMP"), 25)
  680.  
  681.  
  682. '** set INI file settings
  683.         CreateIniKeyValue WININI$, WORD_INI$, "LoadToolbarBitmaps", "Yes", cmoOverwrite
  684.         CreateIniKeyValue WININI$, BOOK_INI$, "SendToDlg", "1", cmoOverwrite
  685.         CreateIniKeyValue WININI$, BOOK_INI$, "HelpFile",  MakePath( SRCDIR$,  "books\bs92word.hlp"), cmoOverwrite
  686.         CreateIniKeyValue WININI$, BOOK_INI$, "Integration", "1", cmoOverwrite
  687.         CreateIniKeyValue WININI$, BOOK_INI$, "LastQuote",   "1", cmoOverwrite
  688.         CreateIniKeyValue WININI$, BOOK_INI$, "ViewerPath",  MakePath(DEST$,"VIEWER.EXE"), cmoOverwrite
  689.         CreateIniKeyValue WININI$, BOOK_INI$, "BooksPath",   MakePath( SRCDIR$,  "books"), cmoOverwrite
  690.  
  691. '** add macros to NORMAL.DOT (bookshlf.dot must have been copied to progdir)
  692.  
  693.     cmd$ = MakePath(WordDir$,"winword.exe" ) + " " + MakePath(WordDir$, "bookshlf.dot") + " /mwabSetup"
  694.     ignore% =  WinExec(cmd$,SW_SHOWMINIMIZED)
  695.  
  696.     
  697. END SUB
  698.  
  699.  
  700.  
  701. '*************************************************************************
  702. '**
  703. '** InstallFonts
  704. '** ------------
  705. '**
  706. '** Purpose:
  707. '**    Install special Screen (raster) fonts
  708. '** Arguments:
  709. '**     none.
  710. '** Returns:
  711. '**     none.
  712. '** Comments:
  713. '**    ensure that the font files are copied
  714. '**    !!CAUTION!! at present, this only installs VGA fonts !!!
  715. '*************************************************************************
  716. SUB InstallFonts STATIC
  717.  
  718.     szKey$ = "Lucida Sans B 10,12,14"    
  719.     CreateIniKeyValue WININI$, "fonts", szKey$, "VGALSB.FON", cmoOverwrite
  720.     szKey$ = "Lucida Sans B1 10,12,14"    
  721.     CreateIniKeyValue WININI$, "fonts", szKey$, "VGALSB1.FON", cmoOverwrite
  722.     szKey$ = "Lucida Sans B2 10,12,14"    
  723.     CreateIniKeyValue WININI$, "fonts", szKey$, "VGALSB2.FON", cmoOverwrite
  724.     szKey$ = "Symbol B"    
  725.     CreateIniKeyValue WININI$, "fonts", szKey$, "VGASB.FON", cmoOverwrite
  726.  
  727.     ignore% = AddFontResource(MakePath$(GetWindowsSysDir$, "VGALSB.fon"))
  728.     ignore% = AddFontResource(MakePath$(GetWindowsSysDir$, "VGALSB1.fon"))
  729.     ignore% = AddFontResource(MakePath$(GetWindowsSysDir$, "VGALSB2.fon"))
  730.     ignore% = AddFontResource(MakePath$(GetWindowsSysDir$, "VGASB.fon"))
  731.  
  732.     
  733.     '' make sure windows sees the font addition to WIN.INI
  734.     ignore% = SendMessage (-1, WM_WININICHANGED, 0, "fonts")
  735.     ignore% = SendMessage (-1, WM_FONTCHANGE, 0, "")
  736.  
  737.  
  738. END SUB
  739.  
  740.  
  741. '*************************************************************************
  742. '**
  743. '** InstallQuicKeys
  744. '** ---------------
  745. '**
  746. '** Purpose:
  747. '**    Install QuicKeys in Startup Group [for Win 3.1 and higher]
  748. '**                 and in WIN.INI [windows] load= [for Win3.0]
  749. '** Arguments:
  750. '**     none.
  751. '** Returns:
  752. '**     none.
  753. '*************************************************************************
  754. SUB InstallQuickeys STATIC
  755.  
  756. '** 
  757. '** INI file settings
  758. '**
  759.  
  760. '**  QuicKey options
  761.     ViewerIni$ = MakePath(GetWindowsDir,"Viewer.ini")
  762.     CreateIniKeyValue ViewerIni$, "QuicKeys", "Open", "Minimize", cmoNone
  763.     CreateIniKeyValue ViewerIni$, "QuicKeys", "Multiple", "False", cmoNone
  764.  
  765. '**  Key settings for each book
  766. '**  using the definitions for each 1991 book if they exist
  767.  
  768.     UpdateQuicKeys ViewerIni$, "Cquote", "Cquote92", "Index;Ctrl-Shift-Alt-Q"
  769.     UpdateQuicKeys ViewerIni$,  "Bquote", "Bquote92", "Index;Ctrl-Shift-Alt-B"
  770.     UpdateQuicKeys ViewerIni$,  "WA91", "WA92", "Index;Ctrl-Shift-Alt-W"
  771.     UpdateQuicKeys ViewerIni$,  "Encyc", "Encyc92", "Index;Ctrl-Shift-Alt-E"
  772.     UpdateQuicKeys ViewerIni$,  "Roget", "Roget92", "Index;Ctrl-Shift-Alt-T"
  773.     UpdateQuicKeys ViewerIni$,  "Dict", "Dict92", "Index;Ctrl-Shift-Alt-D"
  774.     UpdateQuicKeys ViewerIni$,  "Atlas", "Atlas92", "Index;Ctrl-Shift-Alt-A"
  775.  
  776. END SUB
  777.  
  778.  
  779. '*************************************************************************
  780. '**
  781. '** CreateProgman
  782. '** -------------
  783. '** Purpose:
  784. '**    Create Program Group for Bookshelf 1992
  785. '** Arguments:
  786. '**     none.
  787. '** Returns:
  788. '**     none.
  789. '*************************************************************************
  790. SUB CreateProgMan STATIC
  791.     Command$ = MakePath(DEST$, "VIEWER.EXE") + " " 
  792.     CreateProgmanGroup PROG_GRP$, "", cmoOverwrite
  793.     ShowProgmanGroup  PROG_GRP$, 1, cmoNone
  794.  
  795.     CreateProgmanItem PROG_GRP$, "Bookshelf '92", Command$ + "BOOKS92.MVB", MakePath(DEST$, "Books92.ico"), cmoOverwrite
  796.     CreateProgmanItem PROG_GRP$, "Concise Quotes", Command$ + "CQUOTE92.MVB", MakePath(DEST$, "cquote92.ico"), cmoOverwrite
  797.     CreateProgmanItem PROG_GRP$, "Bartlett's", Command$ + "BQUOTE92.MVB", MakePath(DEST$, "bquote92.ico"), cmoOverwrite
  798.     CreateProgmanItem PROG_GRP$, "Encyclopedia", Command$ + "ENCYC92.MVB", MakePath(DEST$, "encyc92.ico"), cmoOverwrite
  799.     CreateProgmanItem PROG_GRP$, "Dictionary", Command$ + "DICT92.MVB", MakePath(DEST$, "dict92.ico"), cmoOverwrite
  800.     CreateProgmanItem PROG_GRP$, "Thesaurus", Command$ + "ROGET92.MVB", MakePath(DEST$, "roget92.ico"), cmoOverwrite
  801.     CreateProgmanItem PROG_GRP$, "Atlas", Command$ + "ATLAS92.MVB", MakePath(DEST$, "atlas92.ico"), cmoOverwrite
  802.     CreateProgmanItem PROG_GRP$, "1992 Almanac", Command$ + "WA92.MVB", MakePath(DEST$, "wa92.ico"), cmoOverwrite
  803.     CreateProgmanItem PROG_GRP$, "Bookshelf Overview", Command$ + "-imenuHelpdemo " + MakePath(SRCDIR$, "BOOKS\BKS92.MVH"),MakePath(DEST$, "Overview.ico" ), cmoOverwrite
  804.  
  805.     CreateProgmanItem PROG_GRP$, "QuicKeys", MakePath(DEST$, "QUICKEYS.EXE"), "", cmoOverwrite
  806.     CreateProgmanItem PROG_GRP$, "Bookshelf Read Me", "NOTEPAD.EXE " + MakePath(SRCDIR$, "README.TXT"), "", cmoOverwrite
  807.  
  808.     '' Install Works Demo
  809.     ''** only install WinWorks demo on 386 or higher systems
  810.     dwFlags& = GetWinFlags()
  811.     IF (FAsyncAudio() <> 0) AND (dwFlags& AND WF_ENHANCED) THEN
  812.         CreateProgmanItem PROG_GRP$, "Multimedia Works Demonstration", MakePath(SRCDIR$,"DEMO\workscbt.EXE") + " " + MakePath(SRCDIR$,"DEMO\demo386.les"), MakePath(SRCDIR$,"DEMO\demo.ICO"), cmoOverwrite
  813.     ENDIF
  814.  
  815. END SUB
  816.  
  817. '*************************************************************************
  818. '**
  819. '** UpdateQuicKeys
  820. '** --------
  821. '** Purpose:
  822. '**     Update the from the old QuicKeys settings (if they exist).
  823. '**
  824. '** Arguments:
  825. '**     szInifile$ - Location of viewer.ini file
  826. '**     szOldBook$ - Bookshelf '91 book name
  827. '**     szNewBook$ - Bookshelf '92 book name
  828. '**     szDefault$ - Default setting if you can't find from last year
  829. '*************************************************************************
  830. SUB UpdateQuicKeys (szInifile$ , szOldBook$, szNewBook$, szDefault$) STATIC
  831.     Key$ = GetIniKeyString(szInifile$, szOldBook$ , "QuicKey")
  832.     IF Key$ = "" THEN
  833.         Key$ = szDefault$
  834.     ENDIF
  835.     '' Remove the whole section so that the old books don't
  836.     ''  appear in QuicKeys
  837.     RemoveIniSection szInifile$, szOldBook$ , cmoNone
  838.  
  839.     CreateIniKeyValue szInifile$, szNewBook$ , "QuicKey", Key$, cmoNone
  840.  
  841. END SUB
  842.  
  843. '*************************************************************************
  844. '**
  845. '** MakePath
  846. '** --------
  847. '** Purpose:
  848. '**     Appends a file name to the end of a directory path,
  849. '**     inserting a backslash character as needed.
  850. '** Arguments:
  851. '**     szDir$  - full directory path (with optional ending "\")
  852. '**     szFile$ - filename to append to directory
  853. '** Returns:
  854. '**     Resulting fully qualified path name.
  855. '*************************************************************************
  856. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  857.     IF szDir$ = "" THEN
  858.         MakePath = szFile$
  859.     ELSEIF szFile$ = "" THEN
  860.         MakePath = szDir$
  861.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  862.         MakePath = szDir$ + szFile$
  863.     ELSE
  864.         MakePath = szDir$ + "\" + szFile$
  865.     END IF
  866. END FUNCTION
  867.