home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703B.ISO / driver / canon / shot / pbv120 / disk1 / setupapi.in_ / setupapi.in
Text File  |  1995-06-05  |  44KB  |  1,358 lines

  1. '**************************************************************************
  2. '*******************************  Windows API's  **************************
  3. '**************************************************************************
  4. GLOBAL hSetup AS INTEGER
  5. GLOBAL fFrameInit AS INTEGER
  6. GLOBAL fInstallInit AS INTEGER
  7.  
  8. CONST SM_CXSCREEN = 0
  9. CONST SM_CYSCREEN = 1
  10.  
  11. CONST WF_80x87    = 1024
  12. CONST WF_CPU186   =  128
  13. CONST WF_CPU286   =    2
  14. CONST WF_CPU386   =    4
  15. CONST WF_CPU486   =    8
  16. CONST WF_CPUR4000 =  256
  17.  
  18. CONST WF_STANDARD =   16
  19. CONST WF_ENHANCED =   32
  20. CONST WF_WINNT    = 16384
  21.  
  22.  
  23. '' DoMsgBox Flags
  24.  
  25. CONST MB_OK          = 0
  26. CONST MB_ICONHAND    = 16
  27. CONST MB_TASKMODAL   = 8192
  28.  
  29.  
  30. DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
  31. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  32. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  33. DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
  34. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  35. DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
  36. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  37.  
  38. DECLARE FUNCTION AnsiUpperBuff LIB "user" (szBuf$, cbBuf%) AS LONG
  39. DECLARE FUNCTION AnsiLowerBuff LIB "user" (szBuf$, cbBuf%) AS LONG
  40.  
  41.  
  42.  
  43. '**************************************************************************
  44. '****************************** Setup Constants ***************************
  45. '**************************************************************************
  46.  
  47.  
  48. ''Command Option Flags
  49.  
  50. CONST cmoVital       = 1
  51. CONST cmoCopy        = 2
  52. CONST cmoUndo        = 4
  53. CONST cmoRoot        = 8
  54. CONST cmoDecompress  = 16
  55. CONST cmoTimeStamp   = 32
  56. CONST cmoReadOnly    = 64
  57. CONST cmoBackup      = 128
  58. CONST cmoForce       = 256
  59. CONST cmoRemove      = 512
  60. CONST cmoOverwrite   = 1024
  61. CONST cmoAppend      = 2048
  62. CONST cmoPrepend     = 4096
  63. CONST cmoNone        = 0
  64. CONST cmoAll         = 65535
  65.  
  66.  
  67. ''File Exist Modes
  68.  
  69. CONST femExists     = 0
  70. CONST femRead       = 1
  71. CONST femWrite      = 2
  72. CONST femReadWrite  = 3
  73.  
  74.  
  75. ''Read-Only Return Code
  76.  
  77. CONST ynrcNo         = 0
  78. CONST ynrcYes        = 1
  79. CONST ynrcErr1       = 2
  80. CONST ynrcErr2       = 3
  81. CONST ynrcErr3       = 4
  82. CONST ynrcErr4       = 5
  83. CONST ynrcErr5       = 6
  84. CONST ynrcErr6       = 7
  85. CONST ynrcErr7       = 8
  86. CONST ynrcErr8       = 9
  87. CONST ynrcErr9       = 10
  88.  
  89.  
  90. ''General Return Codes
  91.  
  92. CONST grcOkay       = 0
  93. CONST grcNotOkay    = 1
  94. CONST grcUserQuit   = 48
  95.  
  96.  
  97. ''Ranges
  98.  
  99. ''CONST cbSymValMax = 8192
  100. CONST cbSymValMax = 512
  101.     ''REVIEW: symbol table will allow strings up to 8192 bytes
  102.     '' but we get Out of String Space wattdrvr error if we alloc
  103.     '' STRING$() that big. (See GetSymbolValue and GetListItem)
  104.     '' We should look into using dynamic far alloc instead of
  105.     '' STRING$ for large buffers.
  106.     '' NOTE: 8192 works okay with runtime wattdrvr, however.
  107.  
  108.  
  109. ''ON ERROR Error Codes
  110. CONST STFERR      = 1024   ''setup system error
  111. CONST STFQUIT     = 1025   ''user quit
  112.  
  113. CONST scmOff      = 0
  114. CONST scmOnIgnore = 1
  115. CONST scmOnFatal  = 2
  116.  
  117.  
  118. '**************************************************************************
  119. '********************************  Setup API's  ***************************
  120. '**************************************************************************
  121.  
  122. '' common
  123.  
  124. DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
  125. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  126. DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
  127. DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
  128. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  129. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  130. DECLARE FUNCTION FOpenLogFile    LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
  131. DECLARE FUNCTION FCloseLogFile   LIB "mscomstf.dll" AS INTEGER
  132. DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
  133. DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
  134. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  135. DECLARE FUNCTION DIsDBCSChar LIB "mscomstf.dll" (szText$, iPos%) AS INTEGER
  136.  
  137. DECLARE FUNCTION PbSaveMemInf  LIB "mscomstf.dll" AS LONG
  138. DECLARE SUB      RestoreMemInf LIB "mscomstf.dll" (pb&)
  139. DECLARE SUB      FreeMemInf    LIB "mscomstf.dll" (pb&)
  140.  
  141.  
  142. ''shell
  143.  
  144. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  145. DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
  146. DECLARE FUNCTION FDoDialogExt LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) AS INTEGER
  147. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  148. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  149. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  150. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  151. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  152. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  153. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  154. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  155. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  156. DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
  157.  
  158.  
  159. ''shell
  160.  
  161. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  162. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  163. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  164.  
  165.  
  166.  
  167. ''install
  168.  
  169. DECLARE SUB      ProSetPos LIB "msinsstf.dll" (x%, y%)
  170. DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  171. DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
  172. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  173. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  174. DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  175. DECLARE FUNCTION AddSrcFileWithAttribsToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  176. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  177. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  178. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  179. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  180. DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  181. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  182. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  183. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  184. DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
  185. DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
  186. DECLARE SUB      ResetCopyList LIB "msinsstf.dll"
  187. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  188. DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
  189. DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
  190. DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
  191. DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
  192. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  193. DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  194. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  195. DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
  196. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  197. DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
  198. DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
  199. DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
  200. DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
  201. DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  202. DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
  203. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  204. DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
  205. DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
  206. DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
  207.  
  208. DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
  209. DECLARE SUB ForceRestartOn LIB "msinsstf.dll"
  210. DECLARE FUNCTION DoesAnyFileNeedCopying LIB "msinsstf.dll" AS INTEGER
  211.  
  212.  
  213.  
  214. '*************************************************************************
  215. '****************  Setup Basic Wrapper Declarations  *********************
  216. '*************************************************************************
  217.  
  218.  
  219. ''shell
  220.  
  221. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  222. DECLARE SUB SetAbout(szAbout1$, szAbout2$)
  223. DECLARE FUNCTION UIStartDlgExt(szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) AS STRING
  224. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  225. DECLARE SUB UIPop (n%)
  226. DECLARE SUB UIPopAll
  227. DECLARE SUB SetTitle (sz$)
  228. DECLARE SUB ReadInfFile (szFile$)
  229. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  230. DECLARE SUB RemoveSymbol (szSym$)
  231. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  232. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  233. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  234. DECLARE SUB AddListItem(szSymbol$, szItem$)
  235. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  236. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  237. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  238. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  239. DECLARE SUB RestoreCursor (hPrev%)
  240. DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
  241. DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
  242.  
  243. ''install
  244. DECLARE SUB CreateDir (szDir$, cmo%)
  245. DECLARE SUB RemoveDir (szDir$, cmo%)
  246. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  247. DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  248. DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  249. DECLARE SUB CopyFilesInCopyList
  250. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  251. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  252. DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  253. DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  254. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  255. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  256. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  257. DECLARE SUB ClearCopyList
  258. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  259. DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  260. DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
  261. DECLARE SUB RenameFile (szFullPath$, szBackup$)
  262. DECLARE SUB InitInstall
  263. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  264. DECLARE SUB AddBlankToBillboardList (lTicks&)
  265. DECLARE SUB ClearBillboardList
  266. DECLARE SUB OpenLogFile (szFile$, fAppend%)
  267. DECLARE SUB CloseLogFile
  268. DECLARE SUB WriteToLogFile (szStr$)
  269. DECLARE SUB SetCopyGaugePosition (x%, y%)
  270. DECLARE SUB SetRestartDir(szDir$)
  271. DECLARE FUNCTION RestartListEmpty AS INTEGER
  272. DECLARE FUNCTION ExitExecRestart AS INTEGER
  273. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  274. DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
  275. DECLARE FUNCTION IsDBCSChar (szText$, iPos%) AS INTEGER
  276. DECLARE FUNCTION AnsiUpper (szBuf$) AS STRING
  277. DECLARE FUNCTION AnsiLower (szBuf$) AS STRING
  278.  
  279. '' Error Handling
  280.  
  281. '$ifdef DEBUG
  282.  
  283. '' Setup API Errors
  284. CONST saeFail   = 0
  285. CONST saeInit   = 1
  286. CONST saeNYI    = 3
  287. CONST saeArg    = 4    ''must be max sae value
  288.  
  289. DECLARE SUB StfApiErr (nMsg%, szApi$, szArgs$)
  290. DECLARE SUB BadArgErr (nArg%, szApi$, szArgs$)
  291.  
  292. '' chk arg
  293. DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
  294. DECLARE FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" (szPath$) AS INTEGER
  295. DECLARE FUNCTION FValidFATPath LIB "mscomstf.dll" (szPath$) AS INTEGER
  296. DECLARE FUNCTION FValidDrive (szDrive$) AS INTEGER
  297. DECLARE FUNCTION FValidInfSect (szSect$) AS INTEGER
  298. DECLARE FUNCTION FValidIniFile (szFile$) AS INTEGER
  299.  
  300. '$endif ''DEBUG
  301.  
  302. '' Windows system detect
  303.  
  304. DECLARE FUNCTION GetWindowsDir  AS STRING
  305. DECLARE FUNCTION GetWindowsSysDir AS STRING
  306. DECLARE FUNCTION GetScreenWidth AS INTEGER
  307. DECLARE FUNCTION GetScreenHeight AS INTEGER
  308.  
  309.  
  310. '*************************************************************************
  311. '*****************  Setup Basic Wrapper Definitions  *********************
  312. '*************************************************************************
  313. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  314.     fFrameInit = 0
  315.     fInstallInit = 0
  316.  
  317.     IF hSetup > 0 THEN
  318. '$ifdef DEBUG
  319.         StfApiErr saeInit, "InitSetup", szCmdLine$
  320. '$endif ''DEBUG
  321.     END IF
  322.  
  323.     i% = InitFrame(szCmdLine$)
  324.     fFrameInit = 1
  325.  
  326.     InitInstall
  327.     fInstallInit = 1
  328.  
  329.     InitSetup = i%
  330. END FUNCTION
  331.  
  332.  
  333.  
  334. '**************************************************************************
  335. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  336.     IF hSetup > 0 THEN
  337. '$ifdef DEBUG
  338.         StfApiErr saeInit, "InitFrame", szCmdLine$
  339. '$endif ''DEBUG
  340.     ELSE
  341.         i% = InitializeFrame(szCmdLine$)
  342.         IF i% = -1 THEN
  343.             END   '' NOT an error - Usage (/?) or Command line copy operation
  344.         ELSEIF i% = 0 THEN
  345. '$ifdef DEBUG
  346.             StfApiErr saeFail, "InitFrame", szCmdLine$
  347. '$endif ''DEBUG
  348.             END
  349.         ELSE
  350.             InitFrame = i%
  351.         END IF
  352.     END IF
  353. END FUNCTION
  354.  
  355.  
  356. '**************************************************************************
  357. SUB SetBitmap(szDll$, Bitmap%) STATIC
  358.     IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  359. '$ifdef DEBUG
  360.         StfApiErr saeFail, "SetBitmap", szDll$+","+STR$(Bitmap%)
  361. '$endif ''DEBUG
  362.         ERROR STFERR
  363.     END IF
  364. END SUB
  365.  
  366.  
  367. '**************************************************************************
  368. SUB SetAbout(szAbout1$, szAbout2$) STATIC
  369.     IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
  370. '$ifdef DEBUG
  371.         StfApiErr saeFail, "SetAbout", szAbout1$ + "," + szAbout2$
  372. '$endif ''DEBUG
  373.         ERROR STFERR
  374.     END IF
  375. END SUB
  376.  
  377.  
  378. '*************************************************************************
  379. SUB SetTitle(sz$) STATIC
  380.     SetWindowText HwndFrame(), sz$
  381. END SUB
  382.  
  383.  
  384. '*************************************************************************
  385. SUB ReadInfFile (szFile$) STATIC
  386. '$ifdef DEBUG
  387.     if FValidFATPath(szFile$) = 0 then
  388.         BadArgErr 1, "ReadInfFile", szFile$
  389.     end if
  390.     IF FOpenInf(szFile$, 1, 1) = 0 THEN
  391.         StfApiErr saeFail, "ReadInfFile", szFile$
  392. '$else  ''!DEBUG
  393.     IF FOpenInf(szFile$, 1, 0) = 0 THEN
  394. '$endif ''!DEBUG
  395.         ERROR STFERR
  396.     END IF
  397. END SUB
  398.  
  399.  
  400. '*************************************************************************
  401. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  402. '$ifdef DEBUG
  403.     if szDll$ = "" then
  404.         n% = 1
  405.     elseif szDlgProc$ = "" then
  406.         n% = 3
  407.     else
  408.         n% = 0
  409.     end if
  410.     if n% > 0 then
  411.         BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
  412.     end if
  413. '$endif ''DEBUG
  414.  
  415.     IF FDoDialogExt(HwndFrame(), szDll$, Dlg%, szDlgProc$, szDll$, HelpDlg%, szHelpProc$) = 0 THEN
  416. '$ifdef DEBUG
  417.         StfApiErr saeFail, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
  418. '$endif ''DEBUG
  419.         ERROR STFERR
  420.     ELSE
  421.         UIStartDlg = GetSymbolValue("DLGEVENT")
  422.     END IF
  423. END FUNCTION
  424.  
  425.  
  426. '*************************************************************************
  427. SUB UIPop (n%) STATIC
  428.     IF FKillNDialogs(n%) = 0 THEN
  429. '$ifdef DEBUG
  430.         StfApiErr saeFail, "UIPop", STR$(n%)
  431. '$endif ''DEBUG
  432.         ERROR STFERR
  433.     END IF
  434. END SUB
  435.  
  436.  
  437. '*************************************************************************
  438. SUB UIPopAll STATIC
  439.     IF FKillNDialogs(65535) = 0 THEN
  440. '$ifdef DEBUG
  441.         StfApiErr saeFail, "UIPopAll", ""
  442. '$endif ''DEBUG
  443.         ERROR STFERR
  444.     END IF
  445. END SUB
  446.  
  447.  
  448. '*************************************************************************
  449. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  450. '$ifdef DEBUG
  451.     if szSymbol$ = "" then
  452.         BadArgErr 1, "GetSymbolValue", szSymbol$
  453.     end if
  454. '$endif ''DEBUG
  455.     szValue$ = string$(cbSymValMax,32)
  456.     Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  457.     GetSymbolValue = szValue$
  458.     IF Length% >= cbSymValMax THEN
  459.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  460.         ERROR STFERR
  461.     END IF
  462.     IF szSymbol$ = "" THEN
  463.         ERROR STFERR
  464.     END IF
  465.     szValue$ = ""
  466. END FUNCTION
  467.  
  468.  
  469. '*************************************************************************
  470. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  471. '$ifdef DEBUG
  472.     if szSymbol$ = "" then
  473.         BadArgErr 1, "GetListLength", szSymbol$
  474.     end if
  475. '$endif ''DEBUG
  476.     GetListLength = UsGetListLength(szSymbol$)
  477.     IF szSymbol$ = "" THEN
  478.         ERROR STFERR
  479.     END IF
  480. END FUNCTION
  481.  
  482.  
  483. '*************************************************************************
  484. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  485. '$ifdef DEBUG
  486.     if szListSymbol$ = "" then
  487.         BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  488.     end if
  489.  
  490.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  491.         BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  492.     end if
  493. '$endif ''DEBUG
  494.  
  495.     szListItem$ = string$(cbSymValMax,32)
  496.     Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  497.     GetListItem = szListItem$
  498.     IF Length% >= cbSymValMax THEN
  499.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  500.         ERROR STFERR
  501.     END IF
  502.     IF szListSymbol$ = "" THEN
  503.         ERROR STFERR
  504.     END IF
  505.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  506.         ERROR STFERR
  507.     end if
  508.     szListItem$ = ""
  509. END FUNCTION
  510.  
  511.  
  512. '*************************************************************************
  513. SUB AddListItem(szSymbol$, szItem$) STATIC
  514. '$ifdef DEBUG
  515.     if szSymbol$ = "" then
  516.         BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
  517.     end if
  518. '$endif ''DEBUG
  519.     IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  520. '$ifdef DEBUG
  521.         StfApiErr saeFail, "AddListItem", szSymbol$+", "+szItem$
  522. '$endif ''DEBUG
  523.         ERROR STFERR
  524.     END IF
  525. END SUB
  526.  
  527.  
  528. '*************************************************************************
  529. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  530. '$ifdef DEBUG
  531.     if szSymbol$ = "" then
  532.         nArg% = 1
  533.     elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
  534.         nArg% = 2
  535.     else
  536.         nArg% = 0
  537.     end if
  538.     if nArg% > 0 then
  539.         BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
  540.     end if
  541. '$endif ''DEBUG
  542.  
  543.     IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  544. '$ifdef DEBUG
  545.         StfApiErr saeFail, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
  546. '$endif ''DEBUG
  547.         ERROR STFERR
  548.     END IF
  549. END SUB
  550.  
  551.  
  552. '*************************************************************************
  553. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  554. '$ifdef DEBUG
  555.     if szSymbol$ = "" then
  556.         BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
  557.     end if
  558. '$endif ''DEBUG
  559.     IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  560. '$ifdef DEBUG
  561.         StfApiErr saeFail, "SetSymbolValue", szSymbol$+", "+szValue$
  562. '$endif ''DEBUG
  563.         ERROR STFERR
  564.     END IF
  565. END SUB
  566.  
  567.  
  568. '*************************************************************************
  569. SUB RemoveSymbol(szSym$) STATIC
  570. '$ifdef DEBUG
  571.     if szSym$ = "" then
  572.         BadArgErr 1, "RemoveSymbol", szSym$
  573.     end if
  574. '$endif ''DEBUG
  575.     IF FRemoveSymbol(szSym$) = 0 THEN
  576. '$ifdef DEBUG
  577.         StfApiErr saeFail, "RemoveSymbol", szSym$
  578. '$endif ''DEBUG
  579.         ERROR STFERR
  580.     END IF
  581. END SUB
  582.  
  583.  
  584. '*************************************************************************
  585. FUNCTION ShowWaitCursor STATIC AS INTEGER
  586.     ShowWaitCursor = HShowWaitCursor
  587. END FUNCTION
  588.  
  589.  
  590. '*************************************************************************
  591. SUB RestoreCursor (hPrev%) STATIC
  592.     i% = FRestoreCursor(hPrev%)
  593.     IF i% = 0 THEN
  594. '$ifdef DEBUG
  595.         StfApiErr saeFail, "RestoreCursor", ""
  596. '$endif ''DEBUG
  597.         ERROR STFERR
  598.     END IF
  599. END SUB
  600.  
  601.  
  602. '*************************************************************************
  603. FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
  604.     SetBeepingMode = FSetBeepingMode(mode%)
  605. END FUNCTION
  606.  
  607.  
  608. '*************************************************************************
  609. FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
  610.     SetSilentMode = FSetSilent(mode%)
  611. END FUNCTION
  612.  
  613.  
  614. '*************************************************************************
  615. SUB InitInstall STATIC
  616.     IF hSetup > 0 THEN
  617. '$ifdef DEBUG
  618.         StfApiErr saeInit, "InitInstall", ""
  619. '$endif ''DEBUG
  620.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  621. '$ifdef DEBUG
  622.         StfApiErr saeFail, "InitInstall", ""
  623. '$endif ''DEBUG
  624.         END
  625.     END IF
  626. END SUB
  627.  
  628.  
  629. '*************************************************************************
  630. SUB CreateDir (szDir$, cmo%) STATIC
  631. '$ifdef DEBUG
  632.     if FValidFATDir(szDir$) = 0 then
  633.         BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
  634.     end if
  635. '$endif ''DEBUG
  636.     IF FCreateDir(szDir$, cmo%) = 0 THEN
  637. '$ifdef DEBUG
  638.         StfApiErr saeFail, "CreateDir", szDir$+", "+STR$(cmo%)
  639. '$endif ''DEBUG
  640.         ERROR STFERR
  641.     END IF
  642. END SUB
  643.  
  644.  
  645. '*************************************************************************
  646. SUB RemoveDir (szDir$, cmo%) STATIC
  647. '$ifdef DEBUG
  648.     if FValidFATDir(szDir$) = 0 then
  649.         BadArgErr 1, "RemoveDir", szDir$+", "+STR$(cmo%)
  650.     end if
  651. '$endif ''DEBUG
  652.     IF FRemoveDir(szDir$, cmo%) = 0 THEN
  653. '$ifdef DEBUG
  654.         StfApiErr saeFail, "RemoveDir", szDir$+", "+STR$(cmo%)
  655. '$endif ''DEBUG
  656.         ERROR STFERR
  657.     END IF
  658. END SUB
  659.  
  660.  
  661.  
  662. '*************************************************************************
  663. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  664. '$ifdef DEBUG
  665.     if FValidIniFile(szFile$) = 0 then
  666.         n% = 1
  667.     elseif FValidInfSect(szSect$) = 0 then
  668.         n% = 2
  669.     else
  670.         n% = 0
  671.     end if
  672.     if n% > 0 then
  673.         BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
  674.     end if
  675. '$endif ''DEBUG
  676.  
  677.     IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  678. '$ifdef DEBUG
  679.         StfApiErr saeFail, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
  680. '$endif ''DEBUG
  681.         ERROR STFERR
  682.     END IF
  683. END SUB
  684.  
  685.  
  686. '*************************************************************************
  687. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  688. '$ifdef DEBUG
  689.     if FValidIniFile(szFile$) = 0 then
  690.         n% = 1
  691.     elseif FValidInfSect(szSect$) = 0 then
  692.         n% = 2
  693.     else
  694.         n% = 0
  695.     end if
  696.     if n% > 0 then
  697.         BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  698.     end if
  699. '$endif ''DEBUG
  700.  
  701.     IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  702. '$ifdef DEBUG
  703.         StfApiErr saeFail, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  704. '$endif ''DEBUG
  705.         ERROR STFERR
  706.     END IF
  707. END SUB
  708.  
  709.  
  710. '*************************************************************************
  711. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  712. '$ifdef DEBUG
  713.     if FValidIniFile(szFile$) = 0 then
  714.         n% = 1
  715.     elseif FValidInfSect(szSect$) = 0 then
  716.         n% = 2
  717.     elseif szKey$ = "" then
  718.         n% = 3
  719.     else
  720.         n% = 0
  721.     end if
  722.     if n% > 0 then
  723.         BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
  724.     end if
  725. '$endif ''DEBUG
  726.  
  727.     IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  728. '$ifdef DEBUG
  729.         StfApiErr saeFail, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
  730. '$endif ''DEBUG
  731.         ERROR STFERR
  732.     END IF
  733. END SUB
  734.  
  735.  
  736. '*************************************************************************
  737. SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  738. '$ifdef DEBUG
  739.     if FValidFATPath(szFile$) = 0 then
  740.         n% = 1
  741.     elseif FValidInfSect(szSect$) = 0 then
  742.         n% = 2
  743.     elseif szKey$ = "" then
  744.         n% = 3
  745.     else
  746.         n% = 0
  747.     end if
  748.     if n% > 0 then
  749.         BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  750.     end if
  751. '$endif ''DEBUG
  752.  
  753.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  754. '$ifdef DEBUG
  755.         StfApiErr saeFail, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  756. '$endif ''DEBUG
  757.         ERROR STFERR
  758.     END IF
  759. END SUB
  760.  
  761.  
  762. '*************************************************************************
  763. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  764. '$ifdef DEBUG
  765.     if szGroup$ = "" or len(szGroup$) > 24 then
  766.         BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  767.     end if
  768. '$endif ''DEBUG
  769.     IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  770. '$ifdef DEBUG
  771.         StfApiErr saeFail, "CreateProgmanGroup", szGroup$+", "+szPath$+", "+STR$(cmo%)
  772. '$endif ''DEBUG
  773.         ERROR STFERR
  774.     END IF
  775. END SUB
  776.  
  777.  
  778. '*************************************************************************
  779. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  780. '$ifdef DEBUG
  781.     if szGroup$ = "" or len(szGroup$) > 24 then
  782.         BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  783.     end if
  784. '$endif ''DEBUG
  785.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  786. '$ifdef DEBUG
  787.         StfApiErr saeFail, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  788. '$endif ''DEBUG
  789.         ERROR STFERR
  790.     END IF
  791. END SUB
  792.  
  793.  
  794. '*************************************************************************
  795. SUB ClearCopyList STATIC
  796.     ResetCopyList
  797. END SUB
  798.  
  799.  
  800. '*************************************************************************
  801. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  802.     lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  803.     IF lNeed& < 0 THEN
  804. '$ifdef DEBUG
  805.         StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$
  806. '$endif ''DEBUG
  807.         ERROR STFERR
  808.     END IF
  809.     GetCopyListCost = lNeed&
  810. END FUNCTION
  811.  
  812.  
  813. '*************************************************************************
  814. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  815.     szItemNew$ = szItem$
  816.     IF szOther$ <> "" THEN
  817.         szItemNew$ = szItem$ + "," + szOther$
  818.     END IF
  819. '$ifdef DEBUG
  820.     if szGroup$ = "" or len(szGroup$) > 24 then
  821.         BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  822.     end if
  823. '$endif ''DEBUG
  824.  
  825.     IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  826. '$ifdef DEBUG
  827.         StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%)
  828. '$endif ''DEBUG
  829.         ERROR STFERR
  830.     END IF
  831.     szItemNew$ = ""
  832. END SUB
  833.  
  834.  
  835. '*************************************************************************
  836. SUB CopyFilesInCopyList STATIC
  837.     grc% = GrcCopyFilesInCopyList (HinstFrame())
  838.  
  839.     IF grc% = grcUserQuit THEN
  840.         ERROR STFQUIT
  841.     ELSEIF grc% > 0 THEN
  842. '$ifdef DEBUG
  843.         StfApiErr saeFail, "CopyFilesInCopyList", ""
  844. '$endif ''DEBUG
  845.         ERROR STFERR
  846.     END IF
  847. END SUB
  848.  
  849.  
  850. '*************************************************************************
  851. SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
  852. '$ifdef DEBUG
  853.     if FValidFATPath(szFullPathSrc$) = 0 then
  854.         n% = 1
  855.     elseif FValidFATPath(szFullPathDst$) = 0 then
  856.         n% = 2
  857.     else
  858.         n% = 0
  859.     end if
  860.     if n% > 0 then
  861.         BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
  862.     end if
  863. '$endif ''DEBUG
  864.  
  865.     IF  FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
  866. '$ifdef DEBUG
  867.         StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
  868. '$endif ''DEBUG
  869.         ERROR STFERR
  870.     END IF
  871. END SUB
  872.  
  873.  
  874.  
  875. '*************************************************************************
  876. SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
  877. '$ifdef DEBUG
  878.     if FValidFATPath(szFullPathSrc$) = 0 then
  879.         BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
  880.     end if
  881. '$endif ''DEBUG
  882.     IF  YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
  883. '$ifdef DEBUG
  884.         StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
  885. '$endif ''DEBUG
  886.         ERROR STFERR
  887.     END IF
  888. END SUB
  889.  
  890.  
  891. '*************************************************************************
  892. SUB RenameFile (szFullPath$, szBackup$) STATIC
  893. '$ifdef DEBUG
  894.     if FValidFATPath(szFullPath$) = 0 then
  895.         n% = 1
  896.     elseif szBackup$ = "" then
  897.         n% = 2
  898.     else
  899.         n% = 0
  900.     end if
  901.     if n% > 0 then
  902.         BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
  903.     end if
  904. '$endif ''DEBUG
  905.  
  906.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  907. '$ifdef DEBUG
  908.         StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$
  909. '$endif ''DEBUG
  910.         ERROR STFERR
  911.     END IF
  912. END SUB
  913.  
  914.  
  915. '*************************************************************************
  916. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  917. '$ifdef DEBUG
  918.     if FValidInfSect(szSect$) = 0 then
  919.         n% = 1
  920.     elseif FValidFATDir(szSrc$) = 0 then
  921.         n% = 2
  922.     elseif FValidFATDir(szDest$) = 0 then
  923.         n% = 3
  924.     else
  925.         n% = 0
  926.     end if
  927.     if n% > 0 then
  928.         BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
  929.     end if
  930. '$endif ''DEBUG
  931.  
  932.     IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  933. '$ifdef DEBUG
  934.         StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
  935. '$endif ''DEBUG
  936.         ERROR STFERR
  937.     END IF
  938. END SUB
  939.  
  940.  
  941. '*************************************************************************
  942. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  943. '$ifdef DEBUG
  944.     if FValidInfSect(szSect$) = 0 then
  945.         n% = 1
  946.     elseif szKey$ = "" then
  947.         n% = 2
  948.     elseif FValidFATDir(szSrc$) = 0 then
  949.         n% = 3
  950.     elseif FValidFATDir(szDest$) = 0 then
  951.         n% = 4
  952.     else
  953.         n% = 0
  954.     end if
  955.     if n% > 0 then
  956.         BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  957.     end if
  958. '$endif ''DEBUG
  959.  
  960.     IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  961. '$ifdef DEBUG
  962.         StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  963. '$endif ''DEBUG
  964.         ERROR STFERR
  965.     END IF
  966. END SUB
  967.  
  968.  
  969. '*************************************************************************
  970. SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  971. '$ifdef DEBUG
  972.     if FValidInfSect(szSect$) = 0 then
  973.         n% = 1
  974.     elseif szKey$ = "" then
  975.         n% = 2
  976.     elseif FValidFATDir(szSrc$) = 0 then
  977.         n% = 3
  978.     elseif FValidFATPath(szDest$) = 0 then
  979.         n% = 4
  980.     else
  981.         n% = 0
  982.     end if
  983.     if n% > 0 then
  984.         BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  985.     end if
  986. '$endif ''DEBUG
  987.  
  988.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  989. '$ifdef DEBUG
  990.         StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  991. '$endif ''DEBUG
  992.         ERROR STFERR
  993.     END IF
  994. END SUB
  995.  
  996.  
  997. '*************************************************************************
  998. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  999. '$ifdef DEBUG
  1000.     if szDll$ = "" then
  1001.         n% = 1
  1002.     elseif idDlg% = 0 then
  1003.         n% = 2
  1004.     elseif szProc$ = "" then
  1005.         n% = 3
  1006.     elseif lTicks& <= 0 then
  1007.         n% = 4
  1008.     else
  1009.         n% = 0
  1010.     end if
  1011.     if n% > 0 then
  1012.         BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
  1013.     end if
  1014. '$endif ''DEBUG
  1015.  
  1016.     IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  1017. '$ifdef DEBUG
  1018.         StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
  1019. '$endif ''DEBUG
  1020.         ERROR STFERR
  1021.     END IF
  1022. END SUB
  1023.  
  1024.  
  1025. '*************************************************************************
  1026. SUB AddBlankToBillboardList (lTicks&) STATIC
  1027. '$ifdef DEBUG
  1028.     if lTicks& <= 0 then
  1029.         BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
  1030.     end if
  1031. '$endif ''DEBUG
  1032.     IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
  1033. '$ifdef DEBUG
  1034.         StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
  1035. '$endif ''DEBUG
  1036.         ERROR STFERR
  1037.     END IF
  1038. END SUB
  1039.  
  1040.  
  1041. '*************************************************************************
  1042. SUB ClearBillboardList STATIC
  1043.     IF FClearBillboardList = 0 THEN
  1044. '$ifdef DEBUG
  1045.         StfApiErr saeFail, "ClearBillboardList", ""
  1046. '$endif ''DEBUG
  1047.         ERROR STFERR
  1048.     END IF
  1049. END SUB
  1050.  
  1051.  
  1052. '*************************************************************************
  1053. SUB OpenLogFile (szFile$, fAppend%) STATIC
  1054. '$ifdef DEBUG
  1055.     if FValidFATPath(szFile$) = 0 then
  1056.         BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
  1057.     end if
  1058. '$endif ''DEBUG
  1059.     IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
  1060. '$ifdef DEBUG
  1061.         StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
  1062. '$endif ''DEBUG
  1063.         ERROR STFERR
  1064.     END IF
  1065. END SUB
  1066.  
  1067.  
  1068. '*************************************************************************
  1069. SUB CloseLogFile STATIC
  1070.     IF FCloseLogFile() = 0 THEN
  1071. '$ifdef DEBUG
  1072.         StfApiErr saeFail, "CloseLogFile", ""
  1073. '$endif ''DEBUG
  1074.         ERROR STFERR
  1075.     END IF
  1076. END SUB
  1077.  
  1078.  
  1079. '*************************************************************************
  1080. SUB WriteToLogFile (szStr$) STATIC
  1081.     IF FWriteToLogFile(szStr$, 1) = 0 THEN
  1082. '$ifdef DEBUG
  1083.         StfApiErr saeFail, "WriteToLogFile", szStr$
  1084. '$endif ''DEBUG
  1085.         ERROR STFERR
  1086.     END IF
  1087. END SUB
  1088.  
  1089.  
  1090. ''' -1 in either parameter will mean 'center in frame client area'
  1091. '*************************************************************************
  1092. SUB SetCopyGaugePosition (x%, y%) STATIC
  1093.     ProSetPos x%, y%
  1094. END SUB
  1095.  
  1096.  
  1097. '*************************************************************************
  1098. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  1099.     IsDirWritable = FIsDirWritable(szDir$)
  1100. END FUNCTION
  1101.  
  1102.  
  1103. '*************************************************************************
  1104. FUNCTION GetWindowsDir STATIC AS STRING
  1105.     szBuf$ = string$(256, 32)
  1106.     cbBuf% = GetWindowsDirectory(szBuf$, 256)
  1107.  
  1108.     IF cbBuf% = 0 THEN
  1109.         GetWindowsDir = ""
  1110. '$ifdef DEBUG
  1111.         StfApiErr saeFail, "GetWindowsDir", ""
  1112. '$endif ''DEBUG
  1113.         ERROR STFERR
  1114.     ELSE
  1115.         IF cbBuf% > 255 THEN
  1116.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  1117.             ERROR STFERR
  1118.         END IF
  1119.         szBuf$ = RTRIM$(szBuf$)
  1120.         IF MID$(szBuf$, 1, 1) = "\" THEN
  1121.             'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  1122.             szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  1123.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  1124.             szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  1125.         END IF
  1126.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  1127.             szBuf$ = szBuf$ + "\"
  1128.         END IF
  1129.         GetWindowsDir = szBuf$
  1130.     END IF
  1131.  
  1132.     szBuf$ = ""
  1133. END FUNCTION
  1134.  
  1135.  
  1136. '*************************************************************************
  1137. FUNCTION GetWindowsSysDir STATIC AS STRING
  1138.     szBuf$ = string$(256, 32)
  1139.     cbBuf% = GetSystemDirectory(szBuf$, 256)
  1140.  
  1141.     IF cbBuf% = 0 THEN
  1142. '$ifdef DEBUG
  1143.         StfApiErr saeFail, "GetWindowsSysDir", ""
  1144. '$endif ''DEBUG
  1145.         ERROR STFERR
  1146.     ELSE
  1147.         IF cbBuf% > 255 THEN
  1148.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  1149.             ERROR STFERR
  1150.         END IF
  1151.         szBuf$ = RTRIM$(szBuf$)
  1152.         IF MID$(szBuf$, 1, 1) = "\" THEN
  1153.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  1154.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  1155.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  1156.         END IF
  1157.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  1158.             szBuf$ = szBuf$ + "\"
  1159.         END IF
  1160.         GetWindowsSysDir = szBuf$
  1161.     END IF
  1162.  
  1163.     szBuf$ = ""
  1164. END FUNCTION
  1165.  
  1166.  
  1167. '*************************************************************************
  1168. FUNCTION GetScreenWidth STATIC AS INTEGER
  1169.     GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  1170. END FUNCTION
  1171.  
  1172.  
  1173. '*************************************************************************
  1174. FUNCTION GetScreenHeight STATIC AS INTEGER
  1175.     GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  1176. END FUNCTION
  1177.  
  1178.  
  1179. '*************************************************************************
  1180. SUB SetRestartDir (szDir$) STATIC
  1181. '$ifdef DEBUG
  1182.     if FValidFATDir(szDir$) = 0 then
  1183.         BadArgErr 1, "SetRestartDir", szDir$
  1184.     end if
  1185. '$endif ''DEBUG
  1186.     IF FSetRestartDir(szDir$) = 0 THEN
  1187. '$ifdef DEBUG
  1188.         StfApiErr saeFail, "SetRestartDir", szDir$
  1189. '$endif ''DEBUG
  1190.         ERROR STFERR
  1191.     END IF
  1192. END SUB
  1193.  
  1194.  
  1195. '*************************************************************************
  1196. FUNCTION RestartListEmpty STATIC AS INTEGER
  1197.     IF FRestartListEmpty() = 0 THEN
  1198.         RestartListEmpty = 0
  1199.     ELSE
  1200.         RestartListEmpty = 1
  1201.     END IF
  1202. END FUNCTION
  1203.  
  1204.  
  1205. '*************************************************************************
  1206. FUNCTION ExitExecRestart STATIC AS INTEGER
  1207.     ExitExecRestart = FExitExecRestart
  1208. END FUNCTION
  1209.  
  1210.  
  1211. '*************************************************************************
  1212. SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
  1213.  
  1214. '$ifdef DEBUG
  1215.     if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
  1216.         n% = 1
  1217.     elseif FValidFATPath(szDst$) = 0 then
  1218.         n% = 2
  1219.     elseif FValidFATDir(szDir$) = 0 then
  1220.         n% = 3
  1221.     else
  1222.         n% = 0
  1223.     end if
  1224.     if n% > 0 then
  1225.         BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
  1226.     end if
  1227. '$endif ''DEBUG
  1228.  
  1229.     IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
  1230. '$ifdef DEBUG
  1231.         StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
  1232. '$endif ''DEBUG
  1233.         ERROR STFERR
  1234.     END IF
  1235. END SUB
  1236.  
  1237.  
  1238. '*************************************************************************
  1239. FUNCTION IsDBCSChar (szText$, iPos%) STATIC AS INTEGER
  1240.     irt% = DIsDBCSChar(szText$, iPos%)
  1241.     if irt% < 0 THEN
  1242. '$ifdef DEBUG
  1243.         StfApiErr saeFail, "IsDBCSChar", szText$+", "+STR$(iPos%)
  1244. '$endif ''DEBUG
  1245.         ERROR STFERR
  1246.     else
  1247.         IsDBCSChar = irt%
  1248.     end if
  1249. END FUNCTION
  1250.  
  1251. '*************************************************************************
  1252. FUNCTION AnsiUpper (szBuf$) STATIC AS STRING
  1253.  
  1254.     cbBuf% = AnsiUpperBuff(szBuf$, LEN(szBuf$))
  1255.     AnsiUpper = szBuf$
  1256.  
  1257. END FUNCTION
  1258.  
  1259. '*************************************************************************
  1260. FUNCTION AnsiLower (szBuf$) STATIC AS STRING
  1261.  
  1262.     cbBuf% = AnsiLowerBuff(szBuf$, LEN(szBuf$))
  1263.     AnsiLower = szBuf$
  1264.  
  1265. END FUNCTION
  1266.  
  1267.  
  1268. '**************************************************************************
  1269. '***************************  Error Handlers  *****************************
  1270. '**************************************************************************
  1271.  
  1272.  
  1273. '$ifdef DEBUG
  1274. '**************************************************************************
  1275. SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC      ''DEBUG only
  1276.     select case nMsg%
  1277.         case saeFail
  1278.             lpText$ = "Failed"
  1279.         case saeInit
  1280.             lpText$ = "Already Initialized"
  1281.         case saeNYI
  1282.             lpText$ = "NYI"
  1283.         case else
  1284.             lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
  1285.     end select
  1286.  
  1287.     lpText$ = lpText$ + ": "+ szApi$
  1288.     if szArgs$ <> "" then
  1289.         lpText$ = lpText + " (" + szArgs$ + ")"
  1290.     end if
  1291.     lpCaption$ = "MS-Setup Toolkit API Error"
  1292.     res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  1293.     print lpText$
  1294.     lpText$ = ""
  1295.     lpCaption$ = ""
  1296. END SUB
  1297.  
  1298. '**************************************************************************
  1299. SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC      ''DEBUG only
  1300.     StfApiErr nArg%+saeArg, szApi$, szArgs$
  1301.     ERROR STFERR
  1302. END SUB
  1303.  
  1304. '** REVIEW: Move this function into common lib (we'll need it there too)
  1305. '**************************************************************************
  1306. FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
  1307.    if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
  1308.         FValidInfSect = 0
  1309.     else
  1310.         FValidInfSect = 1
  1311.     end if
  1312. END FUNCTION
  1313.  
  1314.  
  1315. '** REVIEW: Move this function into common lib (we'll need it there too)
  1316. '**************************************************************************
  1317. FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
  1318.     if (FValidFATPath(szFile$) = 0) AND (AnsiUpper(szFile$) <> "WIN.INI") then
  1319.         FValidIniFile = 0
  1320.     else
  1321.         FValidIniFile = 1
  1322.     end if
  1323. END FUNCTION
  1324.  
  1325. '**************************************************************************
  1326. FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
  1327.  
  1328.     if szDrive$ = "" then
  1329.         FValidDrive = 0
  1330.     elseif INSTR(1,szDrive$,"\\") = 1 then   ' UNC path
  1331.         FValidDrive = 1
  1332.     elseif ASC(AnsiUpper(szDrive$)) - ASC("A") < 0 then
  1333.         FValidDrive = 0
  1334.     elseif ASC(AnsiUpper(szDrive$)) - ASC("A") > 25 then
  1335.         FValidDrive = 0
  1336.     elseif LEN(szDrive$) = 1 then
  1337.         FValidDrive = 1
  1338.     elseif INSTR(2,szDrive$,":\") = 2 then
  1339.         FValidDrive = 1
  1340.     elseif INSTR(1,szDrive$,":") = 2 then
  1341.         FValidDrive = 1
  1342.     else
  1343.         FValidDrive = 0
  1344.     end if
  1345. END FUNCTION
  1346.  
  1347. '$endif ''DEBUG
  1348.  
  1349.  
  1350. TRAP CleanupTrap From "MSSHLSTF.DLL"
  1351.  
  1352. End Trap
  1353.  
  1354. hSetup = InitSetup(COMMAND$)
  1355.  
  1356. ON ERROR GOTO QUIT
  1357.  
  1358.