|
|
//----------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
// All rights reserved.
//
// File Name:
// platform.c
//
// Description:
// This file contains the dialog procedure for the platform choice
// (IDD_WKS_OR_SRV).
//
//----------------------------------------------------------------------------
#include "pch.h"
#include "resource.h"
#include "optcomp.h"
static PLATFORM_TYPES iBeginPlatform;
//----------------------------------------------------------------------------
//
// Function: AdjustNetSettingsForPlatform
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID AdjustNetSettingsForPlatform( VOID ) {
NETWORK_COMPONENT *pNetComponent; NETWORK_COMPONENT *pNetwareClientComponent = NULL; NETWORK_COMPONENT *pGatewayComponent = NULL;
//
// Only adjust the net settings if the platform changed while the user
// was on this page.
//
if( iBeginPlatform != WizGlobals.iPlatform ) { for( pNetComponent = NetSettings.NetComponentsList; pNetComponent; pNetComponent = pNetComponent->next ) { if( pNetComponent->iPosition == NETWARE_CLIENT_POSITION ) { pNetwareClientComponent = pNetComponent; }
if( pNetComponent->iPosition == GATEWAY_FOR_NETWARE_POSITION ) { pGatewayComponent = pNetComponent; }
} if( pNetwareClientComponent && pGatewayComponent ) {
if( WizGlobals.iPlatform == PLATFORM_WORKSTATION || WizGlobals.iPlatform == PLATFORM_PERSONAL) { pNetwareClientComponent->bInstalled = pGatewayComponent->bInstalled; } else if( WizGlobals.iPlatform == PLATFORM_SERVER || WizGlobals.iPlatform == PLATFORM_ENTERPRISE || WizGlobals.iPlatform == PLATFORM_WEBBLADE) { pGatewayComponent->bInstalled = pNetwareClientComponent->bInstalled; } else { AssertMsg( FALSE, "Bad platform case"); } }
}
}
//----------------------------------------------------------------------------
//
// Function: OnPlatformSetActive
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID OnPlatformSetActive( IN HWND hwnd ) {
int nButtonId = IDC_WORKSTATION;
iBeginPlatform = WizGlobals.iPlatform;
//
// Select the proper radio button
//
switch( WizGlobals.iPlatform ) { case PLATFORM_PERSONAL: nButtonId = IDC_PERSONAL; break;
case PLATFORM_WORKSTATION: nButtonId = IDC_WORKSTATION; break;
case PLATFORM_SERVER: nButtonId = IDC_SERVER; break;
case PLATFORM_ENTERPRISE: nButtonId = IDC_ENTERPRISE; break;
case PLATFORM_WEBBLADE: nButtonId = IDC_WEBBLADE; break;
default: AssertMsg( FALSE, "Invalid value for WizGlobals.iProductInstall" ); break; }
CheckRadioButton( hwnd, IDC_WORKSTATION, IDC_WEBBLADE, nButtonId );
WIZ_BUTTONS(hwnd, PSWIZB_BACK | PSWIZB_NEXT);
}
//----------------------------------------------------------------------------
//
// Function: OnWizNextPlatform
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID OnWizNextPlatform( IN HWND hwnd ) {
DWORD dwCompItem = 0, dwCompGroup = 0; TCHAR szAnswer[MAX_PATH] = NULLSTR;
if( IsDlgButtonChecked(hwnd, IDC_PERSONAL) ) { WizGlobals.iPlatform = PLATFORM_PERSONAL; } else if( IsDlgButtonChecked(hwnd, IDC_WORKSTATION) ) { WizGlobals.iPlatform = PLATFORM_WORKSTATION; } else if( IsDlgButtonChecked(hwnd, IDC_SERVER) ) { WizGlobals.iPlatform = PLATFORM_SERVER; } else if( IsDlgButtonChecked(hwnd, IDC_ENTERPRISE) ) { WizGlobals.iPlatform = PLATFORM_ENTERPRISE; } else if( IsDlgButtonChecked(hwnd, IDC_WEBBLADE) ) { WizGlobals.iPlatform = PLATFORM_WEBBLADE; } else { WizGlobals.iPlatform = PLATFORM_WORKSTATION; }
AdjustNetSettingsForPlatform();
#ifdef OPTCOMP
//
// Adjust defaults for windows components (only for unattended installations)
//
// Iterate through each of the components themselves
//
if ( WizGlobals.iProductInstall == PRODUCT_UNATTENDED_INSTALL ) {
// Iterate through each group to determine if this component is part of it
//
for(dwCompGroup=0;dwCompGroup<AS(s_cgComponentNames);dwCompGroup++) { // Check to see if this component is the correct platform, set it to true
//
if (s_cgComponentNames[dwCompGroup].dwDefaultSkus & WizGlobals.iPlatform) { // Set this component as a default
//
GenSettings.dwWindowsComponents |= s_cgComponentNames[dwCompGroup].dwComponents; } }
// Iterate through each of the components
//
for(dwCompItem=0;dwCompItem<AS(s_cComponent);dwCompItem++) { // We read in a script during the load process, let's write back the components that were specified in the file
//
if ( FixedGlobals.ScriptName[0] ) { // Attemp to grab this component from the file
//
GetPrivateProfileString(_T("Components"), s_cComponent[dwCompItem].lpComponentString, NULLSTR, szAnswer, AS(szAnswer), FixedGlobals.ScriptName); // Do we have a component?
//
if ( szAnswer[0] ) { // User did not want to install component
//
if ( LSTRCMPI(szAnswer, _T("On")) == 0 ) { GenSettings.dwWindowsComponents |= s_cComponent[dwCompItem].dwComponent; } else if ( LSTRCMPI(szAnswer, _T("Off")) == 0 ) { GenSettings.dwWindowsComponents &= ~s_cComponent[dwCompItem].dwComponent;
} } } } } #endif
}
//----------------------------------------------------------------------------
//
// Function: DlgPlatformPage
//
// Purpose:
//
// Arguments: standard Win32 dialog proc arguments
//
// Returns: standard Win32 dialog proc return value -- whether the message
// was handled or not
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK DlgPlatformPage( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) {
BOOL bStatus = TRUE;
switch( uMsg ) {
case WM_INITDIALOG: {
// Set the default platform
//
if ( !WizGlobals.iPlatform ) WizGlobals.iPlatform = PLATFORM_WORKSTATION;
break;
}
case WM_NOTIFY: {
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code ) {
case PSN_QUERYCANCEL:
WIZ_CANCEL(hwnd); break;
case PSN_SETACTIVE: {
g_App.dwCurrentHelp = IDH_CHZ_PLAT;
OnPlatformSetActive( hwnd );
break;
} case PSN_WIZBACK: bStatus = FALSE; break;
case PSN_WIZNEXT:
OnWizNextPlatform( hwnd ); bStatus = FALSE; break;
case PSN_HELP: WIZ_HELP(); break;
default:
break; }
break; } default: bStatus = FALSE; break;
}
return( bStatus );
}
|