Metropoli BBS
VIEWER: uninstal.cmd MODE: TEXT (ASCII)
/*****************************************************************************
 * v2.50 : Taskbar program uninstall
 *
 * (c)Copyright 1995 Rick Yoder
 *****************************************************************************/
SIGNAL ON SYNTAX

CALL RxFuncAdd "SysLoadFuncs","REXXUTIL","SysLoadFuncs"
CALL SysLoadFuncs

SAY "Uninstalling Taskbar for OS/2 ..."
CALL DeleteObjects
EXIT

/*****************************************************************************
 * DeleteObjects    - procedure to delete existing Workplace Shell objects.
 *                    Terminates the install script if an error occurs.
 *****************************************************************************/
DeleteObjects: PROCEDURE

    CALL DeleteOldPgmObjects        /* destroy objects created by old versions */
    CALL DeregisterClass            /* deregister 'Taskbar' class if it exists */

    RETURN
/*****************************************************************************/

/*****************************************************************************
 * DeleteOldPgmObjects    - deletes objects created by prior versions
 *                          of Taskbar. Terminates the install script if
 *                          an error occurs.
 *****************************************************************************/
DeleteOldPgmObjects: PROCEDURE

    /* Destroy the old shadow object if it exists */
    result = SysIni( 'USER','PM_Workplace:Location','<Taskbar_RFY_Shadow>' )
    IF result \= 'ERROR:' THEN
        DO
            IF 0 = SysDestroyObject('<Taskbar_RFY_Shadow>') THEN
                DO
                    SAY 'Error destroying old shadow object.'
                    EXIT
                END
        END

    /* Destroy the old program object if it exists */
    result = SysIni( 'USER','PM_Workplace:Location','<Taskbar_RFY>' )
    IF result \= 'ERROR:' THEN
        DO
            IF 0 = SysDestroyObject('<Taskbar_RFY>') THEN
                DO
                    SAY 'Error destroying old program object.'
                    EXIT
                END
        END

    /* Destroy beta objects */
    result = SysIni( 'USER','PM_Workplace:Location','<TASKBAR_BETA>' )
    IF result \= 'ERROR:' THEN
        DO
            IF 0 = SysDestroyObject('<TASKBAR_BETA>') THEN
                DO
                    SAY 'Error destroying beta test object.'
                    EXIT
                END
        END

    RETURN
/*****************************************************************************/

/*****************************************************************************
 * DeregisterClass        - checks whether the Taskbar class is currently
 *                          registered with the Workplace Shell, and
 *                          deregisters it if it exists. Terminates the
 *                          install script if an error occurs.
 *****************************************************************************/
DeregisterClass: PROCEDURE

    CALL SysQueryClassList "list."
    DO i = 1 TO list.0
        PARSE VAR list.i ClassName DLLName
        IF ClassName = "Taskbar" THEN
            DO
                IF 0 = SysDeregisterObjectClass("Taskbar") THEN
                    DO
                        SAY "Error deregistering Taskbar object class."
                        EXIT
                    END
                RETURN
            END
    END

    RETURN
/*****************************************************************************/

/*****************************************************************************/
 * Standard REXX program error handlers
 *****************************************************************************/
SYNTAX:
    SAY 'REXX error' rc 'in line' sigl
    SAY "Instruction = "||SOURCELINE(sigl)
    EXIT
/*****************************************************************************/

[ RETURN TO DIRECTORY ]