// 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.CodeDom.Compiler;
using System.Runtime.InteropServices;
using System.Text;
///
/// Allows calls into the bootstrapper engine.
///
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("6480D616-27A0-44D7-905B-81512C29C2FB")]
[GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
public interface IBootstrapperEngine
{
///
/// See .
///
void GetPackageCount(
[MarshalAs(UnmanagedType.U4)] out int pcPackages
);
///
/// See .
///
[PreserveSig]
int GetVariableNumeric(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
out long pllValue
);
///
/// See .
///
[PreserveSig]
int GetVariableString(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
IntPtr wzValue,
ref IntPtr pcchValue
);
///
/// See .
///
[PreserveSig]
int GetVariableVersion(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
IntPtr wzValue,
ref IntPtr pcchValue
);
///
/// See .
///
[PreserveSig]
int FormatString(
[MarshalAs(UnmanagedType.LPWStr)] string wzIn,
[MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut,
ref IntPtr pcchOut
);
///
/// See .
///
[PreserveSig]
int EscapeString(
[MarshalAs(UnmanagedType.LPWStr)] string wzIn,
[MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut,
ref IntPtr pcchOut
);
///
/// See .
///
void EvaluateCondition(
[MarshalAs(UnmanagedType.LPWStr)] string wzCondition,
[MarshalAs(UnmanagedType.Bool)] out bool pf
);
///
/// See .
///
void Log(
[MarshalAs(UnmanagedType.U4)] LogLevel level,
[MarshalAs(UnmanagedType.LPWStr)] string wzMessage
);
///
/// See .
///
void SendEmbeddedError(
[MarshalAs(UnmanagedType.U4)] int dwErrorCode,
[MarshalAs(UnmanagedType.LPWStr)] string wzMessage,
[MarshalAs(UnmanagedType.U4)] int dwUIHint,
[MarshalAs(UnmanagedType.I4)] out int pnResult
);
///
/// See .
///
void SendEmbeddedProgress(
[MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
[MarshalAs(UnmanagedType.U4)] int dwOverallProgressPercentage,
[MarshalAs(UnmanagedType.I4)] out int pnResult
);
///
/// See .
///
void SetUpdate(
[MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource,
[MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource,
[MarshalAs(UnmanagedType.U8)] long qwValue,
[MarshalAs(UnmanagedType.U4)] UpdateHashType hashType,
[MarshalAs(UnmanagedType.LPWStr)] string wzHash,
[MarshalAs(UnmanagedType.LPWStr)] string wzUpdatePackageId
);
///
/// See .
///
void SetLocalSource(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPath
);
///
/// See .
///
void SetDownloadSource(
[MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
[MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
[MarshalAs(UnmanagedType.LPWStr)] string wzUrl,
[MarshalAs(UnmanagedType.LPWStr)] string wzUser,
[MarshalAs(UnmanagedType.LPWStr)] string wzPassword
);
///
/// See .
///
void SetVariableNumeric(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
long llValue
);
///
/// See .
///
void SetVariableString(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
IntPtr wzValue,
[MarshalAs(UnmanagedType.Bool)] bool fFormatted
);
///
/// See .
///
void SetVariableVersion(
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
IntPtr wzValue
);
///
/// See .
///
void CloseSplashScreen();
///
/// See .
///
void Detect(
IntPtr hwndParent
);
///
/// See .
///
void Plan(
[MarshalAs(UnmanagedType.U4)] LaunchAction action
);
///
/// See .
///
[PreserveSig]
int Elevate(
IntPtr hwndParent
);
///
/// See .
///
void Apply(
IntPtr hwndParent
);
///
/// See .
///
void Quit(
[MarshalAs(UnmanagedType.U4)] int dwExitCode
);
///
/// See .
///
void LaunchApprovedExe(
IntPtr hwndParent,
[MarshalAs(UnmanagedType.LPWStr)] string wzApprovedExeForElevationId,
[MarshalAs(UnmanagedType.LPWStr)] string wzArguments,
[MarshalAs(UnmanagedType.U4)] int dwWaitForInputIdleTimeout
);
///
/// Sets the URL to the update feed.
///
void SetUpdateSource(
[MarshalAs(UnmanagedType.LPWStr)] string url
);
///
/// See .
///
void CompareVersions(
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion1,
[MarshalAs(UnmanagedType.LPWStr)] string wzVersion2,
[MarshalAs(UnmanagedType.I4)] out int pnResult
);
///
/// See .
///
[PreserveSig]
int GetRelatedBundleVariable(
[MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
[MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
IntPtr wzValue,
ref IntPtr pcchValue
);
}
///
/// The installation action for the bundle or current package.
///
public enum ActionState
{
///
/// No action.
///
None,
///
/// Uninstall action.
///
Uninstall,
///
/// Install action.
///
Install,
///
/// Modify action.
///
Modify,
///
/// Repair action.
///
Repair,
///
/// Minor upgrade action.
///
MinorUpgrade,
}
///
/// The action for the bundle to perform.
///
public enum LaunchAction
{
///
/// Invalid action.
///
Unknown,
///
/// Provide help information.
///
Help,
///
/// Layout the bundle on disk, normally to prepare for offline installation.
///
Layout,
///
/// Same as Uninstall, except it will always remove itself from the package cache and Add/Remove Programs.
/// This should only be used to remove corrupt bundles since it might not properly clean up its packages.
///
UnsafeUninstall,
///
/// Uninstall the bundle.
///
Uninstall,
///
/// Cache the bundle and its packages.
///
Cache,
///
/// Install the bundle.
///
Install,
///
/// Modify the bundle.
///
Modify,
///
/// Repair the bundle
///
Repair,
///
/// Launch the update registered with and then exit without waiting for it to complete.
///
UpdateReplace,
///
/// Launch the update registered with as an embedded bundle.
///
UpdateReplaceEmbedded,
}
///
/// The message log level.
///
public enum LogLevel
{
///
/// No logging level (generic).
///
None,
///
/// User messages.
///
Standard,
///
/// Verbose messages.
///
Verbose,
///
/// Messages for debugging.
///
Debug,
///
/// Error messages.
///
Error,
}
///
/// Type of hash used for update bundle.
///
public enum UpdateHashType
{
///
/// No hash provided.
///
None,
///
/// SHA-512 based hash provided.
///
Sha512,
}
///
/// Describes the state of an installation package.
///
public enum PackageState
{
///
/// Invalid state.
///
Unknown,
///
/// The package is not on the machine (except possibly MspPackage) and should not be installed.
///
Obsolete,
///
/// The package is not installed.
///
Absent,
///
/// The package is installed.
///
Present,
///
/// The package is on the machine but not active, so only uninstall operations are allowed.
///
Superseded,
///
/// This value is no longer used. See the DetectPackageCompleteEventArgs.Cached value instead.
///
[Obsolete("Use DetectPackageCompleteEventArgs.Cached instead.")]
Cached = Present,
}
///
/// Indicates the state desired for an installation package.
///
public enum RequestState
{
///
/// No change requested.
///
None,
///
/// As long as there are no dependents, the package will be uninstalled.
/// There are some packages that can't be uninstalled, such as an ExePackage without an UninstallCommand.
///
ForceAbsent,
///
/// Request the package to not be installed on the machine.
///
Absent,
///
/// Request the package to be cached and not be installed on the machine.
///
Cache,
///
/// Request the package to be installed on the machine.
///
Present,
///
/// Force the bundle to install the package.
///
ForcePresent,
///
/// Request the package to be repaired.
///
Repair,
}
///
/// Indicates the state of a feature.
/// See https://learn.microsoft.com/en-us/windows/win32/api/msi/nf-msi-msiqueryfeaturestatew.
///
public enum FeatureState
{
///
/// Invalid state.
///
Unknown,
///
/// INSTALLSTATE_ABSENT
///
Absent,
///
/// INSTALLSTATE_ADVERTISED
///
Advertised,
///
/// INSTALLSTATE_LOCAL
///
Local,
///
/// INSTALLSTATE_SOURCE
///
Source,
}
}