/*++ Copyright (c) 1996 Microsoft Corporation Module Name: client.c Abstract: This file implements the file copy code. Environment: WIN32 User Mode Author: Wesley Witt (wesw) 17-Feb-1996 --*/ #include "wizard.h" #pragma hdrstop FILE_QUEUE_INFO ClientFileQueue[] = { //----------------------------------------------------------------------------------------------------------------------------------------------------- // Section Name Dest Dir INF Dir Id Dest Dir Id Platforms Copy Flags //----------------------------------------------------------------------------------------------------------------------------------------------------- { TEXT("ClientSystemFiles"), NULL, DIRID_SYSTEM, DIRID_SYSTEM, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("HelpFilesCommon"), NULL, DIRID_HELP, DIRID_HELP, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("HelpFilesClient"), NULL, DIRID_HELP, DIRID_HELP, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("ServerPrinterFiles"), NULL, PRINTER_DRIVER_DIR, DIRID_SPOOLDRIVERS, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("ClientCoverPageFiles"), COVERPAGE_DIR, COVERPAGE_CLIENT_DIR, DIRID_SYSTEM, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("OutlookConfigFile"), OUTLOOKCONFIG_DIR, OUTLOOK_ECF_DIR, DIRID_WINDOWS, PLATFORM_NONE, SP_COPY_NEWER } }; #define CountClientFileQueue (sizeof(ClientFileQueue)/sizeof(FILE_QUEUE_INFO)) FILE_QUEUE_INFO PointPrintFileQueue[] = { //-------------------------------------------------------------------------------------------------------------------------------------- // Section Name Dest Dir INF Dir Id Dest Dir Id Platforms Copy Flags //-------------------------------------------------------------------------------------------------------------------------------------- { TEXT("ClientSystemFiles"), FAXCLIENTS_DIR, DIRID_SYSTEM, DIRID_SPOOLDRIVERS, PLATFORM_USE_MACHINE, SP_COPY_NEWER }, { TEXT("HelpFilesCommon"), NULL, DIRID_HELP, DIRID_HELP, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("HelpFilesClient"), NULL, DIRID_HELP, DIRID_HELP, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("ServerPrinterFiles"), NULL, PRINTER_DRIVER_DIR, DIRID_SPOOLDRIVERS, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("ClientCoverPageFiles"), COVERPAGE_DIR, COVERPAGE_CLIENT_DIR, DIRID_SYSTEM, PLATFORM_NONE, SP_COPY_NEWER }, { TEXT("OutlookConfigFile"), OUTLOOKCONFIG_DIR, OUTLOOK_ECF_DIR, DIRID_WINDOWS, PLATFORM_NONE, SP_COPY_NEWER } }; #define CountPointPrintFileQueue (sizeof(PointPrintFileQueue)/sizeof(FILE_QUEUE_INFO)) DWORD ClientFileCopyThread( HWND hwnd ) { HINF FaxSetupInf; HSPFILEQ *FileQueue; PVOID QueueContext; DWORD ErrorCode = 0; if (InstallMode & INSTALL_NEW) { SendMessage( hwnd, WM_MY_PROGRESS, 0xff, 30 ); } if (!InitializeFileQueue( hwnd, &FaxSetupInf, &FileQueue, &QueueContext, SourceDirectory )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } if (!ProcessFileQueue( FaxSetupInf, FileQueue, QueueContext, SourceDirectory, ClientFileQueue, CountClientFileQueue, InstallQueueCallback, SETUP_ACTION_COPY )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } if (!CloseFileQueue( FileQueue, QueueContext )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } if (InstallMode & INSTALL_NEW) { SetProgress( hwnd, IDS_SETTING_REGISTRY ); if (!SetClientRegistryData()) { PopUpMsg( hwnd, IDS_COULD_SET_REG_DATA, TRUE, 0 ); PropSheet_PressButton( GetParent(hwnd), PSBTN_CANCEL ); SetWindowLong( hwnd, DWL_MSGRESULT, -1 ); OkToCancel = TRUE; return TRUE; } SetProgress( hwnd, IDS_CREATING_FAXPRT ); SetInstalledFlag( TRUE ); SetInstallType( FAX_INSTALL_NETWORK_CLIENT ); SetUnInstallInfo(); ErrorCode = CreateClientFaxPrinter( hwnd, WizData.PrinterName ); if (ErrorCode != ERROR_SUCCESS) { SetInstalledFlag( FALSE ); ErrorCode = (ErrorCode == ERROR_ACCESS_DENIED) ? IDS_PERMISSION_CREATE_PRINTER : IDS_COULD_NOT_CREATE_PRINTER; goto error_exit; } SetProgress( hwnd, IDS_CREATING_GROUPS ); CreateGroupItems( FALSE, NULL ); InstallHelpFiles(); } // // do the exchange stuff // DoExchangeInstall( hwnd ); SetWindowLong( hwnd, DWL_MSGRESULT, 0 ); PropSheet_PressButton( GetParent(hwnd), PSBTN_NEXT ); return TRUE; error_exit: InstallThreadError = ErrorCode; PopUpMsg( hwnd, ErrorCode, TRUE, 0 ); OkToCancel = TRUE; PropSheet_PressButton( GetParent(hwnd), PSBTN_CANCEL ); SetWindowLong( hwnd, DWL_MSGRESULT, -1 ); return FALSE; } DWORD PointPrintFileCopyThread( HWND hwnd ) { HINF FaxSetupInf; HSPFILEQ *FileQueue; PVOID QueueContext; DWORD ErrorCode = 0; SendMessage( hwnd, WM_MY_PROGRESS, 0xff, 20 ); if (!InitializeFileQueue( hwnd, &FaxSetupInf, &FileQueue, &QueueContext, SourceDirectory )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } if (!ProcessFileQueue( FaxSetupInf, FileQueue, QueueContext, SourceDirectory, PointPrintFileQueue, CountPointPrintFileQueue, InstallQueueCallback, SETUP_ACTION_COPY )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } if (!CloseFileQueue( FileQueue, QueueContext )) { ErrorCode = IDS_COULD_NOT_COPY_FILES; goto error_exit; } SetProgress( hwnd, IDS_SETTING_REGISTRY ); if (!SetClientRegistryData()) { PopUpMsg( hwnd, IDS_COULD_SET_REG_DATA, TRUE, 0 ); PropSheet_PressButton( GetParent(hwnd), PSBTN_CANCEL ); SetWindowLong( hwnd, DWL_MSGRESULT, -1 ); OkToCancel = TRUE; return TRUE; } SetProgress( hwnd, IDS_CREATING_GROUPS ); CreateGroupItems( FALSE, ClientSetupServerName ); SetWindowLong( hwnd, DWL_MSGRESULT, 0 ); PropSheet_PressButton( GetParent(hwnd), PSBTN_FINISH ); return TRUE; error_exit: InstallThreadError = ErrorCode; PopUpMsg( hwnd, ErrorCode, TRUE, 0 ); OkToCancel = TRUE; PropSheet_PressButton( GetParent(hwnd), PSBTN_CANCEL ); SetWindowLong( hwnd, DWL_MSGRESULT, -1 ); return FALSE; }