/**************************************************************************** Copyright (c) Microsoft Corporation 1998 All rights reserved File: SETUP.CPP ***************************************************************************/ #include "pch.h" #include "utils.h" #include "logging.h" #include "errorlog.h" #include "tasks.h" DEFINE_MODULE("RIPREP") // // EndProcess( ) // HRESULT EndProcess( HWND hDlg ) { TraceFunc( "EndProcess( )\n" ); HRESULT hr = S_OK; WCHAR szSrcPath[ MAX_PATH ]; WCHAR szDestPath[ MAX_PATH ]; WCHAR szMajor[ 10 ]; WCHAR szMinor[ 10 ]; WCHAR szBuild[ 10 ]; OSVERSIONINFO osver; BOOL b; DWORD dw; wsprintf( szDestPath, L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates", g_ServerName, g_Language, REMOTE_INSTALL_IMAGE_DIR_W, g_MirrorDir, g_Architecture ); CreateDirectory( szDestPath, NULL ); wsprintf( szSrcPath, L"%s\\templates\\startrom.com", g_ImageName ); wsprintf( szDestPath, L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\startrom.com", g_ServerName, g_Language, REMOTE_INSTALL_IMAGE_DIR_W, g_MirrorDir, g_Architecture ); b = CopyFile( szSrcPath, szDestPath, FALSE ); if ( !b ) { LBITEMDATA item; // Error will be logged in TASKS.CPP item.fSeen = FALSE; item.pszText = L"STARTROM.COM"; item.uState = GetLastError( ); item.todo = RebootSystem; SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item ); } wsprintf( szSrcPath, L"%s\\templates\\ntdetect.com", g_ImageName ); wsprintf( szDestPath, L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\ntdetect.com", g_ServerName, g_Language, REMOTE_INSTALL_IMAGE_DIR_W, g_MirrorDir, g_Architecture ); b = CopyFile( szSrcPath, szDestPath, FALSE ); if ( !b ) { LBITEMDATA item; // Error will be logged in TASKS.CPP item.fSeen = FALSE; item.pszText = L"NTDETECT.COM"; item.uState = GetLastError( ); item.todo = RebootSystem; SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item ); } wsprintf( szSrcPath, L"%s\\templates\\ntldr", g_ImageName ); wsprintf( szDestPath, L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\ntldr", g_ServerName, g_Language, REMOTE_INSTALL_IMAGE_DIR_W, g_MirrorDir, g_Architecture ); b = CopyFile( szSrcPath, szDestPath, FALSE ); if ( !b ) { LBITEMDATA item; // Error will be logged in TASKS.CPP item.fSeen = FALSE; item.pszText = L"NTLDR"; item.uState = GetLastError( ); item.todo = RebootSystem; SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item ); } wsprintf( szMajor, L"%u", OsVersion.dwMajorVersion ); wsprintf( szMinor, L"%u", OsVersion.dwMinorVersion ); wsprintf( szBuild, L"%u", OsVersion.dwBuildNumber ); // // Need to add "Quotes" around the text // WCHAR szDescription[ REMOTE_INSTALL_MAX_DESCRIPTION_CHAR_COUNT + 2 ]; WCHAR szHelpText[ REMOTE_INSTALL_MAX_HELPTEXT_CHAR_COUNT + 2 ]; WCHAR szOSVersion[ 30 ]; WCHAR szSystemRoot[ MAX_PATH ]; wsprintf( szDescription, L"\"%s\"", g_Description ); wsprintf( szHelpText, L"\"%s\"", g_HelpText ); wsprintf( szOSVersion, L"\"%s.%s (%s)\"", szMajor, szMinor, szBuild ); wsprintf( szSystemRoot, L"\"%s\"", g_SystemRoot ); wsprintf( szDestPath, L"\\\\%s\\REMINST\\Setup\\%s\\%s\\%s\\%s\\Templates\\riprep.sif", g_ServerName, g_Language, REMOTE_INSTALL_IMAGE_DIR_W, g_MirrorDir, g_Architecture ); wsprintf( szSrcPath, L"%s\\ristndrd.sif", g_ImageName ); b = CopyFile( szSrcPath, szDestPath, FALSE ); if ( !b ) { LBITEMDATA item; // Error will be logged in TASKS.CPP item.fSeen = FALSE; item.pszText = L"RISTNDRD.SIF"; item.uState = GetLastError( ); item.todo = RebootSystem; SendMessage( hDlg, WM_ERROR_OK, 0, (LPARAM) &item ); } WritePrivateProfileString( L"OSChooser", L"Description", szDescription, szDestPath ); WritePrivateProfileString( L"OSChooser", L"Help", szHelpText, szDestPath ); WritePrivateProfileString( L"OSChooser", L"ImageType", L"SYSPREP", szDestPath ); WritePrivateProfileString( L"OSChooser", L"Version", szOSVersion, szDestPath ); WritePrivateProfileString( L"OSChooser", L"SysPrepSystemRoot", szSystemRoot, szDestPath ); WritePrivateProfileString( L"SetupData", L"SysPrepDevice", L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%SYSPREPPATH%\"", szDestPath ); WritePrivateProfileString( L"SetupData", L"SysPrepDriversDevice", L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%SYSPREPDRIVERS%\"", szDestPath ); WritePrivateProfileString( L"OSChooser", L"LaunchFile", L"\"%INSTALLPATH%\\%MACHINETYPE%\\templates\\startrom.com\"", szDestPath ); // WritePrivateProfileString( L"SetupData", // L"OsLoadOptions", // L"\"/noguiboot /fastdetect\"", // szDestPath ); WritePrivateProfileString( L"SetupData", L"SetupSourceDevice", L"\"\\Device\\LanmanRedirector\\%SERVERNAME%\\RemInst\\%INSTALLPATH%\"", szDestPath ); WritePrivateProfileString( L"UserData", L"ComputerName", L"\"%MACHINENAME%\"", szDestPath ); WritePrivateProfileString( L"OSChooser", L"HalName", g_HalName, szDestPath ); WritePrivateProfileString( L"OSChooser", L"ProductType", g_ProductId, szDestPath ); // End the log dw = LoadString( g_hinstance, IDS_END_LOG, szSrcPath, ARRAYSIZE( szSrcPath )); Assert( dw ); LogMsg( szSrcPath ); // Display any errors recorded in the log if ( g_fErrorOccurred ) { HINSTANCE hRichedDLL; // Make sure the RichEdit control has been initialized. // Simply LoadLibbing it does this for us. hRichedDLL = LoadLibrary( L"RICHED32.DLL" ); if ( hRichedDLL != NULL ) { DialogBox( g_hinstance, MAKEINTRESOURCE( IDD_VIEWERRORS ), hDlg, ErrorsDlgProc ); FreeLibrary (hRichedDLL); } } RETURN(hr); }