|
|
#include "pch.h"
#pragma hdrstop
#include "ncreg.h"
#include "ncsvc.h"
#include "nslog.h"
#include "wizard.h"
// Setup Wizard Global - Only used during setup.
extern CWizard * g_pSetupWizard;
BOOL FSetupRequestWizardPages(HPROPSHEETPAGE* pahpsp, UINT* pcPages, PINTERNAL_SETUP_DATA psp); BOOL FSetupFreeWizardPages(); BOOL FNetSetupPrepareSysPrep(); #if !defined(WIN64) && !defined(_WIN64)
BOOL FDoIcsUpgradeIfNecessary(); #endif // !defined(WIN64) && !defined(_WIN64)
//+---------------------------------------------------------------------------
//
// Function: DoInitialCleanup
//
// Purpose: Called from syssetup before any device is installed.
//
// Arguments:
// hwnd [in] parent window
// pisd [in] setup data
//
// Returns: TRUE or FALSE
//
// Author: kumarp 3 Dec 1997
//
// Notes: This must have the signature of NETSETUPINSTALLSOFTWAREPROC
// defined in syssetup.h
//
// DoInitialCleanup is called from syssetup during installs before
// any device is installed.
// If you want something to happen before any PnP / wizard
// stuff happens, this function is the best place to put that code.
//
//
BOOL WINAPI DoInitialCleanup ( HWND hwnd, PINTERNAL_SETUP_DATA pisd) { TraceFileFunc(ttidGuiModeSetup); Assert(pisd);
#if DBG
RtlValidateProcessHeaps (); #endif
NetSetupLogStatusV (LogSevInformation, SzLoadIds (IDS_SETUP_MODE_STATUS), pisd->SetupMode, pisd->ProductType, pisd->OperationFlags);
if (pisd->OperationFlags & SETUPOPER_NTUPGRADE) { extern HRESULT HrEnableServicesDisabledDuringUpgrade();
// Delete the old NT4 legacy network key. Valid items will be
// rewritten on each device install.
//
extern const WCHAR c_szRegKeyNt4Adapters[]; (VOID) HrRegDeleteKeyTree (HKEY_LOCAL_MACHINE, c_szRegKeyNt4Adapters); }
extern HRESULT HrRunAnswerFileCleanSection(IN PCWSTR pszAnswerFileName); extern HRESULT HrProcessInfToRunBeforeInstall(IN HWND hwndParent, IN PCWSTR szAnswerFileName); extern HRESULT HrNetSetupCopyOemInfs(IN PCWSTR szAnswerFileName);
// Run the [Clean] section in the answerfile
//
if (pisd->OperationFlags & SETUPOPER_BATCH) { AssertValidReadPtr(pisd->UnattendFile);
// We cannot abort upgrade in GUI setup, so we need to continue
// even if an error occurs in any of the following functions
(VOID) HrRunAnswerFileCleanSection(pisd->UnattendFile);
(VOID) HrProcessInfToRunBeforeInstall(hwnd, pisd->UnattendFile);
// Copy OEM net INF files using SetupCopyOemInf, if any
// we want to ignore any error here
(VOID) HrNetSetupCopyOemInfs(pisd->UnattendFile); }
#if DBG
RtlValidateProcessHeaps (); #endif
return TRUE; }
//+---------------------------------------------------------------------------
//
// Function: NetSetupInstallSoftware
//
// Purpose: Exported entrypoint to install network software.
//
// Arguments:
// hwnd [in] parent window
// pisd [in] setup data
//
// Returns: TRUE or FALSE
//
// Author: scottbri 5 Jul 1997
//
// Notes: This must have the signature of NETSETUPINSTALLSOFTWAREPROC
// defined in syssetup.h
//
EXTERN_C BOOL WINAPI NetSetupInstallSoftware( HWND hwnd, PINTERNAL_SETUP_DATA pisd ) { TraceFileFunc(ttidGuiModeSetup); #if DBG
RtlValidateProcessHeaps (); #endif
return FALSE; }
//+---------------------------------------------------------------------------
//
// Function: NetSetupRequestWizardPages
//
// Purpose: Exported request for wizard pages
//
// Arguments:
// pahpsp [out] property pages provided by us
// pcPages [out] number of pages provided
// psp [in] setup data
//
// Returns:
//
// Author: scottbri 5 Jul 1997
//
// Notes: This must have the signature of NETSETUPPAGEREQUESTPROCNAME
// defined in syssetup.h
//
EXTERN_C BOOL WINAPI NetSetupRequestWizardPages( HPROPSHEETPAGE* pahpsp, UINT* pcPages, PINTERNAL_SETUP_DATA psp) { TraceFileFunc(ttidGuiModeSetup); #if DBG
RtlValidateProcessHeaps (); #endif
return FSetupRequestWizardPages(pahpsp, pcPages, psp); }
//+---------------------------------------------------------------------------
//
// Function: NetSetupFinishInstall
//
// Purpose: Exported function to finish network installation
//
// Arguments:
// hwnd [in] parent window
// pisd [in] setup data
//
// Returns: TRUE or FALSE
//
// Author: scottbri 5 Jul 1997
//
// Notes: This must have the signature of NETSETUPFINISHINSTALLPROCNAME
// defined in syssetup.h
//
EXTERN_C BOOL WINAPI NetSetupFinishInstall( HWND hwnd, PINTERNAL_SETUP_DATA pisd ) { TraceFileFunc(ttidGuiModeSetup); #if DBG
RtlValidateProcessHeaps (); #endif
#if !defined(WIN64) && !defined(_WIN64)
// do the ICS Upgrade from Win9x/Win2K if necessary
// we are doing ICS upgrade here, because
// 1. we need to wait until HNetCfg.dll components have been registered.
// 2. we need to wait until Win9x Dial-Up connections have been migrated.
FDoIcsUpgradeIfNecessary(); #endif // !defined(WIN64) && !defined(_WIN64)
return FSetupFreeWizardPages(); }
//+---------------------------------------------------------------------------
//
// Function: NetSetupAddRasConnection
//
// Purpose: Create a new RAS connection.
//
// Arguments:
// hwnd []
// ppConn []
//
// Returns: S_OK, S_FALSE if cancelled or reentered, or an error code.
//
// Author: scottbri 3 Nov 1997
//
// Notes:
//
EXTERN_C HRESULT WINAPI NetSetupAddRasConnection ( HWND hwnd, INetConnection** ppConn) { TraceFileFunc(ttidGuiModeSetup); Assert (FImplies(hwnd, IsWindow(hwnd))); Assert (ppConn);
// Initialize the output parameter.
//
*ppConn = NULL;
HRESULT hr = S_FALSE; HANDLE hMutex = NULL;
// If the PostInstall wizard flag the wizard has already been launched
//
hMutex = CreateMutex(NULL, TRUE, SzLoadIds(IDS_WIZARD_CAPTION)); if ((NULL == hMutex) || (ERROR_ALREADY_EXISTS == GetLastError())) { // if the mutex already exists try to find the connection window
//
if (ERROR_ALREADY_EXISTS == GetLastError()) { // Try to get the window handle and set to for ground
HWND hwndWizard = FindWindow(NULL, SzLoadIds(IDS_WIZARD_CAPTION)); if (IsWindow(hwndWizard)) { SetForegroundWindow(hwndWizard); } } } else { #ifdef DBG
if (FIsDebugFlagSet (dfidBreakOnWizard)) { ShellExecute(NULL, L"open", L"cmd.exe", NULL, NULL, SW_SHOW); AssertSz(FALSE, "THIS IS NOT A BUG! The debug flag " "\"BreakOnWizard\" has been set. Set your breakpoints now."); } #endif // DBG
hr = HrRunWizard(hwnd, FALSE, ppConn, FALSE); }
if (hMutex) { ReleaseMutex(hMutex); CloseHandle(hMutex); }
TraceHr(ttidError, FAL, hr, (S_FALSE == hr), "NetSetupAddRasConnection"); return hr; }
//+---------------------------------------------------------------------------
//
// Function: NetSetupPrepareSysPrep
//
// Purpose: Exported entrypoint to prepare work items related to SysPrep
//
// Arguments:
// None
//
// Returns: TRUE or FALSE
//
// Author: FrankLi 22 April 2000
//
// Notes: This causes NetConfig to save network component per adapter
// registry settings to an internal persistent format. Initially,
// a CWInfFile object is used to save the settings in memory.
// Finally, the content of the CWInfFile object will be saved as
// file in %systemroot%\system32\$ncsp$.inf (NetConfigSysPrep)
//
EXTERN_C BOOL WINAPI NetSetupPrepareSysPrep() { TraceFileFunc(ttidGuiModeSetup); return FNetSetupPrepareSysPrep(); }
|