windows-nt/Source/XPSP1/NT/multimedia/directx/applicationmanager/scriptinterface/appentry.cpp
2020-09-26 16:20:57 +08:00

1215 lines
36 KiB
C++

//////////////////////////////////////////////////////////////////////////////////////////////
//
// AppEntry.cpp
//
// Copyright (C) 1998, 1999 Microsoft Corporation. All rights reserved.
//
// Abstract :
//
//
//////////////////////////////////////////////////////////////////////////////////////////////
#include <comdef.h>
#include "stdafx.h"
#include "AppManDispatch.h"
#include "AppEntry.h"
#include "AppMan.h"
#include "AppManAdmin.h"
#include "AppManDebug.h"
//To flag as DBG_APPMANDP
#ifdef DBG_MODULE
#undef DBG_MODULE
#endif
#define DBG_MODULE DBG_APPMANDP
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
#define JANUARY 1
#define FEBRUARY 2
#define MARCH 3
#define APRIL 4
#define MAY 5
#define JUNE 6
#define JULY 7
#define AUGUST 8
#define SEPTEMBER 9
#define OCTOBER 10
#define NOVEMBER 11
#define DECEMBER 12
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
void SystemTimeToDate(SYSTEMTIME * lpSystemTime, DATE * lpDate)
{
FUNCTION(" SystemTimeToDate()");
DOUBLE dDouble;
DWORD dwIndex;
//
// How many days have elapsed between 1900 and January 1 of this year.
//
dDouble = 1.0;
dwIndex = 1900;
while (dwIndex < lpSystemTime->wYear)
{
if (!(dwIndex % 4))
{
dDouble += 366.0;
}
else
{
dDouble += 365.0;
}
dwIndex++;
}
//
// Is this a bicentile year
//
if ((!(lpSystemTime->wYear % 4))&&(MARCH <= lpSystemTime->wMonth))
{
dDouble += 1.0;
}
//
// How many days have elapsed since the beginning of the year
//
switch(lpSystemTime->wMonth)
{
case 1
: dDouble += 0.0;
break;
case 2
: dDouble += 31.0;
break;
case 3
: dDouble += 59.0;
break;
case 4
: dDouble += 90.0;
break;
case 5
: dDouble += 120.0;
break;
case 6
: dDouble += 151.0;
break;
case 7
: dDouble += 181.0;
break;
case 8
: dDouble += 212.0;
break;
case 9
: dDouble += 243.0;
break;
case 10
: dDouble += 273.0;
break;
case 11
: dDouble += 304.0;
break;
case 12
: dDouble += 334.0;
break;
}
//
// How many days have elapsed since the beginning of the month
//
dDouble += ((DOUBLE)lpSystemTime->wDay) - 1.0;
//
// How many hours have elapsed since the beginning of the day
//
dDouble += ((DOUBLE) lpSystemTime->wHour) / 24;
//
// Save the dDouble value
//
*lpDate = dDouble;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
DWORD StrLen(LPCWSTR wszStr)
{
FUNCTION(" StrLen(LPCWSTR wszStr)");
DWORD dwIndex;
dwIndex = 0;
while (wszStr[dwIndex] != 0)
{
dwIndex++;
}
return dwIndex;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
DWORD StrLen(BSTR strStr)
{
FUNCTION(" StrLen(BSTR strStr)");
return SysStringLen(strStr);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
CAppEntry::CAppEntry(void)
{
DPFCONSTRUCTOR("CAppEntry()");
m_fInitialized = FALSE;
if (SUCCEEDED(CoInitialize(NULL)))
{
if (SUCCEEDED(CoCreateInstance(CLSID_ApplicationManager, NULL, CLSCTX_INPROC_SERVER, IID_ApplicationManager, (LPVOID *) &m_IApplicationManager)))
{
if (SUCCEEDED(m_IApplicationManager->CreateApplicationEntry(&m_IApplicationEntry)))
{
m_fInitialized = TRUE;
}
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
CAppEntry::~CAppEntry(void)
{
DPFDESTRUCTOR("~CAppEntry()");
m_IApplicationEntry->Release();
m_IApplicationManager->Release();
m_fInitialized = FALSE;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::SetPropertyGUID(DWORD dwProperty, BSTR strGuid)
{
FUNCTION("CAppEntry::SetPropertyGUID()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
GUID sGuid;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
hResult = CLSIDFromString(strGuid, &sGuid);
if (SUCCEEDED(hResult))
{
hResult = m_IApplicationEntry->SetProperty(dwProperty, &sGuid, sizeof(sGuid));
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::GetPropertyGUID(DWORD dwProperty, BSTR * lpstrGuid)
{
FUNCTION("CAppEntry::GetPropertyGUID()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
OLECHAR * lpszString;
GUID sGuid;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->GetProperty(dwProperty, &sGuid, sizeof(sGuid));
if (SUCCEEDED(hResult))
{
hResult = StringFromCLSID(sGuid, &lpszString);
if (SUCCEEDED(hResult))
{
*lpstrGuid = SysAllocString(lpszString);
CoTaskMemFree((LPVOID) lpszString);
//
// Make sure *lpstrGuid is not NULL
//
if (NULL == *lpstrGuid)
{
hResult = E_OUTOFMEMORY;
}
}
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::SetPropertyDWORD(DWORD dwProperty, long lDword)
{
FUNCTION("CAppEntry::SetPropertyDWORD()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->SetProperty(dwProperty, &lDword, sizeof(lDword));
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::GetPropertyDWORD(DWORD dwProperty, long * lplDword)
{
FUNCTION("CAppEntry::GetPropertyDWORD()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->GetProperty(dwProperty, lplDword, sizeof(long));
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::SetPropertyWSTR(DWORD dwProperty, BSTR strString)
{
FUNCTION("CAppEntry::SetPropertyWSTR()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->SetProperty(dwProperty | APP_PROPERTY_STR_UNICODE, strString, StrLen(strString) * 2);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::GetPropertyWSTR(DWORD dwProperty, BSTR * lpstrString)
{
FUNCTION("CAppEntry::GetPropertyWSTR()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
OLECHAR lpszString[MAX_PATH+1];
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
ZeroMemory(lpszString, sizeof(lpszString));
hResult = m_IApplicationEntry->GetProperty(dwProperty | APP_PROPERTY_STR_UNICODE, lpszString, sizeof(lpszString));
if (SUCCEEDED(hResult))
{
*lpstrString = SysAllocString(lpszString);
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_Guid(BSTR * lpstrGuid)
{
FUNCTION("CAppEntry::get_Guid()");
return GetPropertyGUID(APP_PROPERTY_GUID, lpstrGuid);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_Guid(BSTR strGuid)
{
FUNCTION("CAppEntry::put_Guid()");
return SetPropertyGUID(APP_PROPERTY_GUID, strGuid);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_CompanyName(BSTR * lpstrCompanyName)
{
FUNCTION("CAppEntry::get_CompanyName()");
return GetPropertyWSTR(APP_PROPERTY_COMPANYNAME, lpstrCompanyName);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_CompanyName(BSTR strCompanyName)
{
FUNCTION("CAppEntry::put_CompanyName()");
return SetPropertyWSTR(APP_PROPERTY_COMPANYNAME, strCompanyName);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_Signature(BSTR * lpstrSignature)
{
FUNCTION("CAppEntry::get_Signature()");
return GetPropertyWSTR(APP_PROPERTY_SIGNATURE, lpstrSignature);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_Signature(BSTR strSignature)
{
FUNCTION("CAppEntry::put_Signature()");
return SetPropertyWSTR(APP_PROPERTY_SIGNATURE, strSignature);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_VersionString(BSTR * lpstrVersionString)
{
FUNCTION("CAppEntry::get_VersionString()");
return GetPropertyWSTR(APP_PROPERTY_VERSIONSTRING, lpstrVersionString);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_VersionString(BSTR strVersionString)
{
FUNCTION("CAppEntry::put_VersionString()");
return SetPropertyWSTR(APP_PROPERTY_VERSIONSTRING, strVersionString);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_LastUsedDate(DATE * lpDate)
{
FUNCTION("CAppEntry::get_LastUsedDate()");
SYSTEMTIME sSystemTime;
HRESULT hResult;
hResult = m_IApplicationEntry->GetProperty(APP_PROPERTY_LASTUSEDDATE, &sSystemTime, sizeof(sSystemTime));
if (SUCCEEDED(hResult))
{
SystemTimeToDate(&sSystemTime, lpDate);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_InstallDate(DATE * lpDate)
{
FUNCTION("CAppEntry::get_InstallDate()");
SYSTEMTIME sSystemTime;
HRESULT hResult;
hResult = m_IApplicationEntry->GetProperty(APP_PROPERTY_INSTALLDATE, &sSystemTime, sizeof(sSystemTime));
if (SUCCEEDED(hResult))
{
SystemTimeToDate(&sSystemTime, lpDate);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_Category(long * lplCategory)
{
FUNCTION("CAppEntry::get_Category()");
return GetPropertyDWORD(APP_PROPERTY_CATEGORY, lplCategory);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_Category(long lCategory)
{
FUNCTION("CAppEntry::put_Category()");
return SetPropertyDWORD(APP_PROPERTY_CATEGORY, lCategory);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_State(long * lplState)
{
FUNCTION("CAppEntry::get_State()");
return GetPropertyDWORD(APP_PROPERTY_STATE, lplState);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_State(long lState)
{
FUNCTION("CAppEntry::put_State()");
return SetPropertyDWORD(APP_PROPERTY_STATE, lState);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_SetupRootPath(BSTR * lpstrSetupRootPath)
{
FUNCTION("CAppEntry::get_SetupRootPath()");
return GetPropertyWSTR(APP_PROPERTY_SETUPROOTPATH, lpstrSetupRootPath);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_ApplicationRootPath(BSTR * lpstrApplicationRootPath)
{
FUNCTION("CAppEntry::get_ApplicationRootPath()");
return GetPropertyWSTR(APP_PROPERTY_ROOTPATH, lpstrApplicationRootPath);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_ApplicationRootPath(BSTR strApplicationRootPath)
{
FUNCTION("CAppEntry::put_ApplicationRootPath()");
return SetPropertyWSTR(APP_PROPERTY_ROOTPATH, strApplicationRootPath);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_EstimatedInstallKilobytes(long * lplKilobytes)
{
FUNCTION("CAppEntry::get_EstimatedInstallKilobytes()");
return GetPropertyDWORD(APP_PROPERTY_ESTIMATEDINSTALLKILOBYTES, lplKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_EstimatedInstallKilobytes(long lKilobytes)
{
FUNCTION("CAppEntry::put_EstimatedInstallKilobytes()");
return SetPropertyDWORD(APP_PROPERTY_ESTIMATEDINSTALLKILOBYTES, lKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_ExecuteCmdLine(BSTR * lpstrExecuteCmdLine)
{
FUNCTION("CAppEntry::get_ExecuteCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_EXECUTECMDLINE, lpstrExecuteCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_ExecuteCmdLine(BSTR strExecuteCmdLine)
{
FUNCTION("CAppEntry::put_ExecuteCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_EXECUTECMDLINE, strExecuteCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_DefaultSetupExeCmdLine(BSTR * lpstrDefaultSetupExeCmdLine)
{
FUNCTION("CAppEntry::get_DefaultSetupExeCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_DEFAULTSETUPEXECMDLINE, lpstrDefaultSetupExeCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_DefaultSetupExeCmdLine(BSTR strDefaultSetupExeCmdLine)
{
FUNCTION("CAppEntry::put_DefaultSetupExeCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_DEFAULTSETUPEXECMDLINE, strDefaultSetupExeCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_DownsizeCmdLine(BSTR * lpstrDownsizeCmdLine)
{
FUNCTION("CAppEntry::get_DownsizeCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_DOWNSIZECMDLINE, lpstrDownsizeCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_DownsizeCmdLine(BSTR strDownsizeCmdLine)
{
FUNCTION("CAppEntry::put_DownsizeCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_DOWNSIZECMDLINE, strDownsizeCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_ReInstallCmdLine(BSTR * lpstrReInstallCmdLine)
{
FUNCTION("CAppEntry::get_ReInstallCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_REINSTALLCMDLINE, lpstrReInstallCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_ReInstallCmdLine(BSTR strReInstallCmdLine)
{
FUNCTION("CAppEntry::put_ReInstallCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_REINSTALLCMDLINE, strReInstallCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_UnInstallCmdLine(BSTR * lpstrUnInstallCmdLine)
{
FUNCTION("CAppEntry::get_UnInstallCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_UNINSTALLCMDLINE, lpstrUnInstallCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_UnInstallCmdLine(BSTR strUnInstallCmdLine)
{
FUNCTION("CAppEntry::put_UnInstallCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_UNINSTALLCMDLINE, strUnInstallCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_SelfTestCmdLine(BSTR * lpstrSelfTestCmdLine)
{
FUNCTION("CAppEntry::get_SelfTestCmdLine()");
return GetPropertyWSTR(APP_PROPERTY_SELFTESTCMDLINE, lpstrSelfTestCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_SelfTestCmdLine(BSTR strSelfTestCmdLine)
{
FUNCTION("CAppEntry::put_SelfTestCmdLine()");
return SetPropertyWSTR(APP_PROPERTY_SELFTESTCMDLINE, strSelfTestCmdLine);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_TitleURL(BSTR * lpstrTitleURL)
{
FUNCTION("CAppEntry::get_TitleURL()");
return GetPropertyWSTR(APP_PROPERTY_TITLEURL, lpstrTitleURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_TitleURL(BSTR strTitleURL)
{
FUNCTION("CAppEntry::put_TitleURL()");
return SetPropertyWSTR(APP_PROPERTY_TITLEURL, strTitleURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_DeveloperURL(BSTR * lpstrDeveloperURL)
{
FUNCTION("CAppEntry::get_DeveloperURL()");
return GetPropertyWSTR(APP_PROPERTY_DEVELOPERURL, lpstrDeveloperURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_DeveloperURL(BSTR strDeveloperURL)
{
FUNCTION("CAppEntry::put_DeveloperURL()");
return SetPropertyWSTR(APP_PROPERTY_DEVELOPERURL, strDeveloperURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_PublisherURL(BSTR * lpstrPublisherURL)
{
FUNCTION("CAppEntry::get_PublisherURL()");
return GetPropertyWSTR(APP_PROPERTY_PUBLISHERURL, lpstrPublisherURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_PublisherURL(BSTR strPublisherURL)
{
FUNCTION("CAppEntry::put_PublisherURL()");
return SetPropertyWSTR(APP_PROPERTY_PUBLISHERURL, strPublisherURL);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_XMLInfoFile(BSTR * lpstrXMLInfoFile)
{
FUNCTION("CAppEntry::get_XMLInfoFile()");
return GetPropertyWSTR(APP_PROPERTY_XMLINFOFILE, lpstrXMLInfoFile);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_XMLInfoFile(BSTR strXMLInfoFile)
{
FUNCTION("CAppEntry::put_XMLInfoFile()");
return SetPropertyWSTR(APP_PROPERTY_XMLINFOFILE, strXMLInfoFile);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::Clear()
{
FUNCTION("CAppEntry::Clear()");
return m_IApplicationEntry->Clear();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::InitializeInstall(void)
{
FUNCTION("CAppEntry::InitializeInstall()");
return m_IApplicationEntry->InitializeInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::FinalizeInstall(void)
{
FUNCTION("CAppEntry::FinalizeInstall()");
return m_IApplicationEntry->FinalizeInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::InitializeDownsize(void)
{
FUNCTION("CAppEntry::InitializeDownsize()");
return m_IApplicationEntry->InitializeDownsize();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::FinalizeDownsize(void)
{
FUNCTION("CAppEntry::FinalizeDownsize()");
return m_IApplicationEntry->FinalizeDownsize();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::InitializeReInstall(void)
{
FUNCTION("CAppEntry::InitializeReInstall()");
return m_IApplicationEntry->InitializeReInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::FinalizeReInstall(void)
{
FUNCTION("CAppEntry::FinalizeReInstall()");
return m_IApplicationEntry->FinalizeReInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::InitializeUnInstall(void)
{
FUNCTION("CAppEntry::InitializeUnInstall()");
return m_IApplicationEntry->InitializeUnInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::FinalizeUnInstall(void)
{
FUNCTION("CAppEntry::FinalizeUnUnInstall()");
return m_IApplicationEntry->FinalizeUnInstall();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::InitializeSelfTest(void)
{
FUNCTION("CAppEntry::InitializeSelfTest()");
return m_IApplicationEntry->InitializeSelfTest();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::FinalizeSelfTest(void)
{
FUNCTION("CAppEntry::FinalizeSelfTest()");
return m_IApplicationEntry->FinalizeSelfTest();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::Abort(void)
{
FUNCTION("CAppEntry::Abort()");
return m_IApplicationEntry->Abort();
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::Run(long lRunFlags, BSTR strCmdLineParameters)
{
FUNCTION("CAppEntry::Run()");
return m_IApplicationEntry->Run((const DWORD) lRunFlags, APP_PROPERTY_STR_UNICODE, (LPVOID) strCmdLineParameters, StrLen(strCmdLineParameters));
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::AddAssociation(long lAssociationType, IAppEntry * lpAppEntry)
{
FUNCTION("CAppEntry::AddAssociation()");
IApplicationEntry * lpApplicationEntry;
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
if (TRUE == m_fInitialized)
{
((CAppEntry *)lpAppEntry)->GetApplicationEntryPtr(&lpApplicationEntry);
hResult = m_IApplicationEntry->AddAssociation(lAssociationType, lpApplicationEntry);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::RemoveAssociation(long lAssociationType, IAppEntry * lpAppEntry)
{
FUNCTION("CAppEntry::RemoveAssociation()");
IApplicationEntry * lpApplicationEntry;
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
if (TRUE == m_fInitialized)
{
((CAppEntry *)lpAppEntry)->GetApplicationEntryPtr(&lpApplicationEntry);
hResult = m_IApplicationEntry->RemoveAssociation(lAssociationType, lpApplicationEntry);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::EnumAssociationTypes(long lAssociationIndex, long * lAssociationType)
{
FUNCTION("CAppEntry::EnumAssociationTypes()");
IApplicationEntry * lpApplicationEntry;
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationManager->CreateApplicationEntry(&lpApplicationEntry);
if (SUCCEEDED(hResult))
{
hResult = m_IApplicationEntry->EnumAssociations(lAssociationIndex, (LPDWORD) lAssociationType, lpApplicationEntry);
lpApplicationEntry->Release();
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::EnumAssociationObjects(long lAssociationIndex, IAppEntry * lpAppEntry)
{
FUNCTION("CAppEntry::EnumAssociationObjects()");
IApplicationEntry * lpApplicationEntry;
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
DWORD dwAssociationType;
if (TRUE == m_fInitialized)
{
((CAppEntry *)lpAppEntry)->GetApplicationEntryPtr(&lpApplicationEntry);
hResult = m_IApplicationEntry->EnumAssociations(lAssociationIndex, &dwAssociationType, lpApplicationEntry);
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::GetTemporarySpace(long lKilobytesRequired, BSTR * lpstrRootPath)
{
FUNCTION("CAppEntry::GetTemporarySpace()");
HRESULT hResult = E_FAIL;
OLECHAR szString[MAX_PATH+1];
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized)
{
ZeroMemory(szString, sizeof(szString));
hResult = m_IApplicationEntry->GetTemporarySpace(lKilobytesRequired, APP_PROPERTY_STR_UNICODE, (LPVOID) szString, sizeof(szString));
if (SUCCEEDED(hResult))
{
*lpstrRootPath = SysAllocString(szString);
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::RemoveTemporarySpace(BSTR strRootPath)
{
FUNCTION("CAppEntry::RemoveTemporarySpace()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->RemoveTemporarySpace(APP_PROPERTY_STR_UNICODE, (LPVOID) strRootPath, StrLen(strRootPath));
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::EnumTemporarySpacePaths(long lTempSpaceIndex, BSTR * lpstrRootPath)
{
FUNCTION("CAppEntry::EnumTemporarySpacePaths()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
OLECHAR szString[MAX_PATH+1];
DWORD dwKilobytes;
if (TRUE == m_fInitialized)
{
ZeroMemory(szString, sizeof(szString));
hResult = m_IApplicationEntry->EnumTemporarySpaces(lTempSpaceIndex, &dwKilobytes, APP_PROPERTY_STR_UNICODE, (LPVOID) szString, sizeof(szString));
if (SUCCEEDED(hResult))
{
*lpstrRootPath = SysAllocString(szString);
}
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::EnumTemporarySpaceAllocations(long lTempSpaceIndex, long * lTempSpaceKilobytes)
{
FUNCTION("CAppEntry::EnumTemporarySpaceAllocations()");
HRESULT hResult = APPMAN_E_NOTINITIALIZED;
OLECHAR szString[MAX_PATH+1];
if (TRUE == m_fInitialized)
{
hResult = m_IApplicationEntry->EnumTemporarySpaces(lTempSpaceIndex, (LPDWORD) lTempSpaceKilobytes, APP_PROPERTY_STR_UNICODE, (LPVOID) szString, sizeof(szString));
}
return hResult;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_RemovableKilobytes(long * lplKilobytes)
{
FUNCTION("CAppEntry::get_RemovableKilobytes()");
return GetPropertyDWORD(APP_PROPERTY_REMOVABLEKILOBYTES, lplKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_RemovableKilobytes(long lKilobytes)
{
FUNCTION("CAppEntry::put_RemovableKilobytes()");
return SetPropertyDWORD(APP_PROPERTY_REMOVABLEKILOBYTES, lKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::get_NonRemovableKilobytes(long * lplKilobytes)
{
FUNCTION("CAppEntry::get_NonRemovableKilobytes()");
return GetPropertyDWORD(APP_PROPERTY_NONREMOVABLEKILOBYTES, lplKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::put_NonRemovableKilobytes(long lKilobytes)
{
FUNCTION("CAppEntry::put_NonRemovableKilobytes()");
return SetPropertyDWORD(APP_PROPERTY_NONREMOVABLEKILOBYTES, lKilobytes);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::Initialize(void)
{
FUNCTION("CAppEntry::Initialize()");
if (m_fInitialized)
{
return S_OK;
}
return E_FAIL;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppEntry::GetApplicationEntryPtr(IApplicationEntry ** lppApplicationEntry)
{
FUNCTION("CAppEntry::GetApplicationEntryPtr()");
if (!m_fInitialized)
{
return E_FAIL;
}
*lppApplicationEntry = m_IApplicationEntry;
return S_OK;
}