mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1803 lines
53 KiB
1803 lines
53 KiB
'**************************************************************************
|
|
'******************************* Windows API's **************************
|
|
'**************************************************************************
|
|
GLOBAL hSetup AS INTEGER
|
|
GLOBAL fFrameInit AS INTEGER
|
|
GLOBAL fInstallInit AS INTEGER
|
|
|
|
CONST SM_CXSCREEN = 0
|
|
CONST SM_CYSCREEN = 1
|
|
|
|
CONST WF_80x87 = 1024
|
|
CONST WF_CPU186 = 128
|
|
CONST WF_CPU286 = 2
|
|
CONST WF_CPU386 = 4
|
|
CONST WF_CPU486 = 8
|
|
CONST WF_STANDARD = 16
|
|
CONST WF_ENHANCED = 32
|
|
|
|
|
|
'' DoMsgBox Flags
|
|
|
|
CONST MB_OK = 0
|
|
CONST MB_ICONHAND = 16
|
|
CONST MB_TASKMODAL = 8192
|
|
|
|
|
|
DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
|
|
DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
|
|
DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
|
|
DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
|
|
DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
|
|
DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
|
|
DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
|
|
|
|
|
|
|
|
|
|
'**************************************************************************
|
|
'****************************** Setup Constants ***************************
|
|
'**************************************************************************
|
|
|
|
|
|
''Command Option Flags
|
|
|
|
CONST cmoVital = 1
|
|
CONST cmoCopy = 2
|
|
CONST cmoUndo = 4
|
|
CONST cmoRoot = 8
|
|
CONST cmoDecompress = 16
|
|
CONST cmoTimeStamp = 32
|
|
CONST cmoReadOnly = 64
|
|
CONST cmoBackup = 128
|
|
CONST cmoForce = 256
|
|
CONST cmoRemove = 512
|
|
CONST cmoOverwrite = 1024
|
|
CONST cmoAppend = 2048
|
|
CONST cmoPrepend = 4096
|
|
CONST cmoNone = 0
|
|
CONST cmoAll = 65535
|
|
|
|
|
|
''File Exist Modes
|
|
|
|
CONST femExists = 0
|
|
CONST femRead = 1
|
|
CONST femWrite = 2
|
|
CONST femReadWrite = 3
|
|
|
|
|
|
''Read-Only Return Code
|
|
|
|
CONST ynrcNo = 0
|
|
CONST ynrcYes = 1
|
|
CONST ynrcErr1 = 2
|
|
CONST ynrcErr2 = 3
|
|
CONST ynrcErr3 = 4
|
|
CONST ynrcErr4 = 5
|
|
CONST ynrcErr5 = 6
|
|
CONST ynrcErr6 = 7
|
|
CONST ynrcErr7 = 8
|
|
CONST ynrcErr8 = 9
|
|
CONST ynrcErr9 = 10
|
|
|
|
|
|
''General Return Codes
|
|
|
|
CONST grcOkay = 0
|
|
CONST grcNotOkay = 1
|
|
CONST grcUserQuit = 48
|
|
|
|
|
|
''Ranges
|
|
|
|
''CONST cbSymValMax = 8192
|
|
CONST cbSymValMax = 512
|
|
''REVIEW: symbol table will allow strings up to 8192 bytes
|
|
'' but we get Out of String Space wattdrvr error if we alloc
|
|
'' STRING$() that big. (See GetSymbolValue and GetListItem)
|
|
'' We should look into using dynamic far alloc instead of
|
|
'' STRING$ for large buffers.
|
|
'' NOTE: 8192 works okay with runtime wattdrvr, however.
|
|
|
|
|
|
''ON ERROR Error Codes
|
|
CONST STFERR = 1024 ''setup system error
|
|
CONST STFQUIT = 1025 ''user quit
|
|
|
|
CONST scmOff = 0
|
|
CONST scmOnIgnore = 1
|
|
CONST scmOnFatal = 2
|
|
|
|
|
|
'**************************************************************************
|
|
'******************************** Setup API's ***************************
|
|
'**************************************************************************
|
|
|
|
'' common
|
|
|
|
DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
|
|
DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
|
|
DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
|
|
DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
|
|
DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
|
|
DECLARE FUNCTION FRestoreCursor LIB "msshlstf.dll" (hPrev%) AS INTEGER
|
|
DECLARE FUNCTION FOpenLogFile LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
|
|
DECLARE FUNCTION FCloseLogFile LIB "mscomstf.dll" AS INTEGER
|
|
DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
|
|
DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
|
|
DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
|
|
|
|
|
|
''shell
|
|
|
|
DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
|
|
DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
|
|
DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
|
|
DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
|
|
DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
|
|
DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
|
|
DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
|
|
DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
|
|
DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
|
|
DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
|
|
DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
|
|
DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
|
|
DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
|
|
|
|
|
|
''shell
|
|
|
|
DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
|
|
DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
|
|
DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
|
|
|
|
|
|
|
|
''install
|
|
|
|
DECLARE SUB ProSetPos LIB "msinsstf.dll" (x%, y%)
|
|
DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
|
|
DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
|
|
DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
|
|
DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
|
|
DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
|
|
DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
|
|
DECLARE SUB ResetCopyList LIB "msinsstf.dll"
|
|
DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
|
|
DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
|
|
DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
|
|
DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
|
|
DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
|
|
DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
|
|
DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
|
|
DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
|
|
DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
|
|
DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
|
|
DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
|
|
DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
|
|
DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
|
|
DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
|
|
DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
|
|
DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
|
|
DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
|
|
DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
|
|
|
|
DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
|
|
|
|
|
|
|
|
'*************************************************************************
|
|
'**************** Setup Basic Wrapper Declarations *********************
|
|
'*************************************************************************
|
|
|
|
|
|
''shell
|
|
|
|
DECLARE SUB SetBitmap(szDll$, Bitmap%)
|
|
DECLARE SUB SetAbout(szAbout1$, szAbout2$)
|
|
DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
|
|
DECLARE SUB UIPop (n%)
|
|
DECLARE SUB UIPopAll
|
|
DECLARE SUB SetTitle (sz$)
|
|
DECLARE SUB ReadInfFile (szFile$)
|
|
DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
|
|
DECLARE SUB RemoveSymbol (szSym$)
|
|
DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
|
|
DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
|
|
DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
|
|
DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
|
|
DECLARE SUB AddListItem(szSymbol$, szItem$)
|
|
DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
|
|
|
|
DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
|
|
DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
|
|
|
|
DECLARE FUNCTION ShowWaitCursor AS INTEGER
|
|
DECLARE SUB RestoreCursor (hPrev%)
|
|
|
|
DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
|
|
DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
|
|
|
|
DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
|
|
DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
|
|
DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
|
|
DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
|
|
|
|
DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
|
|
DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
|
|
DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
|
|
DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
|
|
|
|
|
|
''install
|
|
|
|
|
|
DECLARE SUB CreateDir (szDir$, cmo%)
|
|
DECLARE SUB RemoveDir (szDir$, cmo%)
|
|
DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
|
|
DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
|
|
DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
|
|
DECLARE SUB CopyFilesInCopyList
|
|
DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
|
|
DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
|
|
DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
|
|
DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
|
|
DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
|
|
DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
|
|
DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
|
|
DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
|
|
DECLARE SUB DumpCopyList (szFile$)
|
|
DECLARE SUB ClearCopyList
|
|
DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
|
|
DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
|
|
DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
|
|
DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
|
|
DECLARE SUB BackupFile (szFullPath$, szBackup$)
|
|
DECLARE SUB RenameFile (szFullPath$, szBackup$)
|
|
DECLARE SUB InitInstall
|
|
DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
|
|
DECLARE SUB AddBlankToBillboardList (lTicks&)
|
|
DECLARE SUB ClearBillboardList
|
|
DECLARE SUB OpenLogFile (szFile$, fAppend%)
|
|
DECLARE SUB CloseLogFile
|
|
DECLARE SUB WriteToLogFile (szStr$)
|
|
DECLARE SUB SetCopyGaugePosition (x%, y%)
|
|
DECLARE SUB SetRestartDir(szDir$)
|
|
DECLARE FUNCTION RestartListEmpty AS INTEGER
|
|
DECLARE FUNCTION ExitExecRestart AS INTEGER
|
|
DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
|
|
DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
|
|
DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
|
|
DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
|
|
DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
|
|
|
|
|
|
'' Error Handling
|
|
|
|
'$ifdef DEBUG
|
|
|
|
'' Setup API Errors
|
|
CONST saeFail = 0
|
|
CONST saeInit = 1
|
|
CONST saeNYI = 3
|
|
CONST saeArg = 4 ''must be max sae value
|
|
|
|
DECLARE SUB StfApiErr (nMsg%, szApi$, szArgs$)
|
|
DECLARE SUB BadArgErr (nArg%, szApi$, szArgs$)
|
|
|
|
'' chk arg
|
|
DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
|
|
DECLARE FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" (szPath$) AS INTEGER
|
|
DECLARE FUNCTION FValidFATPath LIB "mscomstf.dll" (szPath$) AS INTEGER
|
|
DECLARE FUNCTION FValidDrive (szDrive$) AS INTEGER
|
|
|
|
DECLARE FUNCTION FValidInfSect (szSect$) AS INTEGER
|
|
DECLARE FUNCTION FValidIniFile (szFile$) AS INTEGER
|
|
|
|
'$endif ''DEBUG
|
|
|
|
|
|
|
|
'' Windows system detect
|
|
|
|
DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
|
|
DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
|
|
DECLARE FUNCTION GetWindowsMode AS INTEGER
|
|
DECLARE FUNCTION GetWindowsDir AS STRING
|
|
DECLARE FUNCTION GetWindowsSysDir AS STRING
|
|
DECLARE FUNCTION IsWindowsShared AS INTEGER
|
|
DECLARE FUNCTION GetScreenWidth AS INTEGER
|
|
DECLARE FUNCTION GetScreenHeight AS INTEGER
|
|
|
|
|
|
'*************************************************************************
|
|
'***************** Setup Basic Wrapper Definitions *********************
|
|
'*************************************************************************
|
|
FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
|
|
fFrameInit = 0
|
|
fInstallInit = 0
|
|
|
|
IF hSetup > 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeInit, "InitSetup", szCmdLine$
|
|
'$endif ''DEBUG
|
|
END IF
|
|
|
|
i% = InitFrame(szCmdLine$)
|
|
fFrameInit = 1
|
|
|
|
InitInstall
|
|
fInstallInit = 1
|
|
|
|
InitSetup = i%
|
|
END FUNCTION
|
|
|
|
|
|
|
|
'**************************************************************************
|
|
FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
|
|
IF hSetup > 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeInit, "InitFrame", szCmdLine$
|
|
'$endif ''DEBUG
|
|
ELSE
|
|
i% = InitializeFrame(szCmdLine$)
|
|
IF i% = -1 THEN
|
|
END '' NOT an error - Usage (/?) or Command line copy operation
|
|
ELSEIF i% = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "InitFrame", szCmdLine$
|
|
'$endif ''DEBUG
|
|
END
|
|
ELSE
|
|
InitFrame = i%
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'**************************************************************************
|
|
SUB SetBitmap(szDll$, Bitmap%) STATIC
|
|
IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "SetBitmap", szDll$+","+STR$(Bitmap%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'**************************************************************************
|
|
SUB SetAbout(szAbout1$, szAbout2$) STATIC
|
|
IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "SetAbout", szAbout1$ + "," + szAbout2$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB SetTitle(sz$) STATIC
|
|
SetWindowText HwndFrame(), sz$
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB ReadInfFile (szFile$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFile$) = 0 then
|
|
BadArgErr 1, "ReadInfFile", szFile$
|
|
end if
|
|
IF FOpenInf(szFile$, 1, 1) = 0 THEN
|
|
StfApiErr saeFail, "ReadInfFile", szFile$
|
|
'$else ''!DEBUG
|
|
IF FOpenInf(szFile$, 1, 0) = 0 THEN
|
|
'$endif ''!DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if szDll$ = "" then
|
|
n% = 1
|
|
elseif szDlgProc$ = "" then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
ELSE
|
|
UIStartDlg = GetSymbolValue("DLGEVENT")
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB UIPop (n%) STATIC
|
|
IF FKillNDialogs(n%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "UIPop", STR$(n%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB UIPopAll STATIC
|
|
IF FKillNDialogs(65535) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "UIPopAll", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
BadArgErr 1, "GetSymbolValue", szSymbol$
|
|
end if
|
|
'$endif ''DEBUG
|
|
szValue$ = string$(cbSymValMax,32)
|
|
Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
|
|
GetSymbolValue = szValue$
|
|
IF Length% >= cbSymValMax THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
IF szSymbol$ = "" THEN
|
|
ERROR STFERR
|
|
END IF
|
|
szValue$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
BadArgErr 1, "GetListLength", szSymbol$
|
|
end if
|
|
'$endif ''DEBUG
|
|
GetListLength = UsGetListLength(szSymbol$)
|
|
IF szSymbol$ = "" THEN
|
|
ERROR STFERR
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if szListSymbol$ = "" then
|
|
BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
|
|
end if
|
|
|
|
if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
|
|
BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
szListItem$ = string$(cbSymValMax,32)
|
|
Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
|
|
GetListItem = szListItem$
|
|
IF Length% >= cbSymValMax THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
IF szListSymbol$ = "" THEN
|
|
ERROR STFERR
|
|
END IF
|
|
if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
|
|
ERROR STFERR
|
|
end if
|
|
szListItem$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddListItem(szSymbol$, szItem$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FAddListItem(szSymbol$, szItem$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddListItem", szSymbol$+", "+szItem$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
nArg% = 1
|
|
elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
|
|
nArg% = 2
|
|
else
|
|
nArg% = 0
|
|
end if
|
|
if nArg% > 0 then
|
|
BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'**************************************************************************
|
|
SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB SetSymbolValue(szSymbol$, szValue$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSymbol$ = "" then
|
|
BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "SetSymbolValue", szSymbol$+", "+szValue$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RemoveSymbol(szSym$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSym$ = "" then
|
|
BadArgErr 1, "RemoveSymbol", szSym$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FRemoveSymbol(szSym$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RemoveSymbol", szSym$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION ShowWaitCursor STATIC AS INTEGER
|
|
ShowWaitCursor = HShowWaitCursor
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RestoreCursor (hPrev%) STATIC
|
|
i% = FRestoreCursor(hPrev%)
|
|
IF i% = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RestoreCursor", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
|
|
SetBeepingMode = FSetBeepingMode(mode%)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
|
|
SetSilentMode = FSetSilent(mode%)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "GetSectionKeyDate", szSect$+", "+szKey$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
szBuf$ = string$(128, 32)
|
|
Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
|
|
IF Length% >= 128 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
IF Length% = -1 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetSectionKeyDate", szSect$+", "+szKey$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
GetSectionKeyDate = szBuf$
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "GetSectionKeyFilename", szSect$+", "+szKey$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
szBuf$ = string$(128, 32)
|
|
Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
|
|
IF Length% >= 128 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
IF Length% = -1 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetSectionKeyFilename", szSect$+", "+szKey$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
GetSectionKeyFilename = szBuf$
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "GetSectionKeySize", szSect$+", "+szKey$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
szBuf$ = string$(128, 32)
|
|
Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
|
|
IF Length% >= 128 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
IF Length% = -1 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetSectionKeySize", szSect$+", "+szKey$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
GetSectionKeySize = VAL(szBuf$)
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "GetSectionKeyVersion", szSect$+", "+szKey$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
szBuf$ = string$(128, 32)
|
|
Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
|
|
IF Length% >= 128 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
IF Length% = -1 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetSectionKeyVersion", szSect$+", "+szKey$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
GetSectionKeyVersion = szBuf$
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSym$ = "" then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "MakeListFromSectionDate", szSym$+", "+szSect$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "MakeListFromSectionDate", szSym$+", "+szSect$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSym$ = "" then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "MakeListFromSectionFilename", szSym$+", "+szSect$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "MakeListFromSectionFilename", szSym$+", "+szSect$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSym$ = "" then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "MakeListFromSectionSize", szSym$+", "+szSect$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "MakeListFromSectionSize", szSym$+", "+szSect$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
|
|
'$ifdef DEBUG
|
|
if szSym$ = "" then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "MakeListFromSectionVersion", szSym$+", "+szSect$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "MakeListFromSectionVersion", szSym$+", "+szSect$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB InitInstall STATIC
|
|
IF hSetup > 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeInit, "InitInstall", ""
|
|
'$endif ''DEBUG
|
|
ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "InitInstall", ""
|
|
'$endif ''DEBUG
|
|
END
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CreateDir (szDir$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATDir(szDir$) = 0 then
|
|
BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FCreateDir(szDir$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CreateDir", szDir$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RemoveDir (szDir$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATDir(szDir$) = 0 then
|
|
BadArgErr 1, "RemoveDir", szDir$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FRemoveDir(szDir$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RemoveDir", szDir$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidIniFile(szFile$) = 0 then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidIniFile(szFile$) = 0 then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidIniFile(szFile$) = 0 then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
elseif szKey$ = "" then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFile$) = 0 then
|
|
n% = 1
|
|
elseif FValidInfSect(szSect$) = 0 then
|
|
n% = 2
|
|
elseif szKey$ = "" then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if szGroup$ = "" or len(szGroup$) > 24 then
|
|
BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CreateProgmanGroup", szGroup$+", "+szPath$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if szGroup$ = "" or len(szGroup$) > 24 then
|
|
BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
elseif FValidFATDir(szDst$) = 0 then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB DumpCopyList (szFile$) STATIC
|
|
'$ifdef DEBUG
|
|
if szFile$ = "" then
|
|
BadArgErr 1, "DumpCopyList", szFile$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FDumpCopyListToFile (szFile$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "DumpCopyList", szFile$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB ClearCopyList STATIC
|
|
ResetCopyList
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
|
|
lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
|
|
IF lNeed& < 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
GetCopyListCost = lNeed&
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
|
|
szItemNew$ = szItem$
|
|
IF szOther$ <> "" THEN
|
|
szItemNew$ = szItem$ + "," + szOther$
|
|
END IF
|
|
'$ifdef DEBUG
|
|
if szGroup$ = "" or len(szGroup$) > 24 then
|
|
BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
szItemNew$ = ""
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then
|
|
n% = 1
|
|
elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then
|
|
n% = 1
|
|
elseif szProgHelp$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CopyFilesInCopyList STATIC
|
|
grc% = GrcCopyFilesInCopyList (HinstFrame())
|
|
|
|
IF grc% = grcUserQuit THEN
|
|
ERROR STFQUIT
|
|
ELSEIF grc% > 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CopyFilesInCopyList", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFullPathSrc$) = 0 then
|
|
n% = 1
|
|
elseif FValidFATPath(szFullPathDst$) = 0 then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFullPathSrc$) = 0 then
|
|
BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB BackupFile (szFullPath$, szBackup$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFullPath$) = 0 then
|
|
n% = 1
|
|
elseif szBackup$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "BackupFile", szFullPath$+", "+szBackup$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB RenameFile (szFullPath$, szBackup$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFullPath$) = 0 then
|
|
n% = 1
|
|
elseif szBackup$ = "" then
|
|
n% = 2
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif FValidFATDir(szSrc$) = 0 then
|
|
n% = 2
|
|
elseif FValidFATDir(szDest$) = 0 then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
elseif FValidFATDir(szSrc$) = 0 then
|
|
n% = 3
|
|
elseif FValidFATDir(szDest$) = 0 then
|
|
n% = 4
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidInfSect(szSect$) = 0 then
|
|
n% = 1
|
|
elseif szKey$ = "" then
|
|
n% = 2
|
|
elseif FValidFATDir(szSrc$) = 0 then
|
|
n% = 3
|
|
elseif FValidFATPath(szDest$) = 0 then
|
|
n% = 4
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
|
|
'$ifdef DEBUG
|
|
if szDll$ = "" then
|
|
n% = 1
|
|
elseif idDlg% = 0 then
|
|
n% = 2
|
|
elseif szProc$ = "" then
|
|
n% = 3
|
|
elseif lTicks& <= 0 then
|
|
n% = 4
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB AddBlankToBillboardList (lTicks&) STATIC
|
|
'$ifdef DEBUG
|
|
if lTicks& <= 0 then
|
|
BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB ClearBillboardList STATIC
|
|
IF FClearBillboardList = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "ClearBillboardList", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB OpenLogFile (szFile$, fAppend%) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATPath(szFile$) = 0 then
|
|
BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB CloseLogFile STATIC
|
|
IF FCloseLogFile() = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "CloseLogFile", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
SUB WriteToLogFile (szStr$) STATIC
|
|
IF FWriteToLogFile(szStr$, 1) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "WriteToLogFile", szStr$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
''' -1 in either parameter will mean 'center in frame client area'
|
|
'*************************************************************************
|
|
SUB SetCopyGaugePosition (x%, y%) STATIC
|
|
ProSetPos x%, y%
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
|
|
szBuf$ = STRING$(512, 32)
|
|
|
|
wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
|
|
IF wRet% = 0 THEN
|
|
FindFileUsingFileOpen = szBuf$
|
|
ELSEIF wRet% = 1 THEN
|
|
FindFileUsingFileOpen = ""
|
|
ELSE
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
|
|
IsDirWritable = FIsDirWritable(szDir$)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
|
|
'$ifdef DEBUG
|
|
if FValidFATDir(szFile$) = 0 then
|
|
BadArgErr 1, "IsFileWritable", szFile$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IsFileWritable = FIsFileWritable(szFile$)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
|
|
IF iField% < 1 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
szStart$ = szLine$
|
|
IF iField% <> 1 THEN
|
|
FOR i% = 2 TO iField% STEP 1
|
|
iNew% = INSTR(szStart$, ",")
|
|
IF iNew% = 0 THEN
|
|
GetNthFieldFromIniString = ""
|
|
GOTO _GNFFIS_END
|
|
END IF
|
|
szStart$ = MID$(szStart$, (iNew% + 1))
|
|
NEXT
|
|
END IF
|
|
|
|
iNew% = INSTR(szStart$, ",")
|
|
IF iNew% <> 0 THEN
|
|
szStart$ = MID$(szStart$, 1, (iNew% - 1))
|
|
END IF
|
|
|
|
GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
|
|
|
|
_GNFFIS_END:
|
|
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
|
|
GetWindowsMajorVersion = GetVersion() MOD 256
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
|
|
GetWindowsMinorVersion = GetVersion() / 256
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetWindowsMode STATIC AS INTEGER
|
|
GetWindowsMode = 0
|
|
longTmp& = GetWinFlags()
|
|
IF longTmp& AND WF_STANDARD THEN
|
|
GetWindowsMode = 1
|
|
ELSEIF longTmp& AND WF_ENHANCED THEN
|
|
GetWindowsMode = 2
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetWindowsDir STATIC AS STRING
|
|
szBuf$ = string$(256, 32)
|
|
cbBuf% = GetWindowsDirectory(szBuf$, 256)
|
|
|
|
IF cbBuf% = 0 THEN
|
|
GetWindowsDir = ""
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetWindowsDir", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
ELSE
|
|
IF cbBuf% > 255 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
szBuf$ = RTRIM$(szBuf$)
|
|
IF MID$(szBuf$, 1, 1) = "\" THEN
|
|
'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
|
|
szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
|
|
ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
|
|
szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
|
|
END IF
|
|
IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
|
|
szBuf$ = szBuf$ + "\"
|
|
END IF
|
|
GetWindowsDir = szBuf$
|
|
END IF
|
|
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetWindowsSysDir STATIC AS STRING
|
|
szBuf$ = string$(256, 32)
|
|
cbBuf% = GetSystemDirectory(szBuf$, 256)
|
|
|
|
IF cbBuf% = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "GetWindowsSysDir", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
ELSE
|
|
IF cbBuf% > 255 THEN
|
|
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
|
|
ERROR STFERR
|
|
END IF
|
|
szBuf$ = RTRIM$(szBuf$)
|
|
IF MID$(szBuf$, 1, 1) = "\" THEN
|
|
szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
|
|
ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
|
|
szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
|
|
END IF
|
|
IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
|
|
szBuf$ = szBuf$ + "\"
|
|
END IF
|
|
GetWindowsSysDir = szBuf$
|
|
END IF
|
|
|
|
szBuf$ = ""
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION IsWindowsShared STATIC AS INTEGER
|
|
szWin$ = UCASE$(GetWindowsDir())
|
|
szSys$ = UCASE$(GetWindowsSysDir())
|
|
|
|
IF len(szWin$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "IsWindowsShared", ""
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
|
|
IF len(szSys$) <= len(szWin$) THEN
|
|
IsWindowsShared = 1
|
|
ELSE
|
|
szSys$ = MID$(szSys$, 1, len(szWin$))
|
|
IF szWin$ = szSys$ THEN
|
|
IsWindowsShared = 0
|
|
ELSE
|
|
IsWindowsShared = 1
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetScreenWidth STATIC AS INTEGER
|
|
GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION GetScreenHeight STATIC AS INTEGER
|
|
GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB SetRestartDir (szDir$) STATIC
|
|
'$ifdef DEBUG
|
|
if FValidFATDir(szDir$) = 0 then
|
|
BadArgErr 1, "SetRestartDir", szDir$
|
|
end if
|
|
'$endif ''DEBUG
|
|
IF FSetRestartDir(szDir$) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "SetRestartDir", szDir$
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION RestartListEmpty STATIC AS INTEGER
|
|
IF FRestartListEmpty() = 0 THEN
|
|
RestartListEmpty = 0
|
|
ELSE
|
|
RestartListEmpty = 1
|
|
END IF
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
FUNCTION ExitExecRestart STATIC AS INTEGER
|
|
ExitExecRestart = FExitExecRestart
|
|
END FUNCTION
|
|
|
|
|
|
'*************************************************************************
|
|
SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
|
|
|
|
'$ifdef DEBUG
|
|
if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
|
|
n% = 1
|
|
elseif FValidFATPath(szDst$) = 0 then
|
|
n% = 2
|
|
elseif FValidFATDir(szDir$) = 0 then
|
|
n% = 3
|
|
else
|
|
n% = 0
|
|
end if
|
|
if n% > 0 then
|
|
BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
|
|
end if
|
|
'$endif ''DEBUG
|
|
|
|
IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
|
|
'$ifdef DEBUG
|
|
StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
|
|
'$endif ''DEBUG
|
|
ERROR STFERR
|
|
END IF
|
|
END SUB
|
|
|
|
|
|
|
|
'**************************************************************************
|
|
'*************************** Error Handlers *****************************
|
|
'**************************************************************************
|
|
|
|
|
|
'$ifdef DEBUG
|
|
'**************************************************************************
|
|
SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC ''DEBUG only
|
|
select case nMsg%
|
|
case saeFail
|
|
lpText$ = "Failed"
|
|
case saeInit
|
|
lpText$ = "Already Initialized"
|
|
case saeNYI
|
|
lpText$ = "NYI"
|
|
case else
|
|
lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
|
|
end select
|
|
|
|
lpText$ = lpText$ + ": "+ szApi$
|
|
if szArgs$ <> "" then
|
|
lpText$ = lpText + " (" + szArgs$ + ")"
|
|
end if
|
|
lpCaption$ = "MS-Setup Toolkit API Error"
|
|
res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
|
|
print lpText$
|
|
lpText$ = ""
|
|
lpCaption$ = ""
|
|
END SUB
|
|
|
|
'**************************************************************************
|
|
SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC ''DEBUG only
|
|
StfApiErr nArg%+saeArg, szApi$, szArgs$
|
|
ERROR STFERR
|
|
END SUB
|
|
|
|
|
|
'** REVIEW: Move this function into common lib (we'll need it there too)
|
|
'**************************************************************************
|
|
FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
|
|
if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
|
|
FValidInfSect = 0
|
|
else
|
|
FValidInfSect = 1
|
|
end if
|
|
END FUNCTION
|
|
|
|
|
|
'** REVIEW: Move this function into common lib (we'll need it there too)
|
|
'**************************************************************************
|
|
FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
|
|
if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
|
|
FValidIniFile = 0
|
|
else
|
|
FValidIniFile = 1
|
|
end if
|
|
END FUNCTION
|
|
|
|
'**************************************************************************
|
|
FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
|
|
|
|
if szDrive$ = "" then
|
|
FValidDrive = 0
|
|
elseif INSTR(1,szDrive$,"\\") = 1 then ' UNC path
|
|
FValidDrive = 1
|
|
elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
|
|
FValidDrive = 0
|
|
elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
|
|
FValidDrive = 0
|
|
elseif LEN(szDrive$) = 1 then
|
|
FValidDrive = 1
|
|
elseif INSTR(2,szDrive$,":\") = 2 then
|
|
FValidDrive = 1
|
|
elseif INSTR(1,szDrive$,":") = 2 then
|
|
FValidDrive = 1
|
|
else
|
|
FValidDrive = 0
|
|
end if
|
|
END FUNCTION
|
|
|
|
'$endif ''DEBUG
|
|
|
|
|
|
TRAP CleanupTrap From "MSSHLSTF.DLL"
|
|
|
|
End Trap
|
|
|
|
hSetup = InitSetup(COMMAND$)
|
|
|
|
ON ERROR GOTO QUIT
|
|
|