home *** CD-ROM | disk | FTP | other *** search
/ On Hand / On_Hand_From_Softbank_1994_Release_2_Disc_2_1994.iso / 00028 / s / setupapi.in_ / setupapi.in
Text File  |  1993-08-18  |  16KB  |  495 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.  
  10.  
  11. GLOBAL hSetup AS INTEGER
  12. GLOBAL fFrameInit AS INTEGER
  13. GLOBAL fInstallInit AS INTEGER
  14.  
  15. SUB InitInstall STATIC
  16.     IF hSetup > 0 THEN
  17.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  18.         END
  19.     END IF
  20. END SUB
  21.  
  22. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  23.     IF hSetup > 0 THEN
  24.     ELSE
  25.         i% = InitializeFrame(szCmdLine$)
  26.         IF i% = -1 THEN
  27.             END   '' NOT an error - Usage (/?) or Command line copy operation
  28.         ELSEIF i% = 0 THEN
  29.             END
  30.         ELSE
  31.             InitFrame = i%
  32.         END IF
  33.     END IF
  34. END FUNCTION
  35.  
  36. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  37.     fFrameInit = 0
  38.     fInstallInit = 0
  39.  
  40.     IF hSetup > 0 THEN
  41.     END IF
  42.  
  43.     i% = InitFrame(szCmdLine$)
  44.     fFrameInit = 1
  45.  
  46.     InitInstall
  47.     fInstallInit = 1
  48.  
  49.     InitSetup = i%
  50. END FUNCTION
  51.  
  52. hSetup = InitSetup(COMMAND$)
  53.  
  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.  
  359.  
  360. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  361.  
  362.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  363.         ERROR STFERR
  364.     END IF
  365. END SUB
  366.  
  367. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  368.  
  369.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  370.         ERROR STFERR
  371.     END IF
  372. END SUB
  373.  
  374. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  375.  
  376.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  377.         ERROR STFERR
  378.     END IF
  379. END SUB
  380.  
  381. SUB AddBlankToBillboardList (lTicks&) STATIC
  382.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  383.         ERROR STFERR
  384.     END IF
  385. END SUB
  386.  
  387. SUB ClearBillboardList STATIC
  388.     IF FClearBillboardList = 0 THEN
  389.         ERROR STFERR
  390.     END IF
  391. END SUB
  392.  
  393.  
  394. SUB OpenLogFile (szFile$, fAppend%) STATIC
  395.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  396.         ERROR STFERR
  397.     END IF
  398. END SUB
  399.  
  400. SUB CloseLogFile STATIC
  401.     IF FCloseLogFile() = 0 THEN
  402.         ERROR STFERR
  403.     END IF
  404. END SUB
  405.  
  406.  
  407. SUB WriteToLogFile (szStr$) STATIC
  408.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  409.         ERROR STFERR
  410.     END IF
  411. END SUB
  412.  
  413.  
  414. SUB SetCopyGaugePosition (x%, y%) STATIC
  415.     ProSetPos x%, y%
  416. END SUB
  417.  
  418. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  419.     IsDirWritable = FIsDirWritable(szDir$)
  420. END FUNCTION
  421.  
  422.  
  423. FUNCTION GetWindowsDir STATIC AS STRING
  424.     szBuf$ = string$(256, 32)
  425.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  426.  
  427.     IF cbBuf% = 0 THEN
  428.         GetWindowsDir = ""
  429.         ERROR STFERR
  430.     ELSE
  431.         IF cbBuf% > 255 THEN
  432.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  433.             ERROR STFERR
  434.         END IF
  435.         szBuf$ = RTRIM$(szBuf$)
  436.         IF MID$(szBuf$, 1, 1) = "\" THEN
  437.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  438.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  439.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  440.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  441.         END IF
  442.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  443.             szBuf$ = szBuf$ + "\"
  444.         END IF
  445.         GetWindowsDir = szBuf$
  446.     END IF
  447.  
  448.     szBuf$ = ""
  449. END FUNCTION
  450.  
  451.  
  452. FUNCTION GetWindowsSysDir STATIC AS STRING
  453.     szBuf$ = string$(256, 32)
  454.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  455.  
  456.     IF cbBuf% = 0 THEN
  457.         ERROR STFERR
  458.     ELSE
  459.         IF cbBuf% > 255 THEN
  460.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  461.             ERROR STFERR
  462.         END IF
  463.         szBuf$ = RTRIM$(szBuf$)
  464.         IF MID$(szBuf$, 1, 1) = "\" THEN
  465.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  466.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  467.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  468.         END IF
  469.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  470.             szBuf$ = szBuf$ + "\"
  471.         END IF
  472.         GetWindowsSysDir = szBuf$
  473.     END IF
  474.  
  475.     szBuf$ = ""
  476. END FUNCTION
  477.  
  478. FUNCTION DoesDirExist (szDir$) STATIC  AS INTEGER
  479.     DoesDirExist = FDirExists(szDir$)
  480. END FUNCTION
  481.  
  482. FUNCTION GetFreeSpaceForDrive (szDrive$) STATIC  AS LONG
  483.     GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
  484. END FUNCTION
  485.  
  486.  
  487.  
  488. TRAP CleanupTrap From "MSSHLSTF.DLL"
  489.  
  490. End Trap
  491.  
  492.  
  493. ON ERROR GOTO QUIT
  494.  
  495.