home *** CD-ROM | disk | FTP | other *** search
/ Verbatim Entertainment Pack Sample 3.5" / verbatim_mep.img / SETUPAPI.IN_ / SETUPAPI.bin
Encoding:
Text File  |  1993-04-27  |  15.4 KB  |  497 lines

  1. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  2. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  3. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  4. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  5. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  6. DECLARE FUNCTION InitFrame(szCMDLine$) AS INTEGER
  7. DECLARE SUB InitInstall
  8.  
  9. GLOBAL hSetup AS INTEGER
  10. GLOBAL fFrameInit AS INTEGER
  11. GLOBAL fInstallInit AS INTEGER
  12.  
  13. SUB InitInstall STATIC
  14.     IF hSetup > 0 THEN
  15.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  16.         END
  17.     END IF
  18. END SUB
  19.  
  20. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  21.     IF hSetup > 0 THEN
  22.     ELSE
  23.         i% = InitializeFrame(szCmdLine$)
  24.         IF i% = -1 THEN
  25.             END   '' NOT an error - Usage (/?) or Command line copy operation
  26.         ELSEIF i% = 0 THEN
  27.             END
  28.         ELSE
  29.             InitFrame = i%
  30.         END IF
  31.     END IF
  32. END FUNCTION
  33.  
  34. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  35.     fFrameInit = 0
  36.     fInstallInit = 0
  37.  
  38.     IF hSetup > 0 THEN
  39.     END IF
  40.  
  41.     i% = InitFrame(szCmdLine$)
  42.     fFrameInit = 1
  43.  
  44.     InitInstall
  45.     fInstallInit = 1
  46.  
  47.     InitSetup = i%
  48. END FUNCTION
  49.  
  50. hSetup = InitSetup(COMMAND$)
  51.  
  52. DECLARE FUNCTION FShowWin LIB "mscuistf.dll" AS INTEGER
  53. grc%=FShowWin()
  54.  
  55. CONST SM_CXSCREEN = 0
  56. CONST SM_CYSCREEN = 1
  57.  
  58. CONST WF_80x87    = 1024
  59. CONST WF_CPU186   =  128
  60. CONST WF_CPU286   =    2
  61. CONST WF_CPU386   =    4
  62. CONST WF_CPU486   =    8
  63. CONST WF_STANDARD =   16
  64. CONST WF_ENHANCED =   32
  65.  
  66.  
  67. '' DoMsgBox Flags
  68.  
  69. CONST MB_OK          = 0
  70. CONST MB_ICONHAND    = 16
  71. CONST MB_TASKMODAL   = 8192
  72.  
  73.  
  74. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  75. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  76. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  77. DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
  78. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  79. DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
  80. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  81. DECLARE FUNCTION DoesDirExist (szDir$) AS INTEGER
  82. DECLARE FUNCTION FDirExists LIB "msdetstf.dll" (szDir$) AS INTEGER
  83. DECLARE FUNCTION GetFreeSpaceForDrive (szDrive$) AS LONG
  84. DECLARE FUNCTION LcbFreeDrive LIB "msdetstf.dll" (nDrive%) AS LONG
  85.  
  86. ''Command Option Flags
  87.  
  88. CONST cmoVital       = 1
  89. CONST cmoCopy        = 2
  90. CONST cmoUndo        = 4
  91. CONST cmoRoot        = 8
  92. CONST cmoDecompress  = 16
  93. CONST cmoTimeStamp   = 32
  94. CONST cmoReadOnly    = 64
  95. CONST cmoBackup      = 128
  96. CONST cmoForce       = 256
  97. CONST cmoRemove      = 512
  98. CONST cmoOverwrite   = 1024
  99. CONST cmoAppend      = 2048
  100. CONST cmoPrepend     = 4096
  101. CONST cmoNone        = 0
  102. CONST cmoAll         = 65535
  103.  
  104.  
  105. ''File Exist Modes
  106.  
  107. CONST femExists     = 0
  108. CONST femRead       = 1
  109. CONST femWrite      = 2
  110. CONST femReadWrite  = 3
  111.  
  112.  
  113. ''Read-Only Return Code
  114.  
  115. CONST ynrcNo         = 0
  116. CONST ynrcYes        = 1
  117. CONST ynrcErr1       = 2
  118. CONST ynrcErr2       = 3
  119. CONST ynrcErr3       = 4
  120. CONST ynrcErr4       = 5
  121. CONST ynrcErr5       = 6
  122. CONST ynrcErr6       = 7
  123. CONST ynrcErr7       = 8
  124. CONST ynrcErr8       = 9
  125. CONST ynrcErr9       = 10
  126.  
  127.  
  128. ''General Return Codes
  129.  
  130. CONST grcOkay       = 0
  131. CONST grcNotOkay    = 1
  132. CONST grcUserQuit   = 48
  133.  
  134.  
  135. CONST cbSymValMax = 1024
  136.  
  137. CONST STFERR      = 1024   ''setup system error
  138. CONST STFQUIT     = 1025   ''user quit
  139.  
  140. CONST scmOff      = 0
  141. CONST scmOnIgnore = 1
  142. CONST scmOnFatal  = 2
  143.  
  144.  
  145. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  146. DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
  147. DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
  148. DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
  149. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  150. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  151.  
  152.  
  153. ''shell
  154.  
  155. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  156. DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
  157. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  158. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  159. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  160. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  161. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  162. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  163. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  164. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  165. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  166. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  167.  
  168.  
  169. ''shell
  170.  
  171.  
  172. ''install
  173.  
  174. DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
  175. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  176. DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  177. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  178. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  179. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  180. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  181. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  182. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  183. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  184. DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  185. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  186. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  187. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  188. DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
  189. DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
  190. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  191. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  192. DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
  193. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  194. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  195. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  196. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  197. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  198. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  199. DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
  200. DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
  201. DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
  202. DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
  203. DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  204. DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
  205. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  206. DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
  207. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  208. DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
  209.  
  210.  
  211.  
  212. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  213. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  214. DECLARE SUB UIPop (n%)
  215. DECLARE SUB UIPopAll
  216. DECLARE SUB SetTitle (sz$)
  217. DECLARE SUB ReadInfFile (szFile$)
  218. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  219. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  220.  
  221.  
  222. ''DECLARE SUB ShowWin 
  223. DECLARE SUB CreateDir (szDir$, cmo%)
  224. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  225. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  226. DECLARE SUB CopyFilesInCopyList
  227. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  228. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  229. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  230. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  231. DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
  232. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  233. DECLARE SUB AddBlankToBillboardList (lTicks&)
  234. DECLARE SUB ClearBillboardList
  235. DECLARE SUB OpenLogFile (szFile$, fAppend%)
  236. DECLARE SUB CloseLogFile
  237. DECLARE SUB WriteToLogFile (szStr$)
  238. DECLARE SUB SetCopyGaugePosition (x%, y%)
  239. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  240.  
  241. DECLARE FUNCTION GetWindowsDir  AS STRING
  242. DECLARE FUNCTION GetWindowsSysDir AS STRING
  243.  
  244.  
  245.  
  246. SUB SetBitmap(szDll$, Bitmap%) STATIC
  247.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  248.         ERROR STFERR
  249.     END IF
  250. END SUB
  251.  
  252. SUB SetTitle(sz$) STATIC
  253.     SetWindowText HwndFrame(), sz$
  254. END SUB
  255.  
  256. SUB ReadInfFile (szFile$) STATIC
  257.    IF FOpenInf(szFile$, 1, 0) = 0 THEN
  258.         ERROR STFERR
  259.     END IF
  260. END SUB
  261.  
  262. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  263.  
  264.     IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
  265.         ERROR STFERR
  266.     ELSE
  267.         UIStartDlg = GetSymbolValue("DLGEVENT")
  268.     END IF
  269. END FUNCTION
  270.  
  271. SUB UIPop (n%) STATIC
  272.     IF FKillNDialogs(n%) = 0 THEN
  273.         ERROR STFERR
  274.     END IF
  275. END SUB
  276.  
  277. SUB UIPopAll STATIC
  278.     IF FKillNDialogs(65535) = 0 THEN
  279.         ERROR STFERR
  280.     END IF
  281. END SUB
  282.  
  283. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  284.     szValue$ = string$(cbSymValMax,32)
  285.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  286.     GetSymbolValue = szValue$
  287.     IF Length% >= cbSymValMax THEN
  288.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  289.         ERROR STFERR
  290.     END IF
  291.     IF szSymbol$ = "" THEN
  292.         ERROR STFERR
  293.     END IF
  294.     szValue$ = ""
  295. END FUNCTION
  296.  
  297. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  298.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  299.         ERROR STFERR
  300.     END IF
  301. END SUB
  302.  
  303.  
  304.  
  305. SUB CreateDir (szDir$, cmo%) STATIC
  306.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  307.         ERROR STFERR
  308.     END IF
  309. END SUB
  310.  
  311. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  312.  
  313.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  314.         ERROR STFERR
  315.     END IF
  316. END SUB
  317.  
  318. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  319.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  320.         ERROR STFERR
  321.     END IF
  322. END SUB
  323.  
  324. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  325.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  326.         ERROR STFERR
  327.     END IF
  328. END SUB
  329.  
  330. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  331.     szItemNew$ = szItem$
  332.     IF szOther$ <> "" THEN
  333.         szItemNew$ = szItem$ + "," + szOther$
  334.     END IF
  335.  
  336.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  337.         ERROR STFERR
  338.     END IF
  339.     szItemNew$ = ""
  340. END SUB
  341.  
  342. SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
  343.     IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
  344.         ERROR STFERR
  345.     END IF
  346. END SUB
  347.  
  348. SUB CopyFilesInCopyList STATIC
  349.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  350.  
  351.     IF grc% = grcUserQuit THEN
  352.         ERROR STFQUIT
  353.     ELSEIF grc% > 0 THEN
  354.         ERROR STFERR
  355.     END IF
  356. END SUB
  357.  
  358. ''SUB ShowWin STATIC
  359. ''   grc%=FShowWin()
  360. ''END SUB
  361.  
  362. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  363.  
  364.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  365.         ERROR STFERR
  366.     END IF
  367. END SUB
  368.  
  369. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  370.  
  371.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  372.         ERROR STFERR
  373.     END IF
  374. END SUB
  375.  
  376. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  377.  
  378.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  379.         ERROR STFERR
  380.     END IF
  381. END SUB
  382.  
  383. SUB AddBlankToBillboardList (lTicks&) STATIC
  384.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  385.         ERROR STFERR
  386.     END IF
  387. END SUB
  388.  
  389. SUB ClearBillboardList STATIC
  390.     IF FClearBillboardList = 0 THEN
  391.         ERROR STFERR
  392.     END IF
  393. END SUB
  394.  
  395.  
  396. SUB OpenLogFile (szFile$, fAppend%) STATIC
  397.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  398.         ERROR STFERR
  399.     END IF
  400. END SUB
  401.  
  402. SUB CloseLogFile STATIC
  403.     IF FCloseLogFile() = 0 THEN
  404.         ERROR STFERR
  405.     END IF
  406. END SUB
  407.  
  408.  
  409. SUB WriteToLogFile (szStr$) STATIC
  410.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  411.         ERROR STFERR
  412.     END IF
  413. END SUB
  414.  
  415.  
  416. SUB SetCopyGaugePosition (x%, y%) STATIC
  417.     ProSetPos x%, y%
  418. END SUB
  419.  
  420. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  421.     IsDirWritable = FIsDirWritable(szDir$)
  422. END FUNCTION
  423.  
  424.  
  425. FUNCTION GetWindowsDir STATIC AS STRING
  426.     szBuf$ = string$(256, 32)
  427.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  428.  
  429.     IF cbBuf% = 0 THEN
  430.         GetWindowsDir = ""
  431.         ERROR STFERR
  432.     ELSE
  433.         IF cbBuf% > 255 THEN
  434.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  435.             ERROR STFERR
  436.         END IF
  437.         szBuf$ = RTRIM$(szBuf$)
  438.         IF MID$(szBuf$, 1, 1) = "\" THEN
  439.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  440.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  441.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  442.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  443.         END IF
  444.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  445.             szBuf$ = szBuf$ + "\"
  446.         END IF
  447.         GetWindowsDir = szBuf$
  448.     END IF
  449.  
  450.     szBuf$ = ""
  451. END FUNCTION
  452.  
  453.  
  454. FUNCTION GetWindowsSysDir STATIC AS STRING
  455.     szBuf$ = string$(256, 32)
  456.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  457.  
  458.     IF cbBuf% = 0 THEN
  459.         ERROR STFERR
  460.     ELSE
  461.         IF cbBuf% > 255 THEN
  462.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  463.             ERROR STFERR
  464.         END IF
  465.         szBuf$ = RTRIM$(szBuf$)
  466.         IF MID$(szBuf$, 1, 1) = "\" THEN
  467.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  468.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  469.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  470.         END IF
  471.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  472.             szBuf$ = szBuf$ + "\"
  473.         END IF
  474.         GetWindowsSysDir = szBuf$
  475.     END IF
  476.  
  477.     szBuf$ = ""
  478. END FUNCTION
  479.  
  480. FUNCTION DoesDirExist (szDir$) STATIC  AS INTEGER
  481.     DoesDirExist = FDirExists(szDir$)
  482. END FUNCTION
  483.  
  484. FUNCTION GetFreeSpaceForDrive (szDrive$) STATIC  AS LONG
  485.     GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
  486. END FUNCTION
  487.  
  488.  
  489.  
  490. TRAP CleanupTrap From "MSSHLSTF.DLL"
  491.  
  492. End Trap
  493.  
  494.  
  495. ON ERROR GOTO QUIT
  496.  
  497.