////////////////////////////////////////////////////////////////////////////////////////////// // // AppEntry.cpp // // Copyright (C) 1998, 1999 Microsoft Corporation. All rights reserved. // // Abstract : // // ////////////////////////////////////////////////////////////////////////////////////////////// #include #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; }