// 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.
namespace WixToolset.Mba.Core
{
using System;
using System.Runtime.InteropServices;
///
/// Allows customization of the bootstrapper application.
///
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("53C31D56-49C0-426B-AB06-099D717C67FE")]
public interface IBootstrapperApplication
{
///
/// Low level method that is called directly from the engine.
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int BAProc(
int message,
IntPtr pvArgs,
IntPtr pvResults,
IntPtr pvContext
);
///
/// Low level method that is called directly from the engine.
///
void BAProcFallback(
int message,
IntPtr pvArgs,
IntPtr pvResults,
ref int phr,
IntPtr pvContext
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnStartup();
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnShutdown(ref BOOTSTRAPPER_SHUTDOWN_ACTION action);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnSystemShutdown(
[MarshalAs(UnmanagedType.U4)] EndSessionReasons dwEndSession,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectBegin(
[MarshalAs(UnmanagedType.Bool)] bool fCached,
[MarshalAs(UnmanagedType.U4)] RegistrationType registrationType,
[MarshalAs(UnmanagedType.U4)] int cPackages,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectForwardCompatibleBundle(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.U4)] RelationType relationType,
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
[MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
[MarshalAs(UnmanagedType.Bool)] bool fMissingFromCache,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectUpdateBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzUpdateLocation,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
[MarshalAs(UnmanagedType.Bool)] ref bool fSkip
);
///
/// See .
///
///
///
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectUpdate(
[MarshalAs(UnmanagedType.LPWStr)] string wzUpdateLocation,
[MarshalAs(UnmanagedType.U8)] long dw64Size,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
[MarshalAs(UnmanagedType.LPWStr)] string wzTitle,
[MarshalAs(UnmanagedType.LPWStr)] string wzSummary,
[MarshalAs(UnmanagedType.LPWStr)] string wzContentType,
[MarshalAs(UnmanagedType.LPWStr)] string wzContent,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
[MarshalAs(UnmanagedType.Bool)] ref bool fStopProcessingUpdates
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectUpdateComplete(
int hrStatus,
[MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreError
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectRelatedBundle(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.U4)] RelationType relationType,
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
[MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
[MarshalAs(UnmanagedType.Bool)] bool fMissingFromCache,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectPackageBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectCompatibleMsiPackage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageVersion,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectRelatedMsiPackage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzUpgradeCode,
[MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
[MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
[MarshalAs(UnmanagedType.U4)] RelatedOperation operation,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectPatchTarget(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
[MarshalAs(UnmanagedType.U4)] PackageState patchState,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectMsiFeature(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzFeatureId,
[MarshalAs(UnmanagedType.U4)] FeatureState state,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectPackageComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
int hrStatus,
[MarshalAs(UnmanagedType.U4)] PackageState state,
[MarshalAs(UnmanagedType.Bool)] bool fCached
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnDetectComplete(
int hrStatus,
[MarshalAs(UnmanagedType.Bool)] bool fEligibleForCleanup
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanBegin(
[MarshalAs(UnmanagedType.U4)] int cPackages,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanRelatedBundle(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
[MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanRollbackBoundary(
[MarshalAs(UnmanagedType.LPWStr)] string wzRollbackBoundaryId,
[MarshalAs(UnmanagedType.Bool)] bool fRecommendedTransaction,
[MarshalAs(UnmanagedType.Bool)] ref bool fTransaction,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanPackageBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] PackageState state,
[MarshalAs(UnmanagedType.Bool)] bool fCached,
[MarshalAs(UnmanagedType.U4)] BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition,
[MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
[MarshalAs(UnmanagedType.U4)] BOOTSTRAPPER_CACHE_TYPE recommendedCacheType,
[MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
[MarshalAs(UnmanagedType.U4)] ref BOOTSTRAPPER_CACHE_TYPE pRequestedCacheType,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanCompatibleMsiPackageBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageVersion,
[MarshalAs(UnmanagedType.Bool)] bool fRecommendedRemove,
[MarshalAs(UnmanagedType.Bool)] ref bool fRequestRemove,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanCompatibleMsiPackageComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
int hrStatus,
[MarshalAs(UnmanagedType.Bool)] bool fRequestedRemove
);
///
/// See .
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanPatchTarget(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
[MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
[MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanMsiFeature(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzFeatureId,
[MarshalAs(UnmanagedType.U4)] FeatureState recommendedState,
[MarshalAs(UnmanagedType.U4)] ref FeatureState pRequestedState,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanMsiPackage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.Bool)] bool fExecute,
[MarshalAs(UnmanagedType.U4)] ActionState action,
[MarshalAs(UnmanagedType.U4)] BOOTSTRAPPER_MSI_FILE_VERSIONING recommendedFileVersioning,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
[MarshalAs(UnmanagedType.U4)] ref BURN_MSI_PROPERTY actionMsiProperty,
[MarshalAs(UnmanagedType.U4)] ref INSTALLUILEVEL uiLevel,
[MarshalAs(UnmanagedType.Bool)] ref bool fDisableExternalUiHandler,
[MarshalAs(UnmanagedType.U4)] ref BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning
);
///
/// See .
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanPackageComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
int hrStatus,
[MarshalAs(UnmanagedType.U4)] RequestState requested
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlannedCompatiblePackage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
[MarshalAs(UnmanagedType.Bool)] bool fRemove
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlannedPackage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] ActionState execute,
[MarshalAs(UnmanagedType.U4)] ActionState rollback,
[MarshalAs(UnmanagedType.Bool)] bool fPlannedCache,
[MarshalAs(UnmanagedType.Bool)] bool fPlannedUncache
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanComplete(
int hrStatus
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnApplyBegin(
[MarshalAs(UnmanagedType.U4)] int dwPhaseCount,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnElevateBegin(
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnElevateComplete(
int hrStatus
);
///
/// See .
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnProgress(
[MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnError(
[MarshalAs(UnmanagedType.U4)] ErrorType errorType,
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] int dwCode,
[MarshalAs(UnmanagedType.LPWStr)] string wzError,
[MarshalAs(UnmanagedType.I4)] int dwUIHint,
[MarshalAs(UnmanagedType.U4)] int cData,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzData,
[MarshalAs(UnmanagedType.I4)] Result nRecommendation,
[MarshalAs(UnmanagedType.I4)] ref Result pResult
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnRegisterBegin(
[MarshalAs(UnmanagedType.I4)] RegistrationType recommendedRegistrationType,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
[MarshalAs(UnmanagedType.I4)] ref RegistrationType pRegistrationType
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnRegisterComplete(
int hrStatus
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheBegin(
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCachePackageBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] int cCachePayloads,
[MarshalAs(UnmanagedType.U8)] long dw64PackageCacheSize,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheAcquireBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.LPWStr)] string wzSource,
[MarshalAs(UnmanagedType.LPWStr)] string wzDownloadUrl,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadContainerId,
[MarshalAs(UnmanagedType.U4)] CacheOperation recommendation,
[MarshalAs(UnmanagedType.I4)] ref CacheOperation action,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheAcquireProgress(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.U8)] long dw64Progress,
[MarshalAs(UnmanagedType.U8)] long dw64Total,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheAcquireResolving(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3, ArraySubType = UnmanagedType.LPWStr), In] string[] searchPaths,
[MarshalAs(UnmanagedType.U4)] int cSearchPaths,
[MarshalAs(UnmanagedType.Bool)] bool fFoundLocal,
[MarshalAs(UnmanagedType.U4)] int dwRecommendedSearchPath,
[MarshalAs(UnmanagedType.LPWStr)] string wzDownloadUrl,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadContainerId,
[MarshalAs(UnmanagedType.I4)] CacheResolveOperation recommendation,
[MarshalAs(UnmanagedType.U4)] ref int dwChosenSearchPath,
[MarshalAs(UnmanagedType.I4)] ref CacheResolveOperation action,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheAcquireComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
int hrStatus,
BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation,
ref BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION pAction
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheVerifyBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheVerifyProgress(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.U8)] long dw64Progress,
[MarshalAs(UnmanagedType.U8)] long dw64Total,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.I4)] CacheVerifyStep verifyStep,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheVerifyComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
int hrStatus,
BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation,
ref BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCachePackageComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
int hrStatus,
BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation,
ref BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheComplete(
int hrStatus
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecuteBegin(
[MarshalAs(UnmanagedType.U4)] int cExecutingPackages,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecutePackageBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.Bool)] bool fExecute,
[MarshalAs(UnmanagedType.U4)] ActionState action,
[MarshalAs(UnmanagedType.U4)] INSTALLUILEVEL uiLevel,
[MarshalAs(UnmanagedType.Bool)] bool fDisableExternalUiHandler,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecutePatchTarget(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzTargetProductCode,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecuteProgress(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecuteMsiMessage(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] InstallMessage messageType,
[MarshalAs(UnmanagedType.I4)] int dwUIHint,
[MarshalAs(UnmanagedType.LPWStr)] string wzMessage,
[MarshalAs(UnmanagedType.U4)] int cData,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzData,
[MarshalAs(UnmanagedType.I4)] Result nRecommendation,
[MarshalAs(UnmanagedType.I4)] ref Result pResult
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecuteFilesInUse(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.U4)] int cFiles,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzFiles,
[MarshalAs(UnmanagedType.I4)] Result nRecommendation,
[MarshalAs(UnmanagedType.I4)] FilesInUseType source,
[MarshalAs(UnmanagedType.I4)] ref Result pResult
);
///
/// See .
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecutePackageComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
int hrStatus,
[MarshalAs(UnmanagedType.U4)] ApplyRestart restart,
[MarshalAs(UnmanagedType.I4)] BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation,
[MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION pAction
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnExecuteComplete(
int hrStatus
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnUnregisterBegin(
[MarshalAs(UnmanagedType.I4)] RegistrationType recommendedRegistrationType,
[MarshalAs(UnmanagedType.I4)] ref RegistrationType pRegistrationType
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnUnregisterComplete(
int hrStatus
);
///
/// See .
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnApplyComplete(
int hrStatus,
[MarshalAs(UnmanagedType.U4)] ApplyRestart restart,
[MarshalAs(UnmanagedType.I4)] BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation,
[MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_APPLYCOMPLETE_ACTION pAction
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnLaunchApprovedExeBegin(
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnLaunchApprovedExeComplete(
int hrStatus,
int processId
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnBeginMsiTransactionBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnBeginMsiTransactionComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId,
int hrStatus
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCommitMsiTransactionBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCommitMsiTransactionComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId,
int hrStatus
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnRollbackMsiTransactionBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId
);
///
/// See .
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnRollbackMsiTransactionComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId,
int hrStatus
);
///
/// See .
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPauseAutomaticUpdatesBegin(
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPauseAutomaticUpdatesComplete(
int hrStatus
);
///
/// See .
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnSystemRestorePointBegin(
);
///
/// See .
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnSystemRestorePointComplete(
int hrStatus
);
///
/// See .
///
///
///
///
///
///
///
///
///
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanForwardCompatibleBundle(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.U4)] RelationType relationType,
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
[MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
[MarshalAs(UnmanagedType.Bool)] bool fRecommendedIgnoreBundle,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
[MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheContainerOrPayloadVerifyBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheContainerOrPayloadVerifyProgress(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.U8)] long dw64Progress,
[MarshalAs(UnmanagedType.U8)] long dw64Total,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCacheContainerOrPayloadVerifyComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
int hrStatus
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCachePayloadExtractBegin(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCachePayloadExtractProgress(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.U8)] long dw64Progress,
[MarshalAs(UnmanagedType.U8)] long dw64Total,
[MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnCachePayloadExtractComplete(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
int hrStatus
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnSetUpdateBegin();
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnSetUpdateComplete(
int hrStatus,
[MarshalAs(UnmanagedType.LPWStr)] string wzPreviousPackageId,
[MarshalAs(UnmanagedType.LPWStr)] string wzNewPackageId
);
///
/// See .
///
[PreserveSig]
[return: MarshalAs(UnmanagedType.I4)]
int OnPlanRestoreRelatedBundle(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
[MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
[MarshalAs(UnmanagedType.Bool)] ref bool fCancel
);
}
///
/// The display level for the BA.
///
public enum Display
{
///
///
///
Unknown,
///
///
///
Embedded,
///
///
///
None,
///
///
///
Passive,
///
///
///
Full,
}
///
/// Messages from Windows Installer (msi.h).
///
public enum InstallMessage
{
///
/// premature termination, possibly fatal OOM
///
FatalExit,
///
/// formatted error message
///
Error = 0x01000000,
///
/// formatted warning message
///
Warning = 0x02000000,
///
/// user request message
///
User = 0x03000000,
///
/// informative message for log
///
Info = 0x04000000,
///
/// list of files in use that need to be replaced
///
FilesInUse = 0x05000000,
///
/// request to determine a valid source location
///
ResolveSource = 0x06000000,
///
/// insufficient disk space message
///
OutOfDiskSpace = 0x07000000,
///
/// start of action: action name & description
///
ActionStart = 0x08000000,
///
/// formatted data associated with individual action item
///
ActionData = 0x09000000,
///
/// progress gauge info: units so far, total
///
Progress = 0x0a000000,
///
/// product info for dialog: language Id, dialog caption
///
CommonData = 0x0b000000,
///
/// sent prior to UI initialization, no string data
///
Initialize = 0x0c000000,
///
/// sent after UI termination, no string data
///
Terminate = 0x0d000000,
///
/// sent prior to display or authored dialog or wizard
///
ShowDialog = 0x0e000000,
///
/// log only, to log performance number like action time
///
Performance = 0x0f000000,
///
/// the list of apps that the user can request Restart Manager to shut down and restart
///
RMFilesInUse = 0x19000000,
///
/// sent prior to server-side install of a product
///
InstallStart = 0x1a000000,
///
/// sent after server-side install
///
InstallEnd = 0x1B000000,
}
///
/// The action to perform when a reboot is necessary.
///
public enum Restart
{
///
///
///
Unknown,
///
///
///
Never,
///
///
///
Prompt,
///
///
///
Automatic,
///
///
///
Always,
}
///
/// The display name to use when registering in Add/Remove Programs.
///
public enum RegistrationType
{
///
/// No registration.
/// The engine will ignore None if it recommended InProgress or Full.
///
None,
///
/// The in-progress display name.
///
InProgress,
///
/// The default display name.
///
Full,
}
///
/// Result codes (based on Dialog Box Command IDs from WinUser.h).
///
public enum Result
{
///
///
///
Error = -1,
///
///
///
None,
///
///
///
Ok,
///
///
///
Cancel,
///
///
///
Abort,
///
///
///
Retry,
///
///
///
Ignore,
///
///
///
Yes,
///
///
///
No,
///
/// /
///
Close,
///
///
///
Help,
///
///
///
TryAgain,
///
///
///
Continue,
}
///
/// Describes why a bundle or packaged is being resumed.
///
public enum ResumeType
{
///
///
///
None,
///
/// Resume information exists but is invalid.
///
Invalid,
///
/// The bundle was re-launched after an unexpected interruption.
///
Interrupted,
///
/// The bundle was re-launched after a reboot.
///
Reboot,
///
/// The bundle was re-launched after being suspended.
///
Suspend,
///
/// The bundle was launched from Add/Remove Programs.
///
Arp,
}
///
/// Indicates what caused the error.
///
public enum ErrorType
{
///
/// The error occurred trying to elevate.
///
Elevate,
///
/// The error came from the Windows Installer.
///
WindowsInstaller,
///
/// The error came from an EXE Package.
///
ExePackage,
///
/// The error came while trying to authenticate with an HTTP server.
///
HttpServerAuthentication,
///
/// The error came while trying to authenticate with an HTTP proxy.
///
HttpProxyAuthentication,
///
/// The error occurred during apply.
///
Apply,
};
///
/// Indicates the source of the FilesInUse message.
///
public enum FilesInUseType
{
///
/// Generated from INSTALLMESSAGE_FILESINUSE.
///
Msi,
///
/// Generated from INSTALLMESSAGE_RMFILESINUSE.
///
MsiRm,
///
/// Generated from MMIO_CLOSE_APPS.
///
Netfx,
}
///
/// The calculated operation for the related bundle.
///
public enum RelatedOperation
{
///
///
///
None,
///
/// The related bundle or package will be downgraded.
///
Downgrade,
///
/// The related package will be upgraded as a minor revision.
///
MinorUpdate,
///
/// The related bundle or package will be upgraded as a major revision.
///
MajorUpgrade,
///
/// The related bundle will be removed.
///
Remove,
///
/// The related bundle will be installed.
///
Install,
///
/// The related bundle will be repaired.
///
Repair,
};
///
/// The cache operation used to acquire a container or payload.
///
public enum CacheOperation
{
///
/// There is no source available.
///
None,
///
/// Copy the payload or container from the chosen local source.
///
Copy,
///
/// Download the payload or container using the download URL.
///
Download,
///
/// Extract the payload from the container.
///
Extract,
}
///
/// The source to be used to acquire a container or payload.
///
public enum CacheResolveOperation
{
///
/// There is no source available.
///
None,
///
/// Copy the payload or container from the chosen local source.
///
Local,
///
/// Download the payload or container from the download URL.
///
Download,
///
/// Extract the payload from the container.
///
Container,
///
/// Look again for the payload or container locally.
///
Retry,
}
///
/// The current step when verifying a container or payload.
///
public enum CacheVerifyStep
{
///
/// Copying or moving the file from the working path to the unverified path.
/// Not used during Layout.
///
Stage,
///
/// Hashing the file.
///
Hash,
///
/// Copying or moving the file to the final location.
///
Finalize,
}
///
/// The restart state after a package or all packages were applied.
///
public enum ApplyRestart
{
///
/// Package or chain does not require a restart.
///
None,
///
/// Package or chain requires a restart but it has not been initiated yet.
///
RestartRequired,
///
/// Package or chain has already initiated the restart.
///
RestartInitiated
}
///
/// The relation type for related bundles.
///
public enum RelationType
{
///
///
///
None,
///
///
///
Detect,
///
///
///
Upgrade,
///
///
///
Addon,
///
///
///
Patch,
///
///
///
Dependent,
///
///
///
Update,
}
///
/// One or more reasons why the application is requested to be closed or is being closed.
///
[Flags]
public enum EndSessionReasons
{
///
/// The system is shutting down or restarting (it is not possible to determine which event is occurring).
///
Unknown,
///
/// The application is using a file that must be replaced, the system is being serviced, or system resources are exhausted.
///
CloseApplication,
///
/// The application is forced to shut down.
///
Critical = 0x40000000,
///
/// The user is logging off.
///
Logoff = unchecked((int)0x80000000)
}
///
/// The available actions for .
///
public enum 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 .
///
Restart,
}
///
/// The cache strategy to be used for the package.
///
public enum BOOTSTRAPPER_CACHE_TYPE
{
///
/// The package will be cached in order to securely run the package, but will always be cleaned from the cache at the end.
///
Remove,
///
/// The package will be cached in order to run the package, and then kept in the cache until the package is uninstalled.
///
Keep,
///
/// The package will always be cached and stay in the cache, unless the package and bundle are both being uninstalled.
///
Force,
}
///
/// The available actions for .
///
public enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION
{
///
///
///
None,
///
/// Instructs the engine to try the acquisition of the payload again.
/// Ignored if hrStatus is a success.
///
Retry,
}
///
/// The available actions for .
///
public enum 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.
///
Ignore,
///
/// Instructs the engine to try the acquisition and verification of the package again.
/// Ignored if hrStatus is a success.
///
Retry,
}
///
/// The available actions for .
///
public enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION
{
///
///
///
None,
///
/// Ignored if hrStatus is a success.
///
RetryVerification,
///
/// Ignored if hrStatus is a success.
///
RetryAcquisition,
}
///
/// The available actions for .
///
public enum 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.
///
Ignore,
///
/// Instructs the engine to try the execution of the package again.
/// Ignored if hrStatus is a success.
///
Retry,
///
/// Instructs the engine to stop processing the chain and restart.
/// The engine will launch again after the machine is restarted.
///
Restart,
///
/// Instructs the engine to stop processing the chain and suspend the current state.
///
Suspend,
}
///
/// The result of evaluating a condition from a package.
///
public enum BOOTSTRAPPER_PACKAGE_CONDITION_RESULT
{
///
/// No condition was authored.
///
Default,
///
/// Evaluated to false.
///
False,
///
/// Evaluated to true.
///
True,
}
///
/// The available actions for .
///
public enum BOOTSTRAPPER_RESOLVESOURCE_ACTION
{
///
/// Instructs the engine that the source can't be found.
///
None,
///
/// Instructs the engine to try the local source again.
///
Retry,
///
/// Instructs the engine to try the download source.
///
Download,
}
///
/// The available actions for .
///
public enum 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 .
///
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.
///
ReloadBootstrapper,
///
/// Opts out of the engine behavior of trying to uninstall itself when no non-permanent packages are installed.
///
SkipCleanup,
}
///
/// The file versioning options for REINSTALLMODE, see https://docs.microsoft.com/en-us/windows/win32/msi/reinstallmode.
///
public enum BOOTSTRAPPER_MSI_FILE_VERSIONING
{
///
/// o
///
Older,
///
/// e
///
Equal,
///
/// a
///
All,
}
///
/// The property Burn will add so the MSI can know the planned action for the package.
///
public enum BURN_MSI_PROPERTY
{
///
/// No property will be added.
///
None,
///
/// Add BURNMSIINSTALL=1
///
Install,
///
/// Add BURNMSIMODFIY=1
///
Modify,
///
/// Add BURNMSIREPAIR=1
///
Repair,
///
/// Add BURNMSIUNINSTALL=1
///
Uninstall,
}
///
/// From msi.h
/// https://docs.microsoft.com/en-us/windows/win32/api/msi/nf-msi-msisetinternalui
///
[Flags]
public enum INSTALLUILEVEL
{
///
/// UI level is unchanged
///
NoChange = 0,
///
/// default UI is used
///
Default = 1,
///
/// completely silent installation
///
None = 2,
///
/// simple progress and error handling
///
Basic = 3,
///
/// authored UI, wizard dialogs suppressed
///
Reduced = 4,
///
/// authored UI with wizards, progress, errors
///
Full = 5,
///
/// display success/failure dialog at end of install
///
EndDialog = 0x80,
///
/// display only progress dialog
///
ProgressOnly = 0x40,
///
/// do not display the cancel button in basic UI
///
HideCancel = 0x20,
///
/// force display of source resolution even if quiet
///
SourceResOnly = 0x100,
///
/// show UAC prompt even if quiet
/// Can only be used if on Windows Installer 5.0 or later
///
UacOnly = 0x200,
}
}