203 lines
6.8 KiB
C
203 lines
6.8 KiB
C
/*++
|
|
|
|
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;
|
|
}
|