#include "stdafx.h" #include "WizardSheet.h" #include "UIUtils.h" CPackageInfo::CPackageInfo( CWizardSheet* pTheSheet ) : m_pTheSheet( pTheSheet ) { m_strTitle.LoadString( IDS_TITLE_PKGINFO ); m_strSubTitle.LoadString( IDS_SUBTITLE_PKGINFO ); SetHeaderTitle( m_strTitle ); SetHeaderSubTitle( m_strSubTitle ); } BOOL CPackageInfo::OnSetActive() { CString strError; IImportPackagePtr spImport; ISiteInfoPtr spSite; CComBSTR bstrData; CString strEntry; strEntry.Format( IDS_PKGINFO_PKGNAME, m_pTheSheet->m_pageLoadPkg.m_strFilename ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); HRESULT hr = spImport.CreateInstance( CLSID_ImportPackage ); if ( FAILED( hr ) ) { strError.LoadString( IDS_E_NOENGINE ); } if ( SUCCEEDED( hr ) ) { CComBSTR bstrPkg( m_pTheSheet->m_pageLoadPkg.m_strFilename ); CComBSTR bstrPwd( m_pTheSheet->m_pageLoadPkg.m_strPassword ); if ( ( NULL == bstrPkg.m_str ) || ( NULL == bstrPwd.m_str ) ) { strError = L"Out of memory!"; } hr = spImport->LoadPackage( bstrPkg, bstrPwd ); } if ( SUCCEEDED( hr ) ) { SetDate( spImport ); SetMachine( spImport ); SetOS( spImport ); SetSiteName( spImport ); SetComment( spImport ); } if ( FAILED( hr ) ) { UIUtils::ShowCOMError( m_hWnd, IDS_E_LOAD_PKG, IDS_APPTITLE, hr ); SetWizardButtons( PSWIZB_BACK ); } // Allow the page to be displayd, becasue otherwise the sheet will display the next page return TRUE; } void CPackageInfo::SetDate( const IImportPackagePtr& spImport ) { DATE dtCreated = 0.0; _variant_t vntDateStr; CString strEntry; CString strData; strData.LoadString( IDS_PKGINFO_ERROR ); HRESULT hr = spImport->get_TimeCreated( &dtCreated ); if ( SUCCEEDED( hr ) ) { _variant_t vntDate( dtCreated ); V_VT( &vntDate ) = VT_DATE; hr = ::VariantChangeType( &vntDateStr, &vntDate, 0, VT_BSTR ); if ( SUCCEEDED( hr ) ) { strData = V_BSTR( &vntDateStr ); } } strEntry.Format( IDS_PKGINFO_PKGDATE, static_cast( strData ) ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); } void CPackageInfo::SetMachine( const IImportPackagePtr& spImport ) { CString strEntry; CComBSTR bstrData; CString strData; strData.LoadString( IDS_PKGINFO_ERROR ); HRESULT hr = spImport->get_SourceMachine( &bstrData ); if ( SUCCEEDED( hr ) ) { strData = bstrData; } strEntry.Format( IDS_PKGINFO_MACHINE, static_cast( strData ) ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); } void CPackageInfo::SetOS( const IImportPackagePtr& spImport ) { BYTE btMajor = 0; BYTE btMinor = 0; VARIANT_BOOL vbIsServer = VARIANT_FALSE; CString strEntry, strData; strData.LoadString( IDS_PKGINFO_ERROR ); HRESULT hr = spImport->GetSourceOSVer( &btMajor, &btMinor, &vbIsServer ); if ( SUCCEEDED( hr ) ) { WCHAR wszBuffer[ 1024 ] = L"Microsoft Windows "; switch ( btMajor ) { case 4: ::wcscat( wszBuffer, L"NT 4.0" ); if ( vbIsServer != VARIANT_FALSE ) { ::wcscat( wszBuffer, L" Server" ); } break; case 5: switch( btMinor ) { case 0: ::wcscat( wszBuffer, L"2000" ); if ( vbIsServer != VARIANT_FALSE ) { ::wcscat( wszBuffer, L" Server" ); } break; case 1: ::wcscat( wszBuffer, L"XP" ); break; case 2: ::wcscat( wszBuffer, L"Server 2003" ); break; }; break; } strData = wszBuffer; } strEntry.Format( IDS_PKGINFO_OS, static_cast( strData ) ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); } void CPackageInfo::SetSiteName( const IImportPackagePtr& spImport ) { CComBSTR bstr; ISiteInfoPtr spInfo; CString strData, strEntry; strData.LoadString( IDS_PKGINFO_ERROR ); HRESULT hr = spImport->GetSiteInfo( 0, &spInfo ); if ( SUCCEEDED( hr ) ) { hr = spInfo->get_DisplayName( &bstr ); } if ( SUCCEEDED( hr ) ) { strData = bstr; } strEntry.Format( IDS_PKGINFO_COMMENT, static_cast( strData ) ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); } void CPackageInfo::SetComment( const IImportPackagePtr& spImport ) { CComBSTR bstr; CString strData, strEntry; strData.LoadString( IDS_PKGINFO_ERROR ); HRESULT hr = spImport->get_Comment( &bstr ); if ( SUCCEEDED( hr ) ) { strData = bstr; } strEntry.Format( IDS_PKGINFO_COMMENT, static_cast( strData ) ); ListBox_InsertString( GetDlgItem( IDC_INFO ), -1, strEntry ); }