// 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 { void GetPackageCount( [MarshalAs(UnmanagedType.U4)] out int pcPackages ); [PreserveSig] int GetVariableNumeric( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, out long pllValue ); [PreserveSig] int GetVariableString( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, IntPtr wzValue, [MarshalAs(UnmanagedType.U4)] ref int pcchValue ); [PreserveSig] int GetVariableVersion( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, [MarshalAs(UnmanagedType.U8)] out long pqwValue ); [PreserveSig] int FormatString( [MarshalAs(UnmanagedType.LPWStr)] string wzIn, [MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut, [MarshalAs(UnmanagedType.U4)] ref int pcchOut ); [PreserveSig] int EscapeString( [MarshalAs(UnmanagedType.LPWStr)] string wzIn, [MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut, [MarshalAs(UnmanagedType.U4)] ref int pcchOut ); void EvaluateCondition( [MarshalAs(UnmanagedType.LPWStr)] string wzCondition, [MarshalAs(UnmanagedType.Bool)] out bool pf ); void Log( [MarshalAs(UnmanagedType.U4)] LogLevel level, [MarshalAs(UnmanagedType.LPWStr)] string wzMessage ); void SendEmbeddedError( [MarshalAs(UnmanagedType.U4)] int dwErrorCode, [MarshalAs(UnmanagedType.LPWStr)] string wzMessage, [MarshalAs(UnmanagedType.U4)] int dwUIHint, [MarshalAs(UnmanagedType.I4)] out int pnResult ); void SendEmbeddedProgress( [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage, [MarshalAs(UnmanagedType.U4)] int dwOverallProgressPercentage, [MarshalAs(UnmanagedType.I4)] out int pnResult ); void SetUpdate( [MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource, [MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource, [MarshalAs(UnmanagedType.U8)] long qwValue, [MarshalAs(UnmanagedType.U4)] UpdateHashType hashType, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=4)] byte[] rgbHash, [MarshalAs(UnmanagedType.U4)] int cbHash ); void SetLocalSource( [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId, [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId, [MarshalAs(UnmanagedType.LPWStr)] string wzPath ); 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 ); void SetVariableNumeric( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, long llValue ); void SetVariableString( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, IntPtr wzValue ); void SetVariableVersion( [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, [MarshalAs(UnmanagedType.U8)] long qwValue ); void CloseSplashScreen(); void Detect( IntPtr hwndParent ); void Plan( [MarshalAs(UnmanagedType.U4)] LaunchAction action ); [PreserveSig] int Elevate( IntPtr hwndParent ); void Apply( IntPtr hwndParent ); void Quit( [MarshalAs(UnmanagedType.U4)] int dwExitCode ); void LaunchApprovedExe( IntPtr hwndParent, [MarshalAs(UnmanagedType.LPWStr)] string wzApprovedExeForElevationId, [MarshalAs(UnmanagedType.LPWStr)] string wzArguments, [MarshalAs(UnmanagedType.U4)] int dwWaitForInputIdleTimeout ); } /// /// The installation action for the bundle or current package. /// public enum ActionState { None, Uninstall, Install, AdminInstall, Modify, Repair, MinorUpgrade, MajorUpgrade, Patch, } /// /// The action for the BA to perform. /// public enum LaunchAction { Unknown, Help, Layout, Uninstall, Cache, Install, Modify, Repair, UpdateReplace, 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-1 based hash provided. /// Sha1, } /// /// Describes the state of an installation package. /// public enum PackageState { Unknown, Obsolete, Absent, Cached, Present, Superseded, } /// /// Indicates the state desired for an installation package. /// public enum RequestState { None, ForceAbsent, Absent, Cache, Present, Repair, } /// /// Indicates the state of a feature. /// public enum FeatureState { Unknown, Absent, Advertised, Local, Source, } /// /// Indicates the action for a feature. /// public enum FeatureAction { None, AddLocal, AddSource, AddDefault, Reinstall, Advertise, Remove, } }