From f3c383c2412e376353d64a8b744184fa1cee1c6e Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sat, 21 Dec 2019 11:23:03 +1100 Subject: Move IBootstrapperApplication and IBootstrapperEngine into balutil. --- src/WixToolset.Mba.Core/IBootstrapperEngine.cs | 279 +++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 src/WixToolset.Mba.Core/IBootstrapperEngine.cs (limited to 'src/WixToolset.Mba.Core/IBootstrapperEngine.cs') diff --git a/src/WixToolset.Mba.Core/IBootstrapperEngine.cs b/src/WixToolset.Mba.Core/IBootstrapperEngine.cs new file mode 100644 index 00000000..d070998e --- /dev/null +++ b/src/WixToolset.Mba.Core/IBootstrapperEngine.cs @@ -0,0 +1,279 @@ +// 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, + } +} -- cgit v1.2.3-55-g6feb