home *** CD-ROM | disk | FTP | other *** search
/ On Hand / On_Hand_From_Softbank_1994_Release_2_Disc_1_1994.iso / setup.mst < prev    next >
Text File  |  1994-02-17  |  23KB  |  739 lines

  1. '**************************************************************************
  2. '*            Phoenix On Hand Setup Script - by Boris Nekritin.
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '$INCLUDE 'onhand.inc'
  8.  
  9. ''ID's for Dialog boxes in DLL
  10. CONST IDD_WELCOME      = 100
  11. CONST IDD_ASKQUIT      = 200
  12. CONST IDD_DESTPATH     = 300
  13. CONST IDD_EXITFAILURE  = 400
  14. CONST IDD_EXITQUIT     = 600
  15. CONST IDD_EXITSUCCESS  = 700
  16. CONST IDD_OPTIONS      = 800
  17. CONST IDD_APPHELP      = 900
  18. CONST IDD_PREVIOUS     = 1000
  19. CONST IDD_NEWVER       = 1100
  20. CONST IDD_MULTIPLE     = 1200
  21. CONST IDD_DONOTUPDATE  = 1300
  22. CONST IDD_REBOOT1      = 1400
  23.  
  24.  
  25. CONST IDD_CUSTINST     = 6200
  26. CONST IDD_TOOBIG       = 6300
  27. CONST IDD_BADPATH      = 6400
  28. CONST REGISTRATION_INFO =6500
  29. CONST IDD_BADRETLID    = 8500
  30. CONST IDD_ASKCHGAUTO   = 8600
  31. CONST IDD_REBOOT       = 8700
  32.  
  33. ''ID for Bitmap in parent window
  34. CONST IDB_LOGO         = 1
  35.  
  36. CONST TRUE             = 1
  37. CONST FALSE            = 0
  38. CONST IDYES            = 6
  39.  
  40. ''Types of files - denoted by integer constants
  41. CONST FT_OH_ONHANDFILES         = 1
  42. CONST FT_OH_SYSTEMFILES         = 2
  43. CONST FT_OH_HELPFILES           = 3
  44. CONST FT_VIDEOSYS_FILES         = 4
  45. CONST FT_VIDEOWIN_FILES         = 5
  46. CONST FT_VIDEO_RUNFILES         = 6
  47. CONST FT_OHCOMMONDLLFILES       = 7
  48. CONST FT_OH_NONTRANSFILES       = 8
  49. CONST FT_QUICKCARD_FILES        = 9
  50.  
  51.  
  52. GLOBAL _szOHOnHandSection$      ' ONHAND Program Files
  53. GLOBAL _szOHSystemSection$      ' ONHAND System Files
  54. GLOBAL _szOHHelpSection$        ' ONHAND Help Files
  55. GLOBAL _szVideoSysSection$      ' Video System RunFiles
  56. GLOBAL _szVideoWinSection$      ' Video Windows RunFiles
  57. GLOBAL _szComnDLLSection$       ' Common DLL Files
  58. GLOBAL _szOHNonTransfSection$   ' ONHAND Non-Transferable Files
  59.  
  60. GLOBAL _szDestDir$      ''Default destination directory.
  61. GLOBAL _szWinDrv$       ''Windows drive letter.
  62. GLOBAL _szInstOpt$      ''Option selection from Install Options dialog ("1" or "2")
  63. GLOBAL _szDriveTextList$ '' Text strings that represent the Install & Windows drives and free space.
  64. GLOBAL _szWinDir$       ''Windows directory.
  65. GLOBAL _szWinSysDir$    ''Windows system directory.
  66. GLOBAL _szINI$          '' "ONHAND.INI"
  67. GLOBAL _szBuf$          '' Generic string buffer.
  68. DIM    _szOldFiles(13) AS STRING
  69.  
  70. GLOBAL _szProduct$
  71. GLOBAL _szOptions$
  72. GLOBAL _szSpoolDir$
  73. GLOBAL _szUser0$
  74. GLOBAL _szSerial$
  75. GLOBAL _szRetailer$
  76. GLOBAL _szEnvVar$
  77. GLOBAL _szDisableAdv$
  78.         
  79. _szProduct$     = "On Hand"
  80. _szOptions$     = "Options"
  81. _szSpoolDir$    = "SpoolDir"
  82. _szUser0$       = "USER0"
  83. _szSerial$      = "SERIAL"
  84. _szRetailer$    = "Retailer"
  85. _szEnvVar$      = "PATH"
  86. _szDisableAdv$  = "DisableAdvertising"
  87. _szOHOnHandSection$     = "OnHand Program Files"
  88. _szOHSystemSection$     = "OnHand System Files"
  89. _szOHHelpSection$       = "OnHand Help Files"
  90. _szVideoSysSection$     = "Video System RunFiles"
  91. _szVideoWinSection$     = "Video Windows RunFiles"
  92. _szComnDLLSection$      = "Common DLL Files"
  93. _szOHNonTransfSection$  = "OnHand Non-Transferable Files"
  94. _szINI$                 = "ONHAND.INI"
  95. _szBuf$ = string$(256, 32)      'initialize buffer with spaces
  96. _szOldFiles(0)  = "RULER.DLL"
  97. _szOldFiles(1)  = "STATUS.DLL"
  98. _szOldFiles(2)  = "HIGHEDIT.DLL"
  99. _szOldFiles(3)  = "HEICON.DLL"
  100. _szOldFiles(4)  = "VBRUN200.DLL"
  101. _szOldFiles(5)  = "HEDLG.DLL"
  102. _szOldFiles(6)  = "TAB.DLL"
  103. _szOldFiles(7)  = "MHRUN300.DLL"
  104. _szOldFiles(8)  = "RTF.DLL"
  105. _szOldFiles(9)  = "BUTTON3.DLL"
  106. _szOldFiles(10) = "HEVB.VBX"
  107. _szOldFiles(11) = "MSMASKED.VBX"
  108. _szOldFiles(12) = "THREED.VBX"
  109. _szOldFiles(13) = "MHGGRP.VBX"
  110.  
  111.  
  112. ' IDs for the above text strings
  113. CONST   DRVLST_INSTDRV      =   1
  114. CONST   DRVLST_INSTSPREQ    =   2
  115. CONST   DRVLST_INSTSPAVL    =   3
  116. CONST   DRVLST_WINDRV       =   4
  117. CONST   DRVLST_WINSPREQ     =   5
  118. CONST   DRVLST_WINSPAVL     =   6
  119. CONST   DRVLST_DESTDIR      =   7
  120.  
  121. ''CustInst list symbol names - these are 26-element arrays for all possible drive letters.
  122. GLOBAL _szOnHandPgmNeedsList$   ''Option list costs per drive
  123. GLOBAL _szOHSystemNeedsList$
  124. GLOBAL _szVideoRunNeedsList$    ''Runtime Video cost per drive
  125. GLOBAL _szExtraCostsList$       ''List of extra costs to add per drive
  126. GLOBAL _fTooBigList$            ''List of (boolean) files cost calc results for each option
  127.  
  128. ''Dialog list symbol names
  129. GLOBAL _szCheckBoxState$
  130. GLOBAL _szStatusText$
  131.  
  132. DECLARE SUB AddOptFilesToCopyList (ftype%)
  133. DECLARE SUB MyDebug(msg$)
  134. DECLARE SUB RecalcOptFiles (ftype%)
  135. DECLARE SUB RecalcPath
  136. DECLARE SUB SetDriveStatus
  137. DECLARE SUB InstallQuickCards
  138. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  139. DECLARE FUNCTION FTypeToIndex (ftype%)
  140.  
  141. 'Script starts here.
  142. INIT:
  143.     _szCUIDLL$   = "mscuistf.dll"       ''custom user interface dll
  144.     _szHelpProc$ = "FHelpDlgProc"       ''Help dialog procedure
  145.  
  146.     SetBitmap _szCUIDLL$, IDB_LOGO
  147.     SetTitle "On Hand Setup"
  148.     SetCopyGaugePosition 80, 90
  149.  
  150.     ' Make sure On Hand is not already running.
  151.     IF GetModuleHandle("ONHAND") > 0 THEN
  152.       i% = DoMsgBox("An On Hand program is currently running." + chr$(13) + "Please exit On Hand and restart SETUP." , "On Hand Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND)
  153.       END
  154.     END IF
  155.  
  156.     ' Determine if On Hand has already been installed and notify user either way
  157.     NewVersion% = TRUE
  158.  
  159.     _szBuf$ = GetIniKeyString("WIN.INI", "On Hand", "SpoolDir")
  160.     IF _szBuf$ <> "" THEN 
  161.        IF DoesDirExist(_szBuf$) THEN
  162.       NewVersion% = FALSE
  163.        END IF
  164.     END IF
  165.  
  166.     ' Historical check to see if Release 1 version was installed
  167.     _szBuf$ = GetIniKeyString("WIN.INI", "On Hand", "SpoolDir")
  168.     IF _szBuf$ <> "" THEN 
  169.     IF  DoesDirExist(_szBuf$) THEN
  170.         NewVersion% = FALSE
  171.     END IF
  172.     END IF
  173.  
  174.     IF NewVersion% THEN
  175.     GOSUB NEWVER
  176.     ELSE
  177.     GOSUB PREVIOUS
  178.     'RemoveFile MakePath(_szBuf$,"README.WRI"), cmoForce
  179.     END IF
  180.  
  181.     '   Specifying Path/Name of INF File.   
  182.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  183.     IF szInf$ = "" THEN
  184.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  185.     END IF
  186.     ReadInfFile szInf$
  187.  
  188. '   Getting Windows and System Directories without final backslash 
  189.     _szWinDir$ = GetWindowsDir()
  190.     _szWinDrv$ = MID$(_szWinDir$, 1, 1)
  191.     IF NewVersion% THEN
  192.     _szDestDir$ = _szWinDrv$ + ":\ONHAND"
  193.     ELSE        
  194.     _szDestDir$ = _szBuf$
  195.     END IF
  196.  
  197.     _szWinDir$ = mid$(_szWinDir$, 1, len(_szWinDir$) - 1) 'w/out backslash
  198.     _szWinSysDir$ = GetWindowsSysDir()
  199.     _szWinSysDir$ = mid$(_szWinSysDir$, 1, len(_szWinSysDir$) - 1)
  200.  
  201.     ''FRadioDlgProc list symbols
  202.     _szInstOpt$  = "1"  ' Initialize to 1 - Express Setup
  203.  
  204.     ' Specify names for symbols lists used in CustInst
  205.     _szCheckBoxState$   = "CheckItemsState"
  206.     _szStatusText$      = "StatusItemsText"
  207.     _szDriveTextList$   = "DriveStatusText"
  208.  
  209.     ''Disk cost list symbols
  210.     _szOnHandPgmNeedsList$  = "OnHandNeeds"     '1
  211.     _szVideoRunNeedsList$   = "VideoRunNeeds"   '2
  212.     _szExtraCostsList$      = "ExtraCosts"      '3
  213.     _fTooBigList$           = "TooBigList"      
  214.  
  215.     FOR i% = 1 TO 3
  216.     AddListItem _szCheckBoxState$, "ON" ' Initialize all checkboxes to ON by default.
  217.     AddListItem _szStatusText$, ""      ' Initialize all checkbox statics to "" by default.
  218.     AddListItem _fTooBigList$, ""       ' Initialize the TooBigList to all OK
  219.     NEXT i%
  220.  
  221.     FOR i% = DRVLST_INSTDRV TO DRVLST_DESTDIR
  222.     AddListItem _szDriveTextList$, ""
  223.     NEXT i%
  224.     ReplaceListItem _szDriveTextList$, DRVLST_DESTDIR, _szDestDir$
  225.  
  226.     FOR i% = 1 TO 26
  227.     AddListItem _szExtraCostsList$, "0"
  228.     NEXT i%
  229.  
  230.     RecalcPath
  231.     SetDriveStatus      ' Disc Space Check Up
  232.  
  233.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  234.  
  235.     IF NewVersion% THEN
  236.  
  237.     CUSTINST:
  238.     
  239.     sz$ = UIStartDlg(_szCUIDLL$, IDD_CUSTINST, "FCustInstDlgProc", IDD_APPHELP, _szHelpProc$)
  240.     IF sz$ = "CONTINUE" THEN
  241.         ''Install only if it will fit.
  242.         FOR i% = 1 TO 3
  243.         IF GetListItem(_fTooBigList$, i%) <> "" THEN
  244.             GOSUB TOOBIG
  245.             GOTO CUSTINST
  246.         END IF
  247.         NEXT i%
  248.         UIPop 1
  249.     ELSEIF sz$ = "PATH" THEN
  250.         GOSUB GETDESTPATH
  251.         GOTO CUSTINST
  252.     ELSEIF sz$ = "CHK1" THEN
  253.         RecalcOptFiles FT_OH_ONHANDFILES
  254.         SetDriveStatus
  255.         GOTO CUSTINST
  256.     ELSEIF sz$ = "CHK2" THEN
  257.         RecalcOptFiles FT_VIDEO_RUNFILES
  258.         SetDriveStatus
  259.         GOTO CUSTINST
  260.     ELSEIF sz$ = "REACTIVATE" THEN
  261.         RecalcPath
  262.         SetDriveStatus
  263.         GOTO CUSTINST
  264.     ELSE
  265.         GOSUB ASKQUIT
  266.         GOTO CUSTINST
  267.     END IF
  268.  
  269.     GETSERRETID:
  270.  
  271.     CreateDir _szDestDir$, cmoNone
  272.  
  273.     IF FALSE = GetSerRetIDs( MakePath(_szDestDir$, _szINI) ) THEN
  274.         GOSUB ASKQUIT
  275.         GOTO GETSERRETID
  276.     END IF
  277.     END IF
  278.  
  279.  
  280. 'COPYSTUFF:
  281.  
  282.     ClearCopyList
  283.     
  284.     ' QuickCards held out of Release 3   DF 2/15/94
  285.     '
  286.     'InstallQuickCards
  287.     
  288.     AddOptFilesToCopyList FT_OH_ONHANDFILES
  289.     AddOptFilesToCopyList FT_VIDEO_RUNFILES
  290.  
  291.     CreateDir _szDestDir$, cmoNone
  292.     CopyFilesInCopyList
  293.  
  294.     ' Copy README.WRI file alone
  295.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  296.     CopyFile MakePath(szSrcDir$,"README.WRI"), MakePath(_szDestDir$,"README.WRI"), cmoOverwrite, 0
  297.  
  298.     i% = WriteProfileString("On Hand", "SpoolDir", _szDestDir$)
  299.  
  300.      CreateIniKeyValue MakePath(_szWinDir$, "system.ini"), "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  301.      CreateIniKeyValue MakePath(_szWinDir$, "system.ini"), "Drivers", "VIDC.RT21", "indeo.drv", cmoOverwrite
  302.      CreateIniKeyValue "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  303.      CreateIniKeyValue MakePath(_szWinDir$, "system.ini"), "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  304.      CreateIniKeyValue MakePath(_szWinDir$, "win.ini"), "ToolBook", "startupSysBooks", "tbkmm.sbk", cmoOverwrite
  305.  
  306.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "USER0", "Colorbits", "4", cmoOverwrite
  307.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "USER0", "OFFER", "A02AA", cmoOverwrite
  308.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "Start", "40", cmoOverwrite
  309.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "Flash", "40", cmoOverwrite
  310.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "Color", "4C", cmoOverwrite
  311.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "Center", "1", cmoOverwrite
  312.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "Screens", "C", cmoOverwrite
  313.      CreateIniKeyValue MakePath(_szDestDir$, _szINI), "Billboard", "ColorBits", "8", cmoOverwrite                                                                           
  314.  
  315.      Run ("regedit.exe /s " + MakePath(_szWinDir$, "mplayer.reg"))
  316.      Run ("profdisp")
  317.  
  318.    IF NewVersion% = FALSE THEN
  319.        ' the next line is here for when we change SpoolDir to something more logical
  320.        'RemoveIniKey "WIN.INI", "On Hand", "SpoolDir", cmonone
  321.        RemoveIniKey MakePath(_szDestDir$,"ONHAND.INI"), "USER0", "User", cmonone
  322.    END IF
  323.  
  324.  
  325.    IF NewVersion% THEN
  326.       CreateProgmanGroup "Softbank On Hand", "", cmoNone
  327.       ShowProgmanGroup  "Softbank On Hand", 1, cmoNone
  328.       CreateProgmanItem "Softbank On Hand", "On Hand", MakePath(_szDestDir$,"ONHAND.EXE"), "", cmoOverwrite
  329.       IF DoesFileExist( MakePath(_szDestDir$,"README.WRI"), femExist ) THEN
  330.      CreateProgmanItem "Softbank On Hand", "Read Me", MakePath(_szDestDir$,"README.WRI"), "", cmoOverwrite
  331.       END IF
  332.  
  333.       i% = DoesAutoStrExists("OHTSR.EXE")
  334.       IF i% = FALSE THEN        
  335.       win% = DoesAutoStrExists("WIN")
  336.       mult% = DoesAutoStrExists("%CONFIG%")
  337.         IF win% = FALSE THEN
  338.         win% = DoesAutoStrExists("WINDOWS\WIN")
  339.           END IF
  340.  
  341.       kk% = FALSE
  342.       IF win% = TRUE THEN
  343.        IF mult% = TRUE THEN
  344.         GOSUB MULTIPLE
  345.         kk% = TRUE
  346.          END IF
  347.       END IF
  348.  
  349.       IF kk% = FALSE THEN
  350.  
  351. CHANGEAUTOEXEC:
  352.         SetSymbolValue "EditTextIn", MakePath(_szDestDir$,"OHTSR.EXE")
  353.         sz$ = UIStartDlg(_szCUIDLL$, IDD_ASKCHGAUTO, "FInfoDlgProc", 0, "")
  354.        IF sz$ = "REACTIVATE" THEN
  355.           UIPop 1                                 
  356.           GOTO CHANGEAUTOEXEC
  357.        ELSEIF sz$ = "CONTINUE" THEN   ' Yes, change "Automatically"
  358.            RemoveFile "C:\AUTOEXEC.BAK", cmoNone
  359.            i% = MakeAutoChanges( _szDestDir$, TRUE )
  360.             UIPopAll
  361.              GOSUB REBOOT
  362.        ELSEIF sz$ = "BACK" THEN
  363.             UIPopAll
  364.              GOSUB DONOTUPDATE
  365.        END IF
  366.      END IF ' NO such string
  367.      ELSE
  368.      SetSymbolValue "EditTextIn", MakePath(_szDestDir$,"OHTSR.EXE")
  369.      GOSUB DONOTUPDATE
  370.       END IF
  371.    ELSE 'OLD VERSION
  372.       GOSUB REBOOT1
  373.    END IF
  374.       
  375. QUIT:
  376.     ON ERROR GOTO ERRQUIT
  377.  
  378.     IF ERR = 0 THEN
  379.     dlg% = IDD_EXITSUCCESS
  380.     ELSEIF ERR = STFQUIT THEN
  381.     dlg% = IDD_EXITQUIT
  382.     ELSE
  383.     dlg% = IDD_EXITFAILURE
  384.     END IF
  385. QUITL1:
  386.     sz$ = UIStartDlg(_szCUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  387.     IF sz$ = "REACTIVATE" THEN
  388.     GOTO QUITL1
  389.     END IF
  390.     UIPop 1
  391.  
  392.     END
  393.  
  394. ERRQUIT:
  395.     i% = DoMsgBox("Setup sources were corrupted, call (408) 644-7822!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  396.     END
  397.  
  398.  
  399. ASKQUIT:
  400.     sz$ = UIStartDlg(_szCUIDLL$, IDD_ASKQUIT, "FQuitDlgProc", 0, "")
  401.  
  402.     IF sz$ = "EXIT" THEN
  403.     UIPopAll
  404.     ERROR STFQUIT
  405.     ELSEIF sz$ = "REACTIVATE" THEN
  406.     GOTO ASKQUIT
  407.     ELSE
  408.     UIPop 1
  409.     END IF
  410. RETURN
  411.  
  412.  
  413. PREVIOUS:
  414.     sz$ = UIStartDlg(_szCUIDLL$, IDD_PREVIOUS, "FQuitDlgProc", 0, "")
  415.  
  416.     IF sz$ = "EXIT" THEN
  417.     UIPopAll
  418.     ERROR STFQUIT
  419.     ELSEIF sz$ = "REACTIVATE" THEN
  420.     GOTO PREVIOUS
  421.     ELSE
  422.     UIPop 1
  423.     END IF
  424. RETURN
  425.  
  426. NEWVER:
  427.     sz$ = UIStartDlg(_szCUIDLL$, IDD_NEWVER, "FQuitDlgProc", 0, "")
  428.  
  429.     IF sz$ = "EXIT" THEN
  430.     UIPopAll
  431.     ERROR STFQUIT
  432.     ELSEIF sz$ = "REACTIVATE" THEN
  433.     GOTO NEWVER
  434.     ELSE
  435.     UIPop 1
  436.     END IF
  437. RETURN
  438.  
  439. MULTIPLE:
  440.     SetSymbolValue "EditTextIn", MakePath(_szDestDir$,"OHTSR.EXE")
  441.     sz$ = UIStartDlg(_szCUIDLL$, IDD_MULTIPLE, "FInfoDlgProc", 0, "")
  442.  
  443.     IF sz$ = "REACTIVATE" THEN
  444.     GOTO MULTIPLE
  445.     ELSE
  446.     UIPop 1
  447.     END IF
  448. RETURN
  449.  
  450.  
  451. ' This subroutine sets the destination directory and displays a dest dir dialog
  452. GETDESTPATH:
  453.     SetSymbolValue "EditTextIn", _szDestDir$
  454.     SetSymbolValue "EditFocus", "END"
  455. SHOWDESTDLG:
  456.     sz$ = UIStartDlg(_szCUIDLL$, IDD_DESTPATH, "FEditDlgProc", IDD_APPHELP, _szHelpProc$)
  457.  
  458.     IF sz$ = "CONTINUE" THEN
  459.     olddest$ = _szDestDir$
  460.     _szDestDir$ = GetSymbolValue("EditTextOut")
  461.  
  462.     ''Validate new path.
  463.     IF IsDirWritable(_szDestDir$) = 0 THEN
  464.         GOSUB BADPATH
  465.         GOTO SHOWDESTDLG
  466.     END IF
  467.     UIPop 1
  468.  
  469.     ''Truncate display if too long.
  470.     IF LEN(_szDestDir$) > 23 THEN
  471.         ReplaceListItem _szDriveTextList$, 7, MID$(_szDestDir$, 1, 23) + "..."
  472.     ELSE
  473.         ReplaceListItem _szDriveTextList$, 7, _szDestDir$
  474.     END IF
  475.  
  476.     ''Recalc if path changed.
  477.     IF (olddest$ <> _szDestDir$) AND (olddest$ <> _szDestDir$ + "\") AND (olddest$ + "\" <> _szDestDir$) THEN
  478.         RecalcPath
  479.         SetDriveStatus
  480.     END IF
  481.  
  482.     olddest$ = ""
  483.     ELSEIF sz$ = "REACTIVATE" THEN
  484.     RecalcPath
  485.     SetDriveStatus
  486.     GOTO SHOWDESTDLG
  487.     ELSEIF sz$ = "EXIT" THEN
  488.     GOSUB ASKQUIT
  489.     GOTO SHOWDESTDLG
  490.     ELSE
  491.     UIPop 1
  492.     END IF
  493. RETURN
  494.  
  495. BADPATH:
  496.     sz$ = UIStartDlg(_szCUIDLL$, IDD_BADPATH, "FInfo0DlgProc", 0, "")
  497.     IF sz$ = "REACTIVATE" THEN
  498.     RecalcPath
  499.     SetDriveStatus
  500.     GOTO BADPATH
  501.     END IF
  502.     UIPop 1
  503. RETURN
  504.  
  505.  
  506. TOOBIG:
  507.     sz$ = UIStartDlg(_szCUIDLL$, IDD_TOOBIG, "FInfo0DlgProc", 0, "")
  508.     IF sz$ = "REACTIVATE" THEN
  509.     RecalcPath
  510.     SetDriveStatus
  511.     GOTO TOOBIG
  512.     END IF
  513.     UIPop 1
  514. RETURN
  515.  
  516. REBOOT:
  517.  
  518.     sz$ = UIStartDlg(_szCUIDLL$, IDD_REBOOT, "FInfoDlgProc", 0, "")
  519.     IF sz$ = "REACTIVATE" THEN
  520.         UIPop 1
  521.        GOTO REBOOT
  522.     ELSEIF sz$ = "CONTINUE" THEN
  523.        i% = ExitWindows( EW_REBOOTSYSTEM, TRUE )
  524.     END IF
  525.     UIPop 1
  526.  
  527. RETURN
  528.  
  529. REBOOT1:
  530.  
  531.     sz$ = UIStartDlg(_szCUIDLL$, IDD_REBOOT1, "FInfoDlgProc", 0, "")
  532.     IF sz$ = "REACTIVATE" THEN
  533.         UIPop 1
  534.        GOTO REBOOT1
  535.     ELSEIF sz$ = "CONTINUE" THEN
  536.        i% = ExitWindows( EW_REBOOTSYSTEM, TRUE )
  537.     END IF
  538.     UIPop 1
  539.  
  540. RETURN
  541.  
  542. DONOTUPDATE:
  543.  
  544.     sz$ = UIStartDlg(_szCUIDLL$, IDD_DONOTUPDATE, "FInfoDlgProc", 0, "")
  545.     IF sz$ = "REACTIVATE" THEN
  546.         UIPop 1
  547.        GOTO DONOTUPDATE
  548.     END IF
  549.     UIPop 1
  550.  
  551. RETURN
  552.  
  553.  
  554. SUB InstallQuickCards STATIC
  555.  
  556.     '
  557.     ' QuickCards Installation for On Hand's Quick Cards
  558.     '
  559.  
  560.       _szQtini$ = MakePath(_szWinDir$, "QT.INI")
  561.       Location$ = GetIniKeyString(_szQtini$, "QCRUNNER", "Location")
  562.       NewLine$ = "THUNDERFORM,qconhand.mas,0"
  563.       IF Location$ = "" THEN
  564.      Location$ = MakePath(_szDestDir$,"")
  565.      CreateIniKeyValue(_szQtini$), "QCRUNNER", "Location", Location$, cmoOverwrite
  566.      CreateIniKeyValue(_szQtini$), "QCRUNNER", "QC1", NewLine$, cmoOverwrite
  567.      CreateIniKeyValue(_szQtini$), "QCRUNNER", "HideIcon", "1", cmoOverwrite
  568.      CreateIniKeyValue(_szQtini$), "QCRUNNER", "NumofQC", "1", cmoOverwrite
  569.       
  570.      _szWinLoad$ = GetIniKeyString("WIN.INI", "Windows", "Load")
  571.      _szNewLoad$ = _szWinLoad$ + " " + MakePath(_szDestDir$,"QCRunner.exe")
  572.      CreateIniKeyValue "win.ini", "Windows", "Load", _szNewLoad$, cmoOverwrite        
  573.       ELSE
  574.      NumOfQC=1
  575.      Temp$ = GetIniKeyString(MakePath(_szWinDir$,"QT.INI"),"QCRUNNER", "NumofQC")
  576.      IF Temp$ <> "" THEN
  577.        'NumofQC = CInt(Temp$)
  578.        NumofQC = 1
  579.      END IF
  580.  
  581.      Found% = FALSE
  582.      FOR Count = 1 to NumofQC
  583.         'Temp$ = "QC" & str$(Count)
  584.         Temp$ = "QC1"
  585.         OldLine$ = GetIniKeyString(MakePath(_szWinDir$,"QT.INI"), "QCRUNNER", Temp)
  586.         IF OldLine$ = NewLine$ THEN
  587.            Found% = TRUE        
  588.         END IF
  589.      NEXT Count
  590.  
  591.      IF Found% = FALSE THEN
  592.         'Temp$ = "QC" & (COUNT+1)
  593.         Temp$ = "QC2"
  594.         CreateIniKeyValue(_szQtini$), "QCRUNNER", Temp$, NewLine$, cmoOverwrite
  595.         CreateIniKeyValue(_szQtini$), "QCRUNNER", "NumofQC", "QC2", cmoOverwrite 'str$(COUNT+1)
  596.      END IF
  597.       END IF
  598.  
  599.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  600.     AddSectionFilesToCopyList "QuickCard Files", szSrcDir$, Location$
  601.  
  602. END SUB
  603.  
  604.  
  605. SUB RecalcPath STATIC
  606.  
  607.     CursorSave% = ShowWaitCursor()
  608.     RecalcOptFiles FT_OH_ONHANDFILES
  609.     RecalcOptFiles FT_VIDEO_RUNFILES
  610.     RestoreCursor CursorSave%
  611. END SUB
  612.  
  613. SUB RecalcOptFiles (ftype%) STATIC
  614.     CursorSave% = ShowWaitCursor()
  615.     ClearCopyList
  616.  
  617.     AddOptFilesToCopyList ftype%
  618.  
  619.     fExtra% = 0
  620.     StillNeed& = 0
  621.     cost& = 0
  622.  
  623.     IF ftype% = FT_OH_ONHANDFILES THEN
  624.     szListSym$ = _szOnHandPgmNeedsList$
  625.         ''Add extra cost to Windows drive for ini/progman, etc.
  626.         ndrive% = ASC(ucase$(_szWinDrv$)) - ASC("A") + 1
  627.         ReplaceListItem _szExtraCostsList$, ndrive%, "10240"
  628.         fExtra% = 1
  629.     ELSEIF ftype% = FT_VIDEO_RUNFILES THEN
  630.     szListSym$ = _szVideoRunNeedsList$
  631.     ELSEIF ftype% = FT_OH_SYSTEMFILES THEN
  632.     szListSym$ = _szOHSystemNeedsList$
  633.     END IF
  634.     StillNeed& = GetCopyListCost(_szExtraCostsList$, szListSym$, "")
  635.  
  636.     ' Calc costs per drive letter. It is possible to install on 26 discs.
  637.     FOR i% = 1 TO 26
  638.         cost& = cost& + VAL(GetListItem(szListSym$, i%))
  639.     NEXT i%
  640.  
  641.     ReplaceListItem _szStatusText$, FTypeToIndex(ftype%), STR$(cost& / 1024) + " K"
  642.  
  643.     ' "YES" or ""(TooBig or NOT) for each File List which we going to copy.
  644.     IF StillNeed& > 0 THEN
  645.     ReplaceListItem _fTooBigList$, FTypeToIndex(ftype%), "YES"
  646.     ELSE
  647.     ReplaceListItem _fTooBigList$, FTypeToIndex(ftype%), ""
  648.     END IF
  649.  
  650.     IF fExtra% THEN
  651.     ReplaceListItem _szExtraCostsList$, ndrive%, "0"
  652.     END IF
  653.     RestoreCursor CursorSave%
  654.     szListSym$ = ""
  655. END SUB
  656.  
  657. SUB AddOptFilesToCopyList (ftype%) STATIC           
  658.     ftype2% = FTypeToIndex(ftype%)
  659.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  660.     IF ftype2% = 1 THEN '' FT_OH_ONHANDFILES Files
  661.     AddSectionFilesToCopyList _szOHOnHandSection$, szSrcDir$, _szDestDir$
  662.     AddSectionFilesToCopyList _szOHSystemSection$, szSrcDir$, _szWinSysDir$
  663.     ELSEIF ftype2% = 3 THEN     '' FT_OH_SYSTEMFILES Only
  664.     AddSectionFilesToCopyList _szOHSystemSection$, szSrcDir$, _szWinSysDir$
  665.     ELSEIF ftype2% = 4 THEN     '' FT_OH_HELPFILES
  666.     AddSectionFilesToCopyList _szOHHelpSection$, szSrcDir$, _szDestDir$
  667.     ELSEIF ftype2% = 2 THEN     '' FT_VIDEO_RUNFILES
  668.     AddSectionFilesToCopyList _szVideoSysSection$, szSrcDir$, _szWinSysDir$
  669.     AddSectionFilesToCopyList _szVideoWinSection$, szSrcDir$, _szWinDir$
  670.     END IF
  671.     szSrcDir$ = ""
  672.     ftype2% = 0
  673. END SUB
  674.  
  675. SUB SetDriveStatus STATIC
  676.  
  677.     drive$ = MID$(_szDestDir$, 1, 1)
  678.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  679.     cost& = VAL(GetListItem(_szOnHandPgmNeedsList$, ndrive%)) + VAL(GetListItem(_szVideoRunNeedsList$, ndrive%))
  680.     free& = GetFreeSpaceForDrive(drive$)
  681.  
  682.     IF cost& > free& THEN
  683.     ReplaceListItem _fTooBigList$, 3, "YES"  'Put mark if TooBigList
  684.     ELSE
  685.     ReplaceListItem _fTooBigList$, 3, ""
  686.     END IF
  687.  
  688.     ReplaceListItem _szDriveTextList$, DRVLST_INSTDRV, drive$ + ":"
  689.     ReplaceListItem _szDriveTextList$, DRVLST_INSTSPREQ, STR$(cost& / 1024) + " K"
  690.     ReplaceListItem _szDriveTextList$, DRVLST_INSTSPAVL, STR$(free& / 1024) + " K"
  691.  
  692.     IF drive$ = _szWinDrv$ THEN
  693.     ReplaceListItem _szDriveTextList$, DRVLST_WINDRV, ""
  694.     ReplaceListItem _szDriveTextList$, DRVLST_WINSPREQ, ""
  695.     ReplaceListItem _szDriveTextList$, DRVLST_WINSPAVL, ""
  696.     ELSE   ' Destination drive and Windows drive are different.
  697.     ndrive% = ASC(ucase$(_szWinDrv$)) - ASC("A") + 1
  698.     cost& = VAL(GetListItem(_szOnHandPgmNeedsList$, ndrive%)) + VAL(GetListItem(_szVideoRunNeedsList$, ndrive%))
  699.     IF cost& = 0 THEN
  700.         ReplaceListItem _szDriveTextList$, DRVLST_WINDRV, ""
  701.         ReplaceListItem _szDriveTextList$, DRVLST_WINSPREQ, ""
  702.         ReplaceListItem _szDriveTextList$, DRVLST_WINSPAVL, ""
  703.     ELSE
  704.         free& = GetFreeSpaceForDrive(_szWinDrv$)
  705.         ReplaceListItem _szDriveTextList$, DRVLST_WINDRV, _szWinDrv$ + ":"
  706.         ReplaceListItem _szDriveTextList$, DRVLST_WINSPREQ, STR$(cost& / 1024) + " K"
  707.         ReplaceListItem _szDriveTextList$, DRVLST_WINSPAVL, STR$(free& / 1024) + " K"
  708.     END IF                                                     
  709.     END IF
  710. END SUB
  711.  
  712. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  713.     IF szDir$ = "" THEN
  714.     MakePath = szFile$
  715.     ELSEIF szFile$ = "" THEN
  716.     MakePath = szDir$
  717.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  718.     MakePath = szDir$ + szFile$
  719.     ELSE
  720.     MakePath = szDir$ + "\" + szFile$
  721.     END IF
  722. END FUNCTION
  723.  
  724. FUNCTION FTypeToIndex (ftype%) STATIC
  725.     IF ftype% = FT_OH_ONHANDFILES THEN
  726.     FTypeToIndex = 1
  727.     ELSEIF ftype% = FT_VIDEO_RUNFILES THEN
  728.     FTypeToIndex = 2
  729.     ELSEIF ftype% = FT_OH_SYSTEMFILES THEN
  730.     FTypeToIndex = 3
  731.     ELSEIF ftype% = FT_OH_HELPFILES THEN
  732.     FTypeToIndex = 4
  733.     END IF
  734. END FUNCTION
  735.  
  736. SUB MyDebug(msg$) STATIC
  737.     i% = DoMsgBox(msg$,"On Hand Setup Debug", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  738. END SUB
  739.