|
|
#include "precomp.h"
#pragma hdrstop
VOID CleanUpHardDriveTags (VOID);
DWORD StartCleanup( IN PVOID ThreadParameter ) //
// BUGBUG - this routine NEVER gets executed in a /checkupgradeonly case
//
{ TCHAR Buffer[MAX_PATH]; HKEY setupKey; DWORD error;
//
// Make sure the copy threads are really gone so we're not
// trying to clean up files at the same time as files are
// getting copied.
//
CancelledMakeSureCopyThreadsAreDead();
error = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup"), 0, KEY_ALL_ACCESS, &setupKey );
if (error == ERROR_SUCCESS) {
//
// If g_DeleteRunOnceFlag is set and the user did not cancel setup, then
// remove the Winnt32RunOnce flag from the Setup key.
//
if (g_DeleteRunOnceFlag && !Cancelled) { RegDeleteValue (setupKey, S_WINNT32_WARNING); g_DeleteRunOnceFlag = FALSE; }
#ifdef _X86_
//
// If canceled, remove last report time, so that the report
// will be displayed on the next run of setup.
//
if (!ISNT()) { if (!CheckUpgradeOnly) { RegDeleteValue (setupKey, TEXT("LastReportTime")); } }
#endif
RegCloseKey (setupKey); }
//
// Let upgrade code do its cleanup.
//
if(UpgradeSupport.CleanupRoutine) { UpgradeSupport.CleanupRoutine(); }
if (g_DynUpdtStatus->ForceRemoveWorkingDir || !g_DynUpdtStatus->PreserveWorkingDir) { if (g_DynUpdtStatus->WorkingDir[0] && !g_DynUpdtStatus->RestartWinnt32) { MyDelnode (g_DynUpdtStatus->WorkingDir); }
GetCurrentWinnt32RegKey (Buffer, MAX_PATH); ConcatenatePaths (Buffer, WINNT_U_DYNAMICUPDATESHARE, MAX_PATH); RegDeleteKey (HKEY_LOCAL_MACHINE, Buffer); }
#if 0
//
// Remove registry entries
//
if (GetCurrentWinnt32RegKey (Buffer, MAX_PATH)) { RegDeleteKey (HKEY_LOCAL_MACHINE, Buffer); } #endif
//
// Always do this, since the system might not boot otherwise.
//
ForceBootFilesUncompressed(ThreadParameter,FALSE);
//
// The first thing to do is to wipe out the local source drive.
//
if(LocalSourceDirectory[0]) { MyDelnode(LocalSourceDirectory); }
if (!IsArc()) { #ifdef _X86_
//
// Blow away the local boot dir.
//
if(LocalBootDirectory[0]) { MyDelnode(LocalBootDirectory); } BuildSystemPartitionPathToFile (AUX_BS_NAME, Buffer, MAX_PATH); SetFileAttributes(Buffer,FILE_ATTRIBUTE_NORMAL); DeleteFile(Buffer);
BuildSystemPartitionPathToFile(TEXTMODE_INF, Buffer, MAX_PATH); SetFileAttributes(Buffer,FILE_ATTRIBUTE_NORMAL); DeleteFile(Buffer);
RestoreBootSector(); RestoreBootIni();
//
// restore backed up files and clean up backup directory
//
if(IsNEC98() && LocalBackupDirectory[0]) { SaveRestoreBootFiles_NEC98(NEC98RESTOREBOOTFILES); MyDelnode(LocalBackupDirectory); }
//
// Clean up any ~_~ files from drvlettr migration.
//
if (!ISNT()) { CleanUpHardDriveTags (); } #endif // _X86_
} else { // We're on an ARC machine.
#ifdef UNICODE // Always true for ARC, never true for Win9x upgrade
//
// Blow away setupldr off the root of the system partition.
//
BuildSystemPartitionPathToFile (SETUPLDR_FILENAME, Buffer, MAX_PATH); SetFileAttributes(Buffer,FILE_ATTRIBUTE_NORMAL); DeleteFile(Buffer);
RestoreNvRam(); #endif // UNICODE
} // if (!IsArc())
PostMessage(ThreadParameter,WMX_I_AM_DONE,0,0); return(0); }
|