//------------------------------------------------------------------------------------------------- // // Copyright (c) 2004, Outercurve Foundation. // This software is released under Microsoft Reciprocal License (MS-RL). // The license and further copyright text can be found in the file // LICENSE.TXT at the root directory of the distribution. // // // // IBoostrapperEngine implemented by engine and used by bootstrapper application. // //------------------------------------------------------------------------------------------------- #pragma once #define IDERROR -1 #define IDNOACTION 0 #define IDDOWNLOAD 101 // Only valid as a return code from OnResolveSource() to instruct the engine to use the download source. #define IDRESTART 102 #define IDSUSPEND 103 #define IDRELOAD_BOOTSTRAPPER 104 enum BOOTSTRAPPER_ACTION { BOOTSTRAPPER_ACTION_UNKNOWN, BOOTSTRAPPER_ACTION_HELP, BOOTSTRAPPER_ACTION_LAYOUT, BOOTSTRAPPER_ACTION_UNINSTALL, BOOTSTRAPPER_ACTION_INSTALL, BOOTSTRAPPER_ACTION_MODIFY, BOOTSTRAPPER_ACTION_REPAIR, BOOTSTRAPPER_ACTION_UPDATE_REPLACE, BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED, }; enum BOOTSTRAPPER_ACTION_STATE { BOOTSTRAPPER_ACTION_STATE_NONE, BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BOOTSTRAPPER_ACTION_STATE_INSTALL, BOOTSTRAPPER_ACTION_STATE_ADMIN_INSTALL, BOOTSTRAPPER_ACTION_STATE_MODIFY, BOOTSTRAPPER_ACTION_STATE_REPAIR, BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE, BOOTSTRAPPER_ACTION_STATE_MAJOR_UPGRADE, BOOTSTRAPPER_ACTION_STATE_PATCH, }; enum BOOTSTRAPPER_PACKAGE_STATE { BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN, BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE, BOOTSTRAPPER_PACKAGE_STATE_ABSENT, BOOTSTRAPPER_PACKAGE_STATE_CACHED, BOOTSTRAPPER_PACKAGE_STATE_PRESENT, BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED, }; enum BOOTSTRAPPER_REQUEST_STATE { BOOTSTRAPPER_REQUEST_STATE_NONE, BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT, BOOTSTRAPPER_REQUEST_STATE_ABSENT, BOOTSTRAPPER_REQUEST_STATE_CACHE, BOOTSTRAPPER_REQUEST_STATE_PRESENT, BOOTSTRAPPER_REQUEST_STATE_REPAIR, }; enum BOOTSTRAPPER_FEATURE_STATE { BOOTSTRAPPER_FEATURE_STATE_UNKNOWN, BOOTSTRAPPER_FEATURE_STATE_ABSENT, BOOTSTRAPPER_FEATURE_STATE_ADVERTISED, BOOTSTRAPPER_FEATURE_STATE_LOCAL, BOOTSTRAPPER_FEATURE_STATE_SOURCE, }; enum BOOTSTRAPPER_FEATURE_ACTION { BOOTSTRAPPER_FEATURE_ACTION_NONE, BOOTSTRAPPER_FEATURE_ACTION_ADDLOCAL, BOOTSTRAPPER_FEATURE_ACTION_ADDSOURCE, BOOTSTRAPPER_FEATURE_ACTION_ADDDEFAULT, BOOTSTRAPPER_FEATURE_ACTION_REINSTALL, BOOTSTRAPPER_FEATURE_ACTION_ADVERTISE, BOOTSTRAPPER_FEATURE_ACTION_REMOVE, }; enum BOOTSTRAPPER_LOG_LEVEL { BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel()) BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified }; enum BOOTSTRAPPER_UPDATE_HASH_TYPE { BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE, BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA1, }; DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB") { STDMETHOD(GetPackageCount)( __out DWORD* pcPackages ) = 0; STDMETHOD(GetVariableNumeric)( __in_z LPCWSTR wzVariable, __out LONGLONG* pllValue ) = 0; STDMETHOD(GetVariableString)( __in_z LPCWSTR wzVariable, __out_ecount_opt(*pcchValue) LPWSTR wzValue, __inout DWORD* pcchValue ) = 0; STDMETHOD(GetVariableVersion)( __in_z LPCWSTR wzVariable, __out DWORD64* pqwValue ) = 0; STDMETHOD(FormatString)( __in_z LPCWSTR wzIn, __out_ecount_opt(*pcchOut) LPWSTR wzOut, __inout DWORD* pcchOut ) = 0; STDMETHOD(EscapeString)( __in_z LPCWSTR wzIn, __out_ecount_opt(*pcchOut) LPWSTR wzOut, __inout DWORD* pcchOut ) = 0; STDMETHOD(EvaluateCondition)( __in_z LPCWSTR wzCondition, __out BOOL* pf ) = 0; STDMETHOD(Log)( __in BOOTSTRAPPER_LOG_LEVEL level, __in_z LPCWSTR wzMessage ) = 0; STDMETHOD(SendEmbeddedError)( __in DWORD dwErrorCode, __in_z_opt LPCWSTR wzMessage, __in DWORD dwUIHint, __out int* pnResult ) = 0; STDMETHOD(SendEmbeddedProgress)( __in DWORD dwProgressPercentage, __in DWORD dwOverallProgressPercentage, __out int* pnResult ) = 0; STDMETHOD(SetUpdate)( __in_z_opt LPCWSTR wzLocalSource, __in_z_opt LPCWSTR wzDownloadSource, __in DWORD64 qwSize, __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashType, __in_bcount_opt(cbHash) BYTE* rgbHash, __in DWORD cbHash ) = 0; STDMETHOD(SetLocalSource)( __in_z LPCWSTR wzPackageOrContainerId, __in_z_opt LPCWSTR wzPayloadId, __in_z LPCWSTR wzPath ) = 0; STDMETHOD(SetDownloadSource)( __in_z LPCWSTR wzPackageOrContainerId, __in_z_opt LPCWSTR wzPayloadId, __in_z LPCWSTR wzUrl, __in_z_opt LPWSTR wzUser, __in_z_opt LPWSTR wzPassword ) = 0; STDMETHOD(SetVariableNumeric)( __in_z LPCWSTR wzVariable, __in LONGLONG llValue ) = 0; STDMETHOD(SetVariableString)( __in_z LPCWSTR wzVariable, __in_z_opt LPCWSTR wzValue ) = 0; STDMETHOD(SetVariableVersion)( __in_z LPCWSTR wzVariable, __in DWORD64 qwValue ) = 0; STDMETHOD(CloseSplashScreen)() = 0; STDMETHOD(Detect)() = 0; STDMETHOD(Plan)( __in BOOTSTRAPPER_ACTION action ) = 0; STDMETHOD(Elevate)( __in_opt HWND hwndParent ) = 0; STDMETHOD(Apply)( __in_opt HWND hwndParent ) = 0; STDMETHOD(Quit)( __in DWORD dwExitCode ) = 0; };