'**************************************************************************
'*             Microsoft Systems Management Server Setup Script
'**************************************************************************

'$DEFINE DEBUG  ''Define for script development/debugging

'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'

''Dialog ID's
CONST WELCOME    = 100
CONST OPTIONS1   = 1000
CONST OPTIONS2   = 1100
CONST ASKQUIT    = 200
CONST READY      = 7300
CONST BADPATH    = 6400
CONST EXITSUCCESS = 700
CONST OVPATHERR  = 1300
CONST DATABASE   = 101

''Bitmap ID
CONST LOGO = 1

GLOBAL OVDEST$      ''Default destination directory.
GLOBAL SMSDEST$     ''Default SMS destination directory
GLOBAL DLLPATH$     ''Default ctl3d32.dll path
GLOBAL OVPATH$      ''OV runtime directory.
GLOBAL OVINIPATH$   ''XOVSRVR.INI path
GLOBAL CUIDLL$      ''User interface dialog DLL
GLOBAL SERVER$      ''SMS Server
GLOBAL SMSDB$       ''SMS Database
GLOBAL LOGIN$       ''SMS Login
GLOBAL PASSWORD$    ''SMS Password

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
''DECLARE FUNCTION OKtoCopy LIB "mscuistf.dll" (DIR$) AS INTEGER

INIT:
    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    SetBitmap CUIDLL$, LOGO
    SetTitle "HP OpenView / Microsoft SMS Integration Setup"

    CONFIRMITEMIN$  =  "ConfirmTextIn"  ''sets text in confirmdlg

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
    szInf$ = GetSymbolValue("STF_CWDDIR") + "setup.inf"
    END IF
    ReadInfFile szInf$

    OVDEST$ = "C:\OV"
    SMSDEST$ = "C:\SMS"
    
'$IFDEF DEBUG
    WinDrive$ = MID$(GetWindowsDir, 1, 1)
    IF IsDriveValid(WinDrive$) = 0 THEN
    i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
    GOTO QUIT
    END IF
'$ENDIF ''DEBUG

    '** Retrieve the path for OpenView runtime from WIN.INI
    '** Quit with an error message if it's not there.
    OVPATH$ = ""
    OVPATH$ = GetIniKeyString("WIN.INI", "OpenView", "OVPath")
    IF OVPATH$ = "" THEN
	sz$ = UIStartDlg(CUIDLL$, OVPATHERR, "FInfo0DlgProc", 0, "")
	UIPopAll
	END
    END IF

	OVDEST$ = OVPATH$

WELCOME:
    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
    IF sz$ = "CONTINUE" THEN
    UIPop 1
    ELSEIF sz$ = "EXIT" THEN
    GOSUB ASKQUIT
    GOTO WELCOME
    END IF
    GOTO GETPATH2

GETPATH1:
    SetSymbolValue "EditTextIn", OVDEST$
    SetSymbolValue "EditFocus", "END"

GETPATHL1:
    sz$ = UIStartDlg(CUIDLL$, OPTIONS1, "FEditDlgProc", 0, "")

    OVDEST$ = GetSymbolValue("EditTextOut")

    IF sz$ = "CONTINUE" THEN
    IF IsDirWritable(OVDEST$) = 0 THEN
	GOSUB BADPATH
	GOTO GETPATH1
    END IF
	UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETPATHL1
    ELSEIF sz$ = "EXIT" THEN
	GOSUB ASKQUIT
	GOTO GETPATH1
    ELSE
	UIPop 1
	GOTO WELCOME
    END IF

GETPATH2:
    SetSymbolValue "EditTextIn", SMSDEST$
    SetSymbolValue "EditFocus", "END"

GETPATHL2:
    sz$ = UIStartDlg(CUIDLL$, OPTIONS2, "FEditDlgProc", 0, "")

    SMSDEST$ = GetSymbolValue("EditTextOut")

    IF sz$ = "CONTINUE" THEN
    IF IsDirWritable(SMSDEST$) = 0 THEN
	GOSUB BADPATH
	GOTO GETPATH2
    END IF
	UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
	GOTO GETPATHL2
    ELSEIF sz$ = "EXIT" THEN
	GOSUB ASKQUIT
	GOTO GETPATH2
    ELSE
	UIPop 1
	GOTO WELCOME
    END IF

    SMSDEST$ = SMSDEST$ + "\SITE.SRV\X86.BIN"
    WINPATH$ = GetWindowsDir()
    DLLPATH$ = WINPATH$ + "system32"
  
'*********************************************************************
'** OK, we're ready.  Let's do the installation.
'*********************************************************************
    Install

GETSMSDB:
    SetSymbolValue "EditTextIn", ""
    sz$ = UIStartDlg(CUIDLL$, DATABASE, "FEdit4DlgProc", 0, "")

    SERVER$ = GetSymbolValue("EditTextOut")
    SMSDB$ = GetSymbolValue("Edit2TextOut")
    LOGIN$ = GetSymbolValue("Edit3TextOut")
    PASSWORD$ = GetSymbolValue("Edit4TextOut")

    IF sz$ = "EXIT" THEN
	GOSUB ASKQUIT
	GOTO GETSMSDB
    ELSE
	UIPop 1
'	i% = DoMsgBox(SERVER$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'	i% = DoMsgBox(SMSDB$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'	i% = DoMsgBox(LOGIN$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'	i% = DoMsgBox(PASSWORD$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
    END IF

QUIT:
    ON ERROR GOTO ERRQUIT

    IF ERR = 0 THEN
	dlg% = EXITSUCCESS
    ELSEIF ERR = STFQUIT THEN
	dlg% = EXITQUIT
    ELSE
	dlg% = EXITFAILURE
    END IF

QUITL1:
    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
	GOTO QUITL1
    END IF
    UIPop 1

    END

ERRQUIT:
    i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
    END

ASKQUIT:
    sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")

    IF sz$ = "CONTINUE" THEN
    UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
    GOTO ASKQUIT
    ELSE
    UIPopAll
    END
    END IF
    RETURN

SUB Install STATIC

    SrcDir$ = GetSymbolValue("STF_SRCDIR")

    AddSectionFilesToCopyList "OV", SrcDir$, OVDEST$
    AddSectionFilesToCopyList "SMS", SrcDir$, SMSDEST$

   '' ok = OKtoCopy(WinDrive$)
   '' IF ok = 1 THEN
	AddSectionFilesToCopyList "SYSTEM32", SrcDir$, DLLPATH$
   '' END IF

    CopyFilesInCopyList

    OVINIPATH$ = OVDEST$ + "\XOVSRVR.INI"

    CreateIniKeyValue OVINIPATH$, "Programs", "OVSMS", MakePath(OVDEST$, "OVSMS.EXE, 1"), cmoOverwrite
    CreateIniKeyValue OVINIPATH$, "MenuIDs", "OVSMS", MakePath("", "&SMS,OV_IDMMONITOR,Microsoft Systems Management Server."), cmoOverwrite
    CreateIniKeyValue OVINIPATH$, "CommandIDs", "OVSMSPROP", MakePath("", "&Properties...,OVSMS,0x101,OVM_ENABLED,OVSMS,,Show SMS Machine Properties for selected objects."), cmoOverwrite
    CreateIniKeyValue OVINIPATH$, "CommandIDs", "OVSMSRUN", MakePath("", "&Run SMS,OVSMS,0x102,OVM_ENABLED,OVSMS,,Run Microsoft Systems Management Server."), cmoOverwrite
    CreateIniKeyValue OVINIPATH$, "Objects", "SYM_PC", MakePath("", "OVSMS"), cmoOverwrite
    CreateIniKeyValue OVINIPATH$, "Objects", "SYM_FSERVER", MakePath("", "OVSMS"), cmoOverwrite

END SUB


'** MakePath()
'**
'** Purpose:
'**     Appends a file name to the end of a directory path,
'**     inserting a backslash character as needed.
'** Arguments:
'**     szDir$  - full directory path (with optional ending "\")
'**     szFile$ - filename to append to directory
'** Returns:
'**     Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
    IF szDir$ = "" THEN
    MakePath = szFile$
    ELSEIF szFile$ = "" THEN
    MakePath = szDir$
    ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
    MakePath = szDir$ + szFile$
    ELSE
    MakePath = szDir$ + "\" + szFile$
    END IF
END FUNCTION

BADPATH:
    sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
	GOTO BADPATH
    END IF
    UIPop 1
    RETURN

