From 90cdebbe94c7f60db86965ffb97d9ba51d0bc9fc Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 21 Mar 2024 00:59:21 -0700 Subject: Simplify BootstrapperApplication header files Take this breaking change opportunity to simplify the header files used by BA devs. --- .../WixToolset.BootstrapperApplicationApi.nuspec | 4 +- src/api/burn/balutil/balutil.cpp | 2 +- src/api/burn/balutil/balutil.vcxproj | 2 +- .../balutil/inc/BalBaseBootstrapperApplication.h | 1235 --------------- src/api/burn/balutil/inc/BootstrapperApplication.h | 21 + .../burn/balutil/inc/BootstrapperApplicationBase.h | 1235 +++++++++++++++ .../burn/balutil/inc/IBootstrapperApplication.h | 4 +- src/api/burn/balutil/inc/IBootstrapperEngine.h | 2 +- src/api/burn/balutil/inc/balutil.h | 9 - src/api/burn/balutil/precomp.h | 2 +- src/api/burn/bextutil/bextutil.nuspec | 4 +- src/api/burn/bextutil/inc/IBootstrapperExtension.h | 2 +- .../bextutil/inc/IBootstrapperExtensionEngine.h | 2 +- src/api/burn/inc/BootstrapperApplication.h | 1591 -------------------- src/api/burn/inc/BootstrapperApplicationTypes.h | 1540 +++++++++++++++++++ src/api/burn/inc/BootstrapperEngine.h | 460 ------ src/api/burn/inc/BootstrapperEngineTypes.h | 453 ++++++ src/api/burn/inc/BootstrapperExtension.h | 61 - src/api/burn/inc/BootstrapperExtensionEngine.h | 200 --- .../burn/inc/BootstrapperExtensionEngineTypes.h | 200 +++ src/api/burn/inc/BootstrapperExtensionTypes.h | 61 + .../TestBootstrapperApplication.cpp | 5 +- src/api/burn/test/BalUtilUnitTest/precomp.h | 4 +- src/burn/engine/engine.vcxproj | 8 +- src/burn/engine/precomp.h | 4 +- src/burn/test/BurnUnitTest/precomp.h | 4 +- src/ext/Bal/Samples/bafunctions/precomp.h | 7 +- .../WixInternalUIBootstrapperApplication.cpp | 9 +- .../stdbas/WixStandardBootstrapperApplication.cpp | 15 +- src/ext/Bal/stdbas/precomp.h | 8 +- .../TestBootstrapperApplication.cpp | 5 +- src/ext/Bal/test/WixStdFnUnitTest/precomp.h | 4 +- src/ext/Bal/wixiuiba/precomp.h | 6 +- src/ext/Bal/wixprqba/precomp.h | 7 +- src/ext/Bal/wixstdba/precomp.h | 6 +- .../BafRelatedBundleVariableTesting/precomp.h | 3 +- .../TestData/Manual/BafThmutilTesting/precomp.h | 3 +- .../TestData/PrereqBaTests/PrereqBaf/PrereqBaf.cpp | 4 +- .../TestData/PrereqBaTests/PrereqBaf/precomp.h | 3 +- 39 files changed, 3558 insertions(+), 3637 deletions(-) delete mode 100644 src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h create mode 100644 src/api/burn/balutil/inc/BootstrapperApplication.h create mode 100644 src/api/burn/balutil/inc/BootstrapperApplicationBase.h delete mode 100644 src/api/burn/inc/BootstrapperApplication.h create mode 100644 src/api/burn/inc/BootstrapperApplicationTypes.h delete mode 100644 src/api/burn/inc/BootstrapperEngine.h create mode 100644 src/api/burn/inc/BootstrapperEngineTypes.h delete mode 100644 src/api/burn/inc/BootstrapperExtension.h delete mode 100644 src/api/burn/inc/BootstrapperExtensionEngine.h create mode 100644 src/api/burn/inc/BootstrapperExtensionEngineTypes.h create mode 100644 src/api/burn/inc/BootstrapperExtensionTypes.h diff --git a/src/api/burn/WixToolset.BootstrapperApplicationApi/WixToolset.BootstrapperApplicationApi.nuspec b/src/api/burn/WixToolset.BootstrapperApplicationApi/WixToolset.BootstrapperApplicationApi.nuspec index 22099635..4c850cdf 100644 --- a/src/api/burn/WixToolset.BootstrapperApplicationApi/WixToolset.BootstrapperApplicationApi.nuspec +++ b/src/api/burn/WixToolset.BootstrapperApplicationApi/WixToolset.BootstrapperApplicationApi.nuspec @@ -37,8 +37,8 @@ - - + + diff --git a/src/api/burn/balutil/balutil.cpp b/src/api/burn/balutil/balutil.cpp index 7f774b6c..5d8bfa9c 100644 --- a/src/api/burn/balutil/balutil.cpp +++ b/src/api/burn/balutil/balutil.cpp @@ -38,7 +38,7 @@ static void MsgProc( // prototypes -DAPI_(HRESULT) BootstrapperApplicationRun( +EXTERN_C HRESULT __stdcall BootstrapperApplicationRun( __in IBootstrapperApplication* pApplication ) { diff --git a/src/api/burn/balutil/balutil.vcxproj b/src/api/burn/balutil/balutil.vcxproj index 7d539b5b..2b0fd23f 100644 --- a/src/api/burn/balutil/balutil.vcxproj +++ b/src/api/burn/balutil/balutil.vcxproj @@ -63,7 +63,7 @@ - + diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h deleted file mode 100644 index 09f1f7a2..00000000 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ /dev/null @@ -1,1235 +0,0 @@ -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -#include -#include - -#include "IBootstrapperApplication.h" - -#include "balutil.h" -#include "balinfo.h" -#include "balretry.h" - -#define CBalBaseBootstrapperApplication CBootstrapperApplication - -class CBootstrapperApplication : public IBootstrapperApplication -{ -public: // IUnknown - virtual STDMETHODIMP QueryInterface( - __in REFIID riid, - __out LPVOID *ppvObject - ) - { - if (!ppvObject) - { - return E_INVALIDARG; - } - - *ppvObject = NULL; - - if (::IsEqualIID(__uuidof(IBootstrapperApplication), riid)) - { - *ppvObject = static_cast(this); - } - else if (::IsEqualIID(IID_IUnknown, riid)) - { - *ppvObject = static_cast(this); - } - else // no interface for requested iid - { - return E_NOINTERFACE; - } - - AddRef(); - return S_OK; - } - - virtual STDMETHODIMP_(ULONG) AddRef() - { - return ::InterlockedIncrement(&this->m_cReferences); - } - - virtual STDMETHODIMP_(ULONG) Release() - { - long l = ::InterlockedDecrement(&this->m_cReferences); - if (0 < l) - { - return l; - } - - delete this; - return 0; - } - -public: // IBootstrapperApplication - virtual STDMETHODIMP_(HRESULT) BAProc( - __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, - __in const LPVOID /*pvArgs*/, - __inout LPVOID /*pvResults*/ - ) - { - return E_NOTIMPL; - } - - virtual STDMETHODIMP_(void) BAProcFallback( - __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, - __in const LPVOID /*pvArgs*/, - __inout LPVOID /*pvResults*/, - __inout HRESULT* /*phr*/ - ) - { - } - - virtual STDMETHODIMP OnCreate( - __in IBootstrapperEngine* pEngine, - __in BOOTSTRAPPER_COMMAND* pCommand - ) - { - HRESULT hr = S_OK; - - m_commandDisplay = pCommand->display; - - hr = BalInfoParseCommandLine(&m_BalInfoCommand, pCommand); - BalExitOnFailure(hr, "Failed to parse command line with balutil."); - - pEngine->AddRef(); - m_pEngine = pEngine; - - LExit: - return hr; - } - - virtual STDMETHODIMP OnDestroy( - __in BOOL /*fReload*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnStartup() - { - return S_OK; - } - - virtual STDMETHODIMP OnShutdown( - __inout BOOTSTRAPPER_SHUTDOWN_ACTION* /*pAction*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnDetectBegin( - __in BOOL /*fCached*/, - __in BOOTSTRAPPER_REGISTRATION_TYPE /*registrationType*/, - __in DWORD /*cPackages*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectForwardCompatibleBundle( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, - __in_z LPCWSTR /*wzBundleTag*/, - __in BOOL /*fPerMachine*/, - __in_z LPCWSTR /*wzVersion*/, - __in BOOL /*fMissingFromCache*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectUpdateBegin( - __in_z LPCWSTR /*wzUpdateLocation*/, - __inout BOOL* pfCancel, - __inout BOOL* /*pfSkip*/ - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectUpdate( - __in_z LPCWSTR /*wzUpdateLocation*/, - __in DWORD64 /*dw64Size*/, - __in_z_opt LPCWSTR /*wzHash*/, - __in BOOTSTRAPPER_UPDATE_HASH_TYPE /*hashAlgorithm*/, - __in_z LPCWSTR /*wzVersion*/, - __in_z LPCWSTR /*wzTitle*/, - __in_z LPCWSTR /*wzSummary*/, - __in_z LPCWSTR /*wzContentType*/, - __in_z LPCWSTR /*wzContent*/, - __inout BOOL* pfCancel, - __inout BOOL* /*pfStopProcessingUpdates*/ - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectUpdateComplete( - __in HRESULT /*hrStatus*/, - __inout BOOL* /*pfIgnoreError*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnDetectRelatedBundle( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, - __in_z LPCWSTR /*wzBundleTag*/, - __in BOOL /*fPerMachine*/, - __in_z LPCWSTR /*wzVersion*/, - __in BOOL /*fMissingFromCache*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectPackageBegin( - __in_z LPCWSTR /*wzPackageId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectCompatibleMsiPackage( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageVersion*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectRelatedMsiPackage( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzUpgradeCode*/, - __in_z LPCWSTR /*wzProductCode*/, - __in BOOL /*fPerMachine*/, - __in_z LPCWSTR /*wzVersion*/, - __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectPatchTarget( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzProductCode*/, - __in BOOTSTRAPPER_PACKAGE_STATE /*patchState*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectMsiFeature( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzFeatureId*/, - __in BOOTSTRAPPER_FEATURE_STATE /*state*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnDetectPackageComplete( - __in_z LPCWSTR /*wzPackageId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_PACKAGE_STATE /*state*/, - __in BOOL /*fCached*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnDetectComplete( - __in HRESULT /*hrStatus*/, - __in BOOL /*fEligibleForCleanup*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlanBegin( - __in DWORD /*cPackages*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanRelatedBundle( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, - __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanRollbackBoundary( - __in_z LPCWSTR /*wzRollbackBoundaryId*/, - __in BOOL /*fRecommendedTransaction*/, - __inout BOOL* /*pfTransaction*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanPackageBegin( - __in_z LPCWSTR /*wzPackageId*/, - __in BOOTSTRAPPER_PACKAGE_STATE /*state*/, - __in BOOL /*fCached*/, - __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT /*installCondition*/, - __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT /*repairCondition*/, - __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, - __in BOOTSTRAPPER_CACHE_TYPE /*recommendedCacheType*/, - __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestState*/, - __inout BOOTSTRAPPER_CACHE_TYPE* /*pRequestedCacheType*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanCompatibleMsiPackageBegin( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageVersion*/, - __in BOOL /*fRecommendedRemove*/, - __inout BOOL* /*pfRequestRemove*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanCompatibleMsiPackageComplete( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageId*/, - __in HRESULT /*hrStatus*/, - __in BOOL /*fRequestedRemove*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlanPatchTarget( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzProductCode*/, - __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, - __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanMsiFeature( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzFeatureId*/, - __in BOOTSTRAPPER_FEATURE_STATE /*recommendedState*/, - __inout BOOTSTRAPPER_FEATURE_STATE* /*pRequestedState*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanMsiPackage( - __in_z LPCWSTR /*wzPackageId*/, - __in BOOL /*fExecute*/, - __in BOOTSTRAPPER_ACTION_STATE /*action*/, - __in BOOTSTRAPPER_MSI_FILE_VERSIONING /*recommendedFileVersioning*/, - __inout BOOL* pfCancel, - __inout BURN_MSI_PROPERTY* /*pActionMsiProperty*/, - __inout INSTALLUILEVEL* /*pUiLevel*/, - __inout BOOL* /*pfDisableExternalUiHandler*/, - __inout BOOTSTRAPPER_MSI_FILE_VERSIONING* /*pFileVersioning*/ - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanPackageComplete( - __in_z LPCWSTR /*wzPackageId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_REQUEST_STATE /*requested*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlannedCompatiblePackage( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzCompatiblePackageId*/, - __in BOOL /*fRemove*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlannedPackage( - __in_z LPCWSTR /*wzPackageId*/, - __in BOOTSTRAPPER_ACTION_STATE /*execute*/, - __in BOOTSTRAPPER_ACTION_STATE /*rollback*/, - __in BOOL /*fPlannedCache*/, - __in BOOL /*fPlannedUncache*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlanComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnApplyBegin( - __in DWORD /*dwPhaseCount*/, - __inout BOOL* pfCancel - ) - { - m_dwProgressPercentage = 0; - m_dwOverallProgressPercentage = 0; - - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnElevateBegin( - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnElevateComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnProgress( - __in DWORD dwProgressPercentage, - __in DWORD dwOverallProgressPercentage, - __inout BOOL* pfCancel - ) - { - HRESULT hr = S_OK; - int nResult = IDNOACTION; - - m_dwProgressPercentage = dwProgressPercentage; - m_dwOverallProgressPercentage = dwOverallProgressPercentage; - - if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) - { - hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); - BalExitOnFailure(hr, "Failed to send embedded overall progress."); - - if (IDERROR == nResult) - { - hr = E_FAIL; - } - else if (IDCANCEL == nResult) - { - *pfCancel = TRUE; - } - } - - LExit: - *pfCancel |= CheckCanceled(); - return hr; - } - - virtual STDMETHODIMP OnError( - __in BOOTSTRAPPER_ERROR_TYPE errorType, - __in_z LPCWSTR wzPackageId, - __in DWORD dwCode, - __in_z LPCWSTR wzError, - __in DWORD dwUIHint, - __in DWORD /*cData*/, - __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, - __in int /*nRecommendation*/, - __inout int* pResult - ) - { - BalRetryErrorOccurred(wzPackageId, dwCode); - - if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) - { - HRESULT hr = m_pEngine->SendEmbeddedError(dwCode, wzError, dwUIHint, pResult); - if (FAILED(hr)) - { - *pResult = IDERROR; - } - } - else if (CheckCanceled()) - { - *pResult = IDCANCEL; - } - else if (BOOTSTRAPPER_DISPLAY_FULL == m_commandDisplay) - { - if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType || BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) - { - *pResult = IDTRYAGAIN; - } - } - - return S_OK; - } - - virtual STDMETHODIMP OnRegisterBegin( - __in BOOTSTRAPPER_REGISTRATION_TYPE /*recommendedRegistrationType*/, - __inout BOOL* pfCancel, - __inout BOOTSTRAPPER_REGISTRATION_TYPE* /*pRegistrationType*/ - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnRegisterComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnCacheBegin( - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCachePackageBegin( - __in_z LPCWSTR /*wzPackageId*/, - __in DWORD /*cCachePayloads*/, - __in DWORD64 /*dw64PackageCacheSize*/, - __in BOOL /*fVital*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheAcquireBegin( - __in_z_opt LPCWSTR wzPackageOrContainerId, - __in_z_opt LPCWSTR wzPayloadId, - __in_z LPCWSTR /*wzSource*/, - __in_z_opt LPCWSTR /*wzDownloadUrl*/, - __in_z_opt LPCWSTR /*wzPayloadContainerId*/, - __in BOOTSTRAPPER_CACHE_OPERATION /*recommendation*/, - __inout BOOTSTRAPPER_CACHE_OPERATION* /*pAction*/, - __inout BOOL* pfCancel - ) - { - BalRetryStartContainerOrPayload(wzPackageOrContainerId, wzPayloadId); - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheAcquireProgress( - __in_z LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in DWORD64 /*dw64Progress*/, - __in DWORD64 /*dw64Total*/, - __in DWORD /*dwOverallPercentage*/, - __inout BOOL* pfCancel - ) - { - HRESULT hr = S_OK; - int nResult = IDNOACTION; - - // Send progress even though we don't update the numbers to at least give the caller an opportunity - // to cancel. - if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) - { - hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); - BalExitOnFailure(hr, "Failed to send embedded cache progress."); - - if (IDERROR == nResult) - { - hr = E_FAIL; - } - else if (IDCANCEL == nResult) - { - *pfCancel = TRUE; - } - } - - LExit: - *pfCancel |= CheckCanceled(); - return hr; - } - - virtual STDMETHODIMP OnCacheAcquireResolving( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in_z LPCWSTR* /*rgSearchPaths*/, - __in DWORD /*cSearchPaths*/, - __in BOOL /*fFoundLocal*/, - __in DWORD /*dwRecommendedSearchPath*/, - __in_z_opt LPCWSTR /*wzDownloadUrl*/, - __in_z_opt LPCWSTR /*wzPayloadContainerId*/, - __in BOOTSTRAPPER_CACHE_RESOLVE_OPERATION /*recommendation*/, - __inout DWORD* /*pdwChosenSearchPath*/, - __inout BOOTSTRAPPER_CACHE_RESOLVE_OPERATION* /*pAction*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheAcquireComplete( - __in_z LPCWSTR wzPackageOrContainerId, - __in_z_opt LPCWSTR wzPayloadId, - __in HRESULT hrStatus, - __in BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION* pAction - ) - { - HRESULT hr = S_OK; - BOOL fRetry = FALSE; - - if (CheckCanceled()) - { - ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); - } - - hr = BalRetryEndContainerOrPayload(wzPackageOrContainerId, wzPayloadId, hrStatus, &fRetry); - ExitOnFailure(hr, "BalRetryEndPackage for cache failed"); - - if (fRetry) - { - *pAction = BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY; - } - - LExit: - return hr; - } - - virtual STDMETHODIMP OnCacheVerifyBegin( - __in_z LPCWSTR /*wzPackageOrContainerId*/, - __in_z LPCWSTR /*wzPayloadId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheVerifyProgress( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in DWORD64 /*dw64Progress*/, - __in DWORD64 /*dw64Total*/, - __in DWORD /*dwOverallPercentage*/, - __in BOOTSTRAPPER_CACHE_VERIFY_STEP /*verifyStep*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheVerifyComplete( - __in_z LPCWSTR /*wzPackageOrContainerId*/, - __in_z LPCWSTR /*wzPayloadId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction - ) - { - if (CheckCanceled()) - { - *pAction = BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_NONE; - } - - return S_OK; - } - - virtual STDMETHODIMP OnCachePackageComplete( - __in_z LPCWSTR /*wzPackageId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction - ) - { - if (CheckCanceled()) - { - *pAction = BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_NONE; - } - - return S_OK; - } - - virtual STDMETHODIMP OnCacheComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnExecuteBegin( - __in DWORD /*cExecutingPackages*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnExecutePackageBegin( - __in_z LPCWSTR wzPackageId, - __in BOOL fExecute, - __in BOOTSTRAPPER_ACTION_STATE /*action*/, - __in INSTALLUILEVEL /*uiLevel*/, - __in BOOL /*fDisableExternalUiHandler*/, - __inout BOOL* pfCancel - ) - { - // Only track retry on execution (not rollback). - if (fExecute) - { - BalRetryStartPackage(wzPackageId); - } - - m_fRollingBack = !fExecute; - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnExecutePatchTarget( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzTargetProductCode*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnExecuteProgress( - __in_z LPCWSTR /*wzPackageId*/, - __in DWORD /*dwProgressPercentage*/, - __in DWORD /*dwOverallProgressPercentage*/, - __inout BOOL* pfCancel - ) - { - HRESULT hr = S_OK; - int nResult = IDNOACTION; - - // Send progress even though we don't update the numbers to at least give the caller an opportunity - // to cancel. - if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) - { - hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); - BalExitOnFailure(hr, "Failed to send embedded execute progress."); - - if (IDERROR == nResult) - { - hr = E_FAIL; - } - else if (IDCANCEL == nResult) - { - *pfCancel = TRUE; - } - } - - LExit: - *pfCancel |= CheckCanceled(); - return hr; - } - - virtual STDMETHODIMP OnExecuteMsiMessage( - __in_z LPCWSTR /*wzPackageId*/, - __in INSTALLMESSAGE /*messageType*/, - __in DWORD /*dwUIHint*/, - __in_z LPCWSTR /*wzMessage*/, - __in DWORD /*cData*/, - __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, - __in int /*nRecommendation*/, - __inout int* pResult - ) - { - if (CheckCanceled()) - { - *pResult = IDCANCEL; - } - - return S_OK; - } - - virtual STDMETHODIMP OnExecuteFilesInUse( - __in_z LPCWSTR /*wzPackageId*/, - __in DWORD /*cFiles*/, - __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, - __in int /*nRecommendation*/, - __in BOOTSTRAPPER_FILES_IN_USE_TYPE /*source*/, - __inout int* pResult - ) - { - if (CheckCanceled()) - { - *pResult = IDCANCEL; - } - - return S_OK; - } - - virtual STDMETHODIMP OnExecutePackageComplete( - __in_z LPCWSTR wzPackageId, - __in HRESULT hrStatus, - __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, - __in BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction - ) - { - HRESULT hr = S_OK; - BOOL fRetry = FALSE; - - if (CheckCanceled()) - { - ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); - } - - hr = BalRetryEndPackage(wzPackageId, hrStatus, &fRetry); - ExitOnFailure(hr, "BalRetryEndPackage for execute failed"); - - if (fRetry) - { - *pAction = BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RETRY; - } - - LExit: - return hr; - } - - virtual STDMETHODIMP OnExecuteComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnUnregisterBegin( - __in BOOTSTRAPPER_REGISTRATION_TYPE /*recommendedRegistrationType*/, - __inout BOOTSTRAPPER_REGISTRATION_TYPE* /*pRegistrationType*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnUnregisterComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnApplyComplete( - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_APPLY_RESTART restart, - __in BOOTSTRAPPER_APPLYCOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction - ) - { - HRESULT hr = S_OK; - BOOL fRestartRequired = BOOTSTRAPPER_APPLY_RESTART_REQUIRED == restart; - BOOL fShouldBlockRestart = BOOTSTRAPPER_DISPLAY_FULL <= m_commandDisplay && BAL_INFO_RESTART_PROMPT >= m_BalInfoCommand.restart; - - if (fRestartRequired && !fShouldBlockRestart) - { - *pAction = BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART; - } - - return hr; - } - - virtual STDMETHODIMP OnLaunchApprovedExeBegin( - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnLaunchApprovedExeComplete( - __in HRESULT /*hrStatus*/, - __in DWORD /*dwProcessId*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnBeginMsiTransactionBegin( - __in_z LPCWSTR /*wzTransactionId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnBeginMsiTransactionComplete( - __in_z LPCWSTR /*wzTransactionId*/, - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnCommitMsiTransactionBegin( - __in_z LPCWSTR /*wzTransactionId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCommitMsiTransactionComplete( - __in_z LPCWSTR /*wzTransactionId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, - __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ - ) - { - HRESULT hr = S_OK; - - if (CheckCanceled()) - { - ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); - } - - LExit: - return hr; - } - - virtual STDMETHODIMP OnRollbackMsiTransactionBegin( - __in_z LPCWSTR /*wzTransactionId*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnRollbackMsiTransactionComplete( - __in_z LPCWSTR /*wzTransactionId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, - __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ - ) - { - HRESULT hr = S_OK; - - if (CheckCanceled()) - { - ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); - } - - LExit: - return hr; - } - - virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPauseAutomaticUpdatesComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnSystemRestorePointBegin( - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnSystemRestorePointComplete( - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlanForwardCompatibleBundle( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, - __in_z LPCWSTR /*wzBundleTag*/, - __in BOOL /*fPerMachine*/, - __in_z LPCWSTR /*wzVersion*/, - __in BOOL /*fRecommendedIgnoreBundle*/, - __inout BOOL* pfCancel, - __inout BOOL* /*pfIgnoreBundle*/ - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyBegin( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyProgress( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in DWORD64 /*dw64Progress*/, - __in DWORD64 /*dw64Total*/, - __in DWORD /*dwOverallPercentage*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyComplete( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnCachePayloadExtractBegin( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCachePayloadExtractProgress( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in DWORD64 /*dw64Progress*/, - __in DWORD64 /*dw64Total*/, - __in DWORD /*dwOverallPercentage*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCachePayloadExtractComplete( - __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, - __in_z_opt LPCWSTR /*wzPayloadId*/, - __in HRESULT /*hrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnPlanRestoreRelatedBundle( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, - __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnPlanRelatedBundleType( - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE /*recommendedType*/, - __inout BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE* /*pRequestedType*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnApplyDowngrade( - __in HRESULT /*hrRecommended*/, - __in HRESULT* /*phrStatus*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnExecuteProcessCancel( - __in_z LPCWSTR /*wzPackageId*/, - __in DWORD /*dwProcessId*/, - __in BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION* /*pAction*/ - ) - { - return S_OK; - } - - virtual STDMETHODIMP OnDetectRelatedBundlePackage( - __in_z LPCWSTR /*wzPackageId*/, - __in_z LPCWSTR /*wzBundleId*/, - __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, - __in BOOL /*fPerMachine*/, - __in_z LPCWSTR /*wzVersion*/, - __inout BOOL* pfCancel - ) - { - *pfCancel |= CheckCanceled(); - return S_OK; - } - - virtual STDMETHODIMP OnCachePackageNonVitalValidationFailure( - __in_z LPCWSTR /*wzPackageId*/, - __in HRESULT /*hrStatus*/, - __in BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION /*recommendation*/, - __inout BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION* /*pAction*/ - ) - { - return S_OK; - } - -protected: - // - // PromptCancel - prompts the user to close (if not forced). - // - virtual BOOL PromptCancel( - __in HWND hWnd, - __in BOOL fForceCancel, - __in_z_opt LPCWSTR wzMessage, - __in_z_opt LPCWSTR wzCaption - ) - { - ::EnterCriticalSection(&m_csCanceled); - - // Only prompt the user to close if we have not canceled already. - if (!m_fCanceled) - { - if (fForceCancel) - { - m_fCanceled = TRUE; - } - else - { - m_fCanceled = (IDYES == ::MessageBoxW(hWnd, wzMessage, wzCaption, MB_YESNO | MB_ICONEXCLAMATION)); - } - } - - ::LeaveCriticalSection(&m_csCanceled); - - return m_fCanceled; - } - - // - // CheckCanceled - waits if the cancel dialog is up and checks to see if the user canceled the operation. - // - BOOL CheckCanceled() - { - ::EnterCriticalSection(&m_csCanceled); - ::LeaveCriticalSection(&m_csCanceled); - return m_fRollingBack ? FALSE : m_fCanceled; - } - - BOOL IsRollingBack() - { - return m_fRollingBack; - } - - BOOL IsCanceled() - { - return m_fCanceled; - } - - CBalBaseBootstrapperApplication( - __in DWORD dwRetryCount = 0, - __in DWORD dwRetryTimeout = 1000 - ) - { - m_cReferences = 1; - m_commandDisplay = BOOTSTRAPPER_DISPLAY_UNKNOWN; - - m_pEngine = NULL; - - ::InitializeCriticalSection(&m_csCanceled); - m_fCanceled = FALSE; - m_BalInfoCommand = { }; - m_fRollingBack = FALSE; - - m_dwProgressPercentage = 0; - m_dwOverallProgressPercentage = 0; - - BalRetryInitialize(dwRetryCount, dwRetryTimeout); - } - - virtual ~CBalBaseBootstrapperApplication() - { - BalInfoUninitializeCommandLine(&m_BalInfoCommand); - BalRetryUninitialize(); - ::DeleteCriticalSection(&m_csCanceled); - - ReleaseNullObject(m_pEngine); - } - -protected: - CRITICAL_SECTION m_csCanceled; - BOOL m_fCanceled; - - IBootstrapperEngine* m_pEngine; - BAL_INFO_COMMAND m_BalInfoCommand; - -private: - long m_cReferences; - BOOTSTRAPPER_DISPLAY m_commandDisplay; - - BOOL m_fRollingBack; - - DWORD m_dwProgressPercentage; - DWORD m_dwOverallProgressPercentage; -}; diff --git a/src/api/burn/balutil/inc/BootstrapperApplication.h b/src/api/burn/balutil/inc/BootstrapperApplication.h new file mode 100644 index 00000000..d11fccf0 --- /dev/null +++ b/src/api/burn/balutil/inc/BootstrapperApplication.h @@ -0,0 +1,21 @@ +#pragma once +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include "IBootstrapperApplication.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +/******************************************************************* + BootstrapperApplicationRun - runs the IBootstrapperApplication until + the application quits. + +********************************************************************/ +HRESULT __stdcall BootstrapperApplicationRun( + __in IBootstrapperApplication* pApplication + ); + +#if defined(__cplusplus) +} +#endif diff --git a/src/api/burn/balutil/inc/BootstrapperApplicationBase.h b/src/api/burn/balutil/inc/BootstrapperApplicationBase.h new file mode 100644 index 00000000..a3a3643f --- /dev/null +++ b/src/api/burn/balutil/inc/BootstrapperApplicationBase.h @@ -0,0 +1,1235 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include +#include + +#include "IBootstrapperApplication.h" + +#include "balutil.h" +#include "balinfo.h" +#include "balretry.h" + +#define CBalBaseBootstrapperApplication CBootstrapperApplicationBase + +class CBootstrapperApplicationBase : public IBootstrapperApplication +{ +public: // IUnknown + virtual STDMETHODIMP QueryInterface( + __in REFIID riid, + __out LPVOID *ppvObject + ) + { + if (!ppvObject) + { + return E_INVALIDARG; + } + + *ppvObject = NULL; + + if (::IsEqualIID(__uuidof(IBootstrapperApplication), riid)) + { + *ppvObject = static_cast(this); + } + else if (::IsEqualIID(IID_IUnknown, riid)) + { + *ppvObject = static_cast(this); + } + else // no interface for requested iid + { + return E_NOINTERFACE; + } + + AddRef(); + return S_OK; + } + + virtual STDMETHODIMP_(ULONG) AddRef() + { + return ::InterlockedIncrement(&this->m_cReferences); + } + + virtual STDMETHODIMP_(ULONG) Release() + { + long l = ::InterlockedDecrement(&this->m_cReferences); + if (0 < l) + { + return l; + } + + delete this; + return 0; + } + +public: // IBootstrapperApplication + virtual STDMETHODIMP_(HRESULT) BAProc( + __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, + __in const LPVOID /*pvArgs*/, + __inout LPVOID /*pvResults*/ + ) + { + return E_NOTIMPL; + } + + virtual STDMETHODIMP_(void) BAProcFallback( + __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/, + __in const LPVOID /*pvArgs*/, + __inout LPVOID /*pvResults*/, + __inout HRESULT* /*phr*/ + ) + { + } + + virtual STDMETHODIMP OnCreate( + __in IBootstrapperEngine* pEngine, + __in BOOTSTRAPPER_COMMAND* pCommand + ) + { + HRESULT hr = S_OK; + + m_commandDisplay = pCommand->display; + + hr = BalInfoParseCommandLine(&m_BalInfoCommand, pCommand); + BalExitOnFailure(hr, "Failed to parse command line with balutil."); + + pEngine->AddRef(); + m_pEngine = pEngine; + + LExit: + return hr; + } + + virtual STDMETHODIMP OnDestroy( + __in BOOL /*fReload*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnStartup() + { + return S_OK; + } + + virtual STDMETHODIMP OnShutdown( + __inout BOOTSTRAPPER_SHUTDOWN_ACTION* /*pAction*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnDetectBegin( + __in BOOL /*fCached*/, + __in BOOTSTRAPPER_REGISTRATION_TYPE /*registrationType*/, + __in DWORD /*cPackages*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectForwardCompatibleBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in_z LPCWSTR /*wzBundleTag*/, + __in BOOL /*fPerMachine*/, + __in_z LPCWSTR /*wzVersion*/, + __in BOOL /*fMissingFromCache*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectUpdateBegin( + __in_z LPCWSTR /*wzUpdateLocation*/, + __inout BOOL* pfCancel, + __inout BOOL* /*pfSkip*/ + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectUpdate( + __in_z LPCWSTR /*wzUpdateLocation*/, + __in DWORD64 /*dw64Size*/, + __in_z_opt LPCWSTR /*wzHash*/, + __in BOOTSTRAPPER_UPDATE_HASH_TYPE /*hashAlgorithm*/, + __in_z LPCWSTR /*wzVersion*/, + __in_z LPCWSTR /*wzTitle*/, + __in_z LPCWSTR /*wzSummary*/, + __in_z LPCWSTR /*wzContentType*/, + __in_z LPCWSTR /*wzContent*/, + __inout BOOL* pfCancel, + __inout BOOL* /*pfStopProcessingUpdates*/ + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectUpdateComplete( + __in HRESULT /*hrStatus*/, + __inout BOOL* /*pfIgnoreError*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnDetectRelatedBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in_z LPCWSTR /*wzBundleTag*/, + __in BOOL /*fPerMachine*/, + __in_z LPCWSTR /*wzVersion*/, + __in BOOL /*fMissingFromCache*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectPackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectCompatibleMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageVersion*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectRelatedMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzUpgradeCode*/, + __in_z LPCWSTR /*wzProductCode*/, + __in BOOL /*fPerMachine*/, + __in_z LPCWSTR /*wzVersion*/, + __in BOOTSTRAPPER_RELATED_OPERATION /*operation*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectPatchTarget( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzProductCode*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*patchState*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectMsiFeature( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzFeatureId*/, + __in BOOTSTRAPPER_FEATURE_STATE /*state*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnDetectPackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*state*/, + __in BOOL /*fCached*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnDetectComplete( + __in HRESULT /*hrStatus*/, + __in BOOL /*fEligibleForCleanup*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlanBegin( + __in DWORD /*cPackages*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanRelatedBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanRollbackBoundary( + __in_z LPCWSTR /*wzRollbackBoundaryId*/, + __in BOOL /*fRecommendedTransaction*/, + __inout BOOL* /*pfTransaction*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanPackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __in BOOTSTRAPPER_PACKAGE_STATE /*state*/, + __in BOOL /*fCached*/, + __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT /*installCondition*/, + __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT /*repairCondition*/, + __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, + __in BOOTSTRAPPER_CACHE_TYPE /*recommendedCacheType*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestState*/, + __inout BOOTSTRAPPER_CACHE_TYPE* /*pRequestedCacheType*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanCompatibleMsiPackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageVersion*/, + __in BOOL /*fRecommendedRemove*/, + __inout BOOL* /*pfRequestRemove*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanCompatibleMsiPackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOL /*fRequestedRemove*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlanPatchTarget( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzProductCode*/, + __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanMsiFeature( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzFeatureId*/, + __in BOOTSTRAPPER_FEATURE_STATE /*recommendedState*/, + __inout BOOTSTRAPPER_FEATURE_STATE* /*pRequestedState*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanMsiPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in BOOL /*fExecute*/, + __in BOOTSTRAPPER_ACTION_STATE /*action*/, + __in BOOTSTRAPPER_MSI_FILE_VERSIONING /*recommendedFileVersioning*/, + __inout BOOL* pfCancel, + __inout BURN_MSI_PROPERTY* /*pActionMsiProperty*/, + __inout INSTALLUILEVEL* /*pUiLevel*/, + __inout BOOL* /*pfDisableExternalUiHandler*/, + __inout BOOTSTRAPPER_MSI_FILE_VERSIONING* /*pFileVersioning*/ + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanPackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_REQUEST_STATE /*requested*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlannedCompatiblePackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzCompatiblePackageId*/, + __in BOOL /*fRemove*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlannedPackage( + __in_z LPCWSTR /*wzPackageId*/, + __in BOOTSTRAPPER_ACTION_STATE /*execute*/, + __in BOOTSTRAPPER_ACTION_STATE /*rollback*/, + __in BOOL /*fPlannedCache*/, + __in BOOL /*fPlannedUncache*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlanComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnApplyBegin( + __in DWORD /*dwPhaseCount*/, + __inout BOOL* pfCancel + ) + { + m_dwProgressPercentage = 0; + m_dwOverallProgressPercentage = 0; + + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnElevateBegin( + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnElevateComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnProgress( + __in DWORD dwProgressPercentage, + __in DWORD dwOverallProgressPercentage, + __inout BOOL* pfCancel + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + m_dwProgressPercentage = dwProgressPercentage; + m_dwOverallProgressPercentage = dwOverallProgressPercentage; + + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded overall progress."); + + if (IDERROR == nResult) + { + hr = E_FAIL; + } + else if (IDCANCEL == nResult) + { + *pfCancel = TRUE; + } + } + + LExit: + *pfCancel |= CheckCanceled(); + return hr; + } + + virtual STDMETHODIMP OnError( + __in BOOTSTRAPPER_ERROR_TYPE errorType, + __in_z LPCWSTR wzPackageId, + __in DWORD dwCode, + __in_z LPCWSTR wzError, + __in DWORD dwUIHint, + __in DWORD /*cData*/, + __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, + __in int /*nRecommendation*/, + __inout int* pResult + ) + { + BalRetryErrorOccurred(wzPackageId, dwCode); + + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) + { + HRESULT hr = m_pEngine->SendEmbeddedError(dwCode, wzError, dwUIHint, pResult); + if (FAILED(hr)) + { + *pResult = IDERROR; + } + } + else if (CheckCanceled()) + { + *pResult = IDCANCEL; + } + else if (BOOTSTRAPPER_DISPLAY_FULL == m_commandDisplay) + { + if (BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER == errorType || BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY == errorType) + { + *pResult = IDTRYAGAIN; + } + } + + return S_OK; + } + + virtual STDMETHODIMP OnRegisterBegin( + __in BOOTSTRAPPER_REGISTRATION_TYPE /*recommendedRegistrationType*/, + __inout BOOL* pfCancel, + __inout BOOTSTRAPPER_REGISTRATION_TYPE* /*pRegistrationType*/ + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnRegisterComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCacheBegin( + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCachePackageBegin( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*cCachePayloads*/, + __in DWORD64 /*dw64PackageCacheSize*/, + __in BOOL /*fVital*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheAcquireBegin( + __in_z_opt LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in_z LPCWSTR /*wzSource*/, + __in_z_opt LPCWSTR /*wzDownloadUrl*/, + __in_z_opt LPCWSTR /*wzPayloadContainerId*/, + __in BOOTSTRAPPER_CACHE_OPERATION /*recommendation*/, + __inout BOOTSTRAPPER_CACHE_OPERATION* /*pAction*/, + __inout BOOL* pfCancel + ) + { + BalRetryStartContainerOrPayload(wzPackageOrContainerId, wzPayloadId); + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheAcquireProgress( + __in_z LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in DWORD64 /*dw64Progress*/, + __in DWORD64 /*dw64Total*/, + __in DWORD /*dwOverallPercentage*/, + __inout BOOL* pfCancel + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + // Send progress even though we don't update the numbers to at least give the caller an opportunity + // to cancel. + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded cache progress."); + + if (IDERROR == nResult) + { + hr = E_FAIL; + } + else if (IDCANCEL == nResult) + { + *pfCancel = TRUE; + } + } + + LExit: + *pfCancel |= CheckCanceled(); + return hr; + } + + virtual STDMETHODIMP OnCacheAcquireResolving( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in_z LPCWSTR* /*rgSearchPaths*/, + __in DWORD /*cSearchPaths*/, + __in BOOL /*fFoundLocal*/, + __in DWORD /*dwRecommendedSearchPath*/, + __in_z_opt LPCWSTR /*wzDownloadUrl*/, + __in_z_opt LPCWSTR /*wzPayloadContainerId*/, + __in BOOTSTRAPPER_CACHE_RESOLVE_OPERATION /*recommendation*/, + __inout DWORD* /*pdwChosenSearchPath*/, + __inout BOOTSTRAPPER_CACHE_RESOLVE_OPERATION* /*pAction*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheAcquireComplete( + __in_z LPCWSTR wzPackageOrContainerId, + __in_z_opt LPCWSTR wzPayloadId, + __in HRESULT hrStatus, + __in BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION* pAction + ) + { + HRESULT hr = S_OK; + BOOL fRetry = FALSE; + + if (CheckCanceled()) + { + ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); + } + + hr = BalRetryEndContainerOrPayload(wzPackageOrContainerId, wzPayloadId, hrStatus, &fRetry); + ExitOnFailure(hr, "BalRetryEndPackage for cache failed"); + + if (fRetry) + { + *pAction = BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY; + } + + LExit: + return hr; + } + + virtual STDMETHODIMP OnCacheVerifyBegin( + __in_z LPCWSTR /*wzPackageOrContainerId*/, + __in_z LPCWSTR /*wzPayloadId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheVerifyProgress( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in DWORD64 /*dw64Progress*/, + __in DWORD64 /*dw64Total*/, + __in DWORD /*dwOverallPercentage*/, + __in BOOTSTRAPPER_CACHE_VERIFY_STEP /*verifyStep*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheVerifyComplete( + __in_z LPCWSTR /*wzPackageOrContainerId*/, + __in_z LPCWSTR /*wzPayloadId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction + ) + { + if (CheckCanceled()) + { + *pAction = BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_NONE; + } + + return S_OK; + } + + virtual STDMETHODIMP OnCachePackageComplete( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction + ) + { + if (CheckCanceled()) + { + *pAction = BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_NONE; + } + + return S_OK; + } + + virtual STDMETHODIMP OnCacheComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnExecuteBegin( + __in DWORD /*cExecutingPackages*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnExecutePackageBegin( + __in_z LPCWSTR wzPackageId, + __in BOOL fExecute, + __in BOOTSTRAPPER_ACTION_STATE /*action*/, + __in INSTALLUILEVEL /*uiLevel*/, + __in BOOL /*fDisableExternalUiHandler*/, + __inout BOOL* pfCancel + ) + { + // Only track retry on execution (not rollback). + if (fExecute) + { + BalRetryStartPackage(wzPackageId); + } + + m_fRollingBack = !fExecute; + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnExecutePatchTarget( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzTargetProductCode*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnExecuteProgress( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*dwProgressPercentage*/, + __in DWORD /*dwOverallProgressPercentage*/, + __inout BOOL* pfCancel + ) + { + HRESULT hr = S_OK; + int nResult = IDNOACTION; + + // Send progress even though we don't update the numbers to at least give the caller an opportunity + // to cancel. + if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_commandDisplay) + { + hr = m_pEngine->SendEmbeddedProgress(m_dwProgressPercentage, m_dwOverallProgressPercentage, &nResult); + BalExitOnFailure(hr, "Failed to send embedded execute progress."); + + if (IDERROR == nResult) + { + hr = E_FAIL; + } + else if (IDCANCEL == nResult) + { + *pfCancel = TRUE; + } + } + + LExit: + *pfCancel |= CheckCanceled(); + return hr; + } + + virtual STDMETHODIMP OnExecuteMsiMessage( + __in_z LPCWSTR /*wzPackageId*/, + __in INSTALLMESSAGE /*messageType*/, + __in DWORD /*dwUIHint*/, + __in_z LPCWSTR /*wzMessage*/, + __in DWORD /*cData*/, + __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, + __in int /*nRecommendation*/, + __inout int* pResult + ) + { + if (CheckCanceled()) + { + *pResult = IDCANCEL; + } + + return S_OK; + } + + virtual STDMETHODIMP OnExecuteFilesInUse( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*cFiles*/, + __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, + __in int /*nRecommendation*/, + __in BOOTSTRAPPER_FILES_IN_USE_TYPE /*source*/, + __inout int* pResult + ) + { + if (CheckCanceled()) + { + *pResult = IDCANCEL; + } + + return S_OK; + } + + virtual STDMETHODIMP OnExecutePackageComplete( + __in_z LPCWSTR wzPackageId, + __in HRESULT hrStatus, + __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, + __in BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction + ) + { + HRESULT hr = S_OK; + BOOL fRetry = FALSE; + + if (CheckCanceled()) + { + ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); + } + + hr = BalRetryEndPackage(wzPackageId, hrStatus, &fRetry); + ExitOnFailure(hr, "BalRetryEndPackage for execute failed"); + + if (fRetry) + { + *pAction = BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RETRY; + } + + LExit: + return hr; + } + + virtual STDMETHODIMP OnExecuteComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnUnregisterBegin( + __in BOOTSTRAPPER_REGISTRATION_TYPE /*recommendedRegistrationType*/, + __inout BOOTSTRAPPER_REGISTRATION_TYPE* /*pRegistrationType*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnUnregisterComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnApplyComplete( + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_APPLY_RESTART restart, + __in BOOTSTRAPPER_APPLYCOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction + ) + { + HRESULT hr = S_OK; + BOOL fRestartRequired = BOOTSTRAPPER_APPLY_RESTART_REQUIRED == restart; + BOOL fShouldBlockRestart = BOOTSTRAPPER_DISPLAY_FULL <= m_commandDisplay && BAL_INFO_RESTART_PROMPT >= m_BalInfoCommand.restart; + + if (fRestartRequired && !fShouldBlockRestart) + { + *pAction = BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART; + } + + return hr; + } + + virtual STDMETHODIMP OnLaunchApprovedExeBegin( + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnLaunchApprovedExeComplete( + __in HRESULT /*hrStatus*/, + __in DWORD /*dwProcessId*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnBeginMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnBeginMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCommitMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, + __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ + ) + { + HRESULT hr = S_OK; + + if (CheckCanceled()) + { + ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); + } + + LExit: + return hr; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionBegin( + __in_z LPCWSTR /*wzTransactionId*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnRollbackMsiTransactionComplete( + __in_z LPCWSTR /*wzTransactionId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_APPLY_RESTART /*restart*/, + __in BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* /*pAction*/ + ) + { + HRESULT hr = S_OK; + + if (CheckCanceled()) + { + ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT)); + } + + LExit: + return hr; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPauseAutomaticUpdatesComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointBegin( + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnSystemRestorePointComplete( + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlanForwardCompatibleBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in_z LPCWSTR /*wzBundleTag*/, + __in BOOL /*fPerMachine*/, + __in_z LPCWSTR /*wzVersion*/, + __in BOOL /*fRecommendedIgnoreBundle*/, + __inout BOOL* pfCancel, + __inout BOOL* /*pfIgnoreBundle*/ + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyBegin( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyProgress( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in DWORD64 /*dw64Progress*/, + __in DWORD64 /*dw64Total*/, + __in DWORD /*dwOverallPercentage*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCacheContainerOrPayloadVerifyComplete( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnCachePayloadExtractBegin( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCachePayloadExtractProgress( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in DWORD64 /*dw64Progress*/, + __in DWORD64 /*dw64Total*/, + __in DWORD /*dwOverallPercentage*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCachePayloadExtractComplete( + __in_z_opt LPCWSTR /*wzPackageOrContainerId*/, + __in_z_opt LPCWSTR /*wzPayloadId*/, + __in HRESULT /*hrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnPlanRestoreRelatedBundle( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_REQUEST_STATE /*recommendedState*/, + __inout BOOTSTRAPPER_REQUEST_STATE* /*pRequestedState*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnPlanRelatedBundleType( + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE /*recommendedType*/, + __inout BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE* /*pRequestedType*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnApplyDowngrade( + __in HRESULT /*hrRecommended*/, + __in HRESULT* /*phrStatus*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnExecuteProcessCancel( + __in_z LPCWSTR /*wzPackageId*/, + __in DWORD /*dwProcessId*/, + __in BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION* /*pAction*/ + ) + { + return S_OK; + } + + virtual STDMETHODIMP OnDetectRelatedBundlePackage( + __in_z LPCWSTR /*wzPackageId*/, + __in_z LPCWSTR /*wzBundleId*/, + __in BOOTSTRAPPER_RELATION_TYPE /*relationType*/, + __in BOOL /*fPerMachine*/, + __in_z LPCWSTR /*wzVersion*/, + __inout BOOL* pfCancel + ) + { + *pfCancel |= CheckCanceled(); + return S_OK; + } + + virtual STDMETHODIMP OnCachePackageNonVitalValidationFailure( + __in_z LPCWSTR /*wzPackageId*/, + __in HRESULT /*hrStatus*/, + __in BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION /*recommendation*/, + __inout BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION* /*pAction*/ + ) + { + return S_OK; + } + +protected: + // + // PromptCancel - prompts the user to close (if not forced). + // + virtual BOOL PromptCancel( + __in HWND hWnd, + __in BOOL fForceCancel, + __in_z_opt LPCWSTR wzMessage, + __in_z_opt LPCWSTR wzCaption + ) + { + ::EnterCriticalSection(&m_csCanceled); + + // Only prompt the user to close if we have not canceled already. + if (!m_fCanceled) + { + if (fForceCancel) + { + m_fCanceled = TRUE; + } + else + { + m_fCanceled = (IDYES == ::MessageBoxW(hWnd, wzMessage, wzCaption, MB_YESNO | MB_ICONEXCLAMATION)); + } + } + + ::LeaveCriticalSection(&m_csCanceled); + + return m_fCanceled; + } + + // + // CheckCanceled - waits if the cancel dialog is up and checks to see if the user canceled the operation. + // + BOOL CheckCanceled() + { + ::EnterCriticalSection(&m_csCanceled); + ::LeaveCriticalSection(&m_csCanceled); + return m_fRollingBack ? FALSE : m_fCanceled; + } + + BOOL IsRollingBack() + { + return m_fRollingBack; + } + + BOOL IsCanceled() + { + return m_fCanceled; + } + + CBootstrapperApplicationBase( + __in DWORD dwRetryCount = 0, + __in DWORD dwRetryTimeout = 1000 + ) + { + m_cReferences = 1; + m_commandDisplay = BOOTSTRAPPER_DISPLAY_UNKNOWN; + + m_pEngine = NULL; + + ::InitializeCriticalSection(&m_csCanceled); + m_fCanceled = FALSE; + m_BalInfoCommand = { }; + m_fRollingBack = FALSE; + + m_dwProgressPercentage = 0; + m_dwOverallProgressPercentage = 0; + + BalRetryInitialize(dwRetryCount, dwRetryTimeout); + } + + virtual ~CBootstrapperApplicationBase() + { + BalInfoUninitializeCommandLine(&m_BalInfoCommand); + BalRetryUninitialize(); + ::DeleteCriticalSection(&m_csCanceled); + + ReleaseNullObject(m_pEngine); + } + +protected: + CRITICAL_SECTION m_csCanceled; + BOOL m_fCanceled; + + IBootstrapperEngine* m_pEngine; + BAL_INFO_COMMAND m_BalInfoCommand; + +private: + long m_cReferences; + BOOTSTRAPPER_DISPLAY m_commandDisplay; + + BOOL m_fRollingBack; + + DWORD m_dwProgressPercentage; + DWORD m_dwOverallProgressPercentage; +}; diff --git a/src/api/burn/balutil/inc/IBootstrapperApplication.h b/src/api/burn/balutil/inc/IBootstrapperApplication.h index 3f57f095..a08f6863 100644 --- a/src/api/burn/balutil/inc/IBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/IBootstrapperApplication.h @@ -1,8 +1,8 @@ #pragma once // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -#include -#include +#include "BootstrapperApplicationTypes.h" +#include "IBootstrapperEngine.h" DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-AB06-099D717C67FE") { diff --git a/src/api/burn/balutil/inc/IBootstrapperEngine.h b/src/api/burn/balutil/inc/IBootstrapperEngine.h index ef3b9812..02094aa5 100644 --- a/src/api/burn/balutil/inc/IBootstrapperEngine.h +++ b/src/api/burn/balutil/inc/IBootstrapperEngine.h @@ -1,7 +1,7 @@ #pragma once // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -#include "BootstrapperEngine.h" +#include "BootstrapperEngineTypes.h" DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB") { diff --git a/src/api/burn/balutil/inc/balutil.h b/src/api/burn/balutil/inc/balutil.h index d77b3599..32190b56 100644 --- a/src/api/burn/balutil/inc/balutil.h +++ b/src/api/burn/balutil/inc/balutil.h @@ -42,15 +42,6 @@ static const HRESULT E_WIXSTDBA_CONDITION_FAILED = MAKE_HRESULT(SEVERITY_ERROR, static const HRESULT E_PREREQBA_INFINITE_LOOP = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 1002); -/******************************************************************* - BootstrapperApplicationRun - runs the IBootstrapperApplication until - the application quits. - -********************************************************************/ -DAPI_(HRESULT) BootstrapperApplicationRun( - __in IBootstrapperApplication* pApplication - ); - /******************************************************************* BalDebuggerCheck - allows bootstrapper application to explicitly check whether a debugger should be attached to the boostrapper application. diff --git a/src/api/burn/balutil/precomp.h b/src/api/burn/balutil/precomp.h index 753bc21f..3123143e 100644 --- a/src/api/burn/balutil/precomp.h +++ b/src/api/burn/balutil/precomp.h @@ -30,7 +30,7 @@ #include #include -#include "IBootstrapperApplication.h" +#include "BootstrapperApplication.h" #include "balutil.h" #include "BalBootstrapperEngine.h" diff --git a/src/api/burn/bextutil/bextutil.nuspec b/src/api/burn/bextutil/bextutil.nuspec index c710f424..436c0028 100644 --- a/src/api/burn/bextutil/bextutil.nuspec +++ b/src/api/burn/bextutil/bextutil.nuspec @@ -21,8 +21,8 @@ - - + + diff --git a/src/api/burn/bextutil/inc/IBootstrapperExtension.h b/src/api/burn/bextutil/inc/IBootstrapperExtension.h index 4005a9fd..19df0516 100644 --- a/src/api/burn/bextutil/inc/IBootstrapperExtension.h +++ b/src/api/burn/bextutil/inc/IBootstrapperExtension.h @@ -1,7 +1,7 @@ #pragma once // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -#include +#include "BootstrapperExtensionTypes.h" DECLARE_INTERFACE_IID_(IBootstrapperExtension, IUnknown, "93123C9D-796B-4FCD-A507-6EDEF9A925FD") { diff --git a/src/api/burn/bextutil/inc/IBootstrapperExtensionEngine.h b/src/api/burn/bextutil/inc/IBootstrapperExtensionEngine.h index b23a57b7..a78868f2 100644 --- a/src/api/burn/bextutil/inc/IBootstrapperExtensionEngine.h +++ b/src/api/burn/bextutil/inc/IBootstrapperExtensionEngine.h @@ -1,7 +1,7 @@ #pragma once // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -#include +#include "BootstrapperExtensionEngineTypes.h" DECLARE_INTERFACE_IID_(IBootstrapperExtensionEngine, IUnknown, "9D027A39-F6B6-42CC-9737-C185089EB263") { diff --git a/src/api/burn/inc/BootstrapperApplication.h b/src/api/burn/inc/BootstrapperApplication.h deleted file mode 100644 index 8b945b77..00000000 --- a/src/api/burn/inc/BootstrapperApplication.h +++ /dev/null @@ -1,1591 +0,0 @@ -#pragma once -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -#include "BootstrapperEngine.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_API_VERSION = L"burn.ba.apiver"; -const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_PIPE_NAME = L"burn.ba.pipe"; -const DWORD WIX_5_BOOTSTRAPPER_APPLICATION_API_VERSION = 5; - -enum BOOTSTRAPPER_DISPLAY -{ - BOOTSTRAPPER_DISPLAY_UNKNOWN, - BOOTSTRAPPER_DISPLAY_EMBEDDED, - BOOTSTRAPPER_DISPLAY_NONE, - BOOTSTRAPPER_DISPLAY_PASSIVE, - BOOTSTRAPPER_DISPLAY_FULL, -}; - -enum BOOTSTRAPPER_REGISTRATION_TYPE -{ - BOOTSTRAPPER_REGISTRATION_TYPE_NONE, // The engine will ignore NONE if it recommended INPROGRESS or FULL. - BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS, - BOOTSTRAPPER_REGISTRATION_TYPE_FULL, -}; - -enum BOOTSTRAPPER_RESUME_TYPE -{ - BOOTSTRAPPER_RESUME_TYPE_NONE, - BOOTSTRAPPER_RESUME_TYPE_INVALID, // resume information is present but invalid - BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, // relaunched after an unexpected interruption - BOOTSTRAPPER_RESUME_TYPE_REBOOT, // relaunched after reboot - BOOTSTRAPPER_RESUME_TYPE_SUSPEND, // relaunched after suspend - BOOTSTRAPPER_RESUME_TYPE_ARP, // launched from ARP -}; - -enum BOOTSTRAPPER_ERROR_TYPE -{ - BOOTSTRAPPER_ERROR_TYPE_ELEVATE, // error occurred trying to elevate. - BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, // error came from windows installer. - BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, // error came from an exe package. - BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER, // error occurred trying to authenticate with HTTP server. - BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY, // error occurred trying to authenticate with HTTP proxy. - BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply. -}; - -enum BOOTSTRAPPER_FILES_IN_USE_TYPE -{ - BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI, // INSTALLMESSAGE_FILESINUSE - BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM, // INSTALLMESSAGE_RMFILESINUSE - BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, // MMIO_CLOSE_APPS -}; - -enum BOOTSTRAPPER_RELATED_OPERATION -{ - BOOTSTRAPPER_RELATED_OPERATION_NONE, - BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE, - BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE, - BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE, - BOOTSTRAPPER_RELATED_OPERATION_REMOVE, - BOOTSTRAPPER_RELATED_OPERATION_INSTALL, - BOOTSTRAPPER_RELATED_OPERATION_REPAIR, -}; - -enum BOOTSTRAPPER_CACHE_OPERATION -{ - // There is no source available. - BOOTSTRAPPER_CACHE_OPERATION_NONE, - // Copy the payload or container from the chosen local source. - BOOTSTRAPPER_CACHE_OPERATION_COPY, - // Download the payload or container using the download URL. - BOOTSTRAPPER_CACHE_OPERATION_DOWNLOAD, - // Extract the payload from the container. - BOOTSTRAPPER_CACHE_OPERATION_EXTRACT, -}; - -enum BOOTSTRAPPER_CACHE_RESOLVE_OPERATION -{ - // There is no source available. - BOOTSTRAPPER_CACHE_RESOLVE_NONE, - // Copy the payload or container from the chosen local source. - BOOTSTRAPPER_CACHE_RESOLVE_LOCAL, - // Download the payload or container from the download URL. - BOOTSTRAPPER_CACHE_RESOLVE_DOWNLOAD, - // Extract the payload from the container. - BOOTSTRAPPER_CACHE_RESOLVE_CONTAINER, - // Look again for the payload or container locally. - BOOTSTRAPPER_CACHE_RESOLVE_RETRY, -}; - -enum BOOTSTRAPPER_CACHE_VERIFY_STEP -{ - BOOTSTRAPPER_CACHE_VERIFY_STEP_STAGE, - BOOTSTRAPPER_CACHE_VERIFY_STEP_HASH, - BOOTSTRAPPER_CACHE_VERIFY_STEP_FINALIZE, -}; - -enum BOOTSTRAPPER_APPLY_RESTART -{ - BOOTSTRAPPER_APPLY_RESTART_NONE, - BOOTSTRAPPER_APPLY_RESTART_REQUIRED, - BOOTSTRAPPER_APPLY_RESTART_INITIATED, -}; - -enum BOOTSTRAPPER_RELATION_TYPE -{ - BOOTSTRAPPER_RELATION_NONE, - BOOTSTRAPPER_RELATION_DETECT, - BOOTSTRAPPER_RELATION_UPGRADE, - BOOTSTRAPPER_RELATION_ADDON, - BOOTSTRAPPER_RELATION_PATCH, - BOOTSTRAPPER_RELATION_DEPENDENT_ADDON, - BOOTSTRAPPER_RELATION_DEPENDENT_PATCH, - BOOTSTRAPPER_RELATION_UPDATE, - BOOTSTRAPPER_RELATION_CHAIN_PACKAGE, -}; - -enum BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE -{ - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_NONE, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_ADDON, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_PATCH, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_ADDON, - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_PATCH, -}; - -enum BOOTSTRAPPER_CACHE_TYPE -{ - BOOTSTRAPPER_CACHE_TYPE_REMOVE, - BOOTSTRAPPER_CACHE_TYPE_KEEP, - BOOTSTRAPPER_CACHE_TYPE_FORCE, -}; - -enum BOOTSTRAPPER_PACKAGE_CONDITION_RESULT -{ - BOOTSTRAPPER_PACKAGE_CONDITION_DEFAULT, - BOOTSTRAPPER_PACKAGE_CONDITION_FALSE, - BOOTSTRAPPER_PACKAGE_CONDITION_TRUE, -}; - -enum BOOTSTRAPPER_MSI_FILE_VERSIONING -{ - BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, //o - BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER_OR_EQUAL, //e - BOOTSTRAPPER_MSI_FILE_VERSIONING_ALL, //a -}; - -enum BOOTSTRAPPER_APPLICATION_MESSAGE -{ - BOOTSTRAPPER_APPLICATION_MESSAGE_UNKNOWN = 65536, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCREATE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDESTROY, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONSTARTUP, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONSHUTDOWN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTFORWARDCOMPATIBLEBUNDLE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPATCHTARGET, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPATCHTARGET, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONERROR, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRERESOLVING, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPATCHTARGET, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEMSIMESSAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEFILESINUSE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRESTORERELATEDBUNDLE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLETYPE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYDOWNGRADE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROCESSCANCEL, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLEPACKAGE, - BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGENONVITALVALIDATIONFAILURE, -}; - -enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION -{ - BOOTSTRAPPER_APPLYCOMPLETE_ACTION_NONE, - // Instructs the engine to restart. - // The engine will not launch again after the machine is rebooted. - // Ignored if reboot was already initiated by OnExecutePackageComplete(). - BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART, -}; - -enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION -{ - BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_NONE, - // Instructs the engine to try the acquisition of the payload again. - // Ignored if hrStatus is a success. - BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY, -}; - -enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION -{ - BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_NONE, - // Instructs the engine to ignore non-vital package failures and - // continue with the caching. - // Ignored if hrStatus is a success or the package is vital. - BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_IGNORE, - // Instructs the engine to try the acquisition and verification of the package again. - // Ignored if hrStatus is a success. - BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_RETRY, -}; - -enum BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION -{ - BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_NONE, - // Instructs the engine to try to acquire the package so execution can use it. - // Most of the time this is used for installing the package during rollback. - BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_ACQUIRE, -}; - -enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION -{ - BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_NONE, - // Ignored if hrStatus is a success. - BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYVERIFICATION, - // Ignored if hrStatus is a success. - BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYACQUISITION, -}; - -enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION -{ - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_NONE, - // Instructs the engine to ignore non-vital package failures and - // continue with the install. - // Ignored if hrStatus is a success or the package is vital. - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_IGNORE, - // Instructs the engine to try the execution of the package again. - // Ignored if hrStatus is a success. - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RETRY, - // Instructs the engine to stop processing the chain and restart. - // The engine will launch again after the machine is restarted. - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RESTART, - // Instructs the engine to stop processing the chain and - // suspend the current state. - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_SUSPEND, -}; - -enum BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION -{ - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_NONE, - // Instructs the engine to stop processing the chain and restart. - // The engine will launch again after the machine is restarted. - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_RESTART, -}; - -enum BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION -{ - // Instructs the engine to stop waiting for the process to exit. - // The package is immediately considered to have failed with ERROR_INSTALL_USEREXIT. - // The engine will never rollback the package. - BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_ABANDON, - // Instructs the engine to wait for the process to exit. - // Once the process has exited, the package is considered to have failed with ERROR_INSTALL_USEREXIT. - // This allows the engine to rollback the package if necessary. - BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_WAIT, -}; - -enum BOOTSTRAPPER_SHUTDOWN_ACTION -{ - BOOTSTRAPPER_SHUTDOWN_ACTION_NONE, - // Instructs the engine to restart. - // The engine will not launch again after the machine is rebooted. - // Ignored if reboot was already initiated by OnExecutePackageComplete(). - BOOTSTRAPPER_SHUTDOWN_ACTION_RESTART, - // Instructs the engine to unload the bootstrapper application and - // restart the engine which will load the bootstrapper application again. - // Typically used to switch from a native bootstrapper application to a managed one. - BOOTSTRAPPER_SHUTDOWN_ACTION_RELOAD_BOOTSTRAPPER, - // Opts out of the engine behavior of trying to uninstall itself - // when no non-permanent packages are installed. - BOOTSTRAPPER_SHUTDOWN_ACTION_SKIP_CLEANUP, -}; - -enum BURN_MSI_PROPERTY -{ - BURN_MSI_PROPERTY_NONE, // no property added - BURN_MSI_PROPERTY_INSTALL, // add BURNMSIINSTALL=1 - BURN_MSI_PROPERTY_MODIFY, // add BURNMSIMODIFY=1 - BURN_MSI_PROPERTY_REPAIR, // add BURNMSIREPAIR=1 - BURN_MSI_PROPERTY_UNINSTALL,// add BURNMSIUNINSTALL=1 -}; - -struct BOOTSTRAPPER_COMMAND -{ - DWORD cbSize; - BOOTSTRAPPER_ACTION action; - BOOTSTRAPPER_DISPLAY display; - - LPWSTR wzCommandLine; - INT32 nCmdShow; - - BOOTSTRAPPER_RESUME_TYPE resumeType; - HWND hwndSplashScreen; - - // If this was run from a related bundle, specifies the relation type - BOOTSTRAPPER_RELATION_TYPE relationType; - BOOL fPassthrough; - - LPWSTR wzLayoutDirectory; - LPWSTR wzBootstrapperWorkingFolder; - LPWSTR wzBootstrapperApplicationDataPath; -}; - -struct BA_ONAPPLYBEGIN_ARGS -{ - DWORD dwApiVersion; - DWORD dwPhaseCount; -}; - -struct BA_ONAPPLYBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONAPPLYCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; - // Indicates whether any package required a reboot or initiated the reboot already. - BOOTSTRAPPER_APPLY_RESTART restart; - BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation; -}; - -struct BA_ONAPPLYCOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_APPLYCOMPLETE_ACTION action; -}; - -struct BA_ONAPPLYDOWNGRADE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrRecommended; -}; - -struct BA_ONAPPLYDOWNGRADE_RESULTS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONBEGINMSITRANSACTIONBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; -}; - -struct BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; - HRESULT hrStatus; -}; - -struct BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONCACHEACQUIREBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - LPCWSTR wzSource; - LPCWSTR wzDownloadUrl; - LPCWSTR wzPayloadContainerId; - BOOTSTRAPPER_CACHE_OPERATION recommendation; -}; - -struct BA_ONCACHEACQUIREBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_CACHE_OPERATION action; -}; - -struct BA_ONCACHEACQUIRECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - HRESULT hrStatus; - BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation; -}; - -struct BA_ONCACHEACQUIRECOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION action; -}; - -struct BA_ONCACHEACQUIREPROGRESS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - DWORD64 dw64Progress; - DWORD64 dw64Total; - DWORD dwOverallPercentage; -}; - -struct BA_ONCACHEACQUIREPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEACQUIRERESOLVING_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - LPCWSTR* rgSearchPaths; - DWORD cSearchPaths; - BOOL fFoundLocal; - DWORD dwRecommendedSearchPath; - LPCWSTR wzDownloadUrl; - LPCWSTR wzPayloadContainerId; - BOOTSTRAPPER_CACHE_RESOLVE_OPERATION recommendation; -}; - -struct BA_ONCACHEACQUIRERESOLVING_RESULTS -{ - DWORD dwApiVersion; - DWORD dwChosenSearchPath; - BOOTSTRAPPER_CACHE_RESOLVE_OPERATION action; - BOOL fCancel; -}; - -struct BA_ONCACHEBEGIN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONCACHEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHECOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONCACHECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - HRESULT hrStatus; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - DWORD64 dw64Progress; - DWORD64 dw64Total; - DWORD dwOverallPercentage; -}; - -struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEPACKAGEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - DWORD cCachePayloads; - DWORD64 dw64PackageCacheSize; - // If caching a package is not vital, then acquisition will be skipped unless the BA opts in through OnCachePackageNonVitalValidationFailure. - BOOL fVital; -}; - -struct BA_ONCACHEPACKAGEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEPACKAGECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - HRESULT hrStatus; - BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation; -}; - -struct BA_ONCACHEPACKAGECOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action; -}; - -struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - HRESULT hrStatus; - BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION recommendation; -}; - -struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION action; -}; - -struct BA_ONCACHEPAYLOADEXTRACTBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzContainerId; - LPCWSTR wzPayloadId; -}; - -struct BA_ONCACHEPAYLOADEXTRACTBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzContainerId; - LPCWSTR wzPayloadId; - HRESULT hrStatus; -}; - -struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzContainerId; - LPCWSTR wzPayloadId; - DWORD64 dw64Progress; - DWORD64 dw64Total; - DWORD dwOverallPercentage; -}; - -struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEVERIFYBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; -}; - -struct BA_ONCACHEVERIFYBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCACHEVERIFYCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - HRESULT hrStatus; - BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation; -}; - -struct BA_ONCACHEVERIFYCOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action; -}; - -struct BA_ONCACHEVERIFYPROGRESS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - DWORD64 dw64Progress; - DWORD64 dw64Total; - DWORD dwOverallPercentage; - BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep; -}; - -struct BA_ONCACHEVERIFYPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; -}; - -struct BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; - HRESULT hrStatus; - BOOTSTRAPPER_APPLY_RESTART restart; - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation; -}; - -struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action; -}; - -struct BA_ONCREATE_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_COMMAND command; -}; - -struct BA_ONCREATE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONDESTROY_ARGS -{ - DWORD dwApiVersion; - BOOL fReload; -}; - -struct BA_ONDESTROY_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONDETECTBEGIN_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_REGISTRATION_TYPE registrationType; - DWORD cPackages; - BOOL fCached; -}; - -struct BA_ONDETECTBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzCompatiblePackageId; - LPCWSTR wzCompatiblePackageVersion; -}; - -struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; - BOOL fEligibleForCleanup; -}; - -struct BA_ONDETECTCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_RELATION_TYPE relationType; - LPCWSTR wzBundleTag; - BOOL fPerMachine; - LPCWSTR wzVersion; - BOOL fMissingFromCache; -}; - -struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTMSIFEATURE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzFeatureId; - BOOTSTRAPPER_FEATURE_STATE state; -}; - -struct BA_ONDETECTMSIFEATURE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTPACKAGEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; -}; - -struct BA_ONDETECTPACKAGEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTPACKAGECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - HRESULT hrStatus; - BOOTSTRAPPER_PACKAGE_STATE state; - BOOL fCached; -}; - -struct BA_ONDETECTPACKAGECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONDETECTRELATEDBUNDLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_RELATION_TYPE relationType; - LPCWSTR wzBundleTag; - BOOL fPerMachine; - LPCWSTR wzVersion; - BOOL fMissingFromCache; -}; - -struct BA_ONDETECTRELATEDBUNDLE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTRELATEDBUNDLEPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzBundleId; - BOOTSTRAPPER_RELATION_TYPE relationType; - BOOL fPerMachine; - LPCWSTR wzVersion; -}; - -struct BA_ONDETECTRELATEDBUNDLEPACKAGE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTRELATEDMSIPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzUpgradeCode; - LPCWSTR wzProductCode; - BOOL fPerMachine; - LPCWSTR wzVersion; - BOOTSTRAPPER_RELATED_OPERATION operation; -}; - -struct BA_ONDETECTRELATEDMSIPACKAGE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTPATCHTARGET_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzProductCode; - BOOTSTRAPPER_PACKAGE_STATE patchState; -}; - -struct BA_ONDETECTPATCHTARGET_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONDETECTUPDATE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzUpdateLocation; - DWORD64 dw64Size; - LPCWSTR wzHash; - BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm; - LPCWSTR wzVersion; - LPCWSTR wzTitle; - LPCWSTR wzSummary; - LPCWSTR wzContentType; - LPCWSTR wzContent; -}; - -struct BA_ONDETECTUPDATE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOL fStopProcessingUpdates; -}; - -struct BA_ONDETECTUPDATEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzUpdateLocation; -}; - -struct BA_ONDETECTUPDATEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOL fSkip; -}; - -struct BA_ONDETECTUPDATECOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONDETECTUPDATECOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOL fIgnoreError; -}; - -struct BA_ONELEVATEBEGIN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONELEVATEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONELEVATECOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONELEVATECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONERROR_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_ERROR_TYPE errorType; - LPCWSTR wzPackageId; - DWORD dwCode; - LPCWSTR wzError; - DWORD dwUIHint; - DWORD cData; - LPCWSTR* rgwzData; - INT32 nRecommendation; -}; - -struct BA_ONERROR_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -}; - -struct BA_ONEXECUTEBEGIN_ARGS -{ - DWORD dwApiVersion; - DWORD cExecutingPackages; -}; - -struct BA_ONEXECUTEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONEXECUTECOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONEXECUTECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONEXECUTEFILESINUSE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - DWORD cFiles; - LPCWSTR* rgwzFiles; - INT32 nRecommendation; - BOOTSTRAPPER_FILES_IN_USE_TYPE source; -}; - -struct BA_ONEXECUTEFILESINUSE_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -}; - -struct BA_ONEXECUTEMSIMESSAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - INSTALLMESSAGE messageType; - DWORD dwUIHint; - LPCWSTR wzMessage; - DWORD cData; - LPCWSTR* rgwzData; - INT32 nRecommendation; -}; - -struct BA_ONEXECUTEMSIMESSAGE_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -}; - -struct BA_ONEXECUTEPACKAGEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - BOOL fExecute; // false means rollback. - BOOTSTRAPPER_ACTION_STATE action; - INSTALLUILEVEL uiLevel; - BOOL fDisableExternalUiHandler; -}; - -struct BA_ONEXECUTEPACKAGEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONEXECUTEPACKAGECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - HRESULT hrStatus; - // Indicates whether this package requires a reboot or initiated the reboot already. - BOOTSTRAPPER_APPLY_RESTART restart; - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation; -}; - -struct BA_ONEXECUTEPACKAGECOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION action; -}; - -struct BA_ONEXECUTEPATCHTARGET_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzTargetProductCode; -}; - -struct BA_ONEXECUTEPATCHTARGET_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONEXECUTEPROCESSCANCEL_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - DWORD dwProcessId; - BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION recommendation; -}; - -struct BA_ONEXECUTEPROCESSCANCEL_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION action; -}; - -struct BA_ONEXECUTEPROGRESS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - DWORD dwProgressPercentage; - DWORD dwOverallPercentage; -}; - -struct BA_ONEXECUTEPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONLAUNCHAPPROVEDEXEBEGIN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONLAUNCHAPPROVEDEXEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; - // Only valid if the operation succeeded. - DWORD dwProcessId; -}; - -struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANBEGIN_ARGS -{ - DWORD dwApiVersion; - DWORD cPackages; -}; - -struct BA_ONPLANBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzCompatiblePackageId; - LPCWSTR wzCompatiblePackageVersion; - BOOL fRecommendedRemove; -}; - -struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOL fRequestRemove; -}; - -struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzCompatiblePackageId; - HRESULT hrStatus; - BOOL fRequestedRemove; -}; - -struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONPLANCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_RELATION_TYPE relationType; - LPCWSTR wzBundleTag; - BOOL fPerMachine; - LPCWSTR wzVersion; - BOOL fRecommendedIgnoreBundle; -}; - -struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOL fIgnoreBundle; -}; - -struct BA_ONPLANMSIFEATURE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzFeatureId; - BOOTSTRAPPER_FEATURE_STATE recommendedState; -}; - -struct BA_ONPLANMSIFEATURE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_FEATURE_STATE requestedState; - BOOL fCancel; -}; - -struct BA_ONPLANMSIPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - BOOL fExecute; // false means rollback. - BOOTSTRAPPER_ACTION_STATE action; - BOOTSTRAPPER_MSI_FILE_VERSIONING recommendedFileVersioning; -}; - -struct BA_ONPLANMSIPACKAGE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BURN_MSI_PROPERTY actionMsiProperty; - INSTALLUILEVEL uiLevel; - BOOL fDisableExternalUiHandler; - BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning; -}; - -struct BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzCompatiblePackageId; - BOOL fRemove; -}; - -struct BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANNEDPACKAGE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - BOOTSTRAPPER_ACTION_STATE execute; - BOOTSTRAPPER_ACTION_STATE rollback; - BOOL fPlannedCache; - BOOL fPlannedUncache; -}; - -struct BA_ONPLANNEDPACKAGE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANPACKAGEBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - BOOTSTRAPPER_PACKAGE_STATE state; - BOOL fCached; - BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition; - BOOTSTRAPPER_REQUEST_STATE recommendedState; - BOOTSTRAPPER_CACHE_TYPE recommendedCacheType; - BOOTSTRAPPER_PACKAGE_CONDITION_RESULT repairCondition; -}; - -struct BA_ONPLANPACKAGEBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_REQUEST_STATE requestedState; - BOOTSTRAPPER_CACHE_TYPE requestedCacheType; -}; - -struct BA_ONPLANPACKAGECOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - HRESULT hrStatus; - BOOTSTRAPPER_REQUEST_STATE requested; -}; - -struct BA_ONPLANPACKAGECOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONPLANRELATEDBUNDLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_REQUEST_STATE recommendedState; -}; - -struct BA_ONPLANRELATEDBUNDLE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_REQUEST_STATE requestedState; -}; - -struct BA_ONPLANRELATEDBUNDLETYPE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE recommendedType; -}; - -struct BA_ONPLANRELATEDBUNDLETYPE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE requestedType; -}; - -struct BA_ONPLANRESTORERELATEDBUNDLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - BOOTSTRAPPER_REQUEST_STATE recommendedState; -}; - -struct BA_ONPLANRESTORERELATEDBUNDLE_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_REQUEST_STATE requestedState; -}; - -struct BA_ONPLANROLLBACKBOUNDARY_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzRollbackBoundaryId; - BOOL fRecommendedTransaction; -}; - -struct BA_ONPLANROLLBACKBOUNDARY_RESULTS -{ - DWORD dwApiVersion; - BOOL fTransaction; - BOOL fCancel; -}; - -struct BA_ONPLANPATCHTARGET_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageId; - LPCWSTR wzProductCode; - BOOTSTRAPPER_REQUEST_STATE recommendedState; -}; - -struct BA_ONPLANPATCHTARGET_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_REQUEST_STATE requestedState; -}; - -struct BA_ONPROGRESS_ARGS -{ - DWORD dwApiVersion; - DWORD dwProgressPercentage; - DWORD dwOverallPercentage; -}; - -struct BA_ONPROGRESS_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; -}; - -struct BA_ONREGISTERBEGIN_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType; -}; - -struct BA_ONREGISTERBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOL fCancel; - BOOTSTRAPPER_REGISTRATION_TYPE registrationType; -}; - -struct BA_ONREGISTERCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONREGISTERCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; -}; - -struct BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzTransactionId; - HRESULT hrStatus; - BOOTSTRAPPER_APPLY_RESTART restart; - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation; -}; - -struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action; -}; - -struct BA_ONSHUTDOWN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONSHUTDOWN_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_SHUTDOWN_ACTION action; -}; - -struct BA_ONSTARTUP_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONSTARTUP_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS -{ - DWORD dwApiVersion; -}; - -struct BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -struct BA_ONUNREGISTERBEGIN_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType; -}; - -struct BA_ONUNREGISTERBEGIN_RESULTS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_REGISTRATION_TYPE registrationType; -}; - -struct BA_ONUNREGISTERCOMPLETE_ARGS -{ - DWORD dwApiVersion; - HRESULT hrStatus; -}; - -struct BA_ONUNREGISTERCOMPLETE_RESULTS -{ - DWORD dwApiVersion; -}; - -#ifdef TODO_DELETE - -extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_APPLICATION_PROC)( - __in BOOTSTRAPPER_APPLICATION_MESSAGE message, - __in const LPVOID pvArgs, - __inout LPVOID pvResults, - __in_opt LPVOID pvContext - ); - -struct BOOTSTRAPPER_DESTROY_ARGS -{ - DWORD dwApiVersion; - BOOL fReload; -}; - -struct BOOTSTRAPPER_DESTROY_RESULTS -{ - DWORD dwApiVersion; - BOOL fDisableUnloading; // indicates the BA dll must not be unloaded after BootstrapperApplicationDestroy. -}; - -extern "C" typedef void (WINAPI *PFN_BOOTSTRAPPER_APPLICATION_DESTROY)( - __in const BOOTSTRAPPER_DESTROY_ARGS* pArgs, - __inout BOOTSTRAPPER_DESTROY_RESULTS* pResults - ); - - - -struct BOOTSTRAPPER_CREATE_ARGS -{ - DWORD dwApiVersion; - DWORD64 qwEngineAPIVersion; - PFN_BOOTSTRAPPER_ENGINE_PROC pfnBootstrapperEngineProc; - LPVOID pvBootstrapperEngineProcContext; - BOOTSTRAPPER_COMMAND* pCommand; -}; - -struct BOOTSTRAPPER_CREATE_RESULTS -{ - DWORD dwApiVersion; - PFN_BOOTSTRAPPER_APPLICATION_PROC pfnBootstrapperApplicationProc; - LPVOID pvBootstrapperApplicationProcContext; -}; - -extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_APPLICATION_CREATE)( - __in const BOOTSTRAPPER_CREATE_ARGS* pArgs, - __inout BOOTSTRAPPER_CREATE_RESULTS* pResults - ); - -#endif - -#if defined(__cplusplus) -} -#endif diff --git a/src/api/burn/inc/BootstrapperApplicationTypes.h b/src/api/burn/inc/BootstrapperApplicationTypes.h new file mode 100644 index 00000000..c7eaa3d3 --- /dev/null +++ b/src/api/burn/inc/BootstrapperApplicationTypes.h @@ -0,0 +1,1540 @@ +#pragma once +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include "BootstrapperEngineTypes.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_API_VERSION = L"burn.ba.apiver"; +const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_PIPE_NAME = L"burn.ba.pipe"; +const DWORD WIX_5_BOOTSTRAPPER_APPLICATION_API_VERSION = 5; + +enum BOOTSTRAPPER_DISPLAY +{ + BOOTSTRAPPER_DISPLAY_UNKNOWN, + BOOTSTRAPPER_DISPLAY_EMBEDDED, + BOOTSTRAPPER_DISPLAY_NONE, + BOOTSTRAPPER_DISPLAY_PASSIVE, + BOOTSTRAPPER_DISPLAY_FULL, +}; + +enum BOOTSTRAPPER_REGISTRATION_TYPE +{ + BOOTSTRAPPER_REGISTRATION_TYPE_NONE, // The engine will ignore NONE if it recommended INPROGRESS or FULL. + BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS, + BOOTSTRAPPER_REGISTRATION_TYPE_FULL, +}; + +enum BOOTSTRAPPER_RESUME_TYPE +{ + BOOTSTRAPPER_RESUME_TYPE_NONE, + BOOTSTRAPPER_RESUME_TYPE_INVALID, // resume information is present but invalid + BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, // relaunched after an unexpected interruption + BOOTSTRAPPER_RESUME_TYPE_REBOOT, // relaunched after reboot + BOOTSTRAPPER_RESUME_TYPE_SUSPEND, // relaunched after suspend + BOOTSTRAPPER_RESUME_TYPE_ARP, // launched from ARP +}; + +enum BOOTSTRAPPER_ERROR_TYPE +{ + BOOTSTRAPPER_ERROR_TYPE_ELEVATE, // error occurred trying to elevate. + BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, // error came from windows installer. + BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, // error came from an exe package. + BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER, // error occurred trying to authenticate with HTTP server. + BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY, // error occurred trying to authenticate with HTTP proxy. + BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply. +}; + +enum BOOTSTRAPPER_FILES_IN_USE_TYPE +{ + BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI, // INSTALLMESSAGE_FILESINUSE + BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM, // INSTALLMESSAGE_RMFILESINUSE + BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, // MMIO_CLOSE_APPS +}; + +enum BOOTSTRAPPER_RELATED_OPERATION +{ + BOOTSTRAPPER_RELATED_OPERATION_NONE, + BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE, + BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE, + BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE, + BOOTSTRAPPER_RELATED_OPERATION_REMOVE, + BOOTSTRAPPER_RELATED_OPERATION_INSTALL, + BOOTSTRAPPER_RELATED_OPERATION_REPAIR, +}; + +enum BOOTSTRAPPER_CACHE_OPERATION +{ + // There is no source available. + BOOTSTRAPPER_CACHE_OPERATION_NONE, + // Copy the payload or container from the chosen local source. + BOOTSTRAPPER_CACHE_OPERATION_COPY, + // Download the payload or container using the download URL. + BOOTSTRAPPER_CACHE_OPERATION_DOWNLOAD, + // Extract the payload from the container. + BOOTSTRAPPER_CACHE_OPERATION_EXTRACT, +}; + +enum BOOTSTRAPPER_CACHE_RESOLVE_OPERATION +{ + // There is no source available. + BOOTSTRAPPER_CACHE_RESOLVE_NONE, + // Copy the payload or container from the chosen local source. + BOOTSTRAPPER_CACHE_RESOLVE_LOCAL, + // Download the payload or container from the download URL. + BOOTSTRAPPER_CACHE_RESOLVE_DOWNLOAD, + // Extract the payload from the container. + BOOTSTRAPPER_CACHE_RESOLVE_CONTAINER, + // Look again for the payload or container locally. + BOOTSTRAPPER_CACHE_RESOLVE_RETRY, +}; + +enum BOOTSTRAPPER_CACHE_VERIFY_STEP +{ + BOOTSTRAPPER_CACHE_VERIFY_STEP_STAGE, + BOOTSTRAPPER_CACHE_VERIFY_STEP_HASH, + BOOTSTRAPPER_CACHE_VERIFY_STEP_FINALIZE, +}; + +enum BOOTSTRAPPER_APPLY_RESTART +{ + BOOTSTRAPPER_APPLY_RESTART_NONE, + BOOTSTRAPPER_APPLY_RESTART_REQUIRED, + BOOTSTRAPPER_APPLY_RESTART_INITIATED, +}; + +enum BOOTSTRAPPER_RELATION_TYPE +{ + BOOTSTRAPPER_RELATION_NONE, + BOOTSTRAPPER_RELATION_DETECT, + BOOTSTRAPPER_RELATION_UPGRADE, + BOOTSTRAPPER_RELATION_ADDON, + BOOTSTRAPPER_RELATION_PATCH, + BOOTSTRAPPER_RELATION_DEPENDENT_ADDON, + BOOTSTRAPPER_RELATION_DEPENDENT_PATCH, + BOOTSTRAPPER_RELATION_UPDATE, + BOOTSTRAPPER_RELATION_CHAIN_PACKAGE, +}; + +enum BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE +{ + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_NONE, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_ADDON, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_PATCH, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_ADDON, + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_PATCH, +}; + +enum BOOTSTRAPPER_CACHE_TYPE +{ + BOOTSTRAPPER_CACHE_TYPE_REMOVE, + BOOTSTRAPPER_CACHE_TYPE_KEEP, + BOOTSTRAPPER_CACHE_TYPE_FORCE, +}; + +enum BOOTSTRAPPER_PACKAGE_CONDITION_RESULT +{ + BOOTSTRAPPER_PACKAGE_CONDITION_DEFAULT, + BOOTSTRAPPER_PACKAGE_CONDITION_FALSE, + BOOTSTRAPPER_PACKAGE_CONDITION_TRUE, +}; + +enum BOOTSTRAPPER_MSI_FILE_VERSIONING +{ + BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, //o + BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER_OR_EQUAL, //e + BOOTSTRAPPER_MSI_FILE_VERSIONING_ALL, //a +}; + +enum BOOTSTRAPPER_APPLICATION_MESSAGE +{ + BOOTSTRAPPER_APPLICATION_MESSAGE_UNKNOWN = 65536, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCREATE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDESTROY, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONSTARTUP, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONSHUTDOWN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTFORWARDCOMPATIBLEBUNDLE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPATCHTARGET, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPATCHTARGET, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONERROR, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRERESOLVING, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPATCHTARGET, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEMSIMESSAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEFILESINUSE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRESTORERELATEDBUNDLE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLETYPE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYDOWNGRADE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROCESSCANCEL, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLEPACKAGE, + BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGENONVITALVALIDATIONFAILURE, +}; + +enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION +{ + BOOTSTRAPPER_APPLYCOMPLETE_ACTION_NONE, + // Instructs the engine to restart. + // The engine will not launch again after the machine is rebooted. + // Ignored if reboot was already initiated by OnExecutePackageComplete(). + BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART, +}; + +enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION +{ + BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_NONE, + // Instructs the engine to try the acquisition of the payload again. + // Ignored if hrStatus is a success. + BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY, +}; + +enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION +{ + BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_NONE, + // Instructs the engine to ignore non-vital package failures and + // continue with the caching. + // Ignored if hrStatus is a success or the package is vital. + BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_IGNORE, + // Instructs the engine to try the acquisition and verification of the package again. + // Ignored if hrStatus is a success. + BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_RETRY, +}; + +enum BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION +{ + BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_NONE, + // Instructs the engine to try to acquire the package so execution can use it. + // Most of the time this is used for installing the package during rollback. + BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_ACQUIRE, +}; + +enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION +{ + BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_NONE, + // Ignored if hrStatus is a success. + BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYVERIFICATION, + // Ignored if hrStatus is a success. + BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYACQUISITION, +}; + +enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION +{ + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_NONE, + // Instructs the engine to ignore non-vital package failures and + // continue with the install. + // Ignored if hrStatus is a success or the package is vital. + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_IGNORE, + // Instructs the engine to try the execution of the package again. + // Ignored if hrStatus is a success. + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RETRY, + // Instructs the engine to stop processing the chain and restart. + // The engine will launch again after the machine is restarted. + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RESTART, + // Instructs the engine to stop processing the chain and + // suspend the current state. + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_SUSPEND, +}; + +enum BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION +{ + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_NONE, + // Instructs the engine to stop processing the chain and restart. + // The engine will launch again after the machine is restarted. + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_RESTART, +}; + +enum BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION +{ + // Instructs the engine to stop waiting for the process to exit. + // The package is immediately considered to have failed with ERROR_INSTALL_USEREXIT. + // The engine will never rollback the package. + BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_ABANDON, + // Instructs the engine to wait for the process to exit. + // Once the process has exited, the package is considered to have failed with ERROR_INSTALL_USEREXIT. + // This allows the engine to rollback the package if necessary. + BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_WAIT, +}; + +enum BOOTSTRAPPER_SHUTDOWN_ACTION +{ + BOOTSTRAPPER_SHUTDOWN_ACTION_NONE, + // Instructs the engine to restart. + // The engine will not launch again after the machine is rebooted. + // Ignored if reboot was already initiated by OnExecutePackageComplete(). + BOOTSTRAPPER_SHUTDOWN_ACTION_RESTART, + // Instructs the engine to unload the bootstrapper application and + // restart the engine which will load the bootstrapper application again. + // Typically used to switch from a native bootstrapper application to a managed one. + BOOTSTRAPPER_SHUTDOWN_ACTION_RELOAD_BOOTSTRAPPER, + // Opts out of the engine behavior of trying to uninstall itself + // when no non-permanent packages are installed. + BOOTSTRAPPER_SHUTDOWN_ACTION_SKIP_CLEANUP, +}; + +enum BURN_MSI_PROPERTY +{ + BURN_MSI_PROPERTY_NONE, // no property added + BURN_MSI_PROPERTY_INSTALL, // add BURNMSIINSTALL=1 + BURN_MSI_PROPERTY_MODIFY, // add BURNMSIMODIFY=1 + BURN_MSI_PROPERTY_REPAIR, // add BURNMSIREPAIR=1 + BURN_MSI_PROPERTY_UNINSTALL,// add BURNMSIUNINSTALL=1 +}; + +struct BOOTSTRAPPER_COMMAND +{ + DWORD cbSize; + BOOTSTRAPPER_ACTION action; + BOOTSTRAPPER_DISPLAY display; + + LPWSTR wzCommandLine; + INT32 nCmdShow; + + BOOTSTRAPPER_RESUME_TYPE resumeType; + HWND hwndSplashScreen; + + // If this was run from a related bundle, specifies the relation type + BOOTSTRAPPER_RELATION_TYPE relationType; + BOOL fPassthrough; + + LPWSTR wzLayoutDirectory; + LPWSTR wzBootstrapperWorkingFolder; + LPWSTR wzBootstrapperApplicationDataPath; +}; + +struct BA_ONAPPLYBEGIN_ARGS +{ + DWORD dwApiVersion; + DWORD dwPhaseCount; +}; + +struct BA_ONAPPLYBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONAPPLYCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; + // Indicates whether any package required a reboot or initiated the reboot already. + BOOTSTRAPPER_APPLY_RESTART restart; + BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation; +}; + +struct BA_ONAPPLYCOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_APPLYCOMPLETE_ACTION action; +}; + +struct BA_ONAPPLYDOWNGRADE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrRecommended; +}; + +struct BA_ONAPPLYDOWNGRADE_RESULTS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONBEGINMSITRANSACTIONBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; +}; + +struct BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; + HRESULT hrStatus; +}; + +struct BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONCACHEACQUIREBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + LPCWSTR wzSource; + LPCWSTR wzDownloadUrl; + LPCWSTR wzPayloadContainerId; + BOOTSTRAPPER_CACHE_OPERATION recommendation; +}; + +struct BA_ONCACHEACQUIREBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_CACHE_OPERATION action; +}; + +struct BA_ONCACHEACQUIRECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + HRESULT hrStatus; + BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation; +}; + +struct BA_ONCACHEACQUIRECOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION action; +}; + +struct BA_ONCACHEACQUIREPROGRESS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + DWORD64 dw64Progress; + DWORD64 dw64Total; + DWORD dwOverallPercentage; +}; + +struct BA_ONCACHEACQUIREPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEACQUIRERESOLVING_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + LPCWSTR* rgSearchPaths; + DWORD cSearchPaths; + BOOL fFoundLocal; + DWORD dwRecommendedSearchPath; + LPCWSTR wzDownloadUrl; + LPCWSTR wzPayloadContainerId; + BOOTSTRAPPER_CACHE_RESOLVE_OPERATION recommendation; +}; + +struct BA_ONCACHEACQUIRERESOLVING_RESULTS +{ + DWORD dwApiVersion; + DWORD dwChosenSearchPath; + BOOTSTRAPPER_CACHE_RESOLVE_OPERATION action; + BOOL fCancel; +}; + +struct BA_ONCACHEBEGIN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONCACHEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHECOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONCACHECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + HRESULT hrStatus; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + DWORD64 dw64Progress; + DWORD64 dw64Total; + DWORD dwOverallPercentage; +}; + +struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEPACKAGEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + DWORD cCachePayloads; + DWORD64 dw64PackageCacheSize; + // If caching a package is not vital, then acquisition will be skipped unless the BA opts in through OnCachePackageNonVitalValidationFailure. + BOOL fVital; +}; + +struct BA_ONCACHEPACKAGEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEPACKAGECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + HRESULT hrStatus; + BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation; +}; + +struct BA_ONCACHEPACKAGECOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action; +}; + +struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + HRESULT hrStatus; + BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION recommendation; +}; + +struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION action; +}; + +struct BA_ONCACHEPAYLOADEXTRACTBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzContainerId; + LPCWSTR wzPayloadId; +}; + +struct BA_ONCACHEPAYLOADEXTRACTBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzContainerId; + LPCWSTR wzPayloadId; + HRESULT hrStatus; +}; + +struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzContainerId; + LPCWSTR wzPayloadId; + DWORD64 dw64Progress; + DWORD64 dw64Total; + DWORD dwOverallPercentage; +}; + +struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEVERIFYBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; +}; + +struct BA_ONCACHEVERIFYBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCACHEVERIFYCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + HRESULT hrStatus; + BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation; +}; + +struct BA_ONCACHEVERIFYCOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action; +}; + +struct BA_ONCACHEVERIFYPROGRESS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + DWORD64 dw64Progress; + DWORD64 dw64Total; + DWORD dwOverallPercentage; + BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep; +}; + +struct BA_ONCACHEVERIFYPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; +}; + +struct BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; + HRESULT hrStatus; + BOOTSTRAPPER_APPLY_RESTART restart; + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation; +}; + +struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action; +}; + +struct BA_ONCREATE_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_COMMAND command; +}; + +struct BA_ONCREATE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONDESTROY_ARGS +{ + DWORD dwApiVersion; + BOOL fReload; +}; + +struct BA_ONDESTROY_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONDETECTBEGIN_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_REGISTRATION_TYPE registrationType; + DWORD cPackages; + BOOL fCached; +}; + +struct BA_ONDETECTBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzCompatiblePackageId; + LPCWSTR wzCompatiblePackageVersion; +}; + +struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; + BOOL fEligibleForCleanup; +}; + +struct BA_ONDETECTCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_RELATION_TYPE relationType; + LPCWSTR wzBundleTag; + BOOL fPerMachine; + LPCWSTR wzVersion; + BOOL fMissingFromCache; +}; + +struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTMSIFEATURE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzFeatureId; + BOOTSTRAPPER_FEATURE_STATE state; +}; + +struct BA_ONDETECTMSIFEATURE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTPACKAGEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; +}; + +struct BA_ONDETECTPACKAGEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTPACKAGECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + HRESULT hrStatus; + BOOTSTRAPPER_PACKAGE_STATE state; + BOOL fCached; +}; + +struct BA_ONDETECTPACKAGECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONDETECTRELATEDBUNDLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_RELATION_TYPE relationType; + LPCWSTR wzBundleTag; + BOOL fPerMachine; + LPCWSTR wzVersion; + BOOL fMissingFromCache; +}; + +struct BA_ONDETECTRELATEDBUNDLE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTRELATEDBUNDLEPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzBundleId; + BOOTSTRAPPER_RELATION_TYPE relationType; + BOOL fPerMachine; + LPCWSTR wzVersion; +}; + +struct BA_ONDETECTRELATEDBUNDLEPACKAGE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTRELATEDMSIPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzUpgradeCode; + LPCWSTR wzProductCode; + BOOL fPerMachine; + LPCWSTR wzVersion; + BOOTSTRAPPER_RELATED_OPERATION operation; +}; + +struct BA_ONDETECTRELATEDMSIPACKAGE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTPATCHTARGET_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzProductCode; + BOOTSTRAPPER_PACKAGE_STATE patchState; +}; + +struct BA_ONDETECTPATCHTARGET_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONDETECTUPDATE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzUpdateLocation; + DWORD64 dw64Size; + LPCWSTR wzHash; + BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm; + LPCWSTR wzVersion; + LPCWSTR wzTitle; + LPCWSTR wzSummary; + LPCWSTR wzContentType; + LPCWSTR wzContent; +}; + +struct BA_ONDETECTUPDATE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOL fStopProcessingUpdates; +}; + +struct BA_ONDETECTUPDATEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzUpdateLocation; +}; + +struct BA_ONDETECTUPDATEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOL fSkip; +}; + +struct BA_ONDETECTUPDATECOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONDETECTUPDATECOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOL fIgnoreError; +}; + +struct BA_ONELEVATEBEGIN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONELEVATEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONELEVATECOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONELEVATECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONERROR_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_ERROR_TYPE errorType; + LPCWSTR wzPackageId; + DWORD dwCode; + LPCWSTR wzError; + DWORD dwUIHint; + DWORD cData; + LPCWSTR* rgwzData; + INT32 nRecommendation; +}; + +struct BA_ONERROR_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +}; + +struct BA_ONEXECUTEBEGIN_ARGS +{ + DWORD dwApiVersion; + DWORD cExecutingPackages; +}; + +struct BA_ONEXECUTEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONEXECUTECOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONEXECUTECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONEXECUTEFILESINUSE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + DWORD cFiles; + LPCWSTR* rgwzFiles; + INT32 nRecommendation; + BOOTSTRAPPER_FILES_IN_USE_TYPE source; +}; + +struct BA_ONEXECUTEFILESINUSE_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +}; + +struct BA_ONEXECUTEMSIMESSAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + INSTALLMESSAGE messageType; + DWORD dwUIHint; + LPCWSTR wzMessage; + DWORD cData; + LPCWSTR* rgwzData; + INT32 nRecommendation; +}; + +struct BA_ONEXECUTEMSIMESSAGE_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +}; + +struct BA_ONEXECUTEPACKAGEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + BOOL fExecute; // false means rollback. + BOOTSTRAPPER_ACTION_STATE action; + INSTALLUILEVEL uiLevel; + BOOL fDisableExternalUiHandler; +}; + +struct BA_ONEXECUTEPACKAGEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONEXECUTEPACKAGECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + HRESULT hrStatus; + // Indicates whether this package requires a reboot or initiated the reboot already. + BOOTSTRAPPER_APPLY_RESTART restart; + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation; +}; + +struct BA_ONEXECUTEPACKAGECOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION action; +}; + +struct BA_ONEXECUTEPATCHTARGET_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzTargetProductCode; +}; + +struct BA_ONEXECUTEPATCHTARGET_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONEXECUTEPROCESSCANCEL_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + DWORD dwProcessId; + BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION recommendation; +}; + +struct BA_ONEXECUTEPROCESSCANCEL_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION action; +}; + +struct BA_ONEXECUTEPROGRESS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + DWORD dwProgressPercentage; + DWORD dwOverallPercentage; +}; + +struct BA_ONEXECUTEPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONLAUNCHAPPROVEDEXEBEGIN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONLAUNCHAPPROVEDEXEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; + // Only valid if the operation succeeded. + DWORD dwProcessId; +}; + +struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANBEGIN_ARGS +{ + DWORD dwApiVersion; + DWORD cPackages; +}; + +struct BA_ONPLANBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzCompatiblePackageId; + LPCWSTR wzCompatiblePackageVersion; + BOOL fRecommendedRemove; +}; + +struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOL fRequestRemove; +}; + +struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzCompatiblePackageId; + HRESULT hrStatus; + BOOL fRequestedRemove; +}; + +struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONPLANCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_RELATION_TYPE relationType; + LPCWSTR wzBundleTag; + BOOL fPerMachine; + LPCWSTR wzVersion; + BOOL fRecommendedIgnoreBundle; +}; + +struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOL fIgnoreBundle; +}; + +struct BA_ONPLANMSIFEATURE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzFeatureId; + BOOTSTRAPPER_FEATURE_STATE recommendedState; +}; + +struct BA_ONPLANMSIFEATURE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_FEATURE_STATE requestedState; + BOOL fCancel; +}; + +struct BA_ONPLANMSIPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + BOOL fExecute; // false means rollback. + BOOTSTRAPPER_ACTION_STATE action; + BOOTSTRAPPER_MSI_FILE_VERSIONING recommendedFileVersioning; +}; + +struct BA_ONPLANMSIPACKAGE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BURN_MSI_PROPERTY actionMsiProperty; + INSTALLUILEVEL uiLevel; + BOOL fDisableExternalUiHandler; + BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning; +}; + +struct BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzCompatiblePackageId; + BOOL fRemove; +}; + +struct BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANNEDPACKAGE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + BOOTSTRAPPER_ACTION_STATE execute; + BOOTSTRAPPER_ACTION_STATE rollback; + BOOL fPlannedCache; + BOOL fPlannedUncache; +}; + +struct BA_ONPLANNEDPACKAGE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANPACKAGEBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + BOOTSTRAPPER_PACKAGE_STATE state; + BOOL fCached; + BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition; + BOOTSTRAPPER_REQUEST_STATE recommendedState; + BOOTSTRAPPER_CACHE_TYPE recommendedCacheType; + BOOTSTRAPPER_PACKAGE_CONDITION_RESULT repairCondition; +}; + +struct BA_ONPLANPACKAGEBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_REQUEST_STATE requestedState; + BOOTSTRAPPER_CACHE_TYPE requestedCacheType; +}; + +struct BA_ONPLANPACKAGECOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + HRESULT hrStatus; + BOOTSTRAPPER_REQUEST_STATE requested; +}; + +struct BA_ONPLANPACKAGECOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONPLANRELATEDBUNDLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_REQUEST_STATE recommendedState; +}; + +struct BA_ONPLANRELATEDBUNDLE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_REQUEST_STATE requestedState; +}; + +struct BA_ONPLANRELATEDBUNDLETYPE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE recommendedType; +}; + +struct BA_ONPLANRELATEDBUNDLETYPE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE requestedType; +}; + +struct BA_ONPLANRESTORERELATEDBUNDLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + BOOTSTRAPPER_REQUEST_STATE recommendedState; +}; + +struct BA_ONPLANRESTORERELATEDBUNDLE_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_REQUEST_STATE requestedState; +}; + +struct BA_ONPLANROLLBACKBOUNDARY_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzRollbackBoundaryId; + BOOL fRecommendedTransaction; +}; + +struct BA_ONPLANROLLBACKBOUNDARY_RESULTS +{ + DWORD dwApiVersion; + BOOL fTransaction; + BOOL fCancel; +}; + +struct BA_ONPLANPATCHTARGET_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageId; + LPCWSTR wzProductCode; + BOOTSTRAPPER_REQUEST_STATE recommendedState; +}; + +struct BA_ONPLANPATCHTARGET_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_REQUEST_STATE requestedState; +}; + +struct BA_ONPROGRESS_ARGS +{ + DWORD dwApiVersion; + DWORD dwProgressPercentage; + DWORD dwOverallPercentage; +}; + +struct BA_ONPROGRESS_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; +}; + +struct BA_ONREGISTERBEGIN_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType; +}; + +struct BA_ONREGISTERBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOL fCancel; + BOOTSTRAPPER_REGISTRATION_TYPE registrationType; +}; + +struct BA_ONREGISTERCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONREGISTERCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; +}; + +struct BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzTransactionId; + HRESULT hrStatus; + BOOTSTRAPPER_APPLY_RESTART restart; + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation; +}; + +struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action; +}; + +struct BA_ONSHUTDOWN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONSHUTDOWN_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_SHUTDOWN_ACTION action; +}; + +struct BA_ONSTARTUP_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONSTARTUP_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS +{ + DWORD dwApiVersion; +}; + +struct BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +struct BA_ONUNREGISTERBEGIN_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType; +}; + +struct BA_ONUNREGISTERBEGIN_RESULTS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_REGISTRATION_TYPE registrationType; +}; + +struct BA_ONUNREGISTERCOMPLETE_ARGS +{ + DWORD dwApiVersion; + HRESULT hrStatus; +}; + +struct BA_ONUNREGISTERCOMPLETE_RESULTS +{ + DWORD dwApiVersion; +}; + +#if defined(__cplusplus) +} +#endif diff --git a/src/api/burn/inc/BootstrapperEngine.h b/src/api/burn/inc/BootstrapperEngine.h deleted file mode 100644 index 7af41d97..00000000 --- a/src/api/burn/inc/BootstrapperEngine.h +++ /dev/null @@ -1,460 +0,0 @@ -#pragma once -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - - -#if defined(__cplusplus) -extern "C" { -#endif - -#define IDERROR -1 -#define IDNOACTION 0 - -#ifndef FACILITY_WIX -#define FACILITY_WIX 500 -#endif - -static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000); - -enum BOOTSTRAPPER_ACTION -{ - BOOTSTRAPPER_ACTION_UNKNOWN, - BOOTSTRAPPER_ACTION_HELP, - BOOTSTRAPPER_ACTION_LAYOUT, - BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, - BOOTSTRAPPER_ACTION_UNINSTALL, - BOOTSTRAPPER_ACTION_CACHE, - 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_MODIFY, - BOOTSTRAPPER_ACTION_STATE_REPAIR, - BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE, -}; - -enum BOOTSTRAPPER_PACKAGE_STATE -{ - BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN, - BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE, - BOOTSTRAPPER_PACKAGE_STATE_ABSENT, - 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_FORCE_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_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_SHA512, -}; - -enum BOOTSTRAPPER_ENGINE_MESSAGE -{ - BOOTSTRAPPER_ENGINE_MESSAGE_UNKNOWN, - BOOTSTRAPPER_ENGINE_MESSAGE_GETPACKAGECOUNT, - BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLENUMERIC, - BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLESTRING, - BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLEVERSION, - BOOTSTRAPPER_ENGINE_MESSAGE_FORMATSTRING, - BOOTSTRAPPER_ENGINE_MESSAGE_ESCAPESTRING, - BOOTSTRAPPER_ENGINE_MESSAGE_EVALUATECONDITION, - BOOTSTRAPPER_ENGINE_MESSAGE_LOG, - BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDERROR, - BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDPROGRESS, - BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATE, - BOOTSTRAPPER_ENGINE_MESSAGE_SETLOCALSOURCE, - BOOTSTRAPPER_ENGINE_MESSAGE_SETDOWNLOADSOURCE, - BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLENUMERIC, - BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLESTRING, - BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLEVERSION, - BOOTSTRAPPER_ENGINE_MESSAGE_CLOSESPLASHSCREEN, - BOOTSTRAPPER_ENGINE_MESSAGE_DETECT, - BOOTSTRAPPER_ENGINE_MESSAGE_PLAN, - BOOTSTRAPPER_ENGINE_MESSAGE_ELEVATE, - BOOTSTRAPPER_ENGINE_MESSAGE_APPLY, - BOOTSTRAPPER_ENGINE_MESSAGE_QUIT, - BOOTSTRAPPER_ENGINE_MESSAGE_LAUNCHAPPROVEDEXE, - BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATESOURCE, - BOOTSTRAPPER_ENGINE_MESSAGE_COMPAREVERSIONS, - BOOTSTRAPPER_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE, - - BOOTSTRAPPER_APPLICATION_MESSAGE_LAST = 65535 -}; - -typedef struct _BAENGINE_APPLY_ARGS -{ - DWORD dwApiVersion; - DWORD64 hwndParent; -} BAENGINE_APPLY_ARGS; - -typedef struct _BAENGINE_APPLY_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_APPLY_RESULTS; - -typedef struct _BAENGINE_CLOSESPLASHSCREEN_ARGS -{ - DWORD dwApiVersion; -} BAENGINE_CLOSESPLASHSCREEN_ARGS; - -typedef struct _BAENGINE_CLOSESPLASHSCREEN_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_CLOSESPLASHSCREEN_RESULTS; - -typedef struct _BAENGINE_COMPAREVERSIONS_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVersion1; - LPCWSTR wzVersion2; -} BAENGINE_COMPAREVERSIONS_ARGS; - -typedef struct _BAENGINE_COMPAREVERSIONS_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -} BAENGINE_COMPAREVERSIONS_RESULTS; - -typedef struct _BAENGINE_DETECT_ARGS -{ - DWORD dwApiVersion; - DWORD64 hwndParent; -} BAENGINE_DETECT_ARGS; - -typedef struct _BAENGINE_DETECT_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_DETECT_RESULTS; - -typedef struct _BAENGINE_ELEVATE_ARGS -{ - DWORD dwApiVersion; - DWORD64 hwndParent; -} BAENGINE_ELEVATE_ARGS; - -typedef struct _BAENGINE_ELEVATE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_ELEVATE_RESULTS; - -typedef struct _BAENGINE_ESCAPESTRING_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzIn; -} BAENGINE_ESCAPESTRING_ARGS; - -typedef struct _BAENGINE_ESCAPESTRING_RESULTS -{ - DWORD dwApiVersion; - LPWSTR wzOut; - // Should be initialized to the size of wzOut. - DWORD cchOut; -} BAENGINE_ESCAPESTRING_RESULTS; - -typedef struct _BAENGINE_EVALUATECONDITION_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzCondition; -} BAENGINE_EVALUATECONDITION_ARGS; - -typedef struct _BAENGINE_EVALUATECONDITION_RESULTS -{ - DWORD dwApiVersion; - BOOL f; -} BAENGINE_EVALUATECONDITION_RESULTS; - -typedef struct _BAENGINE_FORMATSTRING_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzIn; -} BAENGINE_FORMATSTRING_ARGS; - -typedef struct _BAENGINE_FORMATSTRING_RESULTS -{ - DWORD dwApiVersion; - LPWSTR wzOut; - // Should be initialized to the size of wzOut. - DWORD cchOut; -} BAENGINE_FORMATSTRING_RESULTS; - -typedef struct _BAENGINE_GETPACKAGECOUNT_ARGS -{ - DWORD dwApiVersion; -} BAENGINE_GETPACKAGECOUNT_ARGS; - -typedef struct _BAENGINE_GETPACKAGECOUNT_RESULTS -{ - DWORD dwApiVersion; - DWORD cPackages; -} BAENGINE_GETPACKAGECOUNT_RESULTS; - -typedef struct _BAENGINE_GETVARIABLENUMERIC_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; -} BAENGINE_GETVARIABLENUMERIC_ARGS; - -typedef struct _BAENGINE_GETVARIABLENUMERIC_RESULTS -{ - DWORD dwApiVersion; - LONGLONG llValue; -} BAENGINE_GETVARIABLENUMERIC_RESULTS; - -typedef struct _BAENGINE_GETVARIABLESTRING_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; -} BAENGINE_GETVARIABLESTRING_ARGS; - -typedef struct _BAENGINE_GETVARIABLESTRING_RESULTS -{ - DWORD dwApiVersion; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - DWORD cchValue; -} BAENGINE_GETVARIABLESTRING_RESULTS; - -typedef struct _BAENGINE_GETVARIABLEVERSION_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; -} BAENGINE_GETVARIABLEVERSION_ARGS; - -typedef struct _BAENGINE_GETVARIABLEVERSION_RESULTS -{ - DWORD dwApiVersion; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - DWORD cchValue; -} BAENGINE_GETVARIABLEVERSION_RESULTS; - -typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_ARGS -{ - DWORD dwApiVersion; - DWORD64 hwndParent; - LPCWSTR wzApprovedExeForElevationId; - LPCWSTR wzArguments; - DWORD dwWaitForInputIdleTimeout; -} BAENGINE_LAUNCHAPPROVEDEXE_ARGS; - -typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_LAUNCHAPPROVEDEXE_RESULTS; - -typedef struct _BAENGINE_SETUPDATESOURCE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzUrl; - LPCWSTR wzAuthorizationHeader; -} BAENGINE_SETUPDATESOURCE_ARGS; - -typedef struct _BAENGINE_SETUPDATESOURCE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETUPDATESOURCE_RESULTS; - -typedef struct _BAENGINE_LOG_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_LOG_LEVEL level; - LPCWSTR wzMessage; -} BAENGINE_LOG_ARGS; - -typedef struct _BAENGINE_LOG_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_LOG_RESULTS; - -typedef struct _BAENGINE_PLAN_ARGS -{ - DWORD dwApiVersion; - BOOTSTRAPPER_ACTION action; -} BAENGINE_PLAN_ARGS; - -typedef struct _BAENGINE_PLAN_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_PLAN_RESULTS; - -typedef struct _BAENGINE_QUIT_ARGS -{ - DWORD dwApiVersion; - DWORD dwExitCode; -} BAENGINE_QUIT_ARGS; - -typedef struct _BAENGINE_QUIT_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_QUIT_RESULTS; - -typedef struct _BAENGINE_SENDEMBEDDEDERROR_ARGS -{ - DWORD dwApiVersion; - DWORD dwErrorCode; - LPCWSTR wzMessage; - DWORD dwUIHint; -} BAENGINE_SENDEMBEDDEDERROR_ARGS; - -typedef struct _BAENGINE_SENDEMBEDDEDERROR_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -} BAENGINE_SENDEMBEDDEDERROR_RESULTS; - -typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_ARGS -{ - DWORD dwApiVersion; - DWORD dwProgressPercentage; - DWORD dwOverallProgressPercentage; -} BAENGINE_SENDEMBEDDEDPROGRESS_ARGS; - -typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS -{ - DWORD dwApiVersion; - INT32 nResult; -} BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS; - -typedef struct _BAENGINE_SETDOWNLOADSOURCE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - LPCWSTR wzUrl; - LPCWSTR wzUser; - LPCWSTR wzPassword; - LPCWSTR wzAuthorizationHeader; -} BAENGINE_SETDOWNLOADSOURCE_ARGS; - -typedef struct _BAENGINE_SETDOWNLOADSOURCE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETDOWNLOADSOURCE_RESULTS; - -typedef struct _BAENGINE_SETLOCALSOURCE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzPackageOrContainerId; - LPCWSTR wzPayloadId; - LPCWSTR wzPath; -} BAENGINE_SETLOCALSOURCE_ARGS; - -typedef struct _BAENGINE_SETLOCALSOURCE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETLOCALSOURCE_RESULTS; - -typedef struct _BAENGINE_SETUPDATE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzLocalSource; - LPCWSTR wzDownloadSource; - DWORD64 qwSize; - BOOTSTRAPPER_UPDATE_HASH_TYPE hashType; - LPCWSTR wzHash; - LPCWSTR wzUpdatePackageId; -} BAENGINE_SETUPDATE_ARGS; - -typedef struct _BAENGINE_SETUPDATE_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETUPDATE_RESULTS; - -typedef struct _BAENGINE_SETVARIABLENUMERIC_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; - LONGLONG llValue; -} BAENGINE_SETVARIABLENUMERIC_ARGS; - -typedef struct _BAENGINE_SETVARIABLENUMERIC_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETVARIABLENUMERIC_RESULTS; - -typedef struct _BAENGINE_SETVARIABLESTRING_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; - LPCWSTR wzValue; - BOOL fFormatted; -} BAENGINE_SETVARIABLESTRING_ARGS; - -typedef struct _BAENGINE_SETVARIABLESTRING_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETVARIABLESTRING_RESULTS; - -typedef struct _BAENGINE_SETVARIABLEVERSION_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzVariable; - LPCWSTR wzValue; -} BAENGINE_SETVARIABLEVERSION_ARGS; - -typedef struct _BAENGINE_SETVARIABLEVERSION_RESULTS -{ - DWORD dwApiVersion; -} BAENGINE_SETVARIABLEVERSION_RESULTS; - -typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS -{ - DWORD dwApiVersion; - LPCWSTR wzBundleId; - LPCWSTR wzVariable; -} BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS; - -typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS -{ - DWORD dwApiVersion; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - DWORD cchValue; -} BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS; - -// extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_ENGINE_PROC)( -// __in BOOTSTRAPPER_ENGINE_MESSAGE message, -// __in const LPVOID pvArgs, -// __inout LPVOID pvResults, -// __in_opt LPVOID pvContext -// ); - -#if defined(__cplusplus) -} -#endif diff --git a/src/api/burn/inc/BootstrapperEngineTypes.h b/src/api/burn/inc/BootstrapperEngineTypes.h new file mode 100644 index 00000000..e2634383 --- /dev/null +++ b/src/api/burn/inc/BootstrapperEngineTypes.h @@ -0,0 +1,453 @@ +#pragma once +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + + +#if defined(__cplusplus) +extern "C" { +#endif + +#define IDERROR -1 +#define IDNOACTION 0 + +#ifndef FACILITY_WIX +#define FACILITY_WIX 500 +#endif + +static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000); + +enum BOOTSTRAPPER_ACTION +{ + BOOTSTRAPPER_ACTION_UNKNOWN, + BOOTSTRAPPER_ACTION_HELP, + BOOTSTRAPPER_ACTION_LAYOUT, + BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL, + BOOTSTRAPPER_ACTION_UNINSTALL, + BOOTSTRAPPER_ACTION_CACHE, + 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_MODIFY, + BOOTSTRAPPER_ACTION_STATE_REPAIR, + BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE, +}; + +enum BOOTSTRAPPER_PACKAGE_STATE +{ + BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN, + BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE, + BOOTSTRAPPER_PACKAGE_STATE_ABSENT, + 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_FORCE_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_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_SHA512, +}; + +enum BOOTSTRAPPER_ENGINE_MESSAGE +{ + BOOTSTRAPPER_ENGINE_MESSAGE_UNKNOWN, + BOOTSTRAPPER_ENGINE_MESSAGE_GETPACKAGECOUNT, + BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLENUMERIC, + BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLESTRING, + BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLEVERSION, + BOOTSTRAPPER_ENGINE_MESSAGE_FORMATSTRING, + BOOTSTRAPPER_ENGINE_MESSAGE_ESCAPESTRING, + BOOTSTRAPPER_ENGINE_MESSAGE_EVALUATECONDITION, + BOOTSTRAPPER_ENGINE_MESSAGE_LOG, + BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDERROR, + BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDPROGRESS, + BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATE, + BOOTSTRAPPER_ENGINE_MESSAGE_SETLOCALSOURCE, + BOOTSTRAPPER_ENGINE_MESSAGE_SETDOWNLOADSOURCE, + BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLENUMERIC, + BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLESTRING, + BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLEVERSION, + BOOTSTRAPPER_ENGINE_MESSAGE_CLOSESPLASHSCREEN, + BOOTSTRAPPER_ENGINE_MESSAGE_DETECT, + BOOTSTRAPPER_ENGINE_MESSAGE_PLAN, + BOOTSTRAPPER_ENGINE_MESSAGE_ELEVATE, + BOOTSTRAPPER_ENGINE_MESSAGE_APPLY, + BOOTSTRAPPER_ENGINE_MESSAGE_QUIT, + BOOTSTRAPPER_ENGINE_MESSAGE_LAUNCHAPPROVEDEXE, + BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATESOURCE, + BOOTSTRAPPER_ENGINE_MESSAGE_COMPAREVERSIONS, + BOOTSTRAPPER_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE, + + BOOTSTRAPPER_APPLICATION_MESSAGE_LAST = 65535 +}; + +typedef struct _BAENGINE_APPLY_ARGS +{ + DWORD dwApiVersion; + DWORD64 hwndParent; +} BAENGINE_APPLY_ARGS; + +typedef struct _BAENGINE_APPLY_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_APPLY_RESULTS; + +typedef struct _BAENGINE_CLOSESPLASHSCREEN_ARGS +{ + DWORD dwApiVersion; +} BAENGINE_CLOSESPLASHSCREEN_ARGS; + +typedef struct _BAENGINE_CLOSESPLASHSCREEN_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_CLOSESPLASHSCREEN_RESULTS; + +typedef struct _BAENGINE_COMPAREVERSIONS_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVersion1; + LPCWSTR wzVersion2; +} BAENGINE_COMPAREVERSIONS_ARGS; + +typedef struct _BAENGINE_COMPAREVERSIONS_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +} BAENGINE_COMPAREVERSIONS_RESULTS; + +typedef struct _BAENGINE_DETECT_ARGS +{ + DWORD dwApiVersion; + DWORD64 hwndParent; +} BAENGINE_DETECT_ARGS; + +typedef struct _BAENGINE_DETECT_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_DETECT_RESULTS; + +typedef struct _BAENGINE_ELEVATE_ARGS +{ + DWORD dwApiVersion; + DWORD64 hwndParent; +} BAENGINE_ELEVATE_ARGS; + +typedef struct _BAENGINE_ELEVATE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_ELEVATE_RESULTS; + +typedef struct _BAENGINE_ESCAPESTRING_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzIn; +} BAENGINE_ESCAPESTRING_ARGS; + +typedef struct _BAENGINE_ESCAPESTRING_RESULTS +{ + DWORD dwApiVersion; + LPWSTR wzOut; + // Should be initialized to the size of wzOut. + DWORD cchOut; +} BAENGINE_ESCAPESTRING_RESULTS; + +typedef struct _BAENGINE_EVALUATECONDITION_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzCondition; +} BAENGINE_EVALUATECONDITION_ARGS; + +typedef struct _BAENGINE_EVALUATECONDITION_RESULTS +{ + DWORD dwApiVersion; + BOOL f; +} BAENGINE_EVALUATECONDITION_RESULTS; + +typedef struct _BAENGINE_FORMATSTRING_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzIn; +} BAENGINE_FORMATSTRING_ARGS; + +typedef struct _BAENGINE_FORMATSTRING_RESULTS +{ + DWORD dwApiVersion; + LPWSTR wzOut; + // Should be initialized to the size of wzOut. + DWORD cchOut; +} BAENGINE_FORMATSTRING_RESULTS; + +typedef struct _BAENGINE_GETPACKAGECOUNT_ARGS +{ + DWORD dwApiVersion; +} BAENGINE_GETPACKAGECOUNT_ARGS; + +typedef struct _BAENGINE_GETPACKAGECOUNT_RESULTS +{ + DWORD dwApiVersion; + DWORD cPackages; +} BAENGINE_GETPACKAGECOUNT_RESULTS; + +typedef struct _BAENGINE_GETVARIABLENUMERIC_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; +} BAENGINE_GETVARIABLENUMERIC_ARGS; + +typedef struct _BAENGINE_GETVARIABLENUMERIC_RESULTS +{ + DWORD dwApiVersion; + LONGLONG llValue; +} BAENGINE_GETVARIABLENUMERIC_RESULTS; + +typedef struct _BAENGINE_GETVARIABLESTRING_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; +} BAENGINE_GETVARIABLESTRING_ARGS; + +typedef struct _BAENGINE_GETVARIABLESTRING_RESULTS +{ + DWORD dwApiVersion; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + DWORD cchValue; +} BAENGINE_GETVARIABLESTRING_RESULTS; + +typedef struct _BAENGINE_GETVARIABLEVERSION_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; +} BAENGINE_GETVARIABLEVERSION_ARGS; + +typedef struct _BAENGINE_GETVARIABLEVERSION_RESULTS +{ + DWORD dwApiVersion; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + DWORD cchValue; +} BAENGINE_GETVARIABLEVERSION_RESULTS; + +typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_ARGS +{ + DWORD dwApiVersion; + DWORD64 hwndParent; + LPCWSTR wzApprovedExeForElevationId; + LPCWSTR wzArguments; + DWORD dwWaitForInputIdleTimeout; +} BAENGINE_LAUNCHAPPROVEDEXE_ARGS; + +typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_LAUNCHAPPROVEDEXE_RESULTS; + +typedef struct _BAENGINE_SETUPDATESOURCE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzUrl; + LPCWSTR wzAuthorizationHeader; +} BAENGINE_SETUPDATESOURCE_ARGS; + +typedef struct _BAENGINE_SETUPDATESOURCE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETUPDATESOURCE_RESULTS; + +typedef struct _BAENGINE_LOG_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_LOG_LEVEL level; + LPCWSTR wzMessage; +} BAENGINE_LOG_ARGS; + +typedef struct _BAENGINE_LOG_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_LOG_RESULTS; + +typedef struct _BAENGINE_PLAN_ARGS +{ + DWORD dwApiVersion; + BOOTSTRAPPER_ACTION action; +} BAENGINE_PLAN_ARGS; + +typedef struct _BAENGINE_PLAN_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_PLAN_RESULTS; + +typedef struct _BAENGINE_QUIT_ARGS +{ + DWORD dwApiVersion; + DWORD dwExitCode; +} BAENGINE_QUIT_ARGS; + +typedef struct _BAENGINE_QUIT_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_QUIT_RESULTS; + +typedef struct _BAENGINE_SENDEMBEDDEDERROR_ARGS +{ + DWORD dwApiVersion; + DWORD dwErrorCode; + LPCWSTR wzMessage; + DWORD dwUIHint; +} BAENGINE_SENDEMBEDDEDERROR_ARGS; + +typedef struct _BAENGINE_SENDEMBEDDEDERROR_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +} BAENGINE_SENDEMBEDDEDERROR_RESULTS; + +typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_ARGS +{ + DWORD dwApiVersion; + DWORD dwProgressPercentage; + DWORD dwOverallProgressPercentage; +} BAENGINE_SENDEMBEDDEDPROGRESS_ARGS; + +typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS +{ + DWORD dwApiVersion; + INT32 nResult; +} BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS; + +typedef struct _BAENGINE_SETDOWNLOADSOURCE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + LPCWSTR wzUrl; + LPCWSTR wzUser; + LPCWSTR wzPassword; + LPCWSTR wzAuthorizationHeader; +} BAENGINE_SETDOWNLOADSOURCE_ARGS; + +typedef struct _BAENGINE_SETDOWNLOADSOURCE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETDOWNLOADSOURCE_RESULTS; + +typedef struct _BAENGINE_SETLOCALSOURCE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzPackageOrContainerId; + LPCWSTR wzPayloadId; + LPCWSTR wzPath; +} BAENGINE_SETLOCALSOURCE_ARGS; + +typedef struct _BAENGINE_SETLOCALSOURCE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETLOCALSOURCE_RESULTS; + +typedef struct _BAENGINE_SETUPDATE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzLocalSource; + LPCWSTR wzDownloadSource; + DWORD64 qwSize; + BOOTSTRAPPER_UPDATE_HASH_TYPE hashType; + LPCWSTR wzHash; + LPCWSTR wzUpdatePackageId; +} BAENGINE_SETUPDATE_ARGS; + +typedef struct _BAENGINE_SETUPDATE_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETUPDATE_RESULTS; + +typedef struct _BAENGINE_SETVARIABLENUMERIC_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; + LONGLONG llValue; +} BAENGINE_SETVARIABLENUMERIC_ARGS; + +typedef struct _BAENGINE_SETVARIABLENUMERIC_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETVARIABLENUMERIC_RESULTS; + +typedef struct _BAENGINE_SETVARIABLESTRING_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; + LPCWSTR wzValue; + BOOL fFormatted; +} BAENGINE_SETVARIABLESTRING_ARGS; + +typedef struct _BAENGINE_SETVARIABLESTRING_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETVARIABLESTRING_RESULTS; + +typedef struct _BAENGINE_SETVARIABLEVERSION_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzVariable; + LPCWSTR wzValue; +} BAENGINE_SETVARIABLEVERSION_ARGS; + +typedef struct _BAENGINE_SETVARIABLEVERSION_RESULTS +{ + DWORD dwApiVersion; +} BAENGINE_SETVARIABLEVERSION_RESULTS; + +typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS +{ + DWORD dwApiVersion; + LPCWSTR wzBundleId; + LPCWSTR wzVariable; +} BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS; + +typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS +{ + DWORD dwApiVersion; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + DWORD cchValue; +} BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS; + +#if defined(__cplusplus) +} +#endif diff --git a/src/api/burn/inc/BootstrapperExtension.h b/src/api/burn/inc/BootstrapperExtension.h deleted file mode 100644 index b1fa6408..00000000 --- a/src/api/burn/inc/BootstrapperExtension.h +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -enum BOOTSTRAPPER_EXTENSION_MESSAGE -{ - BOOTSTRAPPER_EXTENSION_MESSAGE_SEARCH, -}; - -typedef struct _BOOTSTRAPPER_EXTENSION_SEARCH_ARGS -{ - DWORD cbSize; - LPCWSTR wzId; - LPCWSTR wzVariable; -} BOOTSTRAPPER_EXTENSION_SEARCH_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_SEARCH_RESULTS -{ - DWORD cbSize; -} BOOTSTRAPPER_EXTENSION_SEARCH_RESULTS; - -extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_PROC)( - __in BOOTSTRAPPER_EXTENSION_MESSAGE message, - __in const LPVOID pvArgs, - __inout LPVOID pvResults, - __in_opt LPVOID pvContext - ); - -typedef struct _BOOTSTRAPPER_EXTENSION_CREATE_ARGS -{ - DWORD cbSize; - DWORD64 qwEngineAPIVersion; - PFN_BOOTSTRAPPER_EXTENSION_ENGINE_PROC pfnBootstrapperExtensionEngineProc; - LPVOID pvBootstrapperExtensionEngineProcContext; - LPCWSTR wzBootstrapperWorkingFolder; - LPCWSTR wzBootstrapperExtensionDataPath; - LPCWSTR wzExtensionId; -} BOOTSTRAPPER_EXTENSION_CREATE_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_CREATE_RESULTS -{ - DWORD cbSize; - PFN_BOOTSTRAPPER_EXTENSION_PROC pfnBootstrapperExtensionProc; - LPVOID pvBootstrapperExtensionProcContext; -} BOOTSTRAPPER_EXTENSION_CREATE_RESULTS; - -extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_CREATE)( - __in const BOOTSTRAPPER_EXTENSION_CREATE_ARGS* pArgs, - __inout BOOTSTRAPPER_EXTENSION_CREATE_RESULTS* pResults - ); - -extern "C" typedef void (WINAPI *PFN_BOOTSTRAPPER_EXTENSION_DESTROY)(); - -#if defined(__cplusplus) -} -#endif diff --git a/src/api/burn/inc/BootstrapperExtensionEngine.h b/src/api/burn/inc/BootstrapperExtensionEngine.h deleted file mode 100644 index 24c304c6..00000000 --- a/src/api/burn/inc/BootstrapperExtensionEngine.h +++ /dev/null @@ -1,200 +0,0 @@ -#pragma once -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. - - -#if defined(__cplusplus) -extern "C" { -#endif - -enum BOOTSTRAPPER_EXTENSION_LOG_LEVEL -{ - BOOTSTRAPPER_EXTENSION_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel()) - BOOTSTRAPPER_EXTENSION_LOG_LEVEL_STANDARD, // written if reporting is on - BOOTSTRAPPER_EXTENSION_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on - BOOTSTRAPPER_EXTENSION_LOG_LEVEL_DEBUG, // reporting useful when debugging code - BOOTSTRAPPER_EXTENSION_LOG_LEVEL_ERROR, // always gets reported, but can never be specified -}; - -enum BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE -{ - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_ESCAPESTRING, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_EVALUATECONDITION, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_FORMATSTRING, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLENUMERIC, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLESTRING, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLEVERSION, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_LOG, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLENUMERIC, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLESTRING, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLEVERSION, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_COMPAREVERSIONS, - BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE, -}; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS -{ - DWORD cbSize; - LPCWSTR wzVersion1; - LPCWSTR wzVersion2; -} BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS -{ - DWORD cbSize; - int nResult; -} BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_ARGS -{ - DWORD cbSize; - LPCWSTR wzIn; -} BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_RESULTS -{ - DWORD cbSize; - LPWSTR wzOut; - // Should be initialized to the size of wzOut. - SIZE_T cchOut; -} BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_ARGS -{ - DWORD cbSize; - LPCWSTR wzCondition; -} BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS -{ - DWORD cbSize; - BOOL f; -} BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_ARGS -{ - DWORD cbSize; - LPCWSTR wzIn; -} BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_RESULTS -{ - DWORD cbSize; - LPWSTR wzOut; - // Should be initialized to the size of wzOut. - SIZE_T cchOut; -} BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS -{ - DWORD cbSize; - LONGLONG llValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS -{ - DWORD cbSize; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - SIZE_T cchValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS -{ - DWORD cbSize; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - SIZE_T cchValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_LOG_ARGS -{ - DWORD cbSize; - BOOTSTRAPPER_EXTENSION_LOG_LEVEL level; - LPCWSTR wzMessage; -} BOOTSTRAPPER_EXTENSION_ENGINE_LOG_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_LOG_RESULTS -{ - DWORD cbSize; -} BOOTSTRAPPER_EXTENSION_ENGINE_LOG_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; - LONGLONG llValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS -{ - DWORD cbSize; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; - LPCWSTR wzValue; - BOOL fFormatted; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS -{ - DWORD cbSize; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS -{ - DWORD cbSize; - LPCWSTR wzVariable; - LPCWSTR wzValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS -{ - DWORD cbSize; -} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS -{ - DWORD cbSize; - LPCWSTR wzBundleId; - LPCWSTR wzVariable; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS; - -typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS -{ - DWORD cbSize; - LPWSTR wzValue; - // Should be initialized to the size of wzValue. - SIZE_T cchValue; -} BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS; - -extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_ENGINE_PROC)( - __in BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE message, - __in const LPVOID pvArgs, - __inout LPVOID pvResults, - __in_opt LPVOID pvContext - ); - -#if defined(__cplusplus) -} -#endif diff --git a/src/api/burn/inc/BootstrapperExtensionEngineTypes.h b/src/api/burn/inc/BootstrapperExtensionEngineTypes.h new file mode 100644 index 00000000..24c304c6 --- /dev/null +++ b/src/api/burn/inc/BootstrapperExtensionEngineTypes.h @@ -0,0 +1,200 @@ +#pragma once +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + + +#if defined(__cplusplus) +extern "C" { +#endif + +enum BOOTSTRAPPER_EXTENSION_LOG_LEVEL +{ + BOOTSTRAPPER_EXTENSION_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel()) + BOOTSTRAPPER_EXTENSION_LOG_LEVEL_STANDARD, // written if reporting is on + BOOTSTRAPPER_EXTENSION_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on + BOOTSTRAPPER_EXTENSION_LOG_LEVEL_DEBUG, // reporting useful when debugging code + BOOTSTRAPPER_EXTENSION_LOG_LEVEL_ERROR, // always gets reported, but can never be specified +}; + +enum BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE +{ + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_ESCAPESTRING, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_EVALUATECONDITION, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_FORMATSTRING, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLENUMERIC, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLESTRING, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETVARIABLEVERSION, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_LOG, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLENUMERIC, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLESTRING, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_SETVARIABLEVERSION, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_COMPAREVERSIONS, + BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE, +}; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS +{ + DWORD cbSize; + LPCWSTR wzVersion1; + LPCWSTR wzVersion2; +} BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS +{ + DWORD cbSize; + int nResult; +} BOOTSTRAPPER_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_ARGS +{ + DWORD cbSize; + LPCWSTR wzIn; +} BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_RESULTS +{ + DWORD cbSize; + LPWSTR wzOut; + // Should be initialized to the size of wzOut. + SIZE_T cchOut; +} BOOTSTRAPPER_EXTENSION_ENGINE_ESCAPESTRING_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_ARGS +{ + DWORD cbSize; + LPCWSTR wzCondition; +} BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS +{ + DWORD cbSize; + BOOL f; +} BOOTSTRAPPER_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_ARGS +{ + DWORD cbSize; + LPCWSTR wzIn; +} BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_RESULTS +{ + DWORD cbSize; + LPWSTR wzOut; + // Should be initialized to the size of wzOut. + SIZE_T cchOut; +} BOOTSTRAPPER_EXTENSION_ENGINE_FORMATSTRING_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS +{ + DWORD cbSize; + LONGLONG llValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS +{ + DWORD cbSize; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + SIZE_T cchValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS +{ + DWORD cbSize; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + SIZE_T cchValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_LOG_ARGS +{ + DWORD cbSize; + BOOTSTRAPPER_EXTENSION_LOG_LEVEL level; + LPCWSTR wzMessage; +} BOOTSTRAPPER_EXTENSION_ENGINE_LOG_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_LOG_RESULTS +{ + DWORD cbSize; +} BOOTSTRAPPER_EXTENSION_ENGINE_LOG_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; + LONGLONG llValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS +{ + DWORD cbSize; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; + LPCWSTR wzValue; + BOOL fFormatted; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS +{ + DWORD cbSize; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS +{ + DWORD cbSize; + LPCWSTR wzVariable; + LPCWSTR wzValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS +{ + DWORD cbSize; +} BOOTSTRAPPER_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS +{ + DWORD cbSize; + LPCWSTR wzBundleId; + LPCWSTR wzVariable; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS +{ + DWORD cbSize; + LPWSTR wzValue; + // Should be initialized to the size of wzValue. + SIZE_T cchValue; +} BOOTSTRAPPER_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS; + +extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_ENGINE_PROC)( + __in BOOTSTRAPPER_EXTENSION_ENGINE_MESSAGE message, + __in const LPVOID pvArgs, + __inout LPVOID pvResults, + __in_opt LPVOID pvContext + ); + +#if defined(__cplusplus) +} +#endif diff --git a/src/api/burn/inc/BootstrapperExtensionTypes.h b/src/api/burn/inc/BootstrapperExtensionTypes.h new file mode 100644 index 00000000..4d45b59d --- /dev/null +++ b/src/api/burn/inc/BootstrapperExtensionTypes.h @@ -0,0 +1,61 @@ +#pragma once +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include "BootstrapperExtensionEngineTypes.h" + +#if defined(__cplusplus) +extern "C" { +#endif + +enum BOOTSTRAPPER_EXTENSION_MESSAGE +{ + BOOTSTRAPPER_EXTENSION_MESSAGE_SEARCH, +}; + +typedef struct _BOOTSTRAPPER_EXTENSION_SEARCH_ARGS +{ + DWORD cbSize; + LPCWSTR wzId; + LPCWSTR wzVariable; +} BOOTSTRAPPER_EXTENSION_SEARCH_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_SEARCH_RESULTS +{ + DWORD cbSize; +} BOOTSTRAPPER_EXTENSION_SEARCH_RESULTS; + +extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_PROC)( + __in BOOTSTRAPPER_EXTENSION_MESSAGE message, + __in const LPVOID pvArgs, + __inout LPVOID pvResults, + __in_opt LPVOID pvContext + ); + +typedef struct _BOOTSTRAPPER_EXTENSION_CREATE_ARGS +{ + DWORD cbSize; + DWORD64 qwEngineAPIVersion; + PFN_BOOTSTRAPPER_EXTENSION_ENGINE_PROC pfnBootstrapperExtensionEngineProc; + LPVOID pvBootstrapperExtensionEngineProcContext; + LPCWSTR wzBootstrapperWorkingFolder; + LPCWSTR wzBootstrapperExtensionDataPath; + LPCWSTR wzExtensionId; +} BOOTSTRAPPER_EXTENSION_CREATE_ARGS; + +typedef struct _BOOTSTRAPPER_EXTENSION_CREATE_RESULTS +{ + DWORD cbSize; + PFN_BOOTSTRAPPER_EXTENSION_PROC pfnBootstrapperExtensionProc; + LPVOID pvBootstrapperExtensionProcContext; +} BOOTSTRAPPER_EXTENSION_CREATE_RESULTS; + +extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_EXTENSION_CREATE)( + __in const BOOTSTRAPPER_EXTENSION_CREATE_ARGS* pArgs, + __inout BOOTSTRAPPER_EXTENSION_CREATE_RESULTS* pResults + ); + +extern "C" typedef void (WINAPI *PFN_BOOTSTRAPPER_EXTENSION_DESTROY)(); + +#if defined(__cplusplus) +} +#endif diff --git a/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp b/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp index b345ab9f..d0b38064 100644 --- a/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp +++ b/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp @@ -1,12 +1,11 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "precomp.h" -#include "BalBaseBootstrapperApplication.h" -class CTestBootstrapperApplication : public CBalBaseBootstrapperApplication +class CTestBootstrapperApplication : public CBootstrapperApplicationBase { public: - CTestBootstrapperApplication() : CBalBaseBootstrapperApplication() + CTestBootstrapperApplication() : CBootstrapperApplicationBase() { } }; diff --git a/src/api/burn/test/BalUtilUnitTest/precomp.h b/src/api/burn/test/BalUtilUnitTest/precomp.h index 78add593..0edf4664 100644 --- a/src/api/burn/test/BalUtilUnitTest/precomp.h +++ b/src/api/burn/test/BalUtilUnitTest/precomp.h @@ -15,9 +15,7 @@ #include #include -#include -#include -#include +#include #include "TestBootstrapperApplication.h" diff --git a/src/burn/engine/engine.vcxproj b/src/burn/engine/engine.vcxproj index c4b64c36..7e2e80b6 100644 --- a/src/burn/engine/engine.vcxproj +++ b/src/burn/engine/engine.vcxproj @@ -101,10 +101,10 @@ - - - - + + + + diff --git a/src/burn/engine/precomp.h b/src/burn/engine/precomp.h index 72c1e789..3ee32fb0 100644 --- a/src/burn/engine/precomp.h +++ b/src/burn/engine/precomp.h @@ -61,8 +61,8 @@ #include #include -#include "BootstrapperApplication.h" -#include "BootstrapperExtension.h" +#include "BootstrapperApplicationTypes.h" +#include "BootstrapperExtensionTypes.h" #include "platform.h" #include "variant.h" diff --git a/src/burn/test/BurnUnitTest/precomp.h b/src/burn/test/BurnUnitTest/precomp.h index d0105107..f07f5968 100644 --- a/src/burn/test/BurnUnitTest/precomp.h +++ b/src/burn/test/BurnUnitTest/precomp.h @@ -37,8 +37,8 @@ #include #include -#include "BootstrapperApplication.h" -#include "BootstrapperExtension.h" +#include "BootstrapperApplicationTypes.h" +#include "BootstrapperExtensionTypes.h" #include "platform.h" #include "variant.h" diff --git a/src/ext/Bal/Samples/bafunctions/precomp.h b/src/ext/Bal/Samples/bafunctions/precomp.h index 542ac606..4e88a4a0 100644 --- a/src/ext/Bal/Samples/bafunctions/precomp.h +++ b/src/ext/Bal/Samples/bafunctions/precomp.h @@ -34,12 +34,7 @@ //#include "xmlutil.h" #include "regutil.h" -//#include "IBootstrapperApplication.h" - -#include "BalBaseBootstrapperApplication.h" -//#include "balinfo.h" -//#include "balcondition.h" -#include "balutil.h" +#include "BootstrapperApplicationBase.h" #include "BAFunctions.h" #include "IBAFunctions.h" diff --git a/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp b/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp index a8967a31..23db7c5f 100644 --- a/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp +++ b/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "precomp.h" -#include "BalBaseBootstrapperApplication.h" static const LPCWSTR WIXIUIBA_WINDOW_CLASS = L"WixInternalUIBA"; @@ -15,10 +14,10 @@ enum WM_WIXIUIBA }; -class CWixInternalUIBootstrapperApplication : public CBalBaseBootstrapperApplication +class CWixInternalUIBootstrapperApplication : public CBootstrapperApplicationBase { public: // IBootstrapperApplication - STDMETHODIMP OnCreate( + virtual STDMETHODIMP OnCreate( __in IBootstrapperEngine* pEngine, __in BOOTSTRAPPER_COMMAND* pCommand ) @@ -26,7 +25,7 @@ public: // IBootstrapperApplication HRESULT hr = S_OK; hr = __super::OnCreate(pEngine, pCommand); - BalExitOnFailure(hr, "CBalBaseBootstrapperApplication initialization failed."); + BalExitOnFailure(hr, "CBootstrapperApplicationBase initialization failed."); m_commandAction = pCommand->action; m_commandDisplay = pCommand->display; @@ -794,7 +793,7 @@ public: // CWixInternalUIBootstrapperApplication( __in HMODULE hModule - ) : CBalBaseBootstrapperApplication(3, 3000) + ) : CBootstrapperApplicationBase(3, 3000) { m_hModule = hModule; m_commandAction = BOOTSTRAPPER_ACTION_UNKNOWN; diff --git a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp index 233cabbc..c86a4a1d 100644 --- a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp +++ b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "precomp.h" -#include "BalBaseBootstrapperApplication.h" static const LPCWSTR WIXBUNDLE_VARIABLE_CANRESTART = L"WixCanRestart"; static const LPCWSTR WIXBUNDLE_VARIABLE_ELEVATED = L"WixBundleElevated"; @@ -178,10 +177,10 @@ static LPCSTR LoggingMsiFeatureStateToString( ); -class CWixStandardBootstrapperApplication : public CBalBaseBootstrapperApplication +class CWixStandardBootstrapperApplication : public CBootstrapperApplicationBase { public: // IBootstrapperApplication - STDMETHODIMP OnCreate( + virtual STDMETHODIMP OnCreate( __in IBootstrapperEngine* pEngine, __in BOOTSTRAPPER_COMMAND* pCommand ) @@ -189,7 +188,7 @@ public: // IBootstrapperApplication HRESULT hr = S_OK; hr = __super::OnCreate(pEngine, pCommand); - BalExitOnFailure(hr, "CBalBaseBootstrapperApplication initialization failed."); + BalExitOnFailure(hr, "CBootstrapperApplicationBase initialization failed."); m_commandAction = pCommand->action; m_commandDisplay = pCommand->display; @@ -388,7 +387,7 @@ public: // IBootstrapperApplication } LExit: - return CBalBaseBootstrapperApplication::OnDetectRelatedBundle(wzBundleId, relationType, wzBundleTag, fPerMachine, wzVersion, fMissingFromCache, pfCancel); + return CBootstrapperApplicationBase::OnDetectRelatedBundle(wzBundleId, relationType, wzBundleTag, fPerMachine, wzVersion, fMissingFromCache, pfCancel); } @@ -563,7 +562,7 @@ public: // IBootstrapperApplication *pRequestedType = BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_NONE; } - return CBalBaseBootstrapperApplication::OnPlanRelatedBundleType(wzBundleId, recommendedType, pRequestedType, pfCancel); + return CBootstrapperApplicationBase::OnPlanRelatedBundleType(wzBundleId, recommendedType, pRequestedType, pfCancel); } @@ -633,7 +632,7 @@ public: // IBootstrapperApplication } } - return CBalBaseBootstrapperApplication::OnPlanPackageBegin(wzPackageId, state, fCached, installCondition, repairCondition, recommendedState, recommendedCacheType, pRequestState, pRequestedCacheType, pfCancel); + return CBootstrapperApplicationBase::OnPlanPackageBegin(wzPackageId, state, fCached, installCondition, repairCondition, recommendedState, recommendedCacheType, pRequestState, pRequestedCacheType, pfCancel); } @@ -4778,7 +4777,7 @@ public: CWixStandardBootstrapperApplication( __in HMODULE hModule, __in BOOL fRunAsPrereqBA - ) : CBalBaseBootstrapperApplication(3, 3000) + ) : CBootstrapperApplicationBase(3, 3000) { THEME_ASSIGN_CONTROL_ID* pAssignControl = NULL; DWORD dwAutomaticBehaviorType = THEME_CONTROL_AUTOMATIC_BEHAVIOR_EXCLUDE_ENABLED | THEME_CONTROL_AUTOMATIC_BEHAVIOR_EXCLUDE_VISIBLE | THEME_CONTROL_AUTOMATIC_BEHAVIOR_EXCLUDE_ACTION | THEME_CONTROL_AUTOMATIC_BEHAVIOR_EXCLUDE_VALUE; diff --git a/src/ext/Bal/stdbas/precomp.h b/src/ext/Bal/stdbas/precomp.h index 00d0d03f..a6c4cfe4 100644 --- a/src/ext/Bal/stdbas/precomp.h +++ b/src/ext/Bal/stdbas/precomp.h @@ -36,13 +36,9 @@ #include #include -#include - -#include -#include -#include - +#include #include +#include #include "stdbas.messages.h" #include "WixStandardBootstrapperApplication.h" diff --git a/src/ext/Bal/test/WixStdFnUnitTest/TestBootstrapperApplication.cpp b/src/ext/Bal/test/WixStdFnUnitTest/TestBootstrapperApplication.cpp index b345ab9f..d0b38064 100644 --- a/src/ext/Bal/test/WixStdFnUnitTest/TestBootstrapperApplication.cpp +++ b/src/ext/Bal/test/WixStdFnUnitTest/TestBootstrapperApplication.cpp @@ -1,12 +1,11 @@ // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. #include "precomp.h" -#include "BalBaseBootstrapperApplication.h" -class CTestBootstrapperApplication : public CBalBaseBootstrapperApplication +class CTestBootstrapperApplication : public CBootstrapperApplicationBase { public: - CTestBootstrapperApplication() : CBalBaseBootstrapperApplication() + CTestBootstrapperApplication() : CBootstrapperApplicationBase() { } }; diff --git a/src/ext/Bal/test/WixStdFnUnitTest/precomp.h b/src/ext/Bal/test/WixStdFnUnitTest/precomp.h index 4cdd262c..23bc7a6c 100644 --- a/src/ext/Bal/test/WixStdFnUnitTest/precomp.h +++ b/src/ext/Bal/test/WixStdFnUnitTest/precomp.h @@ -15,10 +15,8 @@ #include #include -#include +#include #include -#include -#include #include "TestBAFunctions.h" #include "TestBootstrapperApplication.h" diff --git a/src/ext/Bal/wixiuiba/precomp.h b/src/ext/Bal/wixiuiba/precomp.h index 782c0b1b..a4ce6776 100644 --- a/src/ext/Bal/wixiuiba/precomp.h +++ b/src/ext/Bal/wixiuiba/precomp.h @@ -15,10 +15,6 @@ #include #include -#include - -#include -#include -#include +#include #include "WixInternalUIBootstrapperApplication.h" diff --git a/src/ext/Bal/wixprqba/precomp.h b/src/ext/Bal/wixprqba/precomp.h index a47f411b..b6178be3 100644 --- a/src/ext/Bal/wixprqba/precomp.h +++ b/src/ext/Bal/wixprqba/precomp.h @@ -35,12 +35,7 @@ #include #include -#include - -#include -#include -#include - +#include #include #include "WixStandardBootstrapperApplication.h" diff --git a/src/ext/Bal/wixstdba/precomp.h b/src/ext/Bal/wixstdba/precomp.h index a47f411b..66c5152d 100644 --- a/src/ext/Bal/wixstdba/precomp.h +++ b/src/ext/Bal/wixstdba/precomp.h @@ -35,12 +35,8 @@ #include #include -#include - +#include #include -#include -#include - #include #include "WixStandardBootstrapperApplication.h" diff --git a/src/test/burn/TestData/BAFunctionsTests/BafRelatedBundleVariableTesting/precomp.h b/src/test/burn/TestData/BAFunctionsTests/BafRelatedBundleVariableTesting/precomp.h index 2e14786a..95a015ab 100644 --- a/src/test/burn/TestData/BAFunctionsTests/BafRelatedBundleVariableTesting/precomp.h +++ b/src/test/burn/TestData/BAFunctionsTests/BafRelatedBundleVariableTesting/precomp.h @@ -30,8 +30,7 @@ #include "regutil.h" #include "xmlutil.h" -#include "BalBaseBootstrapperApplication.h" -#include "balutil.h" +#include #include "BAFunctions.h" #include "IBAFunctions.h" diff --git a/src/test/burn/TestData/Manual/BafThmutilTesting/precomp.h b/src/test/burn/TestData/Manual/BafThmutilTesting/precomp.h index 2e14786a..95a015ab 100644 --- a/src/test/burn/TestData/Manual/BafThmutilTesting/precomp.h +++ b/src/test/burn/TestData/Manual/BafThmutilTesting/precomp.h @@ -30,8 +30,7 @@ #include "regutil.h" #include "xmlutil.h" -#include "BalBaseBootstrapperApplication.h" -#include "balutil.h" +#include #include "BAFunctions.h" #include "IBAFunctions.h" diff --git a/src/test/burn/TestData/PrereqBaTests/PrereqBaf/PrereqBaf.cpp b/src/test/burn/TestData/PrereqBaTests/PrereqBaf/PrereqBaf.cpp index 5e26faac..1eaebe63 100644 --- a/src/test/burn/TestData/PrereqBaTests/PrereqBaf/PrereqBaf.cpp +++ b/src/test/burn/TestData/PrereqBaTests/PrereqBaf/PrereqBaf.cpp @@ -9,7 +9,7 @@ class CPrereqBaf : public CBalBaseBAFunctions public: // IBAFunctions public: //IBootstrapperApplication - STDMETHODIMP OnCreate( + virtual STDMETHODIMP OnCreate( __in IBootstrapperEngine* pEngine, __in BOOTSTRAPPER_COMMAND* pCommand ) @@ -17,7 +17,7 @@ public: //IBootstrapperApplication HRESULT hr = S_OK; hr = __super::OnCreate(pEngine, pCommand); - ExitOnFailure(hr, "CBalBaseBootstrapperApplication initialization failed."); + ExitOnFailure(hr, "CPrereqBaf initialization failed."); hr = StrAllocString(&m_sczBARuntimeDirectory, pCommand->wzBootstrapperWorkingFolder, 0); ExitOnFailure(hr, "Failed to copy working folder"); diff --git a/src/test/burn/TestData/PrereqBaTests/PrereqBaf/precomp.h b/src/test/burn/TestData/PrereqBaTests/PrereqBaf/precomp.h index 8320bdd8..f39f9de7 100644 --- a/src/test/burn/TestData/PrereqBaTests/PrereqBaf/precomp.h +++ b/src/test/burn/TestData/PrereqBaTests/PrereqBaf/precomp.h @@ -18,8 +18,7 @@ #include "pathutil.h" #include "strutil.h" -#include "BalBaseBootstrapperApplication.h" -#include "balutil.h" +#include #include "BAFunctions.h" #include "IBAFunctions.h" -- cgit v1.2.3-55-g6feb