1686 lines
62 KiB
C++
1686 lines
62 KiB
C++
|
#include "stdafx.h"
|
|||
|
#include "log.h"
|
|||
|
#include "browsedi.h"
|
|||
|
#include "dllmain.h"
|
|||
|
#include "ocpages.h"
|
|||
|
#pragma hdrstop
|
|||
|
|
|||
|
|
|||
|
#ifndef ENABLE_OC_PAGES
|
|||
|
// there are no globals here
|
|||
|
#else
|
|||
|
// OcManage globals
|
|||
|
extern OCMANAGER_ROUTINES gHelperRoutines;
|
|||
|
|
|||
|
// Globals for us
|
|||
|
HWND g_hParentSheet = NULL;
|
|||
|
BOOL g_bFTP, g_bWWW;
|
|||
|
HWND g_hFTPEdit, g_hWWWEdit;
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#ifndef ENABLE_OC_PAGES //ENABLE_OC_PAGES
|
|||
|
|
|||
|
DWORD_PTR OC_REQUEST_PAGES_Func(IN LPCTSTR ComponentId,IN LPCTSTR SubcomponentId,IN UINT Function,IN UINT_PTR Param1,IN OUT PVOID Param2)
|
|||
|
{
|
|||
|
DWORD_PTR dwOcEntryReturn = 0;
|
|||
|
|
|||
|
WizardPagesType PageType;
|
|||
|
PSETUP_REQUEST_PAGES pSetupRequestPages = NULL;
|
|||
|
UINT MaxPages;
|
|||
|
HPROPSHEETPAGE pPage;
|
|||
|
|
|||
|
PageType = (WizardPagesType)Param1;
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
|
|||
|
//OC_REQUEST_PAGES_Func_Exit:
|
|||
|
TCHAR szPageType_Desc[30] = _T("");
|
|||
|
if (PageType == 0) {_tcscpy(szPageType_Desc, _T("WizPagesWelcome"));}
|
|||
|
if (PageType == 1) {_tcscpy(szPageType_Desc, _T("WizPagesMode"));}
|
|||
|
if (PageType == 2) {_tcscpy(szPageType_Desc, _T("WizPagesEarly"));}
|
|||
|
if (PageType == 3) {_tcscpy(szPageType_Desc, _T("WizPagesPrenet"));}
|
|||
|
if (PageType == 4) {_tcscpy(szPageType_Desc, _T("WizPagesPostnet"));}
|
|||
|
if (PageType == 5) {_tcscpy(szPageType_Desc, _T("WizPagesLate"));}
|
|||
|
if (PageType == 6) {_tcscpy(szPageType_Desc, _T("WizPagesFinal"));}
|
|||
|
if (PageType == 7) {_tcscpy(szPageType_Desc, _T("WizPagesTypeMax"));}
|
|||
|
|
|||
|
iisDebugOut((LOG_TYPE_PROGRAM_FLOW, _T("[%s,%s] End. PageType=%d (%s) Return=%d RegisteredPages\n"), ComponentId, SubcomponentId, PageType, szPageType_Desc, dwOcEntryReturn));
|
|||
|
return dwOcEntryReturn;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#else //ENABLE_OC_PAGES
|
|||
|
|
|||
|
DWORD_PTR OC_REQUEST_PAGES_Func(IN LPCTSTR ComponentId,IN LPCTSTR SubcomponentId,IN UINT Function,IN UINT_PTR Param1,IN OUT PVOID Param2)
|
|||
|
{
|
|||
|
DWORD_PTR dwOcEntryReturn = 0;
|
|||
|
|
|||
|
WizardPagesType PageType;
|
|||
|
PSETUP_REQUEST_PAGES pSetupRequestPages = NULL;
|
|||
|
UINT MaxPages;
|
|||
|
HPROPSHEETPAGE pPage;
|
|||
|
|
|||
|
PageType = (WizardPagesType)Param1;
|
|||
|
|
|||
|
if ( PageType == WizPagesWelcome )
|
|||
|
{
|
|||
|
// No Welcome page if installing on NT5
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
//OC_REQUEST_PAGES_Func_Exit:
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pSetupRequestPages = (PSETUP_REQUEST_PAGES)Param2;
|
|||
|
MaxPages = pSetupRequestPages->MaxPages;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_WELCOME, pWelcomePageDlgProc);
|
|||
|
pSetupRequestPages->MaxPages = 1;
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
dwOcEntryReturn = 1;
|
|||
|
}
|
|||
|
goto OC_REQUEST_PAGES_Func_Exit;
|
|||
|
}
|
|||
|
|
|||
|
if ( PageType == WizPagesMode )
|
|||
|
{
|
|||
|
pSetupRequestPages = (PSETUP_REQUEST_PAGES)Param2;
|
|||
|
MaxPages = pSetupRequestPages->MaxPages;
|
|||
|
switch (g_pTheApp->m_eInstallMode)
|
|||
|
{
|
|||
|
case IM_UPGRADE:
|
|||
|
// No Eula page if installing on NT5
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
// Don't show any pages
|
|||
|
g_pTheApp->m_fEULA = TRUE;
|
|||
|
// Set to upgrade only -- (not upgrade and add extra components afterwards)
|
|||
|
//SetIISSetupMode(SETUPMODE_UPGRADEONLY);
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
pSetupRequestPages->MaxPages = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_EULA, pEULAPageDlgProc);
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_MODE_UPGRADE, pUpgradePageDlgProc);
|
|||
|
pSetupRequestPages->Pages[1] = pPage;
|
|||
|
pSetupRequestPages->MaxPages = 2;
|
|||
|
dwOcEntryReturn = pSetupRequestPages->MaxPages;
|
|||
|
}
|
|||
|
break;
|
|||
|
case IM_MAINTENANCE:
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
// Don't show any pages
|
|||
|
g_pTheApp->m_bRefreshSettings = TRUE;
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
pSetupRequestPages->MaxPages = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_MODE_MAINTENANCE, pMaintenancePageDlgProc);
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_SRC_PATH, pSrcPathPageDlgProc);
|
|||
|
pSetupRequestPages->Pages[1] = pPage;
|
|||
|
pSetupRequestPages->MaxPages = 2;
|
|||
|
dwOcEntryReturn = pSetupRequestPages->MaxPages;
|
|||
|
}
|
|||
|
break;
|
|||
|
case IM_FRESH:
|
|||
|
// No Eula page if installing on NT5
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
// Don't show any pages
|
|||
|
// just proceed with installation
|
|||
|
g_pTheApp->m_fEULA = TRUE;
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
pSetupRequestPages->MaxPages = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_EULA, pEULAPageDlgProc);
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_MODE_FRESH, pFreshPageDlgProc);
|
|||
|
pSetupRequestPages->Pages[1] = pPage;
|
|||
|
pSetupRequestPages->MaxPages = 2;
|
|||
|
dwOcEntryReturn = pSetupRequestPages->MaxPages;
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
iisDebugOut((LOG_TYPE_TRACE, _T("Should never reach this branch: IM_DEGRADE.\n")));
|
|||
|
pSetupRequestPages->MaxPages = 0;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
dwOcEntryReturn = pSetupRequestPages->MaxPages;
|
|||
|
goto OC_REQUEST_PAGES_Func_Exit;
|
|||
|
}
|
|||
|
|
|||
|
if ( PageType == WizPagesEarly )
|
|||
|
{
|
|||
|
pSetupRequestPages = (PSETUP_REQUEST_PAGES)Param2;
|
|||
|
MaxPages = pSetupRequestPages->MaxPages;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_PUBLISH_DIR, pEarlyPageDlgProc);
|
|||
|
pSetupRequestPages->MaxPages = 1;
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
dwOcEntryReturn = 1;
|
|||
|
goto OC_REQUEST_PAGES_Func_Exit;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if ( PageType == WizPagesFinal )
|
|||
|
{
|
|||
|
// No Final page if invoked by NT
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
pSetupRequestPages = (PSETUP_REQUEST_PAGES)Param2;
|
|||
|
// Don't show any pages just proceed with installation
|
|||
|
dwOcEntryReturn = 0;
|
|||
|
pSetupRequestPages->MaxPages = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pSetupRequestPages = (PSETUP_REQUEST_PAGES)Param2;
|
|||
|
MaxPages = pSetupRequestPages->MaxPages;
|
|||
|
pPage = CreatePage(IDD_PROPPAGE_END, pEndPageDlgProc);
|
|||
|
pSetupRequestPages->MaxPages = 1;
|
|||
|
pSetupRequestPages->Pages[0] = pPage;
|
|||
|
dwOcEntryReturn = 1;
|
|||
|
}
|
|||
|
goto OC_REQUEST_PAGES_Func_Exit;
|
|||
|
}
|
|||
|
|
|||
|
OC_REQUEST_PAGES_Func_Exit:
|
|||
|
TCHAR szPageType_Desc[30] = _T("");
|
|||
|
if (PageType == 0) {_tcscpy(szPageType_Desc, _T("WizPagesWelcome"));}
|
|||
|
if (PageType == 1) {_tcscpy(szPageType_Desc, _T("WizPagesMode"));}
|
|||
|
if (PageType == 2) {_tcscpy(szPageType_Desc, _T("WizPagesEarly"));}
|
|||
|
if (PageType == 3) {_tcscpy(szPageType_Desc, _T("WizPagesPrenet"));}
|
|||
|
if (PageType == 4) {_tcscpy(szPageType_Desc, _T("WizPagesPostnet"));}
|
|||
|
if (PageType == 5) {_tcscpy(szPageType_Desc, _T("WizPagesLate"));}
|
|||
|
if (PageType == 6) {_tcscpy(szPageType_Desc, _T("WizPagesFinal"));}
|
|||
|
if (PageType == 7) {_tcscpy(szPageType_Desc, _T("WizPagesTypeMax"));}
|
|||
|
|
|||
|
iisDebugOut((LOG_TYPE_PROGRAM_FLOW, _T("[%s,%s] End. PageType=%d (%s) Return=%d RegisteredPages\n"), ComponentId, SubcomponentId, PageType, szPageType_Desc, dwOcEntryReturn));
|
|||
|
return dwOcEntryReturn;
|
|||
|
}
|
|||
|
|
|||
|
HPROPSHEETPAGE CreatePage(int nID, DLGPROC pDlgProc)
|
|||
|
{
|
|||
|
PROPSHEETPAGE Page;
|
|||
|
HPROPSHEETPAGE PageHandle = NULL;
|
|||
|
|
|||
|
Page.dwSize = sizeof(PROPSHEETPAGE);
|
|||
|
Page.dwFlags = PSP_DEFAULT;
|
|||
|
Page.hInstance = (HINSTANCE)g_MyModuleHandle;
|
|||
|
Page.pszTemplate = MAKEINTRESOURCE(nID);
|
|||
|
Page.pfnDlgProc = pDlgProc;
|
|||
|
|
|||
|
iisDebugOut_Start(_T("comdlg32:CreatePropertySheetPage()"));
|
|||
|
PageHandle = CreatePropertySheetPage(&Page);
|
|||
|
iisDebugOut_End(_T("comdlg32:CreatePropertySheetPage()"));
|
|||
|
|
|||
|
return(PageHandle);
|
|||
|
}
|
|||
|
|
|||
|
HPALETTE CreateDIBPalette (LPBITMAPINFO lpbmi, LPINT lpiNumColors)
|
|||
|
{
|
|||
|
LPBITMAPINFOHEADER lpbi;
|
|||
|
LPLOGPALETTE lpPal;
|
|||
|
HANDLE hLogPal = NULL;
|
|||
|
HPALETTE hPal = NULL;
|
|||
|
int i;
|
|||
|
|
|||
|
lpbi = (LPBITMAPINFOHEADER)lpbmi;
|
|||
|
if (lpbi->biBitCount <= 8)
|
|||
|
{*lpiNumColors = (1 << lpbi->biBitCount);}
|
|||
|
else
|
|||
|
{*lpiNumColors = 0;} // No palette needed for 24 BPP DIB
|
|||
|
|
|||
|
if (lpbi->biClrUsed > 0)
|
|||
|
{*lpiNumColors = lpbi->biClrUsed;} // Use biClrUsed
|
|||
|
|
|||
|
if (*lpiNumColors)
|
|||
|
{
|
|||
|
hLogPal = GlobalAlloc (GHND, sizeof (LOGPALETTE) + sizeof (PALETTEENTRY) * (*lpiNumColors));
|
|||
|
if (hLogPal)
|
|||
|
{
|
|||
|
lpPal = (LPLOGPALETTE) GlobalLock (hLogPal);
|
|||
|
lpPal->palVersion = 0x300;
|
|||
|
lpPal->palNumEntries = (WORD)*lpiNumColors;
|
|||
|
|
|||
|
for (i = 0; i < *lpiNumColors; i++)
|
|||
|
{
|
|||
|
lpPal->palPalEntry[i].peRed = lpbmi->bmiColors[i].rgbRed;
|
|||
|
lpPal->palPalEntry[i].peGreen = lpbmi->bmiColors[i].rgbGreen;
|
|||
|
lpPal->palPalEntry[i].peBlue = lpbmi->bmiColors[i].rgbBlue;
|
|||
|
lpPal->palPalEntry[i].peFlags = 0;
|
|||
|
}
|
|||
|
hPal = CreatePalette (lpPal);
|
|||
|
GlobalUnlock (hLogPal);
|
|||
|
GlobalFree (hLogPal);
|
|||
|
}
|
|||
|
}
|
|||
|
return hPal;
|
|||
|
}
|
|||
|
|
|||
|
HBITMAP LoadResourceBitmap(HINSTANCE hInstance, LPCTSTR lpString, HPALETTE FAR* lphPalette)
|
|||
|
{
|
|||
|
HRSRC hRsrc = NULL;
|
|||
|
HGLOBAL hGlobal = NULL;
|
|||
|
HBITMAP hBitmapFinal = NULL;
|
|||
|
LPBITMAPINFOHEADER lpbi = NULL;
|
|||
|
HDC hdc;
|
|||
|
int iNumColors;
|
|||
|
|
|||
|
if (hRsrc = FindResource(hInstance, lpString, RT_BITMAP))
|
|||
|
{
|
|||
|
hGlobal = LoadResource(hInstance, hRsrc);
|
|||
|
if (hGlobal)
|
|||
|
{
|
|||
|
lpbi = (LPBITMAPINFOHEADER)LockResource(hGlobal);
|
|||
|
if (lpbi)
|
|||
|
{
|
|||
|
hdc = GetDC(NULL);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
*lphPalette = CreateDIBPalette ((LPBITMAPINFO)lpbi, &iNumColors);
|
|||
|
if (*lphPalette)
|
|||
|
{
|
|||
|
SelectPalette(hdc,*lphPalette,FALSE);
|
|||
|
RealizePalette(hdc);
|
|||
|
}
|
|||
|
|
|||
|
hBitmapFinal = CreateDIBitmap(hdc,(LPBITMAPINFOHEADER)lpbi,(LONG)CBM_INIT,(LPSTR)lpbi + lpbi->biSize + iNumColors * sizeof(RGBQUAD),(LPBITMAPINFO)lpbi,DIB_RGB_COLORS );
|
|||
|
ReleaseDC(NULL,hdc);
|
|||
|
}
|
|||
|
UnlockResource(hGlobal);
|
|||
|
}
|
|||
|
FreeResource(hGlobal);
|
|||
|
}
|
|||
|
}
|
|||
|
return (hBitmapFinal);
|
|||
|
}
|
|||
|
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
void PaintTextInRect( HDC hdc, LPCTSTR psz, RECT* pRect, COLORREF color,LONG lfHeight, LONG lfWeight, BYTE lfPitchAndFamily )
|
|||
|
{
|
|||
|
HFONT hfontOld = NULL;
|
|||
|
|
|||
|
// create the font we will use for this
|
|||
|
HFONT hfontDraw = CreateFont(
|
|||
|
lfHeight, // logical height of font
|
|||
|
0, // logical average character width
|
|||
|
0, // angle of escapement
|
|||
|
0, // base-line orientation angle
|
|||
|
lfWeight, // font weight
|
|||
|
FALSE, // italic attribute flag
|
|||
|
FALSE, // underline attribute flag
|
|||
|
FALSE, // strikeout attribute flag
|
|||
|
DEFAULT_CHARSET, // character set identifier
|
|||
|
OUT_DEFAULT_PRECIS, // output precision
|
|||
|
CLIP_DEFAULT_PRECIS,// clipping precision
|
|||
|
DEFAULT_QUALITY, // output quality
|
|||
|
lfPitchAndFamily, // pitch and family
|
|||
|
NULL // pointer to typeface name string
|
|||
|
);
|
|||
|
|
|||
|
if (hfontDraw)
|
|||
|
{
|
|||
|
// set the font into place
|
|||
|
hfontOld = (HFONT)SelectObject( hdc, hfontDraw );
|
|||
|
}
|
|||
|
|
|||
|
// prevent the character box from being erased
|
|||
|
int oldBkMode = SetBkMode(hdc, TRANSPARENT);
|
|||
|
|
|||
|
// set the text color
|
|||
|
COLORREF oldTextColor = SetTextColor( hdc, color );
|
|||
|
|
|||
|
// draw the text
|
|||
|
DrawText(
|
|||
|
hdc, // handle to device context
|
|||
|
psz, // pointer to string to draw
|
|||
|
-1, // string length, in characters
|
|||
|
pRect, // pointer to structure with formatting dimensions
|
|||
|
DT_LEFT|DT_TOP // text-drawing flags
|
|||
|
);
|
|||
|
|
|||
|
// restore hdc settings
|
|||
|
SetBkMode( hdc, oldBkMode );
|
|||
|
SetTextColor( hdc, oldTextColor );
|
|||
|
if (hfontDraw)
|
|||
|
{
|
|||
|
SelectObject( hdc, hfontOld );
|
|||
|
// clean up the font
|
|||
|
DeleteObject( hfontDraw );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//----------------------------------------------------------------------------
|
|||
|
// this routine gets the rect from the frame and calls PaintTextInRect
|
|||
|
void PaintTextInFrame( HDC hdc, LPCTSTR psz, HWND hDlg, UINT nID, COLORREF color,LONG lfHeight, LONG lfWeight, BYTE lfPitchAndFamily )
|
|||
|
{
|
|||
|
RECT rect;
|
|||
|
GetWindowRect( GetDlgItem(hDlg, nID), &rect );
|
|||
|
MapWindowPoints( HWND_DESKTOP, hDlg, (LPPOINT)&rect, 2 );
|
|||
|
PaintTextInRect( hdc, psz, &rect, color, lfHeight, lfWeight, lfPitchAndFamily );
|
|||
|
}
|
|||
|
|
|||
|
void OnPaintBitmap(HWND hdlg, HDC hdc, int n, RECT *hRect)
|
|||
|
{
|
|||
|
HBITMAP hBitmap,hOldBitmap;
|
|||
|
HPALETTE hPalette;
|
|||
|
HDC hMemDC;
|
|||
|
BITMAP bm;
|
|||
|
int nID;
|
|||
|
|
|||
|
// n:
|
|||
|
// 0 = welcome page
|
|||
|
// 1 = all other pages
|
|||
|
// 2 = IIS "input path's page"
|
|||
|
|
|||
|
// Load the bitmap resource
|
|||
|
/*
|
|||
|
if (n == 0){nID = IDB_WELCOMES;}
|
|||
|
else{nID = IDB_BANNERS;}
|
|||
|
hBitmap = LoadResourceBitmap(g_MyModuleHandle, MAKEINTRESOURCE(nID), &hPalette);
|
|||
|
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
|
|||
|
hMemDC = CreateCompatibleDC(hdc);
|
|||
|
SelectPalette(hdc,hPalette,FALSE);
|
|||
|
RealizePalette(hdc);
|
|||
|
SelectPalette(hMemDC,hPalette,FALSE);
|
|||
|
RealizePalette(hMemDC);
|
|||
|
hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);
|
|||
|
StretchBlt( hdc, 0, 0, hRect->right, hRect->bottom, hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY );
|
|||
|
DeleteObject(SelectObject(hMemDC,hOldBitmap));
|
|||
|
DeleteDC(hMemDC);
|
|||
|
DeleteObject(hPalette);
|
|||
|
*/
|
|||
|
CString csMS, csTitle;
|
|||
|
|
|||
|
if (n==0)
|
|||
|
{
|
|||
|
if (g_pTheApp->m_eOS == OS_W95)
|
|||
|
{
|
|||
|
// On the welcome page, show "Microsoft(R)"
|
|||
|
MyLoadString(IDS_BITMAP_MS_TRADEMARK_OTHER, csMS);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// On the welcome page, show "Microsoft<66>"
|
|||
|
MyLoadString(IDS_BITMAP_MS_TRADEMARK, csMS);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// no trademark on other pages
|
|||
|
MyLoadString(IDS_BITMAP_MS, csMS);
|
|||
|
}
|
|||
|
|
|||
|
// If were on the (2 = IIS "input path's page") then
|
|||
|
// make sure the banner is says "IIS", or "PWS" not "NT Option Pack"
|
|||
|
if (n==2)
|
|||
|
{
|
|||
|
MyLoadString(IDS_BITMAP_TITLE, csTitle);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (g_pTheApp->m_eNTOSType == OT_NTW)
|
|||
|
{
|
|||
|
if (n == 0)
|
|||
|
{
|
|||
|
// on the welcome page make sure to show the "NT(R)" one
|
|||
|
// Only applies to NT and should only be shown the first time you see "NT".
|
|||
|
MyLoadString(IDS_BITMAP_TITLE_TRADEMARK, csTitle);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MyLoadString(IDS_BITMAP_TITLE, csTitle);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (n == 0)
|
|||
|
{
|
|||
|
// on the welcome page make sure to show the "NT(R)" one
|
|||
|
// Only applies to NT and should only be shown the first time you see "NT".
|
|||
|
MyLoadString(IDS_BITMAP_TITLE_TRADEMARK, csTitle);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MyLoadString(IDS_BITMAP_TITLE, csTitle);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (n==0)
|
|||
|
{
|
|||
|
// On the welcome page
|
|||
|
CString csIntro, csFeature;
|
|||
|
if (g_pTheApp->m_eOS == OS_W95)
|
|||
|
{
|
|||
|
MyLoadString(IDS_WELCOMEC_INTRO, csIntro);
|
|||
|
MyLoadString(IDS_WELCOMEC_FEATURE, csFeature);
|
|||
|
}
|
|||
|
else if (g_pTheApp->m_eNTOSType == OT_NTW)
|
|||
|
{
|
|||
|
MyLoadString(IDS_WELCOMEW_INTRO, csIntro);
|
|||
|
MyLoadString(IDS_WELCOMEW_FEATURE, csFeature);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MyLoadString(IDS_WELCOMES_INTRO, csIntro);
|
|||
|
MyLoadString(IDS_WELCOMES_FEATURE, csFeature);
|
|||
|
}
|
|||
|
PaintTextInFrame(hdc, csMS, hdlg, IDC_FRAME_WELCOME_MS, 0x0, 16, FW_NORMAL, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
PaintTextInFrame(hdc, csTitle, hdlg, IDC_FRAME_WELCOME_TITLE, 0x0, 24, FW_HEAVY, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
PaintTextInFrame(hdc, csIntro, hdlg, IDC_FRAME_WELCOME_INTRO, 0x0, 14, FW_NORMAL, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
PaintTextInFrame(hdc, csFeature, hdlg, IDC_FRAME_WELCOME_FEATURE, 0x0, 14, FW_NORMAL, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PaintTextInFrame(hdc, csMS, hdlg, IDC_FRAME_BANNER_MS, 0x0, 16, FW_NORMAL, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
PaintTextInFrame(hdc, csTitle, hdlg, IDC_FRAME_BANNER_TITLE, 0x0, 24, FW_HEAVY, DEFAULT_PITCH | FF_DONTCARE);
|
|||
|
}
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
INT_PTR CALLBACK pWelcomePageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = NULL;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pWelcomePageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iisDebugOut_Start(_T("pWelcomePageDlgProc()"));
|
|||
|
hSheet = GetParent(hdlg);
|
|||
|
g_hParentSheet = hSheet;
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_NEXT);
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_WELCOME);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 0, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
BOOL InsertEULAText(HWND hEdit)
|
|||
|
{
|
|||
|
BOOL fReturn = FALSE;
|
|||
|
CString csFile = g_pTheApp->m_csPathSource + _T("\\license.txt");
|
|||
|
|
|||
|
HANDLE hFile = CreateFile(csFile, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
|
|||
|
if (hFile != INVALID_HANDLE_VALUE)
|
|||
|
{
|
|||
|
DWORD dwSize = GetFileSize(hFile, NULL);
|
|||
|
BYTE *chBuffer = (BYTE *)HeapAlloc(GetProcessHeap(), 0, dwSize+1 );
|
|||
|
|
|||
|
if (chBuffer)
|
|||
|
{
|
|||
|
ReadFile(hFile, chBuffer, dwSize, &dwSize, NULL);
|
|||
|
chBuffer[dwSize] = '\0';
|
|||
|
SendMessage (hEdit, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
|
|||
|
SendMessageA(hEdit, EM_REPLACESEL, 0, (LPARAM)chBuffer);
|
|||
|
SendMessage (hEdit, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
|
|||
|
HeapFree(GetProcessHeap(), 0, chBuffer);
|
|||
|
fReturn = TRUE;
|
|||
|
}
|
|||
|
|
|||
|
CloseHandle(hFile);
|
|||
|
}
|
|||
|
|
|||
|
return fReturn;
|
|||
|
}
|
|||
|
|
|||
|
INT_PTR CALLBACK pEULAPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = NULL, hNext = NULL;
|
|||
|
HWND hEULAText = NULL;
|
|||
|
HWND hEULAAccept = NULL, hEULADecline = NULL;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pEULAPageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
hSheet = GetParent(hdlg);
|
|||
|
switch (LOWORD(wParam))
|
|||
|
{
|
|||
|
case IDC_EULA_ACCEPT:
|
|||
|
g_pTheApp->m_fEULA = TRUE;
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto mode page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_EULA_DECLINE:
|
|||
|
{
|
|||
|
// cancel setup
|
|||
|
MyMessageBox(NULL, IDS_EULA_DECLINED, MB_OK | MB_SETFOREGROUND);
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_CANCEL);
|
|||
|
}
|
|||
|
return TRUE;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
if (HIWORD(wParam) == EN_SETFOCUS)
|
|||
|
{
|
|||
|
hEULAText = GetDlgItem(hdlg, IDC_LICENSE_TEXT);
|
|||
|
SendMessage (hEULAText, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
hSheet = GetParent(hdlg);
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
if (g_pTheApp->m_fUnattended || g_pTheApp->m_fEULA)
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
hEULAText = GetDlgItem(hdlg, IDC_LICENSE_TEXT);
|
|||
|
if (!InsertEULAText(hEULAText))
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
hEULAAccept = GetDlgItem(hdlg, IDC_EULA_ACCEPT);
|
|||
|
hEULADecline = GetDlgItem(hdlg, IDC_EULA_DECLINE);
|
|||
|
EnableWindow(hEULAAccept, TRUE);
|
|||
|
EnableWindow(hEULADecline, TRUE);
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
INT_PTR CALLBACK pFreshPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hMinimum = NULL, hTypical = NULL, hCustom = NULL;
|
|||
|
HWND hMinimumBox = NULL, hTypicalBox = NULL, hCustomBox = NULL;
|
|||
|
CString csMinimumString, csTypicalString, csCustomString;
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pFreshPageDlgProc:"));
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
SetIISSetupMode(SETUPMODE_CUSTOM);
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
// old code used when we had the fresh page.
|
|||
|
// kept around in this comment block just in case we need it in the future.
|
|||
|
#define WM_FINISH_INIT (WM_USER + 5000)
|
|||
|
INT_PTR CALLBACK pFreshPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hMinimum = NULL, hTypical = NULL, hCustom = NULL;
|
|||
|
HWND hMinimumBox = NULL, hTypicalBox = NULL, hCustomBox = NULL;
|
|||
|
CString csMinimumString, csTypicalString, csCustomString;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pFreshPageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_INITDIALOG:
|
|||
|
hMinimum = GetDlgItem(hdlg, IDC_MINIMUM);
|
|||
|
hTypical = GetDlgItem(hdlg, IDC_TYPICAL);
|
|||
|
hCustom = GetDlgItem(hdlg, IDC_CUSTOM);
|
|||
|
hMinimumBox = GetDlgItem(hdlg, IDC_FRESH_MINIMUM_STATIC);
|
|||
|
hTypicalBox = GetDlgItem(hdlg, IDC_FRESH_TYPICAL_STATIC);
|
|||
|
hCustomBox = GetDlgItem(hdlg, IDC_FRESH_CUSTOM_STATIC);
|
|||
|
|
|||
|
MyLoadString(IDS_FRESH_MINIMUM_STRING, csMinimumString);
|
|||
|
MyLoadString(IDS_FRESH_TYPICAL_STRING, csTypicalString);
|
|||
|
MyLoadString(IDS_FRESH_CUSTOM_STRING, csCustomString);
|
|||
|
|
|||
|
SetWindowText(hMinimumBox, csMinimumString);
|
|||
|
SetWindowText(hTypicalBox, csTypicalString);
|
|||
|
SetWindowText(hCustomBox, csCustomString);
|
|||
|
break;
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
switch (LOWORD(wParam))
|
|||
|
{
|
|||
|
case IDC_MINIMUM:
|
|||
|
// check if tcpip is installed
|
|||
|
g_pTheApp->IsTCPIPInstalled();
|
|||
|
if (g_pTheApp->m_fTCPIP == FALSE && g_pTheApp->MsgBox(hSheet, IDS_NEED_TCPIP_WARNING, MB_OKCANCEL | MB_DEFBUTTON2, TRUE) == IDCANCEL)
|
|||
|
{
|
|||
|
SendMessage(hSheet, WM_COMMAND, MAKEWPARAM(IDCANCEL, BN_CLICKED), 0);
|
|||
|
break;
|
|||
|
}
|
|||
|
// set minimum default selections
|
|||
|
SetIISSetupMode(SETUPMODE_MINIMAL);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto setup page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_TYPICAL:
|
|||
|
// check if tcpip is installed
|
|||
|
g_pTheApp->IsTCPIPInstalled();
|
|||
|
if (g_pTheApp->m_fTCPIP == FALSE && g_pTheApp->MsgBox(hSheet, IDS_NEED_TCPIP_WARNING, MB_OKCANCEL | MB_DEFBUTTON2, TRUE) == IDCANCEL)
|
|||
|
{
|
|||
|
SendMessage(hSheet, WM_COMMAND, MAKEWPARAM(IDCANCEL, BN_CLICKED), 0);
|
|||
|
break;
|
|||
|
}
|
|||
|
// set typical default selections
|
|||
|
SetIISSetupMode(SETUPMODE_TYPICAL);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto setup page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_CUSTOM:
|
|||
|
// check if tcpip is installed
|
|||
|
g_pTheApp->IsTCPIPInstalled();
|
|||
|
if (g_pTheApp->m_fTCPIP == FALSE && g_pTheApp->MsgBox(hSheet, IDS_NEED_TCPIP_WARNING, MB_OKCANCEL | MB_DEFBUTTON2, TRUE) == IDCANCEL)
|
|||
|
{
|
|||
|
SendMessage(hSheet, WM_COMMAND, MAKEWPARAM(IDCANCEL, BN_CLICKED), 0);
|
|||
|
break;
|
|||
|
}
|
|||
|
// set typical default selections
|
|||
|
SetIISSetupMode(SETUPMODE_CUSTOM);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto OC page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
if (g_pTheApp->m_eInstallMode == IM_FRESH)
|
|||
|
{
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
TCHAR szMode[_MAX_PATH] = _T("");
|
|||
|
INFCONTEXT Context;
|
|||
|
if ( SetupFindFirstLine_Wrapped(g_pTheApp->m_hUnattendFile, _T("Global"), _T("FreshMode"), &Context) )
|
|||
|
{
|
|||
|
SetupGetStringField(&Context, 1, szMode, _MAX_PATH, NULL);
|
|||
|
}
|
|||
|
if (_tcsicmp(szMode, _T("Minimal")) == 0)
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_MINIMAL);
|
|||
|
}
|
|||
|
else if (_tcsicmp(szMode, _T("Custom")) == 0)
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_CUSTOM);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_TYPICAL);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Check if -m or -t or -f was passed in!
|
|||
|
BOOL fGot = FALSE;
|
|||
|
if (g_CmdLine_Set_M == TRUE) {SetIISSetupMode(SETUPMODE_MINIMAL);fGot = TRUE;}
|
|||
|
if (g_CmdLine_Set_T == TRUE) {SetIISSetupMode(SETUPMODE_TYPICAL);fGot = TRUE;}
|
|||
|
if (g_CmdLine_Set_F == TRUE) {SetIISSetupMode(SETUPMODE_CUSTOM);fGot = TRUE;}
|
|||
|
|
|||
|
if (fGot || g_pTheApp->m_fUnattended) {
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK);
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, 0);
|
|||
|
PostMessage(hdlg, WM_FINISH_INIT, 0, 0 );
|
|||
|
PostMessage(hdlg, DM_SETDEFID, (WPARAM)IDC_TYPICAL, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_FINISH_INIT:
|
|||
|
hTypical = GetDlgItem(hdlg, IDC_TYPICAL);
|
|||
|
SetFocus(hTypical);
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
INT_PTR CALLBACK pMaintenancePageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hAddRemove = NULL, hReinstall = NULL, hRemoveAll = NULL;
|
|||
|
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pMaintenancePageDlgProc:"));
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
SetIISSetupMode(SETUPMODE_ADDREMOVE);
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
// old code used when we had the maintenence page.
|
|||
|
// kept around in this comment block just in case we need it in the future.
|
|||
|
INT_PTR CALLBACK pMaintenancePageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hAddRemove = NULL, hReinstall = NULL, hRemoveAll = NULL;
|
|||
|
BOOL iSaveOld_AllowMessageBoxPopups = FALSE;
|
|||
|
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pMaintenancePageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
switch (LOWORD(wParam))
|
|||
|
{
|
|||
|
case IDC_ADDREMOVE:
|
|||
|
// set minimum default selections
|
|||
|
SetIISSetupMode(SETUPMODE_ADDREMOVE);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto OC page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_REINSTALL:
|
|||
|
// set typical default selections
|
|||
|
SetIISSetupMode(SETUPMODE_REINSTALL);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto setup page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_REMOVEALL:
|
|||
|
// set typical default selections
|
|||
|
iSaveOld_AllowMessageBoxPopups = g_pTheApp->m_bAllowMessageBoxPopups;
|
|||
|
if (g_pTheApp->MsgBox(NULL, IDS_REMOVEALL_WARNING, MB_YESNO | MB_DEFBUTTON2, TRUE) == IDNO)
|
|||
|
{
|
|||
|
g_pTheApp->m_bAllowMessageBoxPopups = iSaveOld_AllowMessageBoxPopups;
|
|||
|
break;
|
|||
|
}
|
|||
|
g_pTheApp->m_bAllowMessageBoxPopups = iSaveOld_AllowMessageBoxPopups;
|
|||
|
SetIISSetupMode(SETUPMODE_REMOVEALL);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto setup page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
if (g_pTheApp->m_fUnattended) {
|
|||
|
TCHAR szMode[_MAX_PATH] = _T("");
|
|||
|
INFCONTEXT Context;
|
|||
|
if ( SetupFindFirstLine_Wrapped(g_pTheApp->m_hUnattendFile, _T("Global"), _T("MaintenanceMode"), &Context) ) {
|
|||
|
SetupGetStringField(&Context, 1, szMode, _MAX_PATH, NULL);
|
|||
|
}
|
|||
|
if (_tcsicmp(szMode, _T("AddRemove")) == 0)
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_ADDREMOVE);
|
|||
|
}
|
|||
|
else if (_tcsicmp(szMode, _T("RemoveAll")) == 0)
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_REMOVEALL);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// Heck i don't know what type of mode this is. put up an error message.
|
|||
|
if ( gHelperRoutines.ReportExternalError )
|
|||
|
{
|
|||
|
CString csFormat, csMsg;
|
|||
|
MyLoadString(IDS_UNATTEND_UNSUPPORTED, csFormat);
|
|||
|
csMsg.Format( csFormat, szMode);
|
|||
|
gHelperRoutines.ReportExternalError(
|
|||
|
gHelperRoutines.OcManagerContext,
|
|||
|
_T("IIS"),
|
|||
|
NULL,
|
|||
|
(DWORD_PTR)(LPCTSTR) csMsg,
|
|||
|
ERRFLG_PREFORMATTED);
|
|||
|
}
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_CANCEL);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
//The old code
|
|||
|
//else if (_tcsicmp(szMode, _T("ReinstallFile")) == 0) {
|
|||
|
// SetIISSetupMode(SETUPMODE_REINSTALL);
|
|||
|
// g_pTheApp->m_bRefreshSettings = FALSE;
|
|||
|
//} else {
|
|||
|
// SetIISSetupMode(SETUPMODE_REINSTALL);
|
|||
|
// g_pTheApp->m_bRefreshSettings = TRUE;
|
|||
|
//}
|
|||
|
}
|
|||
|
|
|||
|
if (g_pTheApp->m_fUnattended) {
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
} else {
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK);
|
|||
|
PostMessage(hdlg, WM_FINISH_INIT, 0, 0 );
|
|||
|
PostMessage(hdlg, DM_SETDEFID, (WPARAM)IDC_ADDREMOVE, 0);
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_FINISH_INIT:
|
|||
|
hAddRemove = GetDlgItem(hdlg, IDC_ADDREMOVE);
|
|||
|
SetFocus(hAddRemove);
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
INT_PTR CALLBACK pSrcPathPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pSrcPathPageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_INITDIALOG:
|
|||
|
CheckRadioButton(hdlg,IDC_REINSTALL_REFRESH_FILES,IDC_REINSTALL_REFRESH_SETTINGS,IDC_REINSTALL_REFRESH_FILES);
|
|||
|
break;
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
switch (LOWORD(wParam)) {
|
|||
|
case IDC_REINSTALL_REFRESH_FILES:
|
|||
|
case IDC_REINSTALL_REFRESH_SETTINGS:
|
|||
|
CheckRadioButton(hdlg,IDC_REINSTALL_REFRESH_FILES,IDC_REINSTALL_REFRESH_SETTINGS,LOWORD(wParam));
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
if (g_pTheApp->m_dwSetupMode == SETUPMODE_REINSTALL && !g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
// accept the activation
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, 0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// don't display this wizard page
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
break;
|
|||
|
case PSN_WIZNEXT:
|
|||
|
{
|
|||
|
DWORD dwValue;
|
|||
|
if (IsDlgButtonChecked(hdlg, IDC_REINSTALL_REFRESH_SETTINGS) == BST_CHECKED)
|
|||
|
{g_pTheApp->m_bRefreshSettings = TRUE;}
|
|||
|
else
|
|||
|
{g_pTheApp->m_bRefreshSettings = FALSE;}
|
|||
|
|
|||
|
dwValue = (DWORD)(g_pTheApp->m_bRefreshSettings);
|
|||
|
gHelperRoutines.SetPrivateData(gHelperRoutines.OcManagerContext,_T("ReinstallRefreshSettings"),(PVOID)&dwValue,sizeof(DWORD),REG_DWORD);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
INT_PTR CALLBACK pUpgradePageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hUpgradeOnly = NULL, hAddExtraComps = NULL;
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pUpgradePageDlgProc:"));
|
|||
|
_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
SetIISSetupMode(SETUPMODE_ADDEXTRACOMPS);
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
// old code used when we had the upgrade page.
|
|||
|
// kept around in this comment block just in case we need it in the future.
|
|||
|
INT_PTR CALLBACK pUpgradePageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = GetParent(hdlg);
|
|||
|
HWND hUpgradeOnly = NULL, hAddExtraComps = NULL;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pUpgradePageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
switch (LOWORD(wParam))
|
|||
|
{
|
|||
|
case IDC_UPGRADEONLY:
|
|||
|
// upgrade those previously installed components
|
|||
|
SetIISSetupMode(SETUPMODE_UPGRADEONLY);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto setup page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
case IDC_ADDEXTRACOMPS:
|
|||
|
// upgrade those previously installed components + add extra components
|
|||
|
SetIISSetupMode(SETUPMODE_ADDEXTRACOMPS);
|
|||
|
SetCursor(LoadCursor(NULL,IDC_WAIT ));
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_NEXT); // goto OC page
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK | PSWIZB_NEXT);
|
|||
|
return TRUE;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
TCHAR szMode[_MAX_PATH] = _T("");
|
|||
|
INFCONTEXT Context;
|
|||
|
if ( SetupFindFirstLine_Wrapped(g_pTheApp->m_hUnattendFile, _T("Global"), _T("UpgradeMode"), &Context) )
|
|||
|
{
|
|||
|
SetupGetStringField(&Context, 1, szMode, _MAX_PATH, NULL);
|
|||
|
}
|
|||
|
if (_tcsicmp(szMode, _T("AddExtraComps")) == 0)
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_ADDEXTRACOMPS);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetIISSetupMode(SETUPMODE_UPGRADEONLY);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_BACK);
|
|||
|
PostMessage(hdlg, WM_FINISH_INIT, 0, 0 );
|
|||
|
PostMessage(hdlg, DM_SETDEFID, (WPARAM)IDC_UPGRADEONLY, 0);
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_FINISH_INIT:
|
|||
|
hUpgradeOnly = GetDlgItem(hdlg, IDC_UPGRADEONLY);
|
|||
|
SetFocus(hUpgradeOnly);
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
INT_PTR CALLBACK pEarlyPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = NULL;
|
|||
|
HWND hFTPGroup, hWWWGroup, hFTPBrowse, hWWWBrowse;
|
|||
|
TCHAR szFTPRoot[_MAX_PATH], szWWWRoot[_MAX_PATH];
|
|||
|
BOOL bShowTheDialogPage = TRUE;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pEarlyPageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
TCHAR szSectionName[_MAX_PATH];
|
|||
|
TCHAR szValue[_MAX_PATH] = _T("");
|
|||
|
TCHAR szValue0[_MAX_PATH] = _T("");
|
|||
|
|
|||
|
_tcscpy(szSectionName, _T("InternetServer"));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_COMMAND:
|
|||
|
if (HIWORD(wParam) == BN_CLICKED)
|
|||
|
{
|
|||
|
TCHAR buf[_MAX_PATH];
|
|||
|
TCHAR szPath[_MAX_PATH];
|
|||
|
switch (LOWORD(wParam))
|
|||
|
{
|
|||
|
case IDC_WWW_PUB_BROWSE:
|
|||
|
g_hWWWEdit = GetDlgItem(hdlg, IDC_WWW_PUB_EDIT);
|
|||
|
GetWindowText(g_hWWWEdit, szPath, _MAX_PATH);
|
|||
|
if ( BrowseForDirectory( GetParent(hdlg), szPath,buf, _MAX_PATH, NULL, TRUE ))
|
|||
|
{
|
|||
|
SetWindowText(g_hWWWEdit, buf);
|
|||
|
}
|
|||
|
break;
|
|||
|
case IDC_FTP_PUB_BROWSE:
|
|||
|
g_hFTPEdit = GetDlgItem(hdlg, IDC_FTP_PUB_EDIT);
|
|||
|
GetWindowText(g_hFTPEdit, szPath, _MAX_PATH);
|
|||
|
if ( BrowseForDirectory( GetParent(hdlg), szPath,buf, _MAX_PATH, NULL, TRUE ))
|
|||
|
{
|
|||
|
SetWindowText(g_hFTPEdit, buf);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
hSheet = GetParent(hdlg);
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
{
|
|||
|
g_bFTP = ToBeInstalled(TEXT("iis"), TEXT("iis_ftp"));
|
|||
|
g_bWWW = ToBeInstalled(TEXT("iis"), TEXT("iis_www"));
|
|||
|
|
|||
|
BOOL bDisplay = FALSE; // display this wizard or not
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
INFCONTEXT Context;
|
|||
|
if (g_bFTP)
|
|||
|
{
|
|||
|
// Default it incase SetupFindFirstLine fails
|
|||
|
_tcscpy(szValue, g_pTheApp->m_csPathFTPRoot);
|
|||
|
|
|||
|
if (g_pTheApp->m_hUnattendFile != INVALID_HANDLE_VALUE && g_pTheApp->m_hUnattendFile != NULL)
|
|||
|
{
|
|||
|
if ( SetupFindFirstLine_Wrapped(g_pTheApp->m_hUnattendFile, szSectionName, _T("PathFTPRoot"), &Context) )
|
|||
|
{
|
|||
|
SetupGetStringField(&Context, 1, szValue, _MAX_PATH, NULL);
|
|||
|
}
|
|||
|
if (*szValue)
|
|||
|
{
|
|||
|
_tcscpy(szValue0, szValue);
|
|||
|
if (!ExpandEnvironmentStrings( (LPCTSTR)szValue0, szValue, sizeof(szValue)/sizeof(TCHAR)))
|
|||
|
{_tcscpy(szValue,szValue0);}
|
|||
|
|
|||
|
if (!IsValidDirectoryName(szValue))
|
|||
|
bDisplay = TRUE;
|
|||
|
else
|
|||
|
CustomFTPRoot(szValue);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (g_bWWW)
|
|||
|
{
|
|||
|
// Default it incase SetupFindFirstLine fails
|
|||
|
_tcscpy(szValue, g_pTheApp->m_csPathWWWRoot);
|
|||
|
|
|||
|
if (g_pTheApp->m_hUnattendFile != INVALID_HANDLE_VALUE && g_pTheApp->m_hUnattendFile != NULL)
|
|||
|
{
|
|||
|
if ( SetupFindFirstLine_Wrapped(g_pTheApp->m_hUnattendFile, szSectionName, _T("PathWWWRoot"), &Context) )
|
|||
|
{
|
|||
|
SetupGetStringField(&Context, 1, szValue, _MAX_PATH, NULL);
|
|||
|
}
|
|||
|
_tcscpy(szValue0, szValue);
|
|||
|
if (!ExpandEnvironmentStrings( (LPCTSTR)szValue0, szValue, sizeof(szValue)/sizeof(TCHAR)))
|
|||
|
{_tcscpy(szValue,szValue0);}
|
|||
|
if (*szValue)
|
|||
|
{
|
|||
|
if (!IsValidDirectoryName(szValue))
|
|||
|
bDisplay = TRUE;
|
|||
|
else
|
|||
|
CustomWWWRoot(szValue);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (bDisplay)
|
|||
|
{
|
|||
|
g_pTheApp->MsgBox(NULL, IDS_NEED_VALID_PATH_UNATTENDED, MB_OK, FALSE);
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_NEXT);
|
|||
|
}
|
|||
|
|
|||
|
} // end of unattended
|
|||
|
|
|||
|
|
|||
|
bShowTheDialogPage = FALSE;
|
|||
|
if ( g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
if (bDisplay) bShowTheDialogPage = TRUE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// this is attended mode, either gui or standalone
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
// if attended guimode then don't show this dialog page
|
|||
|
bShowTheDialogPage = FALSE;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// If it's attended mode, then show this page
|
|||
|
if ( g_bFTP || g_bWWW ) {bShowTheDialogPage = TRUE;}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (bShowTheDialogPage)
|
|||
|
{
|
|||
|
iisDebugOut((LOG_TYPE_TRACE, _T("showpage.bShowTheDialogPage")));
|
|||
|
hFTPGroup = GetDlgItem(hdlg, IDC_FTP_PUB_GROUP);
|
|||
|
hWWWGroup = GetDlgItem(hdlg, IDC_WWW_PUB_GROUP);
|
|||
|
g_hFTPEdit = GetDlgItem(hdlg, IDC_FTP_PUB_EDIT);
|
|||
|
g_hWWWEdit = GetDlgItem(hdlg, IDC_WWW_PUB_EDIT);
|
|||
|
hFTPBrowse = GetDlgItem(hdlg, IDC_FTP_PUB_BROWSE);
|
|||
|
hWWWBrowse = GetDlgItem(hdlg, IDC_WWW_PUB_BROWSE);
|
|||
|
|
|||
|
EnableWindow(hFTPGroup, g_bFTP);
|
|||
|
EnableWindow(g_hFTPEdit, g_bFTP);
|
|||
|
EnableWindow(hFTPBrowse, g_bFTP);
|
|||
|
if (g_bFTP)
|
|||
|
{SetWindowText(g_hFTPEdit, g_pTheApp->m_csPathFTPRoot);}
|
|||
|
else
|
|||
|
{SetWindowText(g_hFTPEdit, TEXT(""));}
|
|||
|
|
|||
|
EnableWindow(hWWWGroup, g_bWWW);
|
|||
|
EnableWindow(g_hWWWEdit, g_bWWW);
|
|||
|
EnableWindow(hWWWBrowse, g_bWWW);
|
|||
|
if (g_bWWW)
|
|||
|
{SetWindowText(g_hWWWEdit, g_pTheApp->m_csPathWWWRoot);}
|
|||
|
else
|
|||
|
{SetWindowText(g_hWWWEdit, TEXT(""));}
|
|||
|
|
|||
|
// accept the activation
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, 0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// check if inetsrv is a valid directory
|
|||
|
TCHAR szInetsrv[_MAX_PATH];
|
|||
|
_tcscpy(szInetsrv, g_pTheApp->m_csPathInetsrv);
|
|||
|
while (!IsValidDirectoryName(szInetsrv))
|
|||
|
{
|
|||
|
MyMessageBox(NULL, IDS_INVALID_DIR_INETSRV, g_pTheApp->m_csPathInetsrv, MB_OK | MB_SETFOREGROUND);
|
|||
|
}
|
|||
|
// don't display this wizard page
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
case PSN_WIZNEXT:
|
|||
|
if (g_bFTP)
|
|||
|
{
|
|||
|
GetWindowText(g_hFTPEdit, szFTPRoot, _MAX_PATH);
|
|||
|
CleanPathString(szFTPRoot);
|
|||
|
if (!IsValidDirectoryName(szFTPRoot))
|
|||
|
{
|
|||
|
g_pTheApp->MsgBox(NULL, IDS_NEED_INPUT_FTP, MB_OK, FALSE);
|
|||
|
SetWindowText(g_hFTPEdit, g_pTheApp->m_csPathFTPRoot);
|
|||
|
SetFocus(g_hFTPEdit);
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
if (g_bWWW)
|
|||
|
{
|
|||
|
GetWindowText(g_hWWWEdit, szWWWRoot, _MAX_PATH);
|
|||
|
CleanPathString(szWWWRoot);
|
|||
|
if (!IsValidDirectoryName(szWWWRoot))
|
|||
|
{
|
|||
|
g_pTheApp->MsgBox(NULL, IDS_NEED_INPUT_WWW, MB_OK, FALSE);
|
|||
|
SetWindowText(g_hWWWEdit, g_pTheApp->m_csPathWWWRoot);
|
|||
|
SetFocus(g_hWWWEdit);
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (g_bFTP) {CustomFTPRoot(szFTPRoot);}
|
|||
|
if (g_bWWW) {CustomWWWRoot(szWWWRoot);}
|
|||
|
|
|||
|
// check if inetsrv is a valid directory
|
|||
|
TCHAR szInetsrv[_MAX_PATH];
|
|||
|
_tcscpy(szInetsrv, g_pTheApp->m_csPathInetsrv);
|
|||
|
while (!IsValidDirectoryName(szInetsrv))
|
|||
|
{
|
|||
|
MyMessageBox(NULL, IDS_INVALID_DIR_INETSRV, g_pTheApp->m_csPathInetsrv, MB_OK | MB_SETFOREGROUND);
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 2, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
INT_PTR CALLBACK pEndPageDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
{
|
|||
|
INT_PTR bReturn = TRUE;
|
|||
|
LPNMHDR pnmh;
|
|||
|
HWND hSheet = NULL;
|
|||
|
HWND hCancel = NULL;
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo, _T("pEndPageDlgProc:"));
|
|||
|
//_tcscpy(g_MyLogFile.m_szLogPreLineInfo2, _T(""));
|
|||
|
|
|||
|
switch(msg)
|
|||
|
{
|
|||
|
case WM_INITDIALOG:
|
|||
|
// display running services in case our services need other services to be running!
|
|||
|
//StartInstalledServices();
|
|||
|
break;
|
|||
|
case WM_COMMAND:
|
|||
|
break;
|
|||
|
case WM_NOTIFY:
|
|||
|
pnmh = (LPNMHDR)lParam;
|
|||
|
hSheet = GetParent(hdlg);
|
|||
|
switch (pnmh->code)
|
|||
|
{
|
|||
|
case PSN_SETACTIVE:
|
|||
|
if (g_pTheApp->m_fUnattended)
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
//PropSheet_PressButton(hSheet, PSBTN_NEXT);
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_FINISH);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (g_pTheApp->m_fInvokedByNT)
|
|||
|
{
|
|||
|
SetWindowLongPtr(hdlg, DWLP_MSGRESULT, -1);
|
|||
|
//PropSheet_PressButton(hSheet, PSBTN_NEXT);
|
|||
|
PropSheet_PressButton(hSheet, PSBTN_FINISH);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// don't set on nt5
|
|||
|
//SetWindowText(GetParent(hdlg), g_pTheApp->m_csSetupTitle);
|
|||
|
// enable buttons
|
|||
|
PropSheet_SetWizButtons(hSheet, PSWIZB_FINISH);
|
|||
|
hCancel = GetDlgItem(hSheet, IDCANCEL);
|
|||
|
if (hCancel){EnableWindow(hCancel, FALSE);}
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case WM_PAINT:
|
|||
|
{
|
|||
|
HDC hdc = NULL;
|
|||
|
PAINTSTRUCT ps;
|
|||
|
RECT rect;
|
|||
|
HWND hFrame = NULL;
|
|||
|
hdc = BeginPaint(hdlg, &ps);
|
|||
|
if (hdc)
|
|||
|
{
|
|||
|
hFrame = GetDlgItem(hdlg, IDC_FRAME_BANNER);
|
|||
|
if (hFrame)
|
|||
|
{
|
|||
|
GetClientRect(hFrame, &rect);
|
|||
|
OnPaintBitmap(hdlg, hdc, 1, &rect);
|
|||
|
}
|
|||
|
EndPaint(hdlg, &ps);
|
|||
|
}
|
|||
|
}
|
|||
|
break;
|
|||
|
default:
|
|||
|
bReturn = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
return(bReturn);
|
|||
|
}
|
|||
|
#endif // ENABLE_OC_PAGES
|