//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1999 // // File: setuput.h // //-------------------------------------------------------------------------- #ifndef __SETUPUT_H__ #define __SETUPUT_H__ //+------------------------------------------------------------------------ // // File: setuput.h // // Contents: Header file for setup utility functions. // // Functions: // // History: 04/20/97 JerryK Created // //------------------------------------------------------------------------- #define SERVERINSTALLTICKS 50 #define CA_DEFAULT_KEY_LENGTH_ROOT 2048 #define CA_DEFAULT_KEY_LENGTH_SUB 1024 #define wszCERTSRVEXENAME L"certsrv.exe" #define wszCERTSRVSECTION L"certsrv" #define wszSERVERSECTION L"certsrv_server" #define wszCLIENTSECTION L"certsrv_client" #define wszOLDDOCCOMPONENT L"certsrv_doc" #define wszREGKEYOCMSUBCOMPONENTS L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents" #define wszREGKEYCERTSRVTODOLIST L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Setup\\OCManager\\ToDoList\\CertSrv" #define wszW3SVCNAME L"W3Svc" #define _JumpIfOutOfMemory(hr, label, pMem) \ { \ if (NULL == (pMem)) \ { \ (hr) = E_OUTOFMEMORY; \ _JumpError((hr), label, "Out of Memory"); \ } \ } #define IS_CLIENT_INSTALL 0x00000001 #define IS_CLIENT_REMOVE 0x00000002 #define IS_CLIENT_CHANGE 0x00000004 #define IS_CLIENT_UPGRADE 0x00000008 #define IS_CLIENT_ENABLED 0x00000010 #define IS_SERVER_INSTALL 0x00000100 #define IS_SERVER_REMOVE 0x00000200 #define IS_SERVER_CHANGE 0x00000400 #define IS_SERVER_UPGRADE 0x00000800 #define IS_SERVER_ENABLED 0x00001000 #define VP_MIN 1 #define VP_MAX 1000 #define VP_MAX_DAYS_WEEKS_MONTHS 9999 // count the number of bytes needed to fully store the WSZ #define WSZ_BYTECOUNT(__z__) \ ( (__z__ == NULL) ? 0 : (wcslen(__z__)+1)*sizeof(WCHAR) ) typedef enum { cscInvalid, cscTopLevel, cscServer, cscClient, } CertSubComponent; typedef struct _UNATTENDPARM { WCHAR const *pwszName; WCHAR **ppwszValue; } UNATTENDPARM; typedef struct _SUBCOMP { WCHAR const *pwszSubComponent; CertSubComponent cscSubComponent; DWORD InstallFlags; DWORD UninstallFlags; DWORD ChangeFlags; DWORD UpgradeFlags; DWORD EnabledFlags; DWORD SetupStatusFlags; BOOL fDefaultInstallUnattend; BOOL fInstallUnattend; UNATTENDPARM *aUnattendParm; } SUBCOMP; HRESULT InitCASetup(HWND, PER_COMPONENT_DATA *pComp); DWORD myDoPageRequest( IN PER_COMPONENT_DATA *pComp, IN WizardPagesType WhichOnes, IN OUT PSETUP_REQUEST_PAGES SetupPages); VOID FreeCAComponentInfo(PER_COMPONENT_DATA *pComp); HRESULT PrepareUnattendedAttributes( IN HWND hwnd, IN WCHAR const *pwszComponent, IN WCHAR const *pwszSubComponent, IN PER_COMPONENT_DATA *pComp); VOID FreeCAGlobals(VOID); HRESULT HookUnattendedServerAttributes( IN OUT PER_COMPONENT_DATA *pComp, IN OUT const SUBCOMP *pServerComp); HRESULT HookUnattendedClientAttributes( IN OUT PER_COMPONENT_DATA *pComp, IN OUT const SUBCOMP *pClientComp); SUBCOMP const * LookupSubComponent( IN CertSubComponent SubComp); HRESULT EnableVRootsAndShares( IN BOOL fFileSharesOnly, IN BOOL fUpgrade, IN BOOL fServer, IN OUT PER_COMPONENT_DATA *pComp); HRESULT DisableVRootsAndShares( IN BOOL fFileSharesOnly); HRESULT InstallCore( IN HWND hwnd, IN PER_COMPONENT_DATA *pComp, IN BOOL fServer); HRESULT PreUninstallCore( IN HWND hwnd, IN PER_COMPONENT_DATA *pComp, IN BOOL fPreserveClient); HRESULT UninstallCore( IN HWND hwnd, OPTIONAL IN PER_COMPONENT_DATA *pComp, IN DWORD PerCentCompleteBase, IN DWORD PerCentCompleteMax, IN BOOL fPreserveClient, IN BOOL fRemoveVD, IN BOOL fPreserveToDoList); HRESULT UpgradeServer( IN HWND hwnd, IN PER_COMPONENT_DATA *pComp); HRESULT UpgradeClient( IN HWND hwnd, IN PER_COMPONENT_DATA *pComp); HRESULT CreateConfigFiles(WCHAR *pwszDirectoryPath, PER_COMPONENT_DATA *pComp, BOOL fRemove, HWND hwnd); HRESULT myStringToAnsiFile(HANDLE hFile, LPCSTR psz, DWORD cch); HRESULT myStringToAnsiFile(HANDLE hFile, LPCWSTR pwsz, DWORD cch); HRESULT myStringToAnsiFile(HANDLE hFile, CHAR ch); HRESULT myGetEnvString( WCHAR **ppwszOut, WCHAR const *pwszVariable); VOID certocmBumpGasGauge( IN PER_COMPONENT_DATA *pComp, IN DWORD PerCentComplete DBGPARM(IN WCHAR const *pwszSource)); HRESULT UpdateSubComponentInstallStatus( IN WCHAR const *pwszComponent, IN WCHAR const *pwszSubComponent, IN OUT PER_COMPONENT_DATA *pComp); HRESULT StartCertsrvService(BOOL fSilent); BOOL certocmIsEnabled(PER_COMPONENT_DATA *pComp, CertSubComponent SubComp); BOOL certocmWasEnabled(PER_COMPONENT_DATA *pComp, CertSubComponent SubComp); BOOL certocmInstalling(PER_COMPONENT_DATA *pComp, CertSubComponent SubComp); BOOL certocmUninstalling(PER_COMPONENT_DATA *pComp, CertSubComponent SubComp); BOOL certocmPreserving(PER_COMPONENT_DATA *pComp, CertSubComponent SubComp); HRESULT certocmRetrieveUnattendedText( IN WCHAR const *pwszComponent, IN WCHAR const *pwszSubComponent, IN PER_COMPONENT_DATA *pComp); SUBCOMP * TranslateSubComponent( IN WCHAR const *pwszComponent, OPTIONAL IN WCHAR const *pwszSubComponent); HRESULT certocmReadInfString( IN HINF hInf, OPTIONAL IN WCHAR const *pwszFile, IN WCHAR const *pwszSection, IN WCHAR const *pwszName, IN OUT WCHAR **ppwszValue); HRESULT ImportPFXAndUpdateCSPInfo( IN const HWND hDlg, IN OUT PER_COMPONENT_DATA *pComp); HRESULT CreateProgramGroups(BOOL fClient, PER_COMPONENT_DATA *pComp, HWND hwnd); HRESULT LoadDefaultCAIDAttributes( IN OUT PER_COMPONENT_DATA *pComp); HRESULT LoadDefaultAdvanceAttributes( IN OUT CASERVERSETUPINFO* pServer); HRESULT BuildDBFileName( IN WCHAR const *pwszCAName, IN WCHAR const *pwszDBDirectory, OUT WCHAR **ppwszDBFile); VOID BuildPath( OUT WCHAR *pwszOut, IN DWORD cwcOut, IN WCHAR const *pwszDir, IN WCHAR const *pwszFile); HRESULT GetDefaultDBDirectory( IN PER_COMPONENT_DATA *pComp, OUT WCHAR **ppwszDir); HRESULT GetDefaultSharedFolder( OUT WCHAR **ppwszSharedFolder); HRESULT StartAndStopService( IN HINSTANCE hInstance, IN BOOL fUnattended, IN HWND const hwnd, IN WCHAR const *pwszServiceName, IN BOOL const fStopService, IN BOOL const fConfirm, IN int iMsg, OUT BOOL *pfServiceWasRunning); HRESULT FixCertsvcService( IN PER_COMPONENT_DATA *pComp); HRESULT DetermineServerCustomModule( IN OUT PER_COMPONENT_DATA *pComp, IN BOOL fPolicy); HRESULT DetermineServerUpgradePath( IN OUT PER_COMPONENT_DATA *pComp); HRESULT DetermineClientUpgradePath( IN OUT PER_COMPONENT_DATA *pComp); HRESULT CreateCertWebDatIncPage(IN PER_COMPONENT_DATA *pComp, IN BOOL bIsServer); HRESULT CancelCertsrvInstallation( HWND hwnd, PER_COMPONENT_DATA *pComp); HRESULT BuildCACertFileName( IN HINSTANCE hInstance, IN HWND hwnd, IN BOOL fUnattended, OPTIONAL IN WCHAR *pwszSharedFolder, IN WCHAR *pwszSanitizedName, OUT WCHAR **ppwszCACertFile); HRESULT myRenameCertRegKey( IN WCHAR const *pwszSrcCAName, IN WCHAR const *pwszDesCAName); bool IsValidPeriod(const CASERVERSETUPINFO *pServer); HRESULT CheckPostBaseInstallStatus( OUT BOOL *pfFinished); // externals extern BOOL g_fShowErrMsg; extern HINSTANCE g_hInstance; extern BOOL g_fW3SvcRunning; extern WCHAR *g_pwszArgvPath; extern WCHAR *g_pwszNoService; #if DBG_CERTSRV extern WCHAR *g_pwszDumpStrings; #endif extern UNATTENDPARM aUnattendParmClient[]; extern UNATTENDPARM aUnattendParmServer[]; #endif // __SETUPUT_H__