Click to Rate and Give Feedback
MSDN
MSDN Library
Office Development
Outlook 2010
Concepts
 How to: Check the Version of Outloo...
Community Content
In this section
Statistics Annotations (0)
How to: Check the Version of Outlook

This documentation is preliminary and is subject to change.

This topic shows a code sample that checks version information of an installed version of Microsoft Outlook, if the installed version is Microsoft Outlook 2010, Microsoft Office Outlook 2007, or Microsoft Office Outlook 2003. Checking the version of Outlook is sometimes necessary to ensure that a MAPI application calls API elements that are supported by the currently running version of Outlook.

The following code sample, GetOutlookVersionString, obtains the full version string by using the MsiProvideQualifiedComponent and MsiGetFileVersion functions, as declared in the Msi.h file in the Microsoft Windows Software Development Kit (SDK). GetOutlookVersionString also returns a pointer to a Boolean variable that indicates whether a 64-bit version of Outlook is installed. For information about the expected values for the different parts of a version string for some released versions of Outlook, see How to determine Outlook version information.

C++
HRESULT GetOutlookVersionString(LPTSTR* ppszVer, BOOL* pf64Bit)
{
    HRESULT hr = E_FAIL;
    LPTSTR pszTempPath = NULL;
    LPTSTR pszTempVer = NULL;
    TCHAR pszaOutlookQualifiedComponents[][MAX_PATH] = {
        TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010
        TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007
        TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}")  // Outlook 2003
    };

    int nOutlookQualifiedComponents = sizeof(pszaOutlookQualifiedComponents)/sizeof(TCHAR*);
    int i = 0;
    DWORD dwValueBuf = 0;
    UINT ret = 0;

    *pf64Bit = FALSE;

    for (i = 0; i < nOutlookQualifiedComponents; i++)
    {
        ret = MsiProvideQualifiedComponent(
            pszaOutlookQualifiedComponents[i],
            TEXT("outlook.x64.exe"),
            (DWORD) INSTALLMODE_DEFAULT,
            NULL,
            &dwValueBuf);
        if (ERROR_SUCCESS == ret) break;
    }

    if (ret != ERROR_SUCCESS)
    {
        ret = MsiProvideQualifiedComponent(
            pszaOutlookQualifiedComponents[i],
            TEXT("outlook.exe"),
            (DWORD) INSTALLMODE_DEFAULT,
            NULL,
            &dwValueBuf);
    }
    else
    {
        *pf64Bit = TRUE;
    }

    if (ret == ERROR_SUCCESS)
    {
        dwValueBuf += 1;
        pszTempPath = (LPTSTR) malloc(dwValueBuf * sizeof(TCHAR));

        if (pszTempPath != NULL)
        {
            if ((ret = MsiProvideQualifiedComponent(
                pszaOutlookQualifiedComponents[i],
                TEXT("outlook.exe"),
                (DWORD) INSTALLMODE_EXISTING,
                pszTempPath,
                &dwValueBuf)) != ERROR_SUCCESS)
            {
                goto Error;
            }

            pszTempVer = (LPTSTR) malloc(MAX_PATH * sizeof(TCHAR));
            dwValueBuf = MAX_PATH;
            if ((ret = MsiGetFileVersion(pszTempPath,
                pszTempVer,
                &dwValueBuf,
                NULL,
                NULL))!= ERROR_SUCCESS)
            {
                goto Error;    
            }
            *ppszVer = pszTempVer;
            pszTempVer = NULL;
            hr = S_OK;
        }
    }

Error:
    free(pszTempVer);
    free(pszTempPath);
    return hr;
}

See Also

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2010 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker