aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-12-19 19:15:11 -0600
committerSean Hall <r.sean.hall@gmail.com>2020-12-19 21:48:05 -0600
commit80df808461fca91b53e232b5b504a5c868029697 (patch)
tree0dc9efa22de03db0022f2a0e48b3fcd5874a10d2
parentca5d60d267051b4b75e22763ad8eda06f0501451 (diff)
downloadwix-80df808461fca91b53e232b5b504a5c868029697.tar.gz
wix-80df808461fca91b53e232b5b504a5c868029697.tar.bz2
wix-80df808461fca91b53e232b5b504a5c868029697.zip
Enable XML doc.
-rw-r--r--src/CSharp.Build.props2
-rw-r--r--src/Directory.Build.targets8
-rw-r--r--src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs27
-rw-r--r--src/WixToolset.Mba.Core/BootstrapperApplication.cs424
-rw-r--r--src/WixToolset.Mba.Core/BootstrapperApplicationData.cs38
-rw-r--r--src/WixToolset.Mba.Core/BootstrapperCommand.cs30
-rw-r--r--src/WixToolset.Mba.Core/BundleInfo.cs21
-rw-r--r--src/WixToolset.Mba.Core/Engine.cs43
-rw-r--r--src/WixToolset.Mba.Core/EventArgs.cs54
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperApplication.cs808
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperApplicationData.cs10
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs31
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperCommand.cs3
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperEngine.cs303
-rw-r--r--src/WixToolset.Mba.Core/IBundleInfo.cs23
-rw-r--r--src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs278
-rw-r--r--src/WixToolset.Mba.Core/IEngine.cs3
-rw-r--r--src/WixToolset.Mba.Core/IPackageInfo.cs66
-rw-r--r--src/WixToolset.Mba.Core/PackageInfo.cs107
-rw-r--r--src/WixToolset.Mba.Core/VerUtil.cs19
-rw-r--r--src/WixToolset.Mba.Core/VerUtilVersion.cs36
-rw-r--r--src/WixToolset.Mba.Core/VerUtilVersionReleaseLabel.cs14
-rw-r--r--src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj6
-rw-r--r--src/WixToolset.Mba.Core/WixToolset.Mba.Core.nuspec2
-rw-r--r--src/test/WixToolsetTest.Mba.Core/BaseBootstrapperApplicationFactoryFixture.cs19
25 files changed, 2045 insertions, 330 deletions
diff --git a/src/CSharp.Build.props b/src/CSharp.Build.props
index b12f4c6e..81d24ad1 100644
--- a/src/CSharp.Build.props
+++ b/src/CSharp.Build.props
@@ -5,7 +5,9 @@
5--> 5-->
6<Project> 6<Project>
7 <PropertyGroup> 7 <PropertyGroup>
8 <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
8 <SignAssembly>true</SignAssembly> 9 <SignAssembly>true</SignAssembly>
9 <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile> 10 <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile>
11 <NBGV_EmitThisAssemblyClass>false</NBGV_EmitThisAssemblyClass>
10 </PropertyGroup> 12 </PropertyGroup>
11</Project> 13</Project>
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index dac7452a..cb988931 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -10,6 +10,11 @@
10--> 10-->
11<Project> 11<Project>
12 <PropertyGroup> 12 <PropertyGroup>
13 <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation>
14 <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
15 </PropertyGroup>
16
17 <PropertyGroup>
13 <ReplacePackageReferences>true</ReplacePackageReferences> 18 <ReplacePackageReferences>true</ReplacePackageReferences>
14 <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath> 19 <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath>
15 <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath> 20 <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath>
@@ -45,4 +50,7 @@
45 50
46 </When> 51 </When>
47 </Choose> 52 </Choose>
53
54 <Import Project="Wix.Build.targets" Condition=" Exists('Wix.Build.targets') And '$(MSBuildProjectExtension)'=='.wixproj' " />
55 <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " />
48</Project> 56</Project>
diff --git a/src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs b/src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs
index 264733ac..ad8a5dc0 100644
--- a/src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs
+++ b/src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs
@@ -5,8 +5,16 @@ namespace WixToolset.Mba.Core
5 using System; 5 using System;
6 using System.Runtime.InteropServices; 6 using System.Runtime.InteropServices;
7 7
8 /// <summary>
9 /// Default implementation of <see cref="IBootstrapperApplicationFactory"/>.
10 /// </summary>
8 public abstract class BaseBootstrapperApplicationFactory : IBootstrapperApplicationFactory 11 public abstract class BaseBootstrapperApplicationFactory : IBootstrapperApplicationFactory
9 { 12 {
13 /// <summary>
14 /// Default implementation of <see cref="IBootstrapperApplicationFactory.Create(IntPtr, IntPtr)"/>
15 /// </summary>
16 /// <param name="pArgs"></param>
17 /// <param name="pResults"></param>
10 public void Create(IntPtr pArgs, IntPtr pResults) 18 public void Create(IntPtr pArgs, IntPtr pResults)
11 { 19 {
12 InitializeFromCreateArgs(pArgs, out var engine, out var bootstrapperCommand); 20 InitializeFromCreateArgs(pArgs, out var engine, out var bootstrapperCommand);
@@ -15,8 +23,21 @@ namespace WixToolset.Mba.Core
15 StoreBAInCreateResults(pResults, ba); 23 StoreBAInCreateResults(pResults, ba);
16 } 24 }
17 25
26 /// <summary>
27 /// Called by <see cref="BaseBootstrapperApplicationFactory.Create(IntPtr, IntPtr)"/> to get the <see cref="IBootstrapperApplication"/>.
28 /// </summary>
29 /// <param name="engine">The bundle engine.</param>
30 /// <param name="bootstrapperCommand">Command information passed from the engine for the BA to perform.</param>
31 /// <returns>The <see cref="IBootstrapperApplication"/> for the bundle.</returns>
18 protected abstract IBootstrapperApplication Create(IEngine engine, IBootstrapperCommand bootstrapperCommand); 32 protected abstract IBootstrapperApplication Create(IEngine engine, IBootstrapperCommand bootstrapperCommand);
19 33
34 /// <summary>
35 /// Initializes the native part of <see cref="WixToolset.Mba.Core"/>.
36 /// Most users should inherit from <see cref="BaseBootstrapperApplicationFactory"/> instead of calling this method.
37 /// </summary>
38 /// <param name="pArgs">The args struct given by the engine when initially creating the BA.</param>
39 /// <param name="engine">The bundle engine interface.</param>
40 /// <param name="bootstrapperCommand">The context of the current run of the bundle.</param>
20 public static void InitializeFromCreateArgs(IntPtr pArgs, out IEngine engine, out IBootstrapperCommand bootstrapperCommand) 41 public static void InitializeFromCreateArgs(IntPtr pArgs, out IEngine engine, out IBootstrapperCommand bootstrapperCommand)
21 { 42 {
22 Command pCommand = new Command 43 Command pCommand = new Command
@@ -28,6 +49,12 @@ namespace WixToolset.Mba.Core
28 bootstrapperCommand = pCommand.GetBootstrapperCommand(); 49 bootstrapperCommand = pCommand.GetBootstrapperCommand();
29 } 50 }
30 51
52 /// <summary>
53 /// Registers the BA with the engine using the default mapping between the message based interface and the COM interface.
54 /// Most users should inherit from <see cref="BaseBootstrapperApplicationFactory"/> instead of calling this method.
55 /// </summary>
56 /// <param name="pResults">The results struct given by the engine when initially creating the BA</param>
57 /// <param name="ba">The <see cref="IBootstrapperApplication"/>.</param>
31 public static void StoreBAInCreateResults(IntPtr pResults, IBootstrapperApplication ba) 58 public static void StoreBAInCreateResults(IntPtr pResults, IBootstrapperApplication ba)
32 { 59 {
33 BalUtil.StoreBAInCreateResults(pResults, ba); 60 BalUtil.StoreBAInCreateResults(pResults, ba);
diff --git a/src/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/WixToolset.Mba.Core/BootstrapperApplication.cs
index 2d527427..759e76b1 100644
--- a/src/WixToolset.Mba.Core/BootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/BootstrapperApplication.cs
@@ -34,347 +34,202 @@ namespace WixToolset.Mba.Core
34 this.asyncExecution = true; 34 this.asyncExecution = true;
35 } 35 }
36 36
37 /// <summary> 37 /// <inheritdoc/>
38 /// Fired when the engine is starting up the bootstrapper application.
39 /// </summary>
40 public event EventHandler<StartupEventArgs> Startup; 38 public event EventHandler<StartupEventArgs> Startup;
41 39
42 /// <summary> 40 /// <inheritdoc/>
43 /// Fired when the engine is shutting down the bootstrapper application.
44 /// </summary>
45 public event EventHandler<ShutdownEventArgs> Shutdown; 41 public event EventHandler<ShutdownEventArgs> Shutdown;
46 42
47 /// <summary> 43 /// <inheritdoc/>
48 /// Fired when the system is shutting down or user is logging off.
49 /// </summary>
50 /// <remarks>
51 /// <para>To prevent shutting down or logging off, set <see cref="CancellableHResultEventArgs.Cancel"/> to
52 /// true; otherwise, set it to false.</para>
53 /// <para>By default setup will prevent shutting down or logging off between
54 /// <see cref="BootstrapperApplication.ApplyBegin"/> and <see cref="BootstrapperApplication.ApplyComplete"/>.
55 /// Derivatives can change this behavior by overriding <see cref="BootstrapperApplication.OnSystemShutdown"/>
56 /// or handling <see cref="BootstrapperApplication.SystemShutdown"/>.</para>
57 /// <para>If <see cref="SystemShutdownEventArgs.Reasons"/> contains <see cref="EndSessionReasons.Critical"/>
58 /// the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other
59 /// critical operations before being closed by the operating system.</para>
60 /// <para>This event may be fired on a different thread.</para>
61 /// </remarks>
62 public event EventHandler<SystemShutdownEventArgs> SystemShutdown; 44 public event EventHandler<SystemShutdownEventArgs> SystemShutdown;
63 45
64 /// <summary> 46 /// <inheritdoc/>
65 /// Fired when the overall detection phase has begun.
66 /// </summary>
67 public event EventHandler<DetectBeginEventArgs> DetectBegin; 47 public event EventHandler<DetectBeginEventArgs> DetectBegin;
68 48
69 /// <summary> 49 /// <inheritdoc/>
70 /// Fired when a forward compatible bundle is detected.
71 /// </summary>
72 public event EventHandler<DetectForwardCompatibleBundleEventArgs> DetectForwardCompatibleBundle; 50 public event EventHandler<DetectForwardCompatibleBundleEventArgs> DetectForwardCompatibleBundle;
73 51
74 /// <summary> 52 /// <inheritdoc/>
75 /// Fired when the update detection phase has begun.
76 /// </summary>
77 public event EventHandler<DetectUpdateBeginEventArgs> DetectUpdateBegin; 53 public event EventHandler<DetectUpdateBeginEventArgs> DetectUpdateBegin;
78 54
79 /// <summary> 55 /// <inheritdoc/>
80 /// Fired when the update detection has found a potential update candidate.
81 /// </summary>
82 public event EventHandler<DetectUpdateEventArgs> DetectUpdate; 56 public event EventHandler<DetectUpdateEventArgs> DetectUpdate;
83 57
84 /// <summary> 58 /// <inheritdoc/>
85 /// Fired when the update detection phase has completed.
86 /// </summary>
87 public event EventHandler<DetectUpdateCompleteEventArgs> DetectUpdateComplete; 59 public event EventHandler<DetectUpdateCompleteEventArgs> DetectUpdateComplete;
88 60
89 /// <summary> 61 /// <inheritdoc/>
90 /// Fired when a related bundle has been detected for a bundle.
91 /// </summary>
92 public event EventHandler<DetectRelatedBundleEventArgs> DetectRelatedBundle; 62 public event EventHandler<DetectRelatedBundleEventArgs> DetectRelatedBundle;
93 63
94 /// <summary> 64 /// <inheritdoc/>
95 /// Fired when the detection for a specific package has begun.
96 /// </summary>
97 public event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin; 65 public event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin;
98 66
99 /// <summary> 67 /// <inheritdoc/>
100 /// Fired when a package was not detected but a package using the same provider key was.
101 /// </summary>
102 public event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage; 68 public event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage;
103 69
104 /// <summary> 70 /// <inheritdoc/>
105 /// Fired when a related MSI package has been detected for a package.
106 /// </summary>
107 public event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage; 71 public event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage;
108 72
109 /// <summary> 73 /// <inheritdoc/>
110 /// Fired when an MSP package detects a target MSI has been detected.
111 /// </summary>
112 public event EventHandler<DetectTargetMsiPackageEventArgs> DetectTargetMsiPackage; 74 public event EventHandler<DetectTargetMsiPackageEventArgs> DetectTargetMsiPackage;
113 75
114 /// <summary> 76 /// <inheritdoc/>
115 /// Fired when a feature in an MSI package has been detected.
116 /// </summary>
117 public event EventHandler<DetectMsiFeatureEventArgs> DetectMsiFeature; 77 public event EventHandler<DetectMsiFeatureEventArgs> DetectMsiFeature;
118 78
119 /// <summary> 79 /// <inheritdoc/>
120 /// Fired when the detection for a specific package has completed.
121 /// </summary>
122 public event EventHandler<DetectPackageCompleteEventArgs> DetectPackageComplete; 80 public event EventHandler<DetectPackageCompleteEventArgs> DetectPackageComplete;
123 81
124 /// <summary> 82 /// <inheritdoc/>
125 /// Fired when the detection phase has completed.
126 /// </summary>
127 public event EventHandler<DetectCompleteEventArgs> DetectComplete; 83 public event EventHandler<DetectCompleteEventArgs> DetectComplete;
128 84
129 /// <summary> 85 /// <inheritdoc/>
130 /// Fired when the engine has begun planning the installation.
131 /// </summary>
132 public event EventHandler<PlanBeginEventArgs> PlanBegin; 86 public event EventHandler<PlanBeginEventArgs> PlanBegin;
133 87
134 /// <summary> 88 /// <inheritdoc/>
135 /// Fired when the engine has begun planning for a related bundle.
136 /// </summary>
137 public event EventHandler<PlanRelatedBundleEventArgs> PlanRelatedBundle; 89 public event EventHandler<PlanRelatedBundleEventArgs> PlanRelatedBundle;
138 90
139 /// <summary> 91 /// <inheritdoc/>
140 /// Fired when the engine has begun planning the installation of a specific package.
141 /// </summary>
142 public event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin; 92 public event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin;
143 93
144 /// <summary> 94 /// <inheritdoc/>
145 /// Fired when the engine plans a new, compatible package using the same provider key.
146 /// </summary>
147 public event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin; 95 public event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin;
148 96
149 /// <summary> 97 /// <inheritdoc/>
150 /// Fired when the engine has completed planning the installation of a specific package.
151 /// </summary>
152 public event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete; 98 public event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete;
153 99
154 /// <summary> 100 /// <inheritdoc/>
155 /// Fired when the engine is about to plan the target MSI of a MSP package.
156 /// </summary>
157 public event EventHandler<PlanTargetMsiPackageEventArgs> PlanTargetMsiPackage; 101 public event EventHandler<PlanTargetMsiPackageEventArgs> PlanTargetMsiPackage;
158 102
159 /// <summary> 103 /// <inheritdoc/>
160 /// Fired when the engine is about to plan a feature in an MSI package.
161 /// </summary>
162 public event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature; 104 public event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature;
163 105
164 /// <summary> 106 /// <inheritdoc/>
165 /// Fired when the engine is planning an MSI or MSP package.
166 /// </summary>
167 public event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage; 107 public event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage;
168 108
169 /// <summary> 109 /// <inheritdoc/>
170 /// Fired when the engine has completed planning the installation of a specific package.
171 /// </summary>
172 public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; 110 public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete;
173 111
174 /// <summary> 112 /// <inheritdoc/>
175 /// Fired when the engine has completed planning the installation.
176 /// </summary>
177 public event EventHandler<PlanCompleteEventArgs> PlanComplete; 113 public event EventHandler<PlanCompleteEventArgs> PlanComplete;
178 114
179 /// <summary> 115 /// <inheritdoc/>
180 /// Fired when the engine has begun installing the bundle.
181 /// </summary>
182 public event EventHandler<ApplyBeginEventArgs> ApplyBegin; 116 public event EventHandler<ApplyBeginEventArgs> ApplyBegin;
183 117
184 /// <summary> 118 /// <inheritdoc/>
185 /// Fired when the engine is about to start the elevated process.
186 /// </summary>
187 public event EventHandler<ElevateBeginEventArgs> ElevateBegin; 119 public event EventHandler<ElevateBeginEventArgs> ElevateBegin;
188 120
189 /// <summary> 121 /// <inheritdoc/>
190 /// Fired when the engine has completed starting the elevated process.
191 /// </summary>
192 public event EventHandler<ElevateCompleteEventArgs> ElevateComplete; 122 public event EventHandler<ElevateCompleteEventArgs> ElevateComplete;
193 123
194 /// <summary> 124 /// <inheritdoc/>
195 /// Fired when the engine has changed progress for the bundle installation.
196 /// </summary>
197 public event EventHandler<ProgressEventArgs> Progress; 125 public event EventHandler<ProgressEventArgs> Progress;
198 126
199 /// <summary> 127 /// <inheritdoc/>
200 /// Fired when the engine has encountered an error.
201 /// </summary>
202 public event EventHandler<ErrorEventArgs> Error; 128 public event EventHandler<ErrorEventArgs> Error;
203 129
204 /// <summary> 130 /// <inheritdoc/>
205 /// Fired when the engine has begun registering the location and visibility of the bundle.
206 /// </summary>
207 public event EventHandler<RegisterBeginEventArgs> RegisterBegin; 131 public event EventHandler<RegisterBeginEventArgs> RegisterBegin;
208 132
209 /// <summary> 133 /// <inheritdoc/>
210 /// Fired when the engine has completed registering the location and visibility of the bundle.
211 /// </summary>
212 public event EventHandler<RegisterCompleteEventArgs> RegisterComplete; 134 public event EventHandler<RegisterCompleteEventArgs> RegisterComplete;
213 135
214 /// <summary> 136 /// <inheritdoc/>
215 /// Fired when the engine has begun removing the registration for the location and visibility of the bundle.
216 /// </summary>
217 public event EventHandler<UnregisterBeginEventArgs> UnregisterBegin; 137 public event EventHandler<UnregisterBeginEventArgs> UnregisterBegin;
218 138
219 /// <summary> 139 /// <inheritdoc/>
220 /// Fired when the engine has completed removing the registration for the location and visibility of the bundle.
221 /// </summary>
222 public event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete; 140 public event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete;
223 141
224 /// <summary> 142 /// <inheritdoc/>
225 /// Fired when the engine has begun caching the installation sources.
226 /// </summary>
227 public event EventHandler<CacheBeginEventArgs> CacheBegin; 143 public event EventHandler<CacheBeginEventArgs> CacheBegin;
228 144
229 /// <summary> 145 /// <inheritdoc/>
230 /// Fired when the engine has begun caching a specific package.
231 /// </summary>
232 public event EventHandler<CachePackageBeginEventArgs> CachePackageBegin; 146 public event EventHandler<CachePackageBeginEventArgs> CachePackageBegin;
233 147
234 /// <summary> 148 /// <inheritdoc/>
235 /// Fired when the engine has begun acquiring the installation sources.
236 /// </summary>
237 public event EventHandler<CacheAcquireBeginEventArgs> CacheAcquireBegin; 149 public event EventHandler<CacheAcquireBeginEventArgs> CacheAcquireBegin;
238 150
239 /// <summary> 151 /// <inheritdoc/>
240 /// Fired when the engine has progress acquiring the installation sources.
241 /// </summary>
242 public event EventHandler<CacheAcquireProgressEventArgs> CacheAcquireProgress; 152 public event EventHandler<CacheAcquireProgressEventArgs> CacheAcquireProgress;
243 153
244 /// <summary> 154 /// <inheritdoc/>
245 /// Fired by the engine to allow the BA to change the source
246 /// using <see cref="M:Engine.SetLocalSource"/> or <see cref="M:Engine.SetDownloadSource"/>.
247 /// </summary>
248 public event EventHandler<ResolveSourceEventArgs> ResolveSource; 155 public event EventHandler<ResolveSourceEventArgs> ResolveSource;
249 156
250 /// <summary> 157 /// <inheritdoc/>
251 /// Fired when the engine has completed the acquisition of the installation sources.
252 /// </summary>
253 public event EventHandler<CacheAcquireCompleteEventArgs> CacheAcquireComplete; 158 public event EventHandler<CacheAcquireCompleteEventArgs> CacheAcquireComplete;
254 159
255 /// <summary> 160 /// <inheritdoc/>
256 /// Fired when the engine begins the verification of the acquired installation sources.
257 /// </summary>
258 public event EventHandler<CacheVerifyBeginEventArgs> CacheVerifyBegin; 161 public event EventHandler<CacheVerifyBeginEventArgs> CacheVerifyBegin;
259 162
260 /// <summary> 163 /// <inheritdoc/>
261 /// Fired when the engine complete the verification of the acquired installation sources.
262 /// </summary>
263 public event EventHandler<CacheVerifyCompleteEventArgs> CacheVerifyComplete; 164 public event EventHandler<CacheVerifyCompleteEventArgs> CacheVerifyComplete;
264 165
265 /// <summary> 166 /// <inheritdoc/>
266 /// Fired when the engine has completed caching a specific package.
267 /// </summary>
268 public event EventHandler<CachePackageCompleteEventArgs> CachePackageComplete; 167 public event EventHandler<CachePackageCompleteEventArgs> CachePackageComplete;
269 168
270 /// <summary> 169 /// <inheritdoc/>
271 /// Fired after the engine has cached the installation sources.
272 /// </summary>
273 public event EventHandler<CacheCompleteEventArgs> CacheComplete; 170 public event EventHandler<CacheCompleteEventArgs> CacheComplete;
274 171
275 /// <summary> 172 /// <inheritdoc/>
276 /// Fired when the engine has begun installing packages.
277 /// </summary>
278 public event EventHandler<ExecuteBeginEventArgs> ExecuteBegin; 173 public event EventHandler<ExecuteBeginEventArgs> ExecuteBegin;
279 174
280 /// <summary> 175 /// <inheritdoc/>
281 /// Fired when the engine has begun installing a specific package.
282 /// </summary>
283 public event EventHandler<ExecutePackageBeginEventArgs> ExecutePackageBegin; 176 public event EventHandler<ExecutePackageBeginEventArgs> ExecutePackageBegin;
284 177
285 /// <summary> 178 /// <inheritdoc/>
286 /// Fired when the engine executes one or more patches targeting a product.
287 /// </summary>
288 public event EventHandler<ExecutePatchTargetEventArgs> ExecutePatchTarget; 179 public event EventHandler<ExecutePatchTargetEventArgs> ExecutePatchTarget;
289 180
290 /// <summary> 181 /// <inheritdoc/>
291 /// Fired when Windows Installer sends an installation message.
292 /// </summary>
293 public event EventHandler<ExecuteMsiMessageEventArgs> ExecuteMsiMessage; 182 public event EventHandler<ExecuteMsiMessageEventArgs> ExecuteMsiMessage;
294 183
295 /// <summary> 184 /// <inheritdoc/>
296 /// Fired when Windows Installer sends a files in use installation message.
297 /// </summary>
298 public event EventHandler<ExecuteFilesInUseEventArgs> ExecuteFilesInUse; 185 public event EventHandler<ExecuteFilesInUseEventArgs> ExecuteFilesInUse;
299 186
300 /// <summary> 187 /// <inheritdoc/>
301 /// Fired when the engine has completed installing a specific package.
302 /// </summary>
303 public event EventHandler<ExecutePackageCompleteEventArgs> ExecutePackageComplete; 188 public event EventHandler<ExecutePackageCompleteEventArgs> ExecutePackageComplete;
304 189
305 /// <summary> 190 /// <inheritdoc/>
306 /// Fired when the engine has completed installing packages.
307 /// </summary>
308 public event EventHandler<ExecuteCompleteEventArgs> ExecuteComplete; 191 public event EventHandler<ExecuteCompleteEventArgs> ExecuteComplete;
309 192
310 /// <summary> 193 /// <inheritdoc/>
311 /// Fired when the engine has completed installing the bundle.
312 /// </summary>
313 public event EventHandler<ApplyCompleteEventArgs> ApplyComplete; 194 public event EventHandler<ApplyCompleteEventArgs> ApplyComplete;
314 195
315 /// <summary> 196 /// <inheritdoc/>
316 /// Fired by the engine while executing on payload.
317 /// </summary>
318 public event EventHandler<ExecuteProgressEventArgs> ExecuteProgress; 197 public event EventHandler<ExecuteProgressEventArgs> ExecuteProgress;
319 198
320 /// <summary> 199 /// <inheritdoc/>
321 /// Fired when the engine is about to launch the preapproved executable.
322 /// </summary>
323 public event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin; 200 public event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin;
324 201
325 /// <summary> 202 /// <inheritdoc/>
326 /// Fired when the engine has completed launching the preapproved executable.
327 /// </summary>
328 public event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete; 203 public event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete;
329 204
330 /// <summary> 205 /// <inheritdoc/>
331 /// Fired when the engine is about to begin an MSI transaction.
332 /// </summary>
333 public event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin; 206 public event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin;
334 207
335 /// <summary> 208 /// <inheritdoc/>
336 /// Fired when the engine has completed beginning an MSI transaction.
337 /// </summary>
338 public event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete; 209 public event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete;
339 210
340 /// <summary> 211 /// <inheritdoc/>
341 /// Fired when the engine is about to commit an MSI transaction.
342 /// </summary>
343 public event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin; 212 public event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin;
344 213
345 /// <summary> 214 /// <inheritdoc/>
346 /// Fired when the engine has completed comitting an MSI transaction.
347 /// </summary>
348 public event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete; 215 public event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete;
349 216
350 /// <summary> 217 /// <inheritdoc/>
351 /// Fired when the engine is about to rollback an MSI transaction.
352 /// </summary>
353 public event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin; 218 public event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin;
354 219
355 /// <summary> 220 /// <inheritdoc/>
356 /// Fired when the engine has completed rolling back an MSI transaction.
357 /// </summary>
358 public event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; 221 public event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete;
359 222
360 /// <summary> 223 /// <inheritdoc/>
361 /// Fired when the engine is about to pause Windows automatic updates.
362 /// </summary>
363 public event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin; 224 public event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin;
364 225
365 /// <summary> 226 /// <inheritdoc/>
366 /// Fired when the engine has completed pausing Windows automatic updates.
367 /// </summary>
368 public event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete; 227 public event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete;
369 228
370 /// <summary> 229 /// <inheritdoc/>
371 /// Fired when the engine is about to take a system restore point.
372 /// </summary>
373 public event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin; 230 public event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin;
374 231
375 /// <summary> 232 /// <inheritdoc/>
376 /// Fired when the engine has completed taking a system restore point.
377 /// </summary>
378 public event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete; 233 public event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete;
379 234
380 /// <summary> 235 /// <summary>
@@ -383,7 +238,7 @@ namespace WixToolset.Mba.Core
383 protected abstract void Run(); 238 protected abstract void Run();
384 239
385 /// <summary> 240 /// <summary>
386 /// Called by the engine on startup of the bootstrapper application. 241 /// Called by the engine, raises the <see cref="Startup"/> event.
387 /// </summary> 242 /// </summary>
388 /// <param name="args">Additional arguments for this event.</param> 243 /// <param name="args">Additional arguments for this event.</param>
389 protected virtual void OnStartup(StartupEventArgs args) 244 protected virtual void OnStartup(StartupEventArgs args)
@@ -410,7 +265,7 @@ namespace WixToolset.Mba.Core
410 } 265 }
411 266
412 /// <summary> 267 /// <summary>
413 /// Called by the engine to uninitialize the BA. 268 /// Called by the engine, raises the <see cref="Shutdown"/> event.
414 /// </summary> 269 /// </summary>
415 /// <param name="args">Additional arguments for this event.</param> 270 /// <param name="args">Additional arguments for this event.</param>
416 protected virtual void OnShutdown(ShutdownEventArgs args) 271 protected virtual void OnShutdown(ShutdownEventArgs args)
@@ -423,21 +278,9 @@ namespace WixToolset.Mba.Core
423 } 278 }
424 279
425 /// <summary> 280 /// <summary>
426 /// Called when the system is shutting down or the user is logging off. 281 /// Called by the engine, raises the <see cref="SystemShutdown"/> event.
427 /// </summary> 282 /// </summary>
428 /// <param name="args">Additional arguments for this event.</param> 283 /// <param name="args">Additional arguments for this event.</param>
429 /// <remarks>
430 /// <para>To prevent shutting down or logging off, set <see cref="CancellableHResultEventArgs.Cancel"/> to
431 /// true; otherwise, set it to false.</para>
432 /// <para>By default setup will prevent shutting down or logging off between
433 /// <see cref="BootstrapperApplication.ApplyBegin"/> and <see cref="BootstrapperApplication.ApplyComplete"/>.
434 /// Derivatives can change this behavior by overriding <see cref="BootstrapperApplication.OnSystemShutdown"/>
435 /// or handling <see cref="BootstrapperApplication.SystemShutdown"/>.</para>
436 /// <para>If <see cref="SystemShutdownEventArgs.Reasons"/> contains <see cref="EndSessionReasons.Critical"/>
437 /// the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other
438 /// critical operations before being closed by the operating system.</para>
439 /// <para>This method may be called on a different thread.</para>
440 /// </remarks>
441 protected virtual void OnSystemShutdown(SystemShutdownEventArgs args) 284 protected virtual void OnSystemShutdown(SystemShutdownEventArgs args)
442 { 285 {
443 EventHandler<SystemShutdownEventArgs> handler = this.SystemShutdown; 286 EventHandler<SystemShutdownEventArgs> handler = this.SystemShutdown;
@@ -454,7 +297,7 @@ namespace WixToolset.Mba.Core
454 } 297 }
455 298
456 /// <summary> 299 /// <summary>
457 /// Called when the overall detection phase has begun. 300 /// Called by the engine, raises the <see cref="DetectBegin"/> event.
458 /// </summary> 301 /// </summary>
459 /// <param name="args">Additional arguments for this event.</param> 302 /// <param name="args">Additional arguments for this event.</param>
460 protected virtual void OnDetectBegin(DetectBeginEventArgs args) 303 protected virtual void OnDetectBegin(DetectBeginEventArgs args)
@@ -467,7 +310,7 @@ namespace WixToolset.Mba.Core
467 } 310 }
468 311
469 /// <summary> 312 /// <summary>
470 /// Called when the update detection phase has begun. 313 /// Called by the engine, raises the <see cref="DetectForwardCompatibleBundle"/> event.
471 /// </summary> 314 /// </summary>
472 /// <param name="args">Additional arguments for this event.</param> 315 /// <param name="args">Additional arguments for this event.</param>
473 protected virtual void OnDetectForwardCompatibleBundle(DetectForwardCompatibleBundleEventArgs args) 316 protected virtual void OnDetectForwardCompatibleBundle(DetectForwardCompatibleBundleEventArgs args)
@@ -480,7 +323,7 @@ namespace WixToolset.Mba.Core
480 } 323 }
481 324
482 /// <summary> 325 /// <summary>
483 /// Called when the update detection phase has begun. 326 /// Called by the engine, raises the <see cref="DetectUpdateBegin"/> event.
484 /// </summary> 327 /// </summary>
485 /// <param name="args">Additional arguments for this event.</param> 328 /// <param name="args">Additional arguments for this event.</param>
486 protected virtual void OnDetectUpdateBegin(DetectUpdateBeginEventArgs args) 329 protected virtual void OnDetectUpdateBegin(DetectUpdateBeginEventArgs args)
@@ -493,7 +336,7 @@ namespace WixToolset.Mba.Core
493 } 336 }
494 337
495 /// <summary> 338 /// <summary>
496 /// Fired when the update detection has found a potential update candidate. 339 /// Called by the engine, raises the <see cref="DetectUpdate"/> event.
497 /// </summary> 340 /// </summary>
498 /// <param name="args">Additional arguments for this event.</param> 341 /// <param name="args">Additional arguments for this event.</param>
499 protected virtual void OnDetectUpdate(DetectUpdateEventArgs args) 342 protected virtual void OnDetectUpdate(DetectUpdateEventArgs args)
@@ -506,7 +349,7 @@ namespace WixToolset.Mba.Core
506 } 349 }
507 350
508 /// <summary> 351 /// <summary>
509 /// Called when the update detection phase has completed. 352 /// Called by the engine, raises the <see cref="DetectUpdateComplete"/> event.
510 /// </summary> 353 /// </summary>
511 /// <param name="args">Additional arguments for this event.</param> 354 /// <param name="args">Additional arguments for this event.</param>
512 protected virtual void OnDetectUpdateComplete(DetectUpdateCompleteEventArgs args) 355 protected virtual void OnDetectUpdateComplete(DetectUpdateCompleteEventArgs args)
@@ -519,7 +362,7 @@ namespace WixToolset.Mba.Core
519 } 362 }
520 363
521 /// <summary> 364 /// <summary>
522 /// Called when a related bundle has been detected for a bundle. 365 /// Called by the engine, raises the <see cref="DetectRelatedBundle"/> event.
523 /// </summary> 366 /// </summary>
524 /// <param name="args">Additional arguments for this event.</param> 367 /// <param name="args">Additional arguments for this event.</param>
525 protected virtual void OnDetectRelatedBundle(DetectRelatedBundleEventArgs args) 368 protected virtual void OnDetectRelatedBundle(DetectRelatedBundleEventArgs args)
@@ -532,7 +375,7 @@ namespace WixToolset.Mba.Core
532 } 375 }
533 376
534 /// <summary> 377 /// <summary>
535 /// Called when the detection for a specific package has begun. 378 /// Called by the engine, raises the <see cref="DetectPackageBegin"/> event.
536 /// </summary> 379 /// </summary>
537 /// <param name="args">Additional arguments for this event.</param> 380 /// <param name="args">Additional arguments for this event.</param>
538 protected virtual void OnDetectPackageBegin(DetectPackageBeginEventArgs args) 381 protected virtual void OnDetectPackageBegin(DetectPackageBeginEventArgs args)
@@ -545,7 +388,7 @@ namespace WixToolset.Mba.Core
545 } 388 }
546 389
547 /// <summary> 390 /// <summary>
548 /// Called when a package was not detected but a package using the same provider key was. 391 /// Called by the engine, raises the <see cref="DetectCompatibleMsiPackage"/> event.
549 /// </summary> 392 /// </summary>
550 /// <param name="args">Additional arguments for this event.</param> 393 /// <param name="args">Additional arguments for this event.</param>
551 protected virtual void OnDetectCompatibleMsiPackage(DetectCompatibleMsiPackageEventArgs args) 394 protected virtual void OnDetectCompatibleMsiPackage(DetectCompatibleMsiPackageEventArgs args)
@@ -558,7 +401,7 @@ namespace WixToolset.Mba.Core
558 } 401 }
559 402
560 /// <summary> 403 /// <summary>
561 /// Called when a related MSI package has been detected for a package. 404 /// Called by the engine, raises the <see cref="DetectRelatedMsiPackage"/> event.
562 /// </summary> 405 /// </summary>
563 /// <param name="args">Additional arguments for this event.</param> 406 /// <param name="args">Additional arguments for this event.</param>
564 protected virtual void OnDetectRelatedMsiPackage(DetectRelatedMsiPackageEventArgs args) 407 protected virtual void OnDetectRelatedMsiPackage(DetectRelatedMsiPackageEventArgs args)
@@ -571,7 +414,7 @@ namespace WixToolset.Mba.Core
571 } 414 }
572 415
573 /// <summary> 416 /// <summary>
574 /// Called when an MSP package detects a target MSI has been detected. 417 /// Called by the engine, raises the <see cref="DetectTargetMsiPackage"/> event.
575 /// </summary> 418 /// </summary>
576 /// <param name="args">Additional arguments for this event.</param> 419 /// <param name="args">Additional arguments for this event.</param>
577 protected virtual void OnDetectTargetMsiPackage(DetectTargetMsiPackageEventArgs args) 420 protected virtual void OnDetectTargetMsiPackage(DetectTargetMsiPackageEventArgs args)
@@ -584,7 +427,7 @@ namespace WixToolset.Mba.Core
584 } 427 }
585 428
586 /// <summary> 429 /// <summary>
587 /// Called when an MSI feature has been detected for a package. 430 /// Called by the engine, raises the <see cref="DetectMsiFeature"/> event.
588 /// </summary> 431 /// </summary>
589 /// <param name="args">Additional arguments for this event.</param> 432 /// <param name="args">Additional arguments for this event.</param>
590 protected virtual void OnDetectMsiFeature(DetectMsiFeatureEventArgs args) 433 protected virtual void OnDetectMsiFeature(DetectMsiFeatureEventArgs args)
@@ -597,7 +440,7 @@ namespace WixToolset.Mba.Core
597 } 440 }
598 441
599 /// <summary> 442 /// <summary>
600 /// Called when the detection for a specific package has completed. 443 /// Called by the engine, raises the <see cref="DetectPackageComplete"/> event.
601 /// </summary> 444 /// </summary>
602 /// <param name="args">Additional arguments for this event.</param> 445 /// <param name="args">Additional arguments for this event.</param>
603 protected virtual void OnDetectPackageComplete(DetectPackageCompleteEventArgs args) 446 protected virtual void OnDetectPackageComplete(DetectPackageCompleteEventArgs args)
@@ -610,7 +453,7 @@ namespace WixToolset.Mba.Core
610 } 453 }
611 454
612 /// <summary> 455 /// <summary>
613 /// Called when the detection phase has completed. 456 /// Called by the engine, raises the <see cref="DetectComplete"/> event.
614 /// </summary> 457 /// </summary>
615 /// <param name="args">Additional arguments for this event.</param> 458 /// <param name="args">Additional arguments for this event.</param>
616 protected virtual void OnDetectComplete(DetectCompleteEventArgs args) 459 protected virtual void OnDetectComplete(DetectCompleteEventArgs args)
@@ -623,7 +466,7 @@ namespace WixToolset.Mba.Core
623 } 466 }
624 467
625 /// <summary> 468 /// <summary>
626 /// Called when the engine has begun planning the installation. 469 /// Called by the engine, raises the <see cref="PlanBegin"/> event.
627 /// </summary> 470 /// </summary>
628 /// <param name="args">Additional arguments for this event.</param> 471 /// <param name="args">Additional arguments for this event.</param>
629 protected virtual void OnPlanBegin(PlanBeginEventArgs args) 472 protected virtual void OnPlanBegin(PlanBeginEventArgs args)
@@ -636,7 +479,7 @@ namespace WixToolset.Mba.Core
636 } 479 }
637 480
638 /// <summary> 481 /// <summary>
639 /// Called when the engine has begun planning for a prior bundle. 482 /// Called by the engine, raises the <see cref="PlanRelatedBundle"/> event.
640 /// </summary> 483 /// </summary>
641 /// <param name="args">Additional arguments for this event.</param> 484 /// <param name="args">Additional arguments for this event.</param>
642 protected virtual void OnPlanRelatedBundle(PlanRelatedBundleEventArgs args) 485 protected virtual void OnPlanRelatedBundle(PlanRelatedBundleEventArgs args)
@@ -649,7 +492,7 @@ namespace WixToolset.Mba.Core
649 } 492 }
650 493
651 /// <summary> 494 /// <summary>
652 /// Called when the engine has begun planning the installation of a specific package. 495 /// Called by the engine, raises the <see cref="PlanPackageBegin"/> event.
653 /// </summary> 496 /// </summary>
654 /// <param name="args">Additional arguments for this event.</param> 497 /// <param name="args">Additional arguments for this event.</param>
655 protected virtual void OnPlanPackageBegin(PlanPackageBeginEventArgs args) 498 protected virtual void OnPlanPackageBegin(PlanPackageBeginEventArgs args)
@@ -662,7 +505,7 @@ namespace WixToolset.Mba.Core
662 } 505 }
663 506
664 /// <summary> 507 /// <summary>
665 /// Called when the engine plans a new, compatible package using the same provider key. 508 /// Called by the engine, raises the <see cref="PlanCompatibleMsiPackageBegin"/> event.
666 /// </summary> 509 /// </summary>
667 /// <param name="args">Additional arguments for this event.</param> 510 /// <param name="args">Additional arguments for this event.</param>
668 protected virtual void OnPlanCompatibleMsiPackageBegin(PlanCompatibleMsiPackageBeginEventArgs args) 511 protected virtual void OnPlanCompatibleMsiPackageBegin(PlanCompatibleMsiPackageBeginEventArgs args)
@@ -675,7 +518,7 @@ namespace WixToolset.Mba.Core
675 } 518 }
676 519
677 /// <summary> 520 /// <summary>
678 /// Called when the engine has completed planning the installation of a specific package. 521 /// Called by the engine, raises the <see cref="PlanCompatibleMsiPackageComplete"/> event.
679 /// </summary> 522 /// </summary>
680 /// <param name="args">Additional arguments for this event.</param> 523 /// <param name="args">Additional arguments for this event.</param>
681 protected virtual void OnPlanCompatibleMsiPackageComplete(PlanCompatibleMsiPackageCompleteEventArgs args) 524 protected virtual void OnPlanCompatibleMsiPackageComplete(PlanCompatibleMsiPackageCompleteEventArgs args)
@@ -688,7 +531,7 @@ namespace WixToolset.Mba.Core
688 } 531 }
689 532
690 /// <summary> 533 /// <summary>
691 /// Called when the engine is about to plan the target MSI of a MSP package. 534 /// Called by the engine, raises the <see cref="PlanTargetMsiPackage"/> event.
692 /// </summary> 535 /// </summary>
693 /// <param name="args">Additional arguments for this event.</param> 536 /// <param name="args">Additional arguments for this event.</param>
694 protected virtual void OnPlanTargetMsiPackage(PlanTargetMsiPackageEventArgs args) 537 protected virtual void OnPlanTargetMsiPackage(PlanTargetMsiPackageEventArgs args)
@@ -701,7 +544,7 @@ namespace WixToolset.Mba.Core
701 } 544 }
702 545
703 /// <summary> 546 /// <summary>
704 /// Called when the engine is about to plan an MSI feature of a specific package. 547 /// Called by the engine, raises the <see cref="PlanMsiFeature"/> event.
705 /// </summary> 548 /// </summary>
706 /// <param name="args">Additional arguments for this event.</param> 549 /// <param name="args">Additional arguments for this event.</param>
707 protected virtual void OnPlanMsiFeature(PlanMsiFeatureEventArgs args) 550 protected virtual void OnPlanMsiFeature(PlanMsiFeatureEventArgs args)
@@ -714,7 +557,7 @@ namespace WixToolset.Mba.Core
714 } 557 }
715 558
716 /// <summary> 559 /// <summary>
717 /// Called when the engine is planning an MSI or MSP package. 560 /// Called by the engine, raises the <see cref="PlanMsiPackage"/> event.
718 /// </summary> 561 /// </summary>
719 /// <param name="args">Additional arguments for this event.</param> 562 /// <param name="args">Additional arguments for this event.</param>
720 protected virtual void OnPlanMsiPackage(PlanMsiPackageEventArgs args) 563 protected virtual void OnPlanMsiPackage(PlanMsiPackageEventArgs args)
@@ -727,7 +570,7 @@ namespace WixToolset.Mba.Core
727 } 570 }
728 571
729 /// <summary> 572 /// <summary>
730 /// Called when then engine has completed planning the installation of a specific package. 573 /// Called by the engine, raises the <see cref="PlanPackageComplete"/> event.
731 /// </summary> 574 /// </summary>
732 /// <param name="args">Additional arguments for this event.</param> 575 /// <param name="args">Additional arguments for this event.</param>
733 protected virtual void OnPlanPackageComplete(PlanPackageCompleteEventArgs args) 576 protected virtual void OnPlanPackageComplete(PlanPackageCompleteEventArgs args)
@@ -740,7 +583,7 @@ namespace WixToolset.Mba.Core
740 } 583 }
741 584
742 /// <summary> 585 /// <summary>
743 /// Called when the engine has completed planning the installation. 586 /// Called by the engine, raises the <see cref="PlanComplete"/> event.
744 /// </summary> 587 /// </summary>
745 /// <param name="args">Additional arguments for this event.</param> 588 /// <param name="args">Additional arguments for this event.</param>
746 protected virtual void OnPlanComplete(PlanCompleteEventArgs args) 589 protected virtual void OnPlanComplete(PlanCompleteEventArgs args)
@@ -753,7 +596,7 @@ namespace WixToolset.Mba.Core
753 } 596 }
754 597
755 /// <summary> 598 /// <summary>
756 /// Called when the engine has begun installing the bundle. 599 /// Called by the engine, raises the <see cref="ApplyBegin"/> event.
757 /// </summary> 600 /// </summary>
758 /// <param name="args">Additional arguments for this event.</param> 601 /// <param name="args">Additional arguments for this event.</param>
759 protected virtual void OnApplyBegin(ApplyBeginEventArgs args) 602 protected virtual void OnApplyBegin(ApplyBeginEventArgs args)
@@ -766,7 +609,7 @@ namespace WixToolset.Mba.Core
766 } 609 }
767 610
768 /// <summary> 611 /// <summary>
769 /// Called when the engine is about to start the elevated process. 612 /// Called by the engine, raises the <see cref="ElevateBegin"/> event.
770 /// </summary> 613 /// </summary>
771 /// <param name="args">Additional arguments for this event.</param> 614 /// <param name="args">Additional arguments for this event.</param>
772 protected virtual void OnElevateBegin(ElevateBeginEventArgs args) 615 protected virtual void OnElevateBegin(ElevateBeginEventArgs args)
@@ -779,7 +622,7 @@ namespace WixToolset.Mba.Core
779 } 622 }
780 623
781 /// <summary> 624 /// <summary>
782 /// Called when the engine has completed starting the elevated process. 625 /// Called by the engine, raises the <see cref="ElevateComplete"/> event.
783 /// </summary> 626 /// </summary>
784 /// <param name="args">Additional arguments for this event.</param> 627 /// <param name="args">Additional arguments for this event.</param>
785 protected virtual void OnElevateComplete(ElevateCompleteEventArgs args) 628 protected virtual void OnElevateComplete(ElevateCompleteEventArgs args)
@@ -792,7 +635,7 @@ namespace WixToolset.Mba.Core
792 } 635 }
793 636
794 /// <summary> 637 /// <summary>
795 /// Called when the engine has changed progress for the bundle installation. 638 /// Called by the engine, raises the <see cref="Progress"/> event.
796 /// </summary> 639 /// </summary>
797 /// <param name="args">Additional arguments for this event.</param> 640 /// <param name="args">Additional arguments for this event.</param>
798 protected virtual void OnProgress(ProgressEventArgs args) 641 protected virtual void OnProgress(ProgressEventArgs args)
@@ -805,7 +648,7 @@ namespace WixToolset.Mba.Core
805 } 648 }
806 649
807 /// <summary> 650 /// <summary>
808 /// Called when the engine has encountered an error. 651 /// Called by the engine, raises the <see cref="Error"/> event.
809 /// </summary> 652 /// </summary>
810 /// <param name="args">Additional arguments for this event.</param> 653 /// <param name="args">Additional arguments for this event.</param>
811 protected virtual void OnError(ErrorEventArgs args) 654 protected virtual void OnError(ErrorEventArgs args)
@@ -818,7 +661,7 @@ namespace WixToolset.Mba.Core
818 } 661 }
819 662
820 /// <summary> 663 /// <summary>
821 /// Called when the engine has begun registering the location and visibility of the bundle. 664 /// Called by the engine, raises the <see cref="RegisterBegin"/> event.
822 /// </summary> 665 /// </summary>
823 /// <param name="args">Additional arguments for this event.</param> 666 /// <param name="args">Additional arguments for this event.</param>
824 protected virtual void OnRegisterBegin(RegisterBeginEventArgs args) 667 protected virtual void OnRegisterBegin(RegisterBeginEventArgs args)
@@ -831,7 +674,7 @@ namespace WixToolset.Mba.Core
831 } 674 }
832 675
833 /// <summary> 676 /// <summary>
834 /// Called when the engine has completed registering the location and visilibity of the bundle. 677 /// Called by the engine, raises the <see cref="RegisterComplete"/> event.
835 /// </summary> 678 /// </summary>
836 /// <param name="args">Additional arguments for this event.</param> 679 /// <param name="args">Additional arguments for this event.</param>
837 protected virtual void OnRegisterComplete(RegisterCompleteEventArgs args) 680 protected virtual void OnRegisterComplete(RegisterCompleteEventArgs args)
@@ -844,7 +687,7 @@ namespace WixToolset.Mba.Core
844 } 687 }
845 688
846 /// <summary> 689 /// <summary>
847 /// Called when the engine has begun removing the registration for the location and visibility of the bundle. 690 /// Called by the engine, raises the <see cref="UnregisterBegin"/> event.
848 /// </summary> 691 /// </summary>
849 /// <param name="args">Additional arguments for this event.</param> 692 /// <param name="args">Additional arguments for this event.</param>
850 protected virtual void OnUnregisterBegin(UnregisterBeginEventArgs args) 693 protected virtual void OnUnregisterBegin(UnregisterBeginEventArgs args)
@@ -857,7 +700,7 @@ namespace WixToolset.Mba.Core
857 } 700 }
858 701
859 /// <summary> 702 /// <summary>
860 /// Called when the engine has completed removing the registration for the location and visibility of the bundle. 703 /// Called by the engine, raises the <see cref="UnregisterComplete"/> event.
861 /// </summary> 704 /// </summary>
862 /// <param name="args">Additional arguments for this event.</param> 705 /// <param name="args">Additional arguments for this event.</param>
863 protected virtual void OnUnregisterComplete(UnregisterCompleteEventArgs args) 706 protected virtual void OnUnregisterComplete(UnregisterCompleteEventArgs args)
@@ -870,7 +713,7 @@ namespace WixToolset.Mba.Core
870 } 713 }
871 714
872 /// <summary> 715 /// <summary>
873 /// Called when the engine begins to cache the installation sources. 716 /// Called by the engine, raises the <see cref="CacheBegin"/> event.
874 /// </summary> 717 /// </summary>
875 /// <param name="args"></param> 718 /// <param name="args"></param>
876 protected virtual void OnCacheBegin(CacheBeginEventArgs args) 719 protected virtual void OnCacheBegin(CacheBeginEventArgs args)
@@ -883,7 +726,7 @@ namespace WixToolset.Mba.Core
883 } 726 }
884 727
885 /// <summary> 728 /// <summary>
886 /// Called by the engine when it begins to cache a specific package. 729 /// Called by the engine, raises the <see cref="CachePackageBegin"/> event.
887 /// </summary> 730 /// </summary>
888 /// <param name="args"></param> 731 /// <param name="args"></param>
889 protected virtual void OnCachePackageBegin(CachePackageBeginEventArgs args) 732 protected virtual void OnCachePackageBegin(CachePackageBeginEventArgs args)
@@ -896,7 +739,7 @@ namespace WixToolset.Mba.Core
896 } 739 }
897 740
898 /// <summary> 741 /// <summary>
899 /// Called when the engine begins to cache the container or payload. 742 /// Called by the engine, raises the <see cref="CacheAcquireBegin"/> event.
900 /// </summary> 743 /// </summary>
901 /// <param name="args"></param> 744 /// <param name="args"></param>
902 protected virtual void OnCacheAcquireBegin(CacheAcquireBeginEventArgs args) 745 protected virtual void OnCacheAcquireBegin(CacheAcquireBeginEventArgs args)
@@ -909,7 +752,7 @@ namespace WixToolset.Mba.Core
909 } 752 }
910 753
911 /// <summary> 754 /// <summary>
912 /// Called when the engine has progressed on caching the container or payload. 755 /// Called by the engine, raises the <see cref="CacheAcquireProgress"/> event.
913 /// </summary> 756 /// </summary>
914 /// <param name="args"></param> 757 /// <param name="args"></param>
915 protected virtual void OnCacheAcquireProgress(CacheAcquireProgressEventArgs args) 758 protected virtual void OnCacheAcquireProgress(CacheAcquireProgressEventArgs args)
@@ -922,8 +765,7 @@ namespace WixToolset.Mba.Core
922 } 765 }
923 766
924 /// <summary> 767 /// <summary>
925 /// Called by the engine to allow the BA to change the source 768 /// Called by the engine, raises the <see cref="ResolveSource"/> event.
926 /// using <see cref="M:Engine.SetLocalSource"/> or <see cref="M:Engine.SetDownloadSource"/>.
927 /// </summary> 769 /// </summary>
928 /// <param name="args">Additional arguments for this event.</param> 770 /// <param name="args">Additional arguments for this event.</param>
929 protected virtual void OnResolveSource(ResolveSourceEventArgs args) 771 protected virtual void OnResolveSource(ResolveSourceEventArgs args)
@@ -936,7 +778,7 @@ namespace WixToolset.Mba.Core
936 } 778 }
937 779
938 /// <summary> 780 /// <summary>
939 /// Called when the engine completes caching of the container or payload. 781 /// Called by the engine, raises the <see cref="CacheAcquireComplete"/> event.
940 /// </summary> 782 /// </summary>
941 /// <param name="args"></param> 783 /// <param name="args"></param>
942 protected virtual void OnCacheAcquireComplete(CacheAcquireCompleteEventArgs args) 784 protected virtual void OnCacheAcquireComplete(CacheAcquireCompleteEventArgs args)
@@ -949,7 +791,7 @@ namespace WixToolset.Mba.Core
949 } 791 }
950 792
951 /// <summary> 793 /// <summary>
952 /// Called when the engine has started verify the payload. 794 /// Called by the engine, raises the <see cref="CacheVerifyBegin"/> event.
953 /// </summary> 795 /// </summary>
954 /// <param name="args"></param> 796 /// <param name="args"></param>
955 protected virtual void OnCacheVerifyBegin(CacheVerifyBeginEventArgs args) 797 protected virtual void OnCacheVerifyBegin(CacheVerifyBeginEventArgs args)
@@ -962,7 +804,7 @@ namespace WixToolset.Mba.Core
962 } 804 }
963 805
964 /// <summary> 806 /// <summary>
965 /// Called when the engine completes verification of the payload. 807 /// Called by the engine, raises the <see cref="CacheVerifyComplete"/> event.
966 /// </summary> 808 /// </summary>
967 /// <param name="args"></param> 809 /// <param name="args"></param>
968 protected virtual void OnCacheVerifyComplete(CacheVerifyCompleteEventArgs args) 810 protected virtual void OnCacheVerifyComplete(CacheVerifyCompleteEventArgs args)
@@ -975,7 +817,7 @@ namespace WixToolset.Mba.Core
975 } 817 }
976 818
977 /// <summary> 819 /// <summary>
978 /// Called when the engine completes caching a specific package. 820 /// Called by the engine, raises the <see cref="CachePackageComplete"/> event.
979 /// </summary> 821 /// </summary>
980 /// <param name="args"></param> 822 /// <param name="args"></param>
981 protected virtual void OnCachePackageComplete(CachePackageCompleteEventArgs args) 823 protected virtual void OnCachePackageComplete(CachePackageCompleteEventArgs args)
@@ -988,7 +830,7 @@ namespace WixToolset.Mba.Core
988 } 830 }
989 831
990 /// <summary> 832 /// <summary>
991 /// Called after the engine has cached the installation sources. 833 /// Called by the engine, raises the <see cref="CacheComplete"/> event.
992 /// </summary> 834 /// </summary>
993 /// <param name="args">Additional arguments for this event.</param> 835 /// <param name="args">Additional arguments for this event.</param>
994 protected virtual void OnCacheComplete(CacheCompleteEventArgs args) 836 protected virtual void OnCacheComplete(CacheCompleteEventArgs args)
@@ -1001,7 +843,7 @@ namespace WixToolset.Mba.Core
1001 } 843 }
1002 844
1003 /// <summary> 845 /// <summary>
1004 /// Called when the engine has begun installing packages. 846 /// Called by the engine, raises the <see cref="ExecuteBegin"/> event.
1005 /// </summary> 847 /// </summary>
1006 /// <param name="args">Additional arguments for this event.</param> 848 /// <param name="args">Additional arguments for this event.</param>
1007 protected virtual void OnExecuteBegin(ExecuteBeginEventArgs args) 849 protected virtual void OnExecuteBegin(ExecuteBeginEventArgs args)
@@ -1014,7 +856,7 @@ namespace WixToolset.Mba.Core
1014 } 856 }
1015 857
1016 /// <summary> 858 /// <summary>
1017 /// Called when the engine has begun installing a specific package. 859 /// Called by the engine, raises the <see cref="ExecutePackageBegin"/> event.
1018 /// </summary> 860 /// </summary>
1019 /// <param name="args">Additional arguments for this event.</param> 861 /// <param name="args">Additional arguments for this event.</param>
1020 protected virtual void OnExecutePackageBegin(ExecutePackageBeginEventArgs args) 862 protected virtual void OnExecutePackageBegin(ExecutePackageBeginEventArgs args)
@@ -1027,7 +869,7 @@ namespace WixToolset.Mba.Core
1027 } 869 }
1028 870
1029 /// <summary> 871 /// <summary>
1030 /// Called when the engine executes one or more patches targeting a product. 872 /// Called by the engine, raises the <see cref="ExecutePatchTarget"/> event.
1031 /// </summary> 873 /// </summary>
1032 /// <param name="args">Additional arguments for this event.</param> 874 /// <param name="args">Additional arguments for this event.</param>
1033 protected virtual void OnExecutePatchTarget(ExecutePatchTargetEventArgs args) 875 protected virtual void OnExecutePatchTarget(ExecutePatchTargetEventArgs args)
@@ -1040,7 +882,7 @@ namespace WixToolset.Mba.Core
1040 } 882 }
1041 883
1042 /// <summary> 884 /// <summary>
1043 /// Called when Windows Installer sends an installation message. 885 /// Called by the engine, raises the <see cref="ExecuteMsiMessage"/> event.
1044 /// </summary> 886 /// </summary>
1045 /// <param name="args">Additional arguments for this event.</param> 887 /// <param name="args">Additional arguments for this event.</param>
1046 protected virtual void OnExecuteMsiMessage(ExecuteMsiMessageEventArgs args) 888 protected virtual void OnExecuteMsiMessage(ExecuteMsiMessageEventArgs args)
@@ -1053,7 +895,7 @@ namespace WixToolset.Mba.Core
1053 } 895 }
1054 896
1055 /// <summary> 897 /// <summary>
1056 /// Called when Windows Installer sends a file in use installation message. 898 /// Called by the engine, raises the <see cref="ExecuteFilesInUse"/> event.
1057 /// </summary> 899 /// </summary>
1058 /// <param name="args">Additional arguments for this event.</param> 900 /// <param name="args">Additional arguments for this event.</param>
1059 protected virtual void OnExecuteFilesInUse(ExecuteFilesInUseEventArgs args) 901 protected virtual void OnExecuteFilesInUse(ExecuteFilesInUseEventArgs args)
@@ -1066,7 +908,7 @@ namespace WixToolset.Mba.Core
1066 } 908 }
1067 909
1068 /// <summary> 910 /// <summary>
1069 /// Called when the engine has completed installing a specific package. 911 /// Called by the engine, raises the <see cref="ExecutePackageComplete"/> event.
1070 /// </summary> 912 /// </summary>
1071 /// <param name="args">Additional arguments for this event.</param> 913 /// <param name="args">Additional arguments for this event.</param>
1072 protected virtual void OnExecutePackageComplete(ExecutePackageCompleteEventArgs args) 914 protected virtual void OnExecutePackageComplete(ExecutePackageCompleteEventArgs args)
@@ -1079,7 +921,7 @@ namespace WixToolset.Mba.Core
1079 } 921 }
1080 922
1081 /// <summary> 923 /// <summary>
1082 /// Called when the engine has completed installing packages. 924 /// Called by the engine, raises the <see cref="ExecuteComplete"/> event.
1083 /// </summary> 925 /// </summary>
1084 /// <param name="args">Additional arguments for this event.</param> 926 /// <param name="args">Additional arguments for this event.</param>
1085 protected virtual void OnExecuteComplete(ExecuteCompleteEventArgs args) 927 protected virtual void OnExecuteComplete(ExecuteCompleteEventArgs args)
@@ -1092,7 +934,7 @@ namespace WixToolset.Mba.Core
1092 } 934 }
1093 935
1094 /// <summary> 936 /// <summary>
1095 /// Called when the engine has completed installing the bundle. 937 /// Called by the engine, raises the <see cref="ApplyComplete"/> event.
1096 /// </summary> 938 /// </summary>
1097 /// <param name="args">Additional arguments for this event.</param> 939 /// <param name="args">Additional arguments for this event.</param>
1098 protected virtual void OnApplyComplete(ApplyCompleteEventArgs args) 940 protected virtual void OnApplyComplete(ApplyCompleteEventArgs args)
@@ -1105,7 +947,7 @@ namespace WixToolset.Mba.Core
1105 } 947 }
1106 948
1107 /// <summary> 949 /// <summary>
1108 /// Called by the engine while executing on payload. 950 /// Called by the engine, raises the <see cref="ExecuteProgress"/> event.
1109 /// </summary> 951 /// </summary>
1110 /// <param name="args">Additional arguments for this event.</param> 952 /// <param name="args">Additional arguments for this event.</param>
1111 protected virtual void OnExecuteProgress(ExecuteProgressEventArgs args) 953 protected virtual void OnExecuteProgress(ExecuteProgressEventArgs args)
@@ -1118,7 +960,7 @@ namespace WixToolset.Mba.Core
1118 } 960 }
1119 961
1120 /// <summary> 962 /// <summary>
1121 /// Called by the engine before trying to launch the preapproved executable. 963 /// Called by the engine, raises the <see cref="LaunchApprovedExeBegin"/> event.
1122 /// </summary> 964 /// </summary>
1123 /// <param name="args">Additional arguments for this event.</param> 965 /// <param name="args">Additional arguments for this event.</param>
1124 protected virtual void OnLaunchApprovedExeBegin(LaunchApprovedExeBeginEventArgs args) 966 protected virtual void OnLaunchApprovedExeBegin(LaunchApprovedExeBeginEventArgs args)
@@ -1131,7 +973,7 @@ namespace WixToolset.Mba.Core
1131 } 973 }
1132 974
1133 /// <summary> 975 /// <summary>
1134 /// Called by the engine after trying to launch the preapproved executable. 976 /// Called by the engine, raises the <see cref="LaunchApprovedExeComplete"/> event.
1135 /// </summary> 977 /// </summary>
1136 /// <param name="args">Additional arguments for this event.</param> 978 /// <param name="args">Additional arguments for this event.</param>
1137 protected virtual void OnLaunchApprovedExeComplete(LaunchApprovedExeCompleteEventArgs args) 979 protected virtual void OnLaunchApprovedExeComplete(LaunchApprovedExeCompleteEventArgs args)
@@ -1144,7 +986,7 @@ namespace WixToolset.Mba.Core
1144 } 986 }
1145 987
1146 /// <summary> 988 /// <summary>
1147 /// Called by the engine before beginning an MSI transaction. 989 /// Called by the engine, raises the <see cref="BeginMsiTransactionBegin"/> event.
1148 /// </summary> 990 /// </summary>
1149 /// <param name="args">Additional arguments for this event.</param> 991 /// <param name="args">Additional arguments for this event.</param>
1150 protected virtual void OnBeginMsiTransactionBegin(BeginMsiTransactionBeginEventArgs args) 992 protected virtual void OnBeginMsiTransactionBegin(BeginMsiTransactionBeginEventArgs args)
@@ -1157,7 +999,7 @@ namespace WixToolset.Mba.Core
1157 } 999 }
1158 1000
1159 /// <summary> 1001 /// <summary>
1160 /// Called by the engine after beginning an MSI transaction. 1002 /// Called by the engine, raises the <see cref="BeginMsiTransactionComplete"/> event.
1161 /// </summary> 1003 /// </summary>
1162 /// <param name="args">Additional arguments for this event.</param> 1004 /// <param name="args">Additional arguments for this event.</param>
1163 protected virtual void OnBeginMsiTransactionComplete(BeginMsiTransactionCompleteEventArgs args) 1005 protected virtual void OnBeginMsiTransactionComplete(BeginMsiTransactionCompleteEventArgs args)
@@ -1170,7 +1012,7 @@ namespace WixToolset.Mba.Core
1170 } 1012 }
1171 1013
1172 /// <summary> 1014 /// <summary>
1173 /// Called by the engine before committing an MSI transaction. 1015 /// Called by the engine, raises the <see cref="CommitMsiTransactionBegin"/> event.
1174 /// </summary> 1016 /// </summary>
1175 /// <param name="args">Additional arguments for this event.</param> 1017 /// <param name="args">Additional arguments for this event.</param>
1176 protected virtual void OnCommitMsiTransactionBegin(CommitMsiTransactionBeginEventArgs args) 1018 protected virtual void OnCommitMsiTransactionBegin(CommitMsiTransactionBeginEventArgs args)
@@ -1183,7 +1025,7 @@ namespace WixToolset.Mba.Core
1183 } 1025 }
1184 1026
1185 /// <summary> 1027 /// <summary>
1186 /// Called by the engine after committing an MSI transaction. 1028 /// Called by the engine, raises the <see cref="CommitMsiTransactionComplete"/> event.
1187 /// </summary> 1029 /// </summary>
1188 /// <param name="args">Additional arguments for this event.</param> 1030 /// <param name="args">Additional arguments for this event.</param>
1189 protected virtual void OnCommitMsiTransactionComplete(CommitMsiTransactionCompleteEventArgs args) 1031 protected virtual void OnCommitMsiTransactionComplete(CommitMsiTransactionCompleteEventArgs args)
@@ -1196,7 +1038,7 @@ namespace WixToolset.Mba.Core
1196 } 1038 }
1197 1039
1198 /// <summary> 1040 /// <summary>
1199 /// Called by the engine before rolling back an MSI transaction. 1041 /// Called by the engine, raises the <see cref="RollbackMsiTransactionBegin"/> event.
1200 /// </summary> 1042 /// </summary>
1201 /// <param name="args">Additional arguments for this event.</param> 1043 /// <param name="args">Additional arguments for this event.</param>
1202 protected virtual void OnRollbackMsiTransactionBegin(RollbackMsiTransactionBeginEventArgs args) 1044 protected virtual void OnRollbackMsiTransactionBegin(RollbackMsiTransactionBeginEventArgs args)
@@ -1209,7 +1051,7 @@ namespace WixToolset.Mba.Core
1209 } 1051 }
1210 1052
1211 /// <summary> 1053 /// <summary>
1212 /// Called by the engine after rolling back an MSI transaction. 1054 /// Called by the engine, raises the <see cref="RollbackMsiTransactionComplete"/> event.
1213 /// </summary> 1055 /// </summary>
1214 /// <param name="args">Additional arguments for this event.</param> 1056 /// <param name="args">Additional arguments for this event.</param>
1215 protected virtual void OnRollbackMsiTransactionComplete(RollbackMsiTransactionCompleteEventArgs args) 1057 protected virtual void OnRollbackMsiTransactionComplete(RollbackMsiTransactionCompleteEventArgs args)
@@ -1222,7 +1064,7 @@ namespace WixToolset.Mba.Core
1222 } 1064 }
1223 1065
1224 /// <summary> 1066 /// <summary>
1225 /// Called by the engine before pausing Windows automatic updates. 1067 /// Called by the engine, raises the <see cref="PauseAutomaticUpdatesBegin"/> event.
1226 /// </summary> 1068 /// </summary>
1227 /// <param name="args">Additional arguments for this event.</param> 1069 /// <param name="args">Additional arguments for this event.</param>
1228 protected virtual void OnPauseAutomaticUpdatesBegin(PauseAutomaticUpdatesBeginEventArgs args) 1070 protected virtual void OnPauseAutomaticUpdatesBegin(PauseAutomaticUpdatesBeginEventArgs args)
@@ -1235,7 +1077,7 @@ namespace WixToolset.Mba.Core
1235 } 1077 }
1236 1078
1237 /// <summary> 1079 /// <summary>
1238 /// Called by the engine after pausing Windows automatic updates. 1080 /// Called by the engine, raises the <see cref="PauseAutomaticUpdatesComplete"/> event.
1239 /// </summary> 1081 /// </summary>
1240 /// <param name="args">Additional arguments for this event.</param> 1082 /// <param name="args">Additional arguments for this event.</param>
1241 protected virtual void OnPauseAutomaticUpdatesComplete(PauseAutomaticUpdatesCompleteEventArgs args) 1083 protected virtual void OnPauseAutomaticUpdatesComplete(PauseAutomaticUpdatesCompleteEventArgs args)
@@ -1248,7 +1090,7 @@ namespace WixToolset.Mba.Core
1248 } 1090 }
1249 1091
1250 /// <summary> 1092 /// <summary>
1251 /// Called by the engine before taking a system restore point. 1093 /// Called by the engine, raises the <see cref="SystemRestorePointBegin"/> event.
1252 /// </summary> 1094 /// </summary>
1253 /// <param name="args">Additional arguments for this event.</param> 1095 /// <param name="args">Additional arguments for this event.</param>
1254 protected virtual void OnSystemRestorePointBegin(SystemRestorePointBeginEventArgs args) 1096 protected virtual void OnSystemRestorePointBegin(SystemRestorePointBeginEventArgs args)
@@ -1261,7 +1103,7 @@ namespace WixToolset.Mba.Core
1261 } 1103 }
1262 1104
1263 /// <summary> 1105 /// <summary>
1264 /// Called by the engine after taking a system restore point. 1106 /// Called by the engine, raises the <see cref="SystemRestorePointComplete"/> event.
1265 /// </summary> 1107 /// </summary>
1266 /// <param name="args">Additional arguments for this event.</param> 1108 /// <param name="args">Additional arguments for this event.</param>
1267 protected virtual void OnSystemRestorePointComplete(SystemRestorePointCompleteEventArgs args) 1109 protected virtual void OnSystemRestorePointComplete(SystemRestorePointCompleteEventArgs args)
diff --git a/src/WixToolset.Mba.Core/BootstrapperApplicationData.cs b/src/WixToolset.Mba.Core/BootstrapperApplicationData.cs
index 05672f1b..739a08bb 100644
--- a/src/WixToolset.Mba.Core/BootstrapperApplicationData.cs
+++ b/src/WixToolset.Mba.Core/BootstrapperApplicationData.cs
@@ -6,12 +6,29 @@ namespace WixToolset.Mba.Core
6 using System.IO; 6 using System.IO;
7 using System.Xml.XPath; 7 using System.Xml.XPath;
8 8
9 /// <summary>
10 /// Utility class for reading BootstrapperApplicationData.xml.
11 /// </summary>
9 public class BootstrapperApplicationData : IBootstrapperApplicationData 12 public class BootstrapperApplicationData : IBootstrapperApplicationData
10 { 13 {
14 /// <summary>
15 ///
16 /// </summary>
11 public const string DefaultFileName = "BootstrapperApplicationData.xml"; 17 public const string DefaultFileName = "BootstrapperApplicationData.xml";
18
19 /// <summary>
20 ///
21 /// </summary>
12 public const string XMLNamespace = "http://wixtoolset.org/schemas/v4/BootstrapperApplicationData"; 22 public const string XMLNamespace = "http://wixtoolset.org/schemas/v4/BootstrapperApplicationData";
13 23
24 /// <summary>
25 /// The default path of where the BA was extracted to.
26 /// </summary>
14 public static readonly DirectoryInfo DefaultFolder; 27 public static readonly DirectoryInfo DefaultFolder;
28
29 /// <summary>
30 /// The default path to BootstrapperApplicationData.xml.
31 /// </summary>
15 public static readonly FileInfo DefaultFile; 32 public static readonly FileInfo DefaultFile;
16 33
17 static BootstrapperApplicationData() 34 static BootstrapperApplicationData()
@@ -20,12 +37,21 @@ namespace WixToolset.Mba.Core
20 DefaultFile = new FileInfo(Path.Combine(DefaultFolder.FullName, DefaultFileName)); 37 DefaultFile = new FileInfo(Path.Combine(DefaultFolder.FullName, DefaultFileName));
21 } 38 }
22 39
40 /// <inheritdoc/>
23 public FileInfo BADataFile { get; private set; } 41 public FileInfo BADataFile { get; private set; }
24 42
43 /// <inheritdoc/>
25 public IBundleInfo Bundle { get; private set; } 44 public IBundleInfo Bundle { get; private set; }
26 45
46 /// <summary>
47 /// Uses the default location for BootstrapperApplicationData.xml.
48 /// </summary>
27 public BootstrapperApplicationData() : this(DefaultFile) { } 49 public BootstrapperApplicationData() : this(DefaultFile) { }
28 50
51 /// <summary>
52 /// Uses the given file for BootstrapperApplicationData.xml.
53 /// </summary>
54 /// <param name="baDataFile"></param>
29 public BootstrapperApplicationData(FileInfo baDataFile) 55 public BootstrapperApplicationData(FileInfo baDataFile)
30 { 56 {
31 this.BADataFile = baDataFile; 57 this.BADataFile = baDataFile;
@@ -36,6 +62,12 @@ namespace WixToolset.Mba.Core
36 } 62 }
37 } 63 }
38 64
65 /// <summary>
66 /// Utility method for parsing BootstrapperApplicationData.xml.
67 /// </summary>
68 /// <param name="node"></param>
69 /// <param name="attributeName"></param>
70 /// <returns></returns>
39 public static string GetAttribute(XPathNavigator node, string attributeName) 71 public static string GetAttribute(XPathNavigator node, string attributeName)
40 { 72 {
41 XPathNavigator attribute = node.SelectSingleNode("@" + attributeName); 73 XPathNavigator attribute = node.SelectSingleNode("@" + attributeName);
@@ -48,6 +80,12 @@ namespace WixToolset.Mba.Core
48 return attribute.Value; 80 return attribute.Value;
49 } 81 }
50 82
83 /// <summary>
84 /// Utility method for parsing BootstrapperApplicationData.xml.
85 /// </summary>
86 /// <param name="node"></param>
87 /// <param name="attributeName"></param>
88 /// <returns></returns>
51 public static bool? GetYesNoAttribute(XPathNavigator node, string attributeName) 89 public static bool? GetYesNoAttribute(XPathNavigator node, string attributeName)
52 { 90 {
53 string attributeValue = GetAttribute(node, attributeName); 91 string attributeValue = GetAttribute(node, attributeName);
diff --git a/src/WixToolset.Mba.Core/BootstrapperCommand.cs b/src/WixToolset.Mba.Core/BootstrapperCommand.cs
index 42d19bf9..65dde0f4 100644
--- a/src/WixToolset.Mba.Core/BootstrapperCommand.cs
+++ b/src/WixToolset.Mba.Core/BootstrapperCommand.cs
@@ -6,10 +6,28 @@ namespace WixToolset.Mba.Core
6 using System.ComponentModel; 6 using System.ComponentModel;
7 using System.Runtime.InteropServices; 7 using System.Runtime.InteropServices;
8 8
9 /// <summary>
10 /// Default implementation of <see cref="IBootstrapperCommand"/>.
11 /// </summary>
9 public sealed class BootstrapperCommand : IBootstrapperCommand 12 public sealed class BootstrapperCommand : IBootstrapperCommand
10 { 13 {
11 private readonly string commandLine; 14 private readonly string commandLine;
12 15
16 /// <summary>
17 ///
18 /// </summary>
19 /// <param name="action"></param>
20 /// <param name="display"></param>
21 /// <param name="restart"></param>
22 /// <param name="commandLine"></param>
23 /// <param name="cmdShow"></param>
24 /// <param name="resume"></param>
25 /// <param name="splashScreen"></param>
26 /// <param name="relation"></param>
27 /// <param name="passthrough"></param>
28 /// <param name="layoutDirectory"></param>
29 /// <param name="bootstrapperWorkingFolder"></param>
30 /// <param name="bootstrapperApplicationDataPath"></param>
13 public BootstrapperCommand( 31 public BootstrapperCommand(
14 LaunchAction action, 32 LaunchAction action,
15 Display display, 33 Display display,
@@ -38,28 +56,40 @@ namespace WixToolset.Mba.Core
38 this.BootstrapperApplicationDataPath = bootstrapperApplicationDataPath; 56 this.BootstrapperApplicationDataPath = bootstrapperApplicationDataPath;
39 } 57 }
40 58
59 /// <inheritdoc/>
41 public LaunchAction Action { get; } 60 public LaunchAction Action { get; }
42 61
62 /// <inheritdoc/>
43 public Display Display { get; } 63 public Display Display { get; }
44 64
65 /// <inheritdoc/>
45 public Restart Restart { get; } 66 public Restart Restart { get; }
46 67
68 /// <inheritdoc/>
47 public string[] CommandLineArgs => GetCommandLineArgs(this.commandLine); 69 public string[] CommandLineArgs => GetCommandLineArgs(this.commandLine);
48 70
71 /// <inheritdoc/>
49 public int CmdShow { get; } 72 public int CmdShow { get; }
50 73
74 /// <inheritdoc/>
51 public ResumeType Resume { get; } 75 public ResumeType Resume { get; }
52 76
77 /// <inheritdoc/>
53 public IntPtr SplashScreen { get; } 78 public IntPtr SplashScreen { get; }
54 79
80 /// <inheritdoc/>
55 public RelationType Relation { get; } 81 public RelationType Relation { get; }
56 82
83 /// <inheritdoc/>
57 public bool Passthrough { get; } 84 public bool Passthrough { get; }
58 85
86 /// <inheritdoc/>
59 public string LayoutDirectory { get; } 87 public string LayoutDirectory { get; }
60 88
89 /// <inheritdoc/>
61 public string BootstrapperWorkingFolder { get; } 90 public string BootstrapperWorkingFolder { get; }
62 91
92 /// <inheritdoc/>
63 public string BootstrapperApplicationDataPath { get; } 93 public string BootstrapperApplicationDataPath { get; }
64 94
65 /// <summary> 95 /// <summary>
diff --git a/src/WixToolset.Mba.Core/BundleInfo.cs b/src/WixToolset.Mba.Core/BundleInfo.cs
index e1a56878..3d5d535d 100644
--- a/src/WixToolset.Mba.Core/BundleInfo.cs
+++ b/src/WixToolset.Mba.Core/BundleInfo.cs
@@ -8,11 +8,21 @@ namespace WixToolset.Mba.Core
8 using System.Xml; 8 using System.Xml;
9 using System.Xml.XPath; 9 using System.Xml.XPath;
10 10
11 /// <summary>
12 /// Default implementation of <see cref="IBundleInfo"/>.
13 /// </summary>
11 public class BundleInfo : IBundleInfo 14 public class BundleInfo : IBundleInfo
12 { 15 {
16 /// <inheritdoc/>
13 public bool PerMachine { get; internal set; } 17 public bool PerMachine { get; internal set; }
18
19 /// <inheritdoc/>
14 public string Name { get; internal set; } 20 public string Name { get; internal set; }
21
22 /// <inheritdoc/>
15 public string LogVariable { get; internal set; } 23 public string LogVariable { get; internal set; }
24
25 /// <inheritdoc/>
16 public IDictionary<string, IPackageInfo> Packages { get; internal set; } 26 public IDictionary<string, IPackageInfo> Packages { get; internal set; }
17 27
18 internal BundleInfo() 28 internal BundleInfo()
@@ -20,6 +30,7 @@ namespace WixToolset.Mba.Core
20 this.Packages = new Dictionary<string, IPackageInfo>(); 30 this.Packages = new Dictionary<string, IPackageInfo>();
21 } 31 }
22 32
33 /// <inheritdoc/>
23 public IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e) 34 public IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e)
24 { 35 {
25 var package = PackageInfo.GetRelatedBundleAsPackage(e.ProductCode, e.RelationType, e.PerMachine, e.Version); 36 var package = PackageInfo.GetRelatedBundleAsPackage(e.ProductCode, e.RelationType, e.PerMachine, e.Version);
@@ -27,6 +38,11 @@ namespace WixToolset.Mba.Core
27 return package; 38 return package;
28 } 39 }
29 40
41 /// <summary>
42 /// Parses BA manifest from the given stream.
43 /// </summary>
44 /// <param name="stream"></param>
45 /// <returns></returns>
30 public static IBundleInfo ParseBundleFromStream(Stream stream) 46 public static IBundleInfo ParseBundleFromStream(Stream stream)
31 { 47 {
32 XPathDocument manifest = new XPathDocument(stream); 48 XPathDocument manifest = new XPathDocument(stream);
@@ -34,6 +50,11 @@ namespace WixToolset.Mba.Core
34 return ParseBundleFromXml(root); 50 return ParseBundleFromXml(root);
35 } 51 }
36 52
53 /// <summary>
54 /// Parses BA manifest from the given <see cref="XPathNavigator"/>.
55 /// </summary>
56 /// <param name="root">The root of the BA manifest.</param>
57 /// <returns></returns>
37 public static IBundleInfo ParseBundleFromXml(XPathNavigator root) 58 public static IBundleInfo ParseBundleFromXml(XPathNavigator root)
38 { 59 {
39 BundleInfo bundle = new BundleInfo(); 60 BundleInfo bundle = new BundleInfo();
diff --git a/src/WixToolset.Mba.Core/Engine.cs b/src/WixToolset.Mba.Core/Engine.cs
index c6570f9d..d5c43a53 100644
--- a/src/WixToolset.Mba.Core/Engine.cs
+++ b/src/WixToolset.Mba.Core/Engine.cs
@@ -9,7 +9,7 @@ namespace WixToolset.Mba.Core
9 using System.Text; 9 using System.Text;
10 10
11 /// <summary> 11 /// <summary>
12 /// Container class for the <see cref="IBootstrapperEngine"/> interface. 12 /// Default implementation of <see cref="IEngine"/>.
13 /// </summary> 13 /// </summary>
14 public sealed class Engine : IEngine 14 public sealed class Engine : IEngine
15 { 15 {
@@ -28,6 +28,7 @@ namespace WixToolset.Mba.Core
28 this.engine = engine; 28 this.engine = engine;
29 } 29 }
30 30
31 /// <inheritdoc/>
31 public int PackageCount 32 public int PackageCount
32 { 33 {
33 get 34 get
@@ -39,22 +40,26 @@ namespace WixToolset.Mba.Core
39 } 40 }
40 } 41 }
41 42
43 /// <inheritdoc/>
42 public void Apply(IntPtr hwndParent) 44 public void Apply(IntPtr hwndParent)
43 { 45 {
44 this.engine.Apply(hwndParent); 46 this.engine.Apply(hwndParent);
45 } 47 }
46 48
49 /// <inheritdoc/>
47 public void CloseSplashScreen() 50 public void CloseSplashScreen()
48 { 51 {
49 this.engine.CloseSplashScreen(); 52 this.engine.CloseSplashScreen();
50 } 53 }
51 54
55 /// <inheritdoc/>
52 public int CompareVersions(string version1, string version2) 56 public int CompareVersions(string version1, string version2)
53 { 57 {
54 this.engine.CompareVersions(version1, version2, out var result); 58 this.engine.CompareVersions(version1, version2, out var result);
55 return result; 59 return result;
56 } 60 }
57 61
62 /// <inheritdoc/>
58 public bool ContainsVariable(string name) 63 public bool ContainsVariable(string name)
59 { 64 {
60 int capacity = 0; 65 int capacity = 0;
@@ -62,16 +67,19 @@ namespace WixToolset.Mba.Core
62 return NativeMethods.E_NOTFOUND != ret; 67 return NativeMethods.E_NOTFOUND != ret;
63 } 68 }
64 69
70 /// <inheritdoc/>
65 public void Detect() 71 public void Detect()
66 { 72 {
67 this.Detect(IntPtr.Zero); 73 this.Detect(IntPtr.Zero);
68 } 74 }
69 75
76 /// <inheritdoc/>
70 public void Detect(IntPtr hwndParent) 77 public void Detect(IntPtr hwndParent)
71 { 78 {
72 this.engine.Detect(hwndParent); 79 this.engine.Detect(hwndParent);
73 } 80 }
74 81
82 /// <inheritdoc/>
75 public bool Elevate(IntPtr hwndParent) 83 public bool Elevate(IntPtr hwndParent)
76 { 84 {
77 int ret = this.engine.Elevate(hwndParent); 85 int ret = this.engine.Elevate(hwndParent);
@@ -90,6 +98,7 @@ namespace WixToolset.Mba.Core
90 } 98 }
91 } 99 }
92 100
101 /// <inheritdoc/>
93 public string EscapeString(string input) 102 public string EscapeString(string input)
94 { 103 {
95 int capacity = InitialBufferSize; 104 int capacity = InitialBufferSize;
@@ -111,6 +120,7 @@ namespace WixToolset.Mba.Core
111 return sb.ToString(); 120 return sb.ToString();
112 } 121 }
113 122
123 /// <inheritdoc/>
114 public bool EvaluateCondition(string condition) 124 public bool EvaluateCondition(string condition)
115 { 125 {
116 bool value; 126 bool value;
@@ -119,6 +129,7 @@ namespace WixToolset.Mba.Core
119 return value; 129 return value;
120 } 130 }
121 131
132 /// <inheritdoc/>
122 public string FormatString(string format) 133 public string FormatString(string format)
123 { 134 {
124 int capacity = InitialBufferSize; 135 int capacity = InitialBufferSize;
@@ -140,6 +151,7 @@ namespace WixToolset.Mba.Core
140 return sb.ToString(); 151 return sb.ToString();
141 } 152 }
142 153
154 /// <inheritdoc/>
143 public long GetVariableNumeric(string name) 155 public long GetVariableNumeric(string name)
144 { 156 {
145 int ret = this.engine.GetVariableNumeric(name, out long value); 157 int ret = this.engine.GetVariableNumeric(name, out long value);
@@ -151,6 +163,7 @@ namespace WixToolset.Mba.Core
151 return value; 163 return value;
152 } 164 }
153 165
166 /// <inheritdoc/>
154 public SecureString GetVariableSecureString(string name) 167 public SecureString GetVariableSecureString(string name)
155 { 168 {
156 var pUniString = this.getStringVariable(name, out var length); 169 var pUniString = this.getStringVariable(name, out var length);
@@ -167,6 +180,7 @@ namespace WixToolset.Mba.Core
167 } 180 }
168 } 181 }
169 182
183 /// <inheritdoc/>
170 public string GetVariableString(string name) 184 public string GetVariableString(string name)
171 { 185 {
172 int length; 186 int length;
@@ -184,6 +198,7 @@ namespace WixToolset.Mba.Core
184 } 198 }
185 } 199 }
186 200
201 /// <inheritdoc/>
187 public string GetVariableVersion(string name) 202 public string GetVariableVersion(string name)
188 { 203 {
189 int length; 204 int length;
@@ -201,46 +216,55 @@ namespace WixToolset.Mba.Core
201 } 216 }
202 } 217 }
203 218
219 /// <inheritdoc/>
204 public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments) 220 public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments)
205 { 221 {
206 this.LaunchApprovedExe(hwndParent, approvedExeForElevationId, arguments, 0); 222 this.LaunchApprovedExe(hwndParent, approvedExeForElevationId, arguments, 0);
207 } 223 }
208 224
225 /// <inheritdoc/>
209 public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments, int waitForInputIdleTimeout) 226 public void LaunchApprovedExe(IntPtr hwndParent, string approvedExeForElevationId, string arguments, int waitForInputIdleTimeout)
210 { 227 {
211 this.engine.LaunchApprovedExe(hwndParent, approvedExeForElevationId, arguments, waitForInputIdleTimeout); 228 this.engine.LaunchApprovedExe(hwndParent, approvedExeForElevationId, arguments, waitForInputIdleTimeout);
212 } 229 }
230 /// <inheritdoc/>
213 231
214 public void Log(LogLevel level, string message) 232 public void Log(LogLevel level, string message)
215 { 233 {
216 this.engine.Log(level, message); 234 this.engine.Log(level, message);
217 } 235 }
218 236
237 /// <inheritdoc/>
219 public void Plan(LaunchAction action) 238 public void Plan(LaunchAction action)
220 { 239 {
221 this.engine.Plan(action); 240 this.engine.Plan(action);
222 } 241 }
223 242
243 /// <inheritdoc/>
224 public void SetUpdate(string localSource, string downloadSource, long size, UpdateHashType hashType, byte[] hash) 244 public void SetUpdate(string localSource, string downloadSource, long size, UpdateHashType hashType, byte[] hash)
225 { 245 {
226 this.engine.SetUpdate(localSource, downloadSource, size, hashType, hash, null == hash ? 0 : hash.Length); 246 this.engine.SetUpdate(localSource, downloadSource, size, hashType, hash, null == hash ? 0 : hash.Length);
227 } 247 }
228 248
249 /// <inheritdoc/>
229 public void SetLocalSource(string packageOrContainerId, string payloadId, string path) 250 public void SetLocalSource(string packageOrContainerId, string payloadId, string path)
230 { 251 {
231 this.engine.SetLocalSource(packageOrContainerId, payloadId, path); 252 this.engine.SetLocalSource(packageOrContainerId, payloadId, path);
232 } 253 }
233 254
255 /// <inheritdoc/>
234 public void SetDownloadSource(string packageOrContainerId, string payloadId, string url, string user, string password) 256 public void SetDownloadSource(string packageOrContainerId, string payloadId, string url, string user, string password)
235 { 257 {
236 this.engine.SetDownloadSource(packageOrContainerId, payloadId, url, user, password); 258 this.engine.SetDownloadSource(packageOrContainerId, payloadId, url, user, password);
237 } 259 }
238 260
261 /// <inheritdoc/>
239 public void SetVariableNumeric(string name, long value) 262 public void SetVariableNumeric(string name, long value)
240 { 263 {
241 this.engine.SetVariableNumeric(name, value); 264 this.engine.SetVariableNumeric(name, value);
242 } 265 }
243 266
267 /// <inheritdoc/>
244 public void SetVariableString(string name, SecureString value, bool formatted) 268 public void SetVariableString(string name, SecureString value, bool formatted)
245 { 269 {
246 IntPtr pValue = Marshal.SecureStringToCoTaskMemUnicode(value); 270 IntPtr pValue = Marshal.SecureStringToCoTaskMemUnicode(value);
@@ -254,6 +278,7 @@ namespace WixToolset.Mba.Core
254 } 278 }
255 } 279 }
256 280
281 /// <inheritdoc/>
257 public void SetVariableString(string name, string value, bool formatted) 282 public void SetVariableString(string name, string value, bool formatted)
258 { 283 {
259 IntPtr pValue = Marshal.StringToCoTaskMemUni(value); 284 IntPtr pValue = Marshal.StringToCoTaskMemUni(value);
@@ -267,6 +292,7 @@ namespace WixToolset.Mba.Core
267 } 292 }
268 } 293 }
269 294
295 /// <inheritdoc/>
270 public void SetVariableVersion(string name, string value) 296 public void SetVariableVersion(string name, string value)
271 { 297 {
272 IntPtr pValue = Marshal.StringToCoTaskMemUni(value); 298 IntPtr pValue = Marshal.StringToCoTaskMemUni(value);
@@ -280,6 +306,7 @@ namespace WixToolset.Mba.Core
280 } 306 }
281 } 307 }
282 308
309 /// <inheritdoc/>
283 public int SendEmbeddedError(int errorCode, string message, int uiHint) 310 public int SendEmbeddedError(int errorCode, string message, int uiHint)
284 { 311 {
285 int result = 0; 312 int result = 0;
@@ -287,6 +314,7 @@ namespace WixToolset.Mba.Core
287 return result; 314 return result;
288 } 315 }
289 316
317 /// <inheritdoc/>
290 public int SendEmbeddedProgress(int progressPercentage, int overallPercentage) 318 public int SendEmbeddedProgress(int progressPercentage, int overallPercentage)
291 { 319 {
292 int result = 0; 320 int result = 0;
@@ -294,6 +322,7 @@ namespace WixToolset.Mba.Core
294 return result; 322 return result;
295 } 323 }
296 324
325 /// <inheritdoc/>
297 public void Quit(int exitCode) 326 public void Quit(int exitCode)
298 { 327 {
299 this.engine.Quit(exitCode); 328 this.engine.Quit(exitCode);
@@ -423,6 +452,11 @@ namespace WixToolset.Mba.Core
423 return value; 452 return value;
424 } 453 }
425 454
455 /// <summary>
456 /// Utility method for converting a <see cref="Version"/> into a <see cref="long"/>.
457 /// </summary>
458 /// <param name="version"></param>
459 /// <returns></returns>
426 public static long VersionToLong(Version version) 460 public static long VersionToLong(Version version)
427 { 461 {
428 // In Windows, each version component has a max value of 65535, 462 // In Windows, each version component has a max value of 65535,
@@ -435,6 +469,11 @@ namespace WixToolset.Mba.Core
435 return major | minor | build | revision; 469 return major | minor | build | revision;
436 } 470 }
437 471
472 /// <summary>
473 /// Utility method for converting a <see cref="long"/> into a <see cref="Version"/>.
474 /// </summary>
475 /// <param name="version"></param>
476 /// <returns></returns>
438 public static Version LongToVersion(long version) 477 public static Version LongToVersion(long version)
439 { 478 {
440 int major = (int)((version & ((long)0xffff << 48)) >> 48); 479 int major = (int)((version & ((long)0xffff << 48)) >> 48);
@@ -446,7 +485,7 @@ namespace WixToolset.Mba.Core
446 } 485 }
447 486
448 /// <summary> 487 /// <summary>
449 /// Verifies that VersionVariables can pass on the given Version to the engine. 488 /// Verifies that Version can be represented in a <see cref="long"/>.
450 /// If the Build or Revision fields are undefined, they are set to zero. 489 /// If the Build or Revision fields are undefined, they are set to zero.
451 /// </summary> 490 /// </summary>
452 public static Version NormalizeVersion(Version version) 491 public static Version NormalizeVersion(Version version)
diff --git a/src/WixToolset.Mba.Core/EventArgs.cs b/src/WixToolset.Mba.Core/EventArgs.cs
index b52b893a..4e59fd6f 100644
--- a/src/WixToolset.Mba.Core/EventArgs.cs
+++ b/src/WixToolset.Mba.Core/EventArgs.cs
@@ -163,7 +163,7 @@ namespace WixToolset.Mba.Core
163 /// <para>To prevent shutting down or logging off, set <see cref="CancellableHResultEventArgs.Cancel"/> to 163 /// <para>To prevent shutting down or logging off, set <see cref="CancellableHResultEventArgs.Cancel"/> to
164 /// true; otherwise, set it to false.</para> 164 /// true; otherwise, set it to false.</para>
165 /// <para>By default setup will prevent shutting down or logging off between 165 /// <para>By default setup will prevent shutting down or logging off between
166 /// <see cref="BootstrapperApplication.ApplyBegin"/> and <see cref="BootstrapperApplication.ApplyComplete"/>.</para> 166 /// <see cref="IDefaultBootstrapperApplication.ApplyBegin"/> and <see cref="IDefaultBootstrapperApplication.ApplyComplete"/>.</para>
167 /// <para>If <see cref="SystemShutdownEventArgs.Reasons"/> contains <see cref="EndSessionReasons.Critical"/> 167 /// <para>If <see cref="SystemShutdownEventArgs.Reasons"/> contains <see cref="EndSessionReasons.Critical"/>
168 /// the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other 168 /// the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other
169 /// critical operations before being closed by the operating system.</para> 169 /// critical operations before being closed by the operating system.</para>
@@ -1950,6 +1950,10 @@ namespace WixToolset.Mba.Core
1950 [Serializable] 1950 [Serializable]
1951 public class LaunchApprovedExeBeginEventArgs : CancellableHResultEventArgs 1951 public class LaunchApprovedExeBeginEventArgs : CancellableHResultEventArgs
1952 { 1952 {
1953 /// <summary>
1954 ///
1955 /// </summary>
1956 /// <param name="cancelRecommendation"></param>
1953 public LaunchApprovedExeBeginEventArgs(bool cancelRecommendation) 1957 public LaunchApprovedExeBeginEventArgs(bool cancelRecommendation)
1954 : base(cancelRecommendation) 1958 : base(cancelRecommendation)
1955 { 1959 {
@@ -1964,6 +1968,11 @@ namespace WixToolset.Mba.Core
1964 { 1968 {
1965 private int processId; 1969 private int processId;
1966 1970
1971 /// <summary>
1972 ///
1973 /// </summary>
1974 /// <param name="hrStatus"></param>
1975 /// <param name="processId"></param>
1967 public LaunchApprovedExeCompleteEventArgs(int hrStatus, int processId) 1976 public LaunchApprovedExeCompleteEventArgs(int hrStatus, int processId)
1968 : base(hrStatus) 1977 : base(hrStatus)
1969 { 1978 {
@@ -1988,6 +1997,11 @@ namespace WixToolset.Mba.Core
1988 { 1997 {
1989 private string transactionId; 1998 private string transactionId;
1990 1999
2000 /// <summary>
2001 ///
2002 /// </summary>
2003 /// <param name="transactionId"></param>
2004 /// <param name="cancelRecommendation"></param>
1991 public BeginMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation) 2005 public BeginMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation)
1992 : base(cancelRecommendation) 2006 : base(cancelRecommendation)
1993 { 2007 {
@@ -2011,6 +2025,11 @@ namespace WixToolset.Mba.Core
2011 { 2025 {
2012 private string transactionId; 2026 private string transactionId;
2013 2027
2028 /// <summary>
2029 ///
2030 /// </summary>
2031 /// <param name="transactionId"></param>
2032 /// <param name="hrStatus"></param>
2014 public BeginMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) 2033 public BeginMsiTransactionCompleteEventArgs(string transactionId, int hrStatus)
2015 : base(hrStatus) 2034 : base(hrStatus)
2016 { 2035 {
@@ -2034,6 +2053,11 @@ namespace WixToolset.Mba.Core
2034 { 2053 {
2035 private string transactionId; 2054 private string transactionId;
2036 2055
2056 /// <summary>
2057 ///
2058 /// </summary>
2059 /// <param name="transactionId"></param>
2060 /// <param name="cancelRecommendation"></param>
2037 public CommitMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation) 2061 public CommitMsiTransactionBeginEventArgs(string transactionId, bool cancelRecommendation)
2038 : base(cancelRecommendation) 2062 : base(cancelRecommendation)
2039 { 2063 {
@@ -2057,6 +2081,11 @@ namespace WixToolset.Mba.Core
2057 { 2081 {
2058 private string transactionId; 2082 private string transactionId;
2059 2083
2084 /// <summary>
2085 ///
2086 /// </summary>
2087 /// <param name="transactionId"></param>
2088 /// <param name="hrStatus"></param>
2060 public CommitMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) 2089 public CommitMsiTransactionCompleteEventArgs(string transactionId, int hrStatus)
2061 : base(hrStatus) 2090 : base(hrStatus)
2062 { 2091 {
@@ -2080,6 +2109,10 @@ namespace WixToolset.Mba.Core
2080 { 2109 {
2081 private string transactionId; 2110 private string transactionId;
2082 2111
2112 /// <summary>
2113 ///
2114 /// </summary>
2115 /// <param name="transactionId"></param>
2083 public RollbackMsiTransactionBeginEventArgs(string transactionId) 2116 public RollbackMsiTransactionBeginEventArgs(string transactionId)
2084 { 2117 {
2085 this.transactionId = transactionId; 2118 this.transactionId = transactionId;
@@ -2102,6 +2135,11 @@ namespace WixToolset.Mba.Core
2102 { 2135 {
2103 private string transactionId; 2136 private string transactionId;
2104 2137
2138 /// <summary>
2139 ///
2140 /// </summary>
2141 /// <param name="transactionId"></param>
2142 /// <param name="hrStatus"></param>
2105 public RollbackMsiTransactionCompleteEventArgs(string transactionId, int hrStatus) 2143 public RollbackMsiTransactionCompleteEventArgs(string transactionId, int hrStatus)
2106 : base(hrStatus) 2144 : base(hrStatus)
2107 { 2145 {
@@ -2123,6 +2161,9 @@ namespace WixToolset.Mba.Core
2123 [Serializable] 2161 [Serializable]
2124 public class PauseAutomaticUpdatesBeginEventArgs : HResultEventArgs 2162 public class PauseAutomaticUpdatesBeginEventArgs : HResultEventArgs
2125 { 2163 {
2164 /// <summary>
2165 ///
2166 /// </summary>
2126 public PauseAutomaticUpdatesBeginEventArgs() 2167 public PauseAutomaticUpdatesBeginEventArgs()
2127 { 2168 {
2128 } 2169 }
@@ -2134,6 +2175,10 @@ namespace WixToolset.Mba.Core
2134 [Serializable] 2175 [Serializable]
2135 public class PauseAutomaticUpdatesCompleteEventArgs : StatusEventArgs 2176 public class PauseAutomaticUpdatesCompleteEventArgs : StatusEventArgs
2136 { 2177 {
2178 /// <summary>
2179 ///
2180 /// </summary>
2181 /// <param name="hrStatus"></param>
2137 public PauseAutomaticUpdatesCompleteEventArgs(int hrStatus) 2182 public PauseAutomaticUpdatesCompleteEventArgs(int hrStatus)
2138 : base(hrStatus) 2183 : base(hrStatus)
2139 { 2184 {
@@ -2146,6 +2191,9 @@ namespace WixToolset.Mba.Core
2146 [Serializable] 2191 [Serializable]
2147 public class SystemRestorePointBeginEventArgs : HResultEventArgs 2192 public class SystemRestorePointBeginEventArgs : HResultEventArgs
2148 { 2193 {
2194 /// <summary>
2195 ///
2196 /// </summary>
2149 public SystemRestorePointBeginEventArgs() 2197 public SystemRestorePointBeginEventArgs()
2150 { 2198 {
2151 } 2199 }
@@ -2157,6 +2205,10 @@ namespace WixToolset.Mba.Core
2157 [Serializable] 2205 [Serializable]
2158 public class SystemRestorePointCompleteEventArgs : StatusEventArgs 2206 public class SystemRestorePointCompleteEventArgs : StatusEventArgs
2159 { 2207 {
2208 /// <summary>
2209 ///
2210 /// </summary>
2211 /// <param name="hrStatus"></param>
2160 public SystemRestorePointCompleteEventArgs(int hrStatus) 2212 public SystemRestorePointCompleteEventArgs(int hrStatus)
2161 : base(hrStatus) 2213 : base(hrStatus)
2162 { 2214 {
diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
index f1a631a3..3c62370a 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
@@ -14,14 +14,26 @@ namespace WixToolset.Mba.Core
14 [Guid("53C31D56-49C0-426B-AB06-099D717C67FE")] 14 [Guid("53C31D56-49C0-426B-AB06-099D717C67FE")]
15 public interface IBootstrapperApplication 15 public interface IBootstrapperApplication
16 { 16 {
17 /// <summary>
18 /// See <see cref="IDefaultBootstrapperApplication.Startup"/>.
19 /// </summary>
17 [PreserveSig] 20 [PreserveSig]
18 [return: MarshalAs(UnmanagedType.I4)] 21 [return: MarshalAs(UnmanagedType.I4)]
19 int OnStartup(); 22 int OnStartup();
20 23
24 /// <summary>
25 /// See <see cref="IDefaultBootstrapperApplication.Shutdown"/>.
26 /// </summary>
21 [PreserveSig] 27 [PreserveSig]
22 [return: MarshalAs(UnmanagedType.I4)] 28 [return: MarshalAs(UnmanagedType.I4)]
23 int OnShutdown(ref BOOTSTRAPPER_SHUTDOWN_ACTION action); 29 int OnShutdown(ref BOOTSTRAPPER_SHUTDOWN_ACTION action);
24 30
31 /// <summary>
32 /// See <see cref="IDefaultBootstrapperApplication.SystemShutdown"/>.
33 /// </summary>
34 /// <param name="dwEndSession"></param>
35 /// <param name="fCancel"></param>
36 /// <returns></returns>
25 [PreserveSig] 37 [PreserveSig]
26 [return: MarshalAs(UnmanagedType.I4)] 38 [return: MarshalAs(UnmanagedType.I4)]
27 int OnSystemShutdown( 39 int OnSystemShutdown(
@@ -29,6 +41,13 @@ namespace WixToolset.Mba.Core
29 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 41 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
30 ); 42 );
31 43
44 /// <summary>
45 /// See <see cref="IDefaultBootstrapperApplication.DetectBegin"/>.
46 /// </summary>
47 /// <param name="fInstalled"></param>
48 /// <param name="cPackages"></param>
49 /// <param name="fCancel"></param>
50 /// <returns></returns>
32 [PreserveSig] 51 [PreserveSig]
33 [return: MarshalAs(UnmanagedType.I4)] 52 [return: MarshalAs(UnmanagedType.I4)]
34 int OnDetectBegin( 53 int OnDetectBegin(
@@ -37,6 +56,17 @@ namespace WixToolset.Mba.Core
37 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 56 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
38 ); 57 );
39 58
59 /// <summary>
60 /// See <see cref="IDefaultBootstrapperApplication.DetectForwardCompatibleBundle"/>.
61 /// </summary>
62 /// <param name="wzBundleId"></param>
63 /// <param name="relationType"></param>
64 /// <param name="wzBundleTag"></param>
65 /// <param name="fPerMachine"></param>
66 /// <param name="wzVersion"></param>
67 /// <param name="fCancel"></param>
68 /// <param name="fIgnoreBundle"></param>
69 /// <returns></returns>
40 [PreserveSig] 70 [PreserveSig]
41 [return: MarshalAs(UnmanagedType.I4)] 71 [return: MarshalAs(UnmanagedType.I4)]
42 int OnDetectForwardCompatibleBundle( 72 int OnDetectForwardCompatibleBundle(
@@ -49,6 +79,13 @@ namespace WixToolset.Mba.Core
49 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle 79 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle
50 ); 80 );
51 81
82 /// <summary>
83 /// See <see cref="IDefaultBootstrapperApplication.DetectUpdateBegin"/>.
84 /// </summary>
85 /// <param name="wzUpdateLocation"></param>
86 /// <param name="fCancel"></param>
87 /// <param name="fSkip"></param>
88 /// <returns></returns>
52 [PreserveSig] 89 [PreserveSig]
53 [return: MarshalAs(UnmanagedType.I4)] 90 [return: MarshalAs(UnmanagedType.I4)]
54 int OnDetectUpdateBegin( 91 int OnDetectUpdateBegin(
@@ -57,6 +94,19 @@ namespace WixToolset.Mba.Core
57 [MarshalAs(UnmanagedType.Bool)] ref bool fSkip 94 [MarshalAs(UnmanagedType.Bool)] ref bool fSkip
58 ); 95 );
59 96
97 /// <summary>
98 /// See <see cref="IDefaultBootstrapperApplication.DetectUpdate"/>.
99 /// </summary>
100 /// <param name="wzUpdateLocation"></param>
101 /// <param name="dw64Size"></param>
102 /// <param name="wzVersion"></param>
103 /// <param name="wzTitle"></param>
104 /// <param name="wzSummary"></param>
105 /// <param name="wzContentType"></param>
106 /// <param name="wzContent"></param>
107 /// <param name="fCancel"></param>
108 /// <param name="fStopProcessingUpdates"></param>
109 /// <returns></returns>
60 [PreserveSig] 110 [PreserveSig]
61 [return: MarshalAs(UnmanagedType.I4)] 111 [return: MarshalAs(UnmanagedType.I4)]
62 int OnDetectUpdate( 112 int OnDetectUpdate(
@@ -71,6 +121,12 @@ namespace WixToolset.Mba.Core
71 [MarshalAs(UnmanagedType.Bool)] ref bool fStopProcessingUpdates 121 [MarshalAs(UnmanagedType.Bool)] ref bool fStopProcessingUpdates
72 ); 122 );
73 123
124 /// <summary>
125 /// See <see cref="IDefaultBootstrapperApplication.DetectUpdateComplete"/>.
126 /// </summary>
127 /// <param name="hrStatus"></param>
128 /// <param name="fIgnoreError"></param>
129 /// <returns></returns>
74 [PreserveSig] 130 [PreserveSig]
75 [return: MarshalAs(UnmanagedType.I4)] 131 [return: MarshalAs(UnmanagedType.I4)]
76 int OnDetectUpdateComplete( 132 int OnDetectUpdateComplete(
@@ -78,6 +134,17 @@ namespace WixToolset.Mba.Core
78 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreError 134 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreError
79 ); 135 );
80 136
137 /// <summary>
138 /// See <see cref="IDefaultBootstrapperApplication.DetectRelatedBundle"/>.
139 /// </summary>
140 /// <param name="wzBundleId"></param>
141 /// <param name="relationType"></param>
142 /// <param name="wzBundleTag"></param>
143 /// <param name="fPerMachine"></param>
144 /// <param name="wzVersion"></param>
145 /// <param name="operation"></param>
146 /// <param name="fCancel"></param>
147 /// <returns></returns>
81 [PreserveSig] 148 [PreserveSig]
82 [return: MarshalAs(UnmanagedType.I4)] 149 [return: MarshalAs(UnmanagedType.I4)]
83 int OnDetectRelatedBundle( 150 int OnDetectRelatedBundle(
@@ -90,6 +157,12 @@ namespace WixToolset.Mba.Core
90 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 157 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
91 ); 158 );
92 159
160 /// <summary>
161 /// See <see cref="IDefaultBootstrapperApplication.DetectPackageBegin"/>.
162 /// </summary>
163 /// <param name="wzPackageId"></param>
164 /// <param name="fCancel"></param>
165 /// <returns></returns>
93 [PreserveSig] 166 [PreserveSig]
94 [return: MarshalAs(UnmanagedType.I4)] 167 [return: MarshalAs(UnmanagedType.I4)]
95 int OnDetectPackageBegin( 168 int OnDetectPackageBegin(
@@ -97,6 +170,14 @@ namespace WixToolset.Mba.Core
97 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 170 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
98 ); 171 );
99 172
173 /// <summary>
174 /// See <see cref="IDefaultBootstrapperApplication.DetectCompatibleMsiPackage"/>.
175 /// </summary>
176 /// <param name="wzPackageId"></param>
177 /// <param name="wzCompatiblePackageId"></param>
178 /// <param name="wzCompatiblePackageVersion"></param>
179 /// <param name="fCancel"></param>
180 /// <returns></returns>
100 [PreserveSig] 181 [PreserveSig]
101 [return: MarshalAs(UnmanagedType.I4)] 182 [return: MarshalAs(UnmanagedType.I4)]
102 int OnDetectCompatibleMsiPackage( 183 int OnDetectCompatibleMsiPackage(
@@ -106,6 +187,17 @@ namespace WixToolset.Mba.Core
106 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 187 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
107 ); 188 );
108 189
190 /// <summary>
191 /// See <see cref="IDefaultBootstrapperApplication.DetectRelatedMsiPackage"/>.
192 /// </summary>
193 /// <param name="wzPackageId"></param>
194 /// <param name="wzUpgradeCode"></param>
195 /// <param name="wzProductCode"></param>
196 /// <param name="fPerMachine"></param>
197 /// <param name="wzVersion"></param>
198 /// <param name="operation"></param>
199 /// <param name="fCancel"></param>
200 /// <returns></returns>
109 [PreserveSig] 201 [PreserveSig]
110 [return: MarshalAs(UnmanagedType.I4)] 202 [return: MarshalAs(UnmanagedType.I4)]
111 int OnDetectRelatedMsiPackage( 203 int OnDetectRelatedMsiPackage(
@@ -118,6 +210,14 @@ namespace WixToolset.Mba.Core
118 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 210 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
119 ); 211 );
120 212
213 /// <summary>
214 /// See <see cref="IDefaultBootstrapperApplication.DetectTargetMsiPackage"/>.
215 /// </summary>
216 /// <param name="wzPackageId"></param>
217 /// <param name="wzProductCode"></param>
218 /// <param name="patchState"></param>
219 /// <param name="fCancel"></param>
220 /// <returns></returns>
121 [PreserveSig] 221 [PreserveSig]
122 [return: MarshalAs(UnmanagedType.I4)] 222 [return: MarshalAs(UnmanagedType.I4)]
123 int OnDetectTargetMsiPackage( 223 int OnDetectTargetMsiPackage(
@@ -127,6 +227,14 @@ namespace WixToolset.Mba.Core
127 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 227 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
128 ); 228 );
129 229
230 /// <summary>
231 /// See <see cref="IDefaultBootstrapperApplication.DetectMsiFeature"/>.
232 /// </summary>
233 /// <param name="wzPackageId"></param>
234 /// <param name="wzFeatureId"></param>
235 /// <param name="state"></param>
236 /// <param name="fCancel"></param>
237 /// <returns></returns>
130 [PreserveSig] 238 [PreserveSig]
131 [return: MarshalAs(UnmanagedType.I4)] 239 [return: MarshalAs(UnmanagedType.I4)]
132 int OnDetectMsiFeature( 240 int OnDetectMsiFeature(
@@ -136,6 +244,13 @@ namespace WixToolset.Mba.Core
136 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 244 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
137 ); 245 );
138 246
247 /// <summary>
248 /// See <see cref="IDefaultBootstrapperApplication.DetectPackageComplete"/>.
249 /// </summary>
250 /// <param name="wzPackageId"></param>
251 /// <param name="hrStatus"></param>
252 /// <param name="state"></param>
253 /// <returns></returns>
139 [PreserveSig] 254 [PreserveSig]
140 [return: MarshalAs(UnmanagedType.I4)] 255 [return: MarshalAs(UnmanagedType.I4)]
141 int OnDetectPackageComplete( 256 int OnDetectPackageComplete(
@@ -144,12 +259,23 @@ namespace WixToolset.Mba.Core
144 [MarshalAs(UnmanagedType.U4)] PackageState state 259 [MarshalAs(UnmanagedType.U4)] PackageState state
145 ); 260 );
146 261
262 /// <summary>
263 /// See <see cref="IDefaultBootstrapperApplication.DetectComplete"/>.
264 /// </summary>
265 /// <param name="hrStatus"></param>
266 /// <returns></returns>
147 [PreserveSig] 267 [PreserveSig]
148 [return: MarshalAs(UnmanagedType.I4)] 268 [return: MarshalAs(UnmanagedType.I4)]
149 int OnDetectComplete( 269 int OnDetectComplete(
150 int hrStatus 270 int hrStatus
151 ); 271 );
152 272
273 /// <summary>
274 /// See <see cref="IDefaultBootstrapperApplication.PlanBegin"/>.
275 /// </summary>
276 /// <param name="cPackages"></param>
277 /// <param name="fCancel"></param>
278 /// <returns></returns>
153 [PreserveSig] 279 [PreserveSig]
154 [return: MarshalAs(UnmanagedType.I4)] 280 [return: MarshalAs(UnmanagedType.I4)]
155 int OnPlanBegin( 281 int OnPlanBegin(
@@ -157,6 +283,14 @@ namespace WixToolset.Mba.Core
157 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 283 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
158 ); 284 );
159 285
286 /// <summary>
287 /// See <see cref="IDefaultBootstrapperApplication.PlanRelatedBundle"/>.
288 /// </summary>
289 /// <param name="wzBundleId"></param>
290 /// <param name="recommendedState"></param>
291 /// <param name="pRequestedState"></param>
292 /// <param name="fCancel"></param>
293 /// <returns></returns>
160 [PreserveSig] 294 [PreserveSig]
161 [return: MarshalAs(UnmanagedType.I4)] 295 [return: MarshalAs(UnmanagedType.I4)]
162 int OnPlanRelatedBundle( 296 int OnPlanRelatedBundle(
@@ -166,6 +300,14 @@ namespace WixToolset.Mba.Core
166 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 300 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
167 ); 301 );
168 302
303 /// <summary>
304 /// See <see cref="IDefaultBootstrapperApplication.PlanPackageBegin"/>.
305 /// </summary>
306 /// <param name="wzPackageId"></param>
307 /// <param name="recommendedState"></param>
308 /// <param name="pRequestedState"></param>
309 /// <param name="fCancel"></param>
310 /// <returns></returns>
169 [PreserveSig] 311 [PreserveSig]
170 [return: MarshalAs(UnmanagedType.I4)] 312 [return: MarshalAs(UnmanagedType.I4)]
171 int OnPlanPackageBegin( 313 int OnPlanPackageBegin(
@@ -175,6 +317,16 @@ namespace WixToolset.Mba.Core
175 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 317 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
176 ); 318 );
177 319
320 /// <summary>
321 /// See <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageBegin"/>.
322 /// </summary>
323 /// <param name="wzPackageId"></param>
324 /// <param name="wzCompatiblePackageId"></param>
325 /// <param name="wzCompatiblePackageVersion"></param>
326 /// <param name="recommendedState"></param>
327 /// <param name="pRequestedState"></param>
328 /// <param name="fCancel"></param>
329 /// <returns></returns>
178 [PreserveSig] 330 [PreserveSig]
179 [return: MarshalAs(UnmanagedType.I4)] 331 [return: MarshalAs(UnmanagedType.I4)]
180 int OnPlanCompatibleMsiPackageBegin( 332 int OnPlanCompatibleMsiPackageBegin(
@@ -186,6 +338,17 @@ namespace WixToolset.Mba.Core
186 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 338 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
187 ); 339 );
188 340
341 /// <summary>
342 /// See <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageComplete"/>.
343 /// </summary>
344 /// <param name="wzPackageId"></param>
345 /// <param name="wzCompatiblePackageId"></param>
346 /// <param name="hrStatus"></param>
347 /// <param name="state"></param>
348 /// <param name="requested"></param>
349 /// <param name="execute"></param>
350 /// <param name="rollback"></param>
351 /// <returns></returns>
189 [PreserveSig] 352 [PreserveSig]
190 [return: MarshalAs(UnmanagedType.I4)] 353 [return: MarshalAs(UnmanagedType.I4)]
191 int OnPlanCompatibleMsiPackageComplete( 354 int OnPlanCompatibleMsiPackageComplete(
@@ -198,6 +361,15 @@ namespace WixToolset.Mba.Core
198 [MarshalAs(UnmanagedType.U4)] ActionState rollback 361 [MarshalAs(UnmanagedType.U4)] ActionState rollback
199 ); 362 );
200 363
364 /// <summary>
365 /// See <see cref="IDefaultBootstrapperApplication.PlanTargetMsiPackage"/>.
366 /// </summary>
367 /// <param name="wzPackageId"></param>
368 /// <param name="wzProductCode"></param>
369 /// <param name="recommendedState"></param>
370 /// <param name="pRequestedState"></param>
371 /// <param name="fCancel"></param>
372 /// <returns></returns>
201 [PreserveSig] 373 [PreserveSig]
202 [return: MarshalAs(UnmanagedType.I4)] 374 [return: MarshalAs(UnmanagedType.I4)]
203 int OnPlanTargetMsiPackage( 375 int OnPlanTargetMsiPackage(
@@ -208,6 +380,15 @@ namespace WixToolset.Mba.Core
208 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 380 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
209 ); 381 );
210 382
383 /// <summary>
384 /// See <see cref="IDefaultBootstrapperApplication.PlanMsiFeature"/>.
385 /// </summary>
386 /// <param name="wzPackageId"></param>
387 /// <param name="wzFeatureId"></param>
388 /// <param name="recommendedState"></param>
389 /// <param name="pRequestedState"></param>
390 /// <param name="fCancel"></param>
391 /// <returns></returns>
211 [PreserveSig] 392 [PreserveSig]
212 [return: MarshalAs(UnmanagedType.I4)] 393 [return: MarshalAs(UnmanagedType.I4)]
213 int OnPlanMsiFeature( 394 int OnPlanMsiFeature(
@@ -218,6 +399,17 @@ namespace WixToolset.Mba.Core
218 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 399 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
219 ); 400 );
220 401
402 /// <summary>
403 /// See <see cref="IDefaultBootstrapperApplication.PlanMsiPackage"/>.
404 /// </summary>
405 /// <param name="wzPackageId"></param>
406 /// <param name="fExecute"></param>
407 /// <param name="action"></param>
408 /// <param name="fCancel"></param>
409 /// <param name="actionMsiProperty"></param>
410 /// <param name="uiLevel"></param>
411 /// <param name="fDisableExternalUiHandler"></param>
412 /// <returns></returns>
221 [PreserveSig] 413 [PreserveSig]
222 [return: MarshalAs(UnmanagedType.I4)] 414 [return: MarshalAs(UnmanagedType.I4)]
223 int OnPlanMsiPackage( 415 int OnPlanMsiPackage(
@@ -230,6 +422,16 @@ namespace WixToolset.Mba.Core
230 [MarshalAs(UnmanagedType.Bool)] ref bool fDisableExternalUiHandler 422 [MarshalAs(UnmanagedType.Bool)] ref bool fDisableExternalUiHandler
231 ); 423 );
232 424
425 /// <summary>
426 /// See <see cref="IDefaultBootstrapperApplication.PlanPackageComplete"/>.
427 /// </summary>
428 /// <param name="wzPackageId"></param>
429 /// <param name="hrStatus"></param>
430 /// <param name="state"></param>
431 /// <param name="requested"></param>
432 /// <param name="execute"></param>
433 /// <param name="rollback"></param>
434 /// <returns></returns>
233 [PreserveSig] 435 [PreserveSig]
234 [return: MarshalAs(UnmanagedType.I4)] 436 [return: MarshalAs(UnmanagedType.I4)]
235 int OnPlanPackageComplete( 437 int OnPlanPackageComplete(
@@ -241,12 +443,23 @@ namespace WixToolset.Mba.Core
241 [MarshalAs(UnmanagedType.U4)] ActionState rollback 443 [MarshalAs(UnmanagedType.U4)] ActionState rollback
242 ); 444 );
243 445
446 /// <summary>
447 /// See <see cref="IDefaultBootstrapperApplication.PlanComplete"/>.
448 /// </summary>
449 /// <param name="hrStatus"></param>
450 /// <returns></returns>
244 [PreserveSig] 451 [PreserveSig]
245 [return: MarshalAs(UnmanagedType.I4)] 452 [return: MarshalAs(UnmanagedType.I4)]
246 int OnPlanComplete( 453 int OnPlanComplete(
247 int hrStatus 454 int hrStatus
248 ); 455 );
249 456
457 /// <summary>
458 /// See <see cref="IDefaultBootstrapperApplication.ApplyBegin"/>.
459 /// </summary>
460 /// <param name="dwPhaseCount"></param>
461 /// <param name="fCancel"></param>
462 /// <returns></returns>
250 [PreserveSig] 463 [PreserveSig]
251 [return: MarshalAs(UnmanagedType.I4)] 464 [return: MarshalAs(UnmanagedType.I4)]
252 int OnApplyBegin( 465 int OnApplyBegin(
@@ -254,18 +467,35 @@ namespace WixToolset.Mba.Core
254 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 467 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
255 ); 468 );
256 469
470 /// <summary>
471 /// See <see cref="IDefaultBootstrapperApplication.ElevateBegin"/>.
472 /// </summary>
473 /// <param name="fCancel"></param>
474 /// <returns></returns>
257 [PreserveSig] 475 [PreserveSig]
258 [return: MarshalAs(UnmanagedType.I4)] 476 [return: MarshalAs(UnmanagedType.I4)]
259 int OnElevateBegin( 477 int OnElevateBegin(
260 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 478 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
261 ); 479 );
262 480
481 /// <summary>
482 /// See <see cref="IDefaultBootstrapperApplication.ElevateComplete"/>.
483 /// </summary>
484 /// <param name="hrStatus"></param>
485 /// <returns></returns>
263 [PreserveSig] 486 [PreserveSig]
264 [return: MarshalAs(UnmanagedType.I4)] 487 [return: MarshalAs(UnmanagedType.I4)]
265 int OnElevateComplete( 488 int OnElevateComplete(
266 int hrStatus 489 int hrStatus
267 ); 490 );
268 491
492 /// <summary>
493 /// See <see cref="IDefaultBootstrapperApplication.Progress"/>.
494 /// </summary>
495 /// <param name="dwProgressPercentage"></param>
496 /// <param name="dwOverallPercentage"></param>
497 /// <param name="fCancel"></param>
498 /// <returns></returns>
269 [PreserveSig] 499 [PreserveSig]
270 [return: MarshalAs(UnmanagedType.I4)] 500 [return: MarshalAs(UnmanagedType.I4)]
271 int OnProgress( 501 int OnProgress(
@@ -274,6 +504,19 @@ namespace WixToolset.Mba.Core
274 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 504 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
275 ); 505 );
276 506
507 /// <summary>
508 /// See <see cref="IDefaultBootstrapperApplication.Error"/>.
509 /// </summary>
510 /// <param name="errorType"></param>
511 /// <param name="wzPackageId"></param>
512 /// <param name="dwCode"></param>
513 /// <param name="wzError"></param>
514 /// <param name="dwUIHint"></param>
515 /// <param name="cData"></param>
516 /// <param name="rgwzData"></param>
517 /// <param name="nRecommendation"></param>
518 /// <param name="pResult"></param>
519 /// <returns></returns>
277 [PreserveSig] 520 [PreserveSig]
278 [return: MarshalAs(UnmanagedType.I4)] 521 [return: MarshalAs(UnmanagedType.I4)]
279 int OnError( 522 int OnError(
@@ -288,24 +531,47 @@ namespace WixToolset.Mba.Core
288 [MarshalAs(UnmanagedType.I4)] ref Result pResult 531 [MarshalAs(UnmanagedType.I4)] ref Result pResult
289 ); 532 );
290 533
534 /// <summary>
535 /// See <see cref="IDefaultBootstrapperApplication.RegisterBegin"/>.
536 /// </summary>
537 /// <param name="fCancel"></param>
538 /// <returns></returns>
291 [PreserveSig] 539 [PreserveSig]
292 [return: MarshalAs(UnmanagedType.I4)] 540 [return: MarshalAs(UnmanagedType.I4)]
293 int OnRegisterBegin( 541 int OnRegisterBegin(
294 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 542 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
295 ); 543 );
296 544
545 /// <summary>
546 /// See <see cref="IDefaultBootstrapperApplication.RegisterComplete"/>.
547 /// </summary>
548 /// <param name="hrStatus"></param>
549 /// <returns></returns>
297 [PreserveSig] 550 [PreserveSig]
298 [return: MarshalAs(UnmanagedType.I4)] 551 [return: MarshalAs(UnmanagedType.I4)]
299 int OnRegisterComplete( 552 int OnRegisterComplete(
300 int hrStatus 553 int hrStatus
301 ); 554 );
302 555
556 /// <summary>
557 /// See <see cref="IDefaultBootstrapperApplication.CacheBegin"/>.
558 /// </summary>
559 /// <param name="fCancel"></param>
560 /// <returns></returns>
303 [PreserveSig] 561 [PreserveSig]
304 [return: MarshalAs(UnmanagedType.I4)] 562 [return: MarshalAs(UnmanagedType.I4)]
305 int OnCacheBegin( 563 int OnCacheBegin(
306 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 564 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
307 ); 565 );
308 566
567 /// <summary>
568 /// See <see cref="IDefaultBootstrapperApplication.CachePackageBegin"/>.
569 /// </summary>
570 /// <param name="wzPackageId"></param>
571 /// <param name="cCachePayloads"></param>
572 /// <param name="dw64PackageCacheSize"></param>
573 /// <param name="fCancel"></param>
574 /// <returns></returns>
309 [PreserveSig] 575 [PreserveSig]
310 [return: MarshalAs(UnmanagedType.I4)] 576 [return: MarshalAs(UnmanagedType.I4)]
311 int OnCachePackageBegin( 577 int OnCachePackageBegin(
@@ -315,6 +581,15 @@ namespace WixToolset.Mba.Core
315 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 581 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
316 ); 582 );
317 583
584 /// <summary>
585 /// See <see cref="IDefaultBootstrapperApplication.CacheAcquireBegin"/>.
586 /// </summary>
587 /// <param name="wzPackageOrContainerId"></param>
588 /// <param name="wzPayloadId"></param>
589 /// <param name="operation"></param>
590 /// <param name="wzSource"></param>
591 /// <param name="fCancel"></param>
592 /// <returns></returns>
318 [PreserveSig] 593 [PreserveSig]
319 [return: MarshalAs(UnmanagedType.I4)] 594 [return: MarshalAs(UnmanagedType.I4)]
320 int OnCacheAcquireBegin( 595 int OnCacheAcquireBegin(
@@ -325,6 +600,16 @@ namespace WixToolset.Mba.Core
325 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 600 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
326 ); 601 );
327 602
603 /// <summary>
604 /// See <see cref="IDefaultBootstrapperApplication.CacheAcquireProgress"/>.
605 /// </summary>
606 /// <param name="wzPackageOrContainerId"></param>
607 /// <param name="wzPayloadId"></param>
608 /// <param name="dw64Progress"></param>
609 /// <param name="dw64Total"></param>
610 /// <param name="dwOverallPercentage"></param>
611 /// <param name="fCancel"></param>
612 /// <returns></returns>
328 [PreserveSig] 613 [PreserveSig]
329 [return: MarshalAs(UnmanagedType.I4)] 614 [return: MarshalAs(UnmanagedType.I4)]
330 int OnCacheAcquireProgress( 615 int OnCacheAcquireProgress(
@@ -336,6 +621,17 @@ namespace WixToolset.Mba.Core
336 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 621 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
337 ); 622 );
338 623
624 /// <summary>
625 /// See <see cref="IDefaultBootstrapperApplication.ResolveSource"/>.
626 /// </summary>
627 /// <param name="wzPackageOrContainerId"></param>
628 /// <param name="wzPayloadId"></param>
629 /// <param name="wzLocalSource"></param>
630 /// <param name="wzDownloadSource"></param>
631 /// <param name="recommendation"></param>
632 /// <param name="action"></param>
633 /// <param name="fCancel"></param>
634 /// <returns></returns>
339 [PreserveSig] 635 [PreserveSig]
340 [return: MarshalAs(UnmanagedType.I4)] 636 [return: MarshalAs(UnmanagedType.I4)]
341 int OnResolveSource( 637 int OnResolveSource(
@@ -348,6 +644,15 @@ namespace WixToolset.Mba.Core
348 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 644 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
349 ); 645 );
350 646
647 /// <summary>
648 /// See <see cref="IDefaultBootstrapperApplication.CacheAcquireComplete"/>.
649 /// </summary>
650 /// <param name="wzPackageOrContainerId"></param>
651 /// <param name="wzPayloadId"></param>
652 /// <param name="hrStatus"></param>
653 /// <param name="recommendation"></param>
654 /// <param name="pAction"></param>
655 /// <returns></returns>
351 [PreserveSig] 656 [PreserveSig]
352 [return: MarshalAs(UnmanagedType.I4)] 657 [return: MarshalAs(UnmanagedType.I4)]
353 int OnCacheAcquireComplete( 658 int OnCacheAcquireComplete(
@@ -358,6 +663,13 @@ namespace WixToolset.Mba.Core
358 ref BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION pAction 663 ref BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION pAction
359 ); 664 );
360 665
666 /// <summary>
667 /// See <see cref="IDefaultBootstrapperApplication.CacheVerifyBegin"/>.
668 /// </summary>
669 /// <param name="wzPackageId"></param>
670 /// <param name="wzPayloadId"></param>
671 /// <param name="fCancel"></param>
672 /// <returns></returns>
361 [PreserveSig] 673 [PreserveSig]
362 [return: MarshalAs(UnmanagedType.I4)] 674 [return: MarshalAs(UnmanagedType.I4)]
363 int OnCacheVerifyBegin( 675 int OnCacheVerifyBegin(
@@ -366,6 +678,15 @@ namespace WixToolset.Mba.Core
366 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 678 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
367 ); 679 );
368 680
681 /// <summary>
682 /// See <see cref="IDefaultBootstrapperApplication.CacheVerifyComplete"/>.
683 /// </summary>
684 /// <param name="wzPackageId"></param>
685 /// <param name="wzPayloadId"></param>
686 /// <param name="hrStatus"></param>
687 /// <param name="recommendation"></param>
688 /// <param name="action"></param>
689 /// <returns></returns>
369 [PreserveSig] 690 [PreserveSig]
370 [return: MarshalAs(UnmanagedType.I4)] 691 [return: MarshalAs(UnmanagedType.I4)]
371 int OnCacheVerifyComplete( 692 int OnCacheVerifyComplete(
@@ -376,6 +697,14 @@ namespace WixToolset.Mba.Core
376 ref BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action 697 ref BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action
377 ); 698 );
378 699
700 /// <summary>
701 /// See <see cref="IDefaultBootstrapperApplication.CachePackageComplete"/>.
702 /// </summary>
703 /// <param name="wzPackageId"></param>
704 /// <param name="hrStatus"></param>
705 /// <param name="recommendation"></param>
706 /// <param name="action"></param>
707 /// <returns></returns>
379 [PreserveSig] 708 [PreserveSig]
380 [return: MarshalAs(UnmanagedType.I4)] 709 [return: MarshalAs(UnmanagedType.I4)]
381 int OnCachePackageComplete( 710 int OnCachePackageComplete(
@@ -385,12 +714,23 @@ namespace WixToolset.Mba.Core
385 ref BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action 714 ref BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action
386 ); 715 );
387 716
717 /// <summary>
718 /// See <see cref="IDefaultBootstrapperApplication.CacheComplete"/>.
719 /// </summary>
720 /// <param name="hrStatus"></param>
721 /// <returns></returns>
388 [PreserveSig] 722 [PreserveSig]
389 [return: MarshalAs(UnmanagedType.I4)] 723 [return: MarshalAs(UnmanagedType.I4)]
390 int OnCacheComplete( 724 int OnCacheComplete(
391 int hrStatus 725 int hrStatus
392 ); 726 );
393 727
728 /// <summary>
729 /// See <see cref="IDefaultBootstrapperApplication.ExecuteBegin"/>.
730 /// </summary>
731 /// <param name="cExecutingPackages"></param>
732 /// <param name="fCancel"></param>
733 /// <returns></returns>
394 [PreserveSig] 734 [PreserveSig]
395 [return: MarshalAs(UnmanagedType.I4)] 735 [return: MarshalAs(UnmanagedType.I4)]
396 int OnExecuteBegin( 736 int OnExecuteBegin(
@@ -398,6 +738,16 @@ namespace WixToolset.Mba.Core
398 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 738 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
399 ); 739 );
400 740
741 /// <summary>
742 /// See <see cref="IDefaultBootstrapperApplication.ExecutePackageBegin"/>.
743 /// </summary>
744 /// <param name="wzPackageId"></param>
745 /// <param name="fExecute"></param>
746 /// <param name="action"></param>
747 /// <param name="uiLevel"></param>
748 /// <param name="fDisableExternalUiHandler"></param>
749 /// <param name="fCancel"></param>
750 /// <returns></returns>
401 [PreserveSig] 751 [PreserveSig]
402 [return: MarshalAs(UnmanagedType.I4)] 752 [return: MarshalAs(UnmanagedType.I4)]
403 int OnExecutePackageBegin( 753 int OnExecutePackageBegin(
@@ -409,6 +759,13 @@ namespace WixToolset.Mba.Core
409 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 759 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
410 ); 760 );
411 761
762 /// <summary>
763 /// See <see cref="IDefaultBootstrapperApplication.ExecutePatchTarget"/>.
764 /// </summary>
765 /// <param name="wzPackageId"></param>
766 /// <param name="wzTargetProductCode"></param>
767 /// <param name="fCancel"></param>
768 /// <returns></returns>
412 [PreserveSig] 769 [PreserveSig]
413 [return: MarshalAs(UnmanagedType.I4)] 770 [return: MarshalAs(UnmanagedType.I4)]
414 int OnExecutePatchTarget( 771 int OnExecutePatchTarget(
@@ -417,6 +774,14 @@ namespace WixToolset.Mba.Core
417 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 774 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
418 ); 775 );
419 776
777 /// <summary>
778 /// See <see cref="IDefaultBootstrapperApplication.ExecuteProgress"/>.
779 /// </summary>
780 /// <param name="wzPackageId"></param>
781 /// <param name="dwProgressPercentage"></param>
782 /// <param name="dwOverallPercentage"></param>
783 /// <param name="fCancel"></param>
784 /// <returns></returns>
420 [PreserveSig] 785 [PreserveSig]
421 [return: MarshalAs(UnmanagedType.I4)] 786 [return: MarshalAs(UnmanagedType.I4)]
422 int OnExecuteProgress( 787 int OnExecuteProgress(
@@ -426,6 +791,18 @@ namespace WixToolset.Mba.Core
426 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 791 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
427 ); 792 );
428 793
794 /// <summary>
795 /// See <see cref="IDefaultBootstrapperApplication.ExecuteMsiMessage"/>.
796 /// </summary>
797 /// <param name="wzPackageId"></param>
798 /// <param name="messageType"></param>
799 /// <param name="dwUIHint"></param>
800 /// <param name="wzMessage"></param>
801 /// <param name="cData"></param>
802 /// <param name="rgwzData"></param>
803 /// <param name="nRecommendation"></param>
804 /// <param name="pResult"></param>
805 /// <returns></returns>
429 [PreserveSig] 806 [PreserveSig]
430 [return: MarshalAs(UnmanagedType.I4)] 807 [return: MarshalAs(UnmanagedType.I4)]
431 int OnExecuteMsiMessage( 808 int OnExecuteMsiMessage(
@@ -439,6 +816,15 @@ namespace WixToolset.Mba.Core
439 [MarshalAs(UnmanagedType.I4)] ref Result pResult 816 [MarshalAs(UnmanagedType.I4)] ref Result pResult
440 ); 817 );
441 818
819 /// <summary>
820 /// See <see cref="IDefaultBootstrapperApplication.ExecuteFilesInUse"/>.
821 /// </summary>
822 /// <param name="wzPackageId"></param>
823 /// <param name="cFiles"></param>
824 /// <param name="rgwzFiles"></param>
825 /// <param name="nRecommendation"></param>
826 /// <param name="pResult"></param>
827 /// <returns></returns>
442 [PreserveSig] 828 [PreserveSig]
443 [return: MarshalAs(UnmanagedType.I4)] 829 [return: MarshalAs(UnmanagedType.I4)]
444 int OnExecuteFilesInUse( 830 int OnExecuteFilesInUse(
@@ -449,6 +835,15 @@ namespace WixToolset.Mba.Core
449 [MarshalAs(UnmanagedType.I4)] ref Result pResult 835 [MarshalAs(UnmanagedType.I4)] ref Result pResult
450 ); 836 );
451 837
838 /// <summary>
839 /// See <see cref="IDefaultBootstrapperApplication.ExecutePackageComplete"/>.
840 /// </summary>
841 /// <param name="wzPackageId"></param>
842 /// <param name="hrStatus"></param>
843 /// <param name="restart"></param>
844 /// <param name="recommendation"></param>
845 /// <param name="pAction"></param>
846 /// <returns></returns>
452 [PreserveSig] 847 [PreserveSig]
453 [return: MarshalAs(UnmanagedType.I4)] 848 [return: MarshalAs(UnmanagedType.I4)]
454 int OnExecutePackageComplete( 849 int OnExecutePackageComplete(
@@ -459,24 +854,47 @@ namespace WixToolset.Mba.Core
459 [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION pAction 854 [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION pAction
460 ); 855 );
461 856
857 /// <summary>
858 /// See <see cref="IDefaultBootstrapperApplication.ExecuteComplete"/>.
859 /// </summary>
860 /// <param name="hrStatus"></param>
861 /// <returns></returns>
462 [PreserveSig] 862 [PreserveSig]
463 [return: MarshalAs(UnmanagedType.I4)] 863 [return: MarshalAs(UnmanagedType.I4)]
464 int OnExecuteComplete( 864 int OnExecuteComplete(
465 int hrStatus 865 int hrStatus
466 ); 866 );
467 867
868 /// <summary>
869 /// See <see cref="IDefaultBootstrapperApplication.UnregisterBegin"/>.
870 /// </summary>
871 /// <param name="fCancel"></param>
872 /// <returns></returns>
468 [PreserveSig] 873 [PreserveSig]
469 [return: MarshalAs(UnmanagedType.I4)] 874 [return: MarshalAs(UnmanagedType.I4)]
470 int OnUnregisterBegin( 875 int OnUnregisterBegin(
471 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 876 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
472 ); 877 );
473 878
879 /// <summary>
880 /// See <see cref="IDefaultBootstrapperApplication.UnregisterComplete"/>.
881 /// </summary>
882 /// <param name="hrStatus"></param>
883 /// <returns></returns>
474 [PreserveSig] 884 [PreserveSig]
475 [return: MarshalAs(UnmanagedType.I4)] 885 [return: MarshalAs(UnmanagedType.I4)]
476 int OnUnregisterComplete( 886 int OnUnregisterComplete(
477 int hrStatus 887 int hrStatus
478 ); 888 );
479 889
890 /// <summary>
891 /// See <see cref="IDefaultBootstrapperApplication.ApplyComplete"/>.
892 /// </summary>
893 /// <param name="hrStatus"></param>
894 /// <param name="restart"></param>
895 /// <param name="recommendation"></param>
896 /// <param name="pAction"></param>
897 /// <returns></returns>
480 [PreserveSig] 898 [PreserveSig]
481 [return: MarshalAs(UnmanagedType.I4)] 899 [return: MarshalAs(UnmanagedType.I4)]
482 int OnApplyComplete( 900 int OnApplyComplete(
@@ -486,12 +904,23 @@ namespace WixToolset.Mba.Core
486 [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_APPLYCOMPLETE_ACTION pAction 904 [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_APPLYCOMPLETE_ACTION pAction
487 ); 905 );
488 906
907 /// <summary>
908 /// See <see cref="IDefaultBootstrapperApplication.LaunchApprovedExeBegin"/>.
909 /// </summary>
910 /// <param name="fCancel"></param>
911 /// <returns></returns>
489 [PreserveSig] 912 [PreserveSig]
490 [return: MarshalAs(UnmanagedType.I4)] 913 [return: MarshalAs(UnmanagedType.I4)]
491 int OnLaunchApprovedExeBegin( 914 int OnLaunchApprovedExeBegin(
492 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 915 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
493 ); 916 );
494 917
918 /// <summary>
919 /// See <see cref="IDefaultBootstrapperApplication.LaunchApprovedExeComplete"/>.
920 /// </summary>
921 /// <param name="hrStatus"></param>
922 /// <param name="processId"></param>
923 /// <returns></returns>
495 [PreserveSig] 924 [PreserveSig]
496 [return: MarshalAs(UnmanagedType.I4)] 925 [return: MarshalAs(UnmanagedType.I4)]
497 int OnLaunchApprovedExeComplete( 926 int OnLaunchApprovedExeComplete(
@@ -499,6 +928,12 @@ namespace WixToolset.Mba.Core
499 int processId 928 int processId
500 ); 929 );
501 930
931 /// <summary>
932 /// See <see cref="IDefaultBootstrapperApplication.BeginMsiTransactionBegin"/>.
933 /// </summary>
934 /// <param name="wzTransactionId"></param>
935 /// <param name="fCancel"></param>
936 /// <returns></returns>
502 [PreserveSig] 937 [PreserveSig]
503 [return: MarshalAs(UnmanagedType.I4)] 938 [return: MarshalAs(UnmanagedType.I4)]
504 int OnBeginMsiTransactionBegin( 939 int OnBeginMsiTransactionBegin(
@@ -506,6 +941,12 @@ namespace WixToolset.Mba.Core
506 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 941 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
507 ); 942 );
508 943
944 /// <summary>
945 /// See <see cref="IDefaultBootstrapperApplication.BeginMsiTransactionComplete"/>.
946 /// </summary>
947 /// <param name="wzTransactionId"></param>
948 /// <param name="hrStatus"></param>
949 /// <returns></returns>
509 [PreserveSig] 950 [PreserveSig]
510 [return: MarshalAs(UnmanagedType.I4)] 951 [return: MarshalAs(UnmanagedType.I4)]
511 int OnBeginMsiTransactionComplete( 952 int OnBeginMsiTransactionComplete(
@@ -513,6 +954,12 @@ namespace WixToolset.Mba.Core
513 int hrStatus 954 int hrStatus
514 ); 955 );
515 956
957 /// <summary>
958 /// See <see cref="IDefaultBootstrapperApplication.CommitMsiTransactionBegin"/>.
959 /// </summary>
960 /// <param name="wzTransactionId"></param>
961 /// <param name="fCancel"></param>
962 /// <returns></returns>
516 [PreserveSig] 963 [PreserveSig]
517 [return: MarshalAs(UnmanagedType.I4)] 964 [return: MarshalAs(UnmanagedType.I4)]
518 int OnCommitMsiTransactionBegin( 965 int OnCommitMsiTransactionBegin(
@@ -520,6 +967,12 @@ namespace WixToolset.Mba.Core
520 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 967 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
521 ); 968 );
522 969
970 /// <summary>
971 /// See <see cref="IDefaultBootstrapperApplication.CommitMsiTransactionComplete"/>.
972 /// </summary>
973 /// <param name="wzTransactionId"></param>
974 /// <param name="hrStatus"></param>
975 /// <returns></returns>
523 [PreserveSig] 976 [PreserveSig]
524 [return: MarshalAs(UnmanagedType.I4)] 977 [return: MarshalAs(UnmanagedType.I4)]
525 int OnCommitMsiTransactionComplete( 978 int OnCommitMsiTransactionComplete(
@@ -527,12 +980,23 @@ namespace WixToolset.Mba.Core
527 int hrStatus 980 int hrStatus
528 ); 981 );
529 982
983 /// <summary>
984 /// See <see cref="IDefaultBootstrapperApplication.RollbackMsiTransactionBegin"/>.
985 /// </summary>
986 /// <param name="wzTransactionId"></param>
987 /// <returns></returns>
530 [PreserveSig] 988 [PreserveSig]
531 [return: MarshalAs(UnmanagedType.I4)] 989 [return: MarshalAs(UnmanagedType.I4)]
532 int OnRollbackMsiTransactionBegin( 990 int OnRollbackMsiTransactionBegin(
533 [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId 991 [MarshalAs(UnmanagedType.LPWStr)] string wzTransactionId
534 ); 992 );
535 993
994 /// <summary>
995 /// See <see cref="IDefaultBootstrapperApplication.RollbackMsiTransactionComplete"/>.
996 /// </summary>
997 /// <param name="wzTransactionId"></param>
998 /// <param name="hrStatus"></param>
999 /// <returns></returns>
536 [PreserveSig] 1000 [PreserveSig]
537 [return: MarshalAs(UnmanagedType.I4)] 1001 [return: MarshalAs(UnmanagedType.I4)]
538 int OnRollbackMsiTransactionComplete( 1002 int OnRollbackMsiTransactionComplete(
@@ -540,28 +1004,54 @@ namespace WixToolset.Mba.Core
540 int hrStatus 1004 int hrStatus
541 ); 1005 );
542 1006
1007 /// <summary>
1008 /// See <see cref="IDefaultBootstrapperApplication.PauseAutomaticUpdatesBegin"/>.
1009 /// </summary>
1010 /// <returns></returns>
543 [PreserveSig] 1011 [PreserveSig]
544 [return: MarshalAs(UnmanagedType.I4)] 1012 [return: MarshalAs(UnmanagedType.I4)]
545 int OnPauseAutomaticUpdatesBegin( 1013 int OnPauseAutomaticUpdatesBegin(
546 ); 1014 );
547 1015
1016 /// <summary>
1017 /// See <see cref="IDefaultBootstrapperApplication.PauseAutomaticUpdatesComplete"/>.
1018 /// </summary>
1019 /// <param name="hrStatus"></param>
1020 /// <returns></returns>
548 [PreserveSig] 1021 [PreserveSig]
549 [return: MarshalAs(UnmanagedType.I4)] 1022 [return: MarshalAs(UnmanagedType.I4)]
550 int OnPauseAutomaticUpdatesComplete( 1023 int OnPauseAutomaticUpdatesComplete(
551 int hrStatus 1024 int hrStatus
552 ); 1025 );
553 1026
1027 /// <summary>
1028 /// See <see cref="IDefaultBootstrapperApplication.SystemRestorePointBegin"/>.
1029 /// </summary>
1030 /// <returns></returns>
554 [PreserveSig] 1031 [PreserveSig]
555 [return: MarshalAs(UnmanagedType.I4)] 1032 [return: MarshalAs(UnmanagedType.I4)]
556 int OnSystemRestorePointBegin( 1033 int OnSystemRestorePointBegin(
557 ); 1034 );
558 1035
1036 /// <summary>
1037 /// See <see cref="IDefaultBootstrapperApplication.SystemRestorePointComplete"/>.
1038 /// </summary>
1039 /// <param name="hrStatus"></param>
1040 /// <returns></returns>
559 [PreserveSig] 1041 [PreserveSig]
560 [return: MarshalAs(UnmanagedType.I4)] 1042 [return: MarshalAs(UnmanagedType.I4)]
561 int OnSystemRestorePointComplete( 1043 int OnSystemRestorePointComplete(
562 int hrStatus 1044 int hrStatus
563 ); 1045 );
564 1046
1047 /// <summary>
1048 /// Low level method that is called directly from the engine.
1049 /// </summary>
1050 /// <param name="message"></param>
1051 /// <param name="pvArgs"></param>
1052 /// <param name="pvResults"></param>
1053 /// <param name="pvContext"></param>
1054 /// <returns></returns>
565 [PreserveSig] 1055 [PreserveSig]
566 [return: MarshalAs(UnmanagedType.I4)] 1056 [return: MarshalAs(UnmanagedType.I4)]
567 int BAProc( 1057 int BAProc(
@@ -571,6 +1061,14 @@ namespace WixToolset.Mba.Core
571 IntPtr pvContext 1061 IntPtr pvContext
572 ); 1062 );
573 1063
1064 /// <summary>
1065 /// Low level method that is called directly from the engine.
1066 /// </summary>
1067 /// <param name="message"></param>
1068 /// <param name="pvArgs"></param>
1069 /// <param name="pvResults"></param>
1070 /// <param name="phr"></param>
1071 /// <param name="pvContext"></param>
574 void BAProcFallback( 1072 void BAProcFallback(
575 int message, 1073 int message,
576 IntPtr pvArgs, 1074 IntPtr pvArgs,
@@ -585,34 +1083,131 @@ namespace WixToolset.Mba.Core
585 /// </summary> 1083 /// </summary>
586 public enum Display 1084 public enum Display
587 { 1085 {
1086 /// <summary>
1087 ///
1088 /// </summary>
588 Unknown, 1089 Unknown,
1090
1091 /// <summary>
1092 ///
1093 /// </summary>
589 Embedded, 1094 Embedded,
1095
1096 /// <summary>
1097 ///
1098 /// </summary>
590 None, 1099 None,
1100
1101 /// <summary>
1102 ///
1103 /// </summary>
591 Passive, 1104 Passive,
1105
1106 /// <summary>
1107 ///
1108 /// </summary>
592 Full, 1109 Full,
593 } 1110 }
594 1111
595 /// <summary> 1112 /// <summary>
596 /// Messages from Windows Installer. 1113 /// Messages from Windows Installer (msi.h).
597 /// </summary> 1114 /// </summary>
598 public enum InstallMessage 1115 public enum InstallMessage
599 { 1116 {
1117 /// <summary>
1118 /// premature termination, possibly fatal OOM
1119 /// </summary>
600 FatalExit, 1120 FatalExit,
1121
1122 /// <summary>
1123 /// formatted error message
1124 /// </summary>
601 Error = 0x01000000, 1125 Error = 0x01000000,
1126
1127 /// <summary>
1128 /// formatted warning message
1129 /// </summary>
602 Warning = 0x02000000, 1130 Warning = 0x02000000,
1131
1132 /// <summary>
1133 /// user request message
1134 /// </summary>
603 User = 0x03000000, 1135 User = 0x03000000,
1136
1137 /// <summary>
1138 /// informative message for log
1139 /// </summary>
604 Info = 0x04000000, 1140 Info = 0x04000000,
1141
1142 /// <summary>
1143 /// list of files in use that need to be replaced
1144 /// </summary>
605 FilesInUse = 0x05000000, 1145 FilesInUse = 0x05000000,
1146
1147 /// <summary>
1148 /// request to determine a valid source location
1149 /// </summary>
606 ResolveSource = 0x06000000, 1150 ResolveSource = 0x06000000,
1151
1152 /// <summary>
1153 /// insufficient disk space message
1154 /// </summary>
607 OutOfDiskSpace = 0x07000000, 1155 OutOfDiskSpace = 0x07000000,
1156
1157 /// <summary>
1158 /// start of action: action name &amp; description
1159 /// </summary>
608 ActionStart = 0x08000000, 1160 ActionStart = 0x08000000,
1161
1162 /// <summary>
1163 /// formatted data associated with individual action item
1164 /// </summary>
609 ActionData = 0x09000000, 1165 ActionData = 0x09000000,
1166
1167 /// <summary>
1168 /// progress gauge info: units so far, total
1169 /// </summary>
610 Progress = 0x0a000000, 1170 Progress = 0x0a000000,
1171
1172 /// <summary>
1173 /// product info for dialog: language Id, dialog caption
1174 /// </summary>
611 CommonData = 0x0b000000, 1175 CommonData = 0x0b000000,
1176
1177 /// <summary>
1178 /// sent prior to UI initialization, no string data
1179 /// </summary>
612 Initialize = 0x0c000000, 1180 Initialize = 0x0c000000,
1181
1182 /// <summary>
1183 /// sent after UI termination, no string data
1184 /// </summary>
613 Terminate = 0x0d000000, 1185 Terminate = 0x0d000000,
1186
1187 /// <summary>
1188 /// sent prior to display or authored dialog or wizard
1189 /// </summary>
614 ShowDialog = 0x0e000000, 1190 ShowDialog = 0x0e000000,
1191
1192 /// <summary>
1193 /// log only, to log performance number like action time
1194 /// </summary>
1195 Performance = 0x0f000000,
1196
1197 /// <summary>
1198 /// the list of apps that the user can request Restart Manager to shut down and restart
1199 /// </summary>
615 RMFilesInUse = 0x19000000, 1200 RMFilesInUse = 0x19000000,
1201
1202 /// <summary>
1203 /// sent prior to server-side install of a product
1204 /// </summary>
1205 InstallStart = 0x1a000000,
1206
1207 /// <summary>
1208 /// sent after server-side install
1209 /// </summary>
1210 InstallEnd = 0x1B000000,
616 } 1211 }
617 1212
618 /// <summary> 1213 /// <summary>
@@ -620,30 +1215,100 @@ namespace WixToolset.Mba.Core
620 /// </summary> 1215 /// </summary>
621 public enum Restart 1216 public enum Restart
622 { 1217 {
1218 /// <summary>
1219 ///
1220 /// </summary>
623 Unknown, 1221 Unknown,
1222
1223 /// <summary>
1224 ///
1225 /// </summary>
624 Never, 1226 Never,
1227
1228 /// <summary>
1229 ///
1230 /// </summary>
625 Prompt, 1231 Prompt,
1232
1233 /// <summary>
1234 ///
1235 /// </summary>
626 Automatic, 1236 Automatic,
1237
1238 /// <summary>
1239 ///
1240 /// </summary>
627 Always, 1241 Always,
628 } 1242 }
629 1243
630 /// <summary> 1244 /// <summary>
631 /// Result codes. 1245 /// Result codes (based on Dialog Box Command IDs from WinUser.h).
632 /// </summary> 1246 /// </summary>
633 public enum Result 1247 public enum Result
634 { 1248 {
1249 /// <summary>
1250 ///
1251 /// </summary>
635 Error = -1, 1252 Error = -1,
1253
1254 /// <summary>
1255 ///
1256 /// </summary>
636 None, 1257 None,
1258
1259 /// <summary>
1260 ///
1261 /// </summary>
637 Ok, 1262 Ok,
1263
1264 /// <summary>
1265 ///
1266 /// </summary>
638 Cancel, 1267 Cancel,
1268
1269 /// <summary>
1270 ///
1271 /// </summary>
639 Abort, 1272 Abort,
1273
1274 /// <summary>
1275 ///
1276 /// </summary>
640 Retry, 1277 Retry,
1278
1279 /// <summary>
1280 ///
1281 /// </summary>
641 Ignore, 1282 Ignore,
1283
1284 /// <summary>
1285 ///
1286 /// </summary>
642 Yes, 1287 Yes,
1288
1289 /// <summary>
1290 ///
1291 /// </summary>
643 No, 1292 No,
1293
1294 /// <summary>
1295 /// /
1296 /// </summary>
644 Close, 1297 Close,
1298
1299 /// <summary>
1300 ///
1301 /// </summary>
645 Help, 1302 Help,
1303
1304 /// <summary>
1305 ///
1306 /// </summary>
646 TryAgain, 1307 TryAgain,
1308
1309 /// <summary>
1310 ///
1311 /// </summary>
647 Continue, 1312 Continue,
648 } 1313 }
649 1314
@@ -652,6 +1317,9 @@ namespace WixToolset.Mba.Core
652 /// </summary> 1317 /// </summary>
653 public enum ResumeType 1318 public enum ResumeType
654 { 1319 {
1320 /// <summary>
1321 ///
1322 /// </summary>
655 None, 1323 None,
656 1324
657 /// <summary> 1325 /// <summary>
@@ -721,8 +1389,14 @@ namespace WixToolset.Mba.Core
721 Apply, 1389 Apply,
722 }; 1390 };
723 1391
1392 /// <summary>
1393 /// The calculated operation for the related bundle.
1394 /// </summary>
724 public enum RelatedOperation 1395 public enum RelatedOperation
725 { 1396 {
1397 /// <summary>
1398 ///
1399 /// </summary>
726 None, 1400 None,
727 1401
728 /// <summary> 1402 /// <summary>
@@ -803,12 +1477,39 @@ namespace WixToolset.Mba.Core
803 /// </summary> 1477 /// </summary>
804 public enum RelationType 1478 public enum RelationType
805 { 1479 {
1480 /// <summary>
1481 ///
1482 /// </summary>
806 None, 1483 None,
1484
1485 /// <summary>
1486 ///
1487 /// </summary>
807 Detect, 1488 Detect,
1489
1490 /// <summary>
1491 ///
1492 /// </summary>
808 Upgrade, 1493 Upgrade,
1494
1495 /// <summary>
1496 ///
1497 /// </summary>
809 Addon, 1498 Addon,
1499
1500 /// <summary>
1501 ///
1502 /// </summary>
810 Patch, 1503 Patch,
1504
1505 /// <summary>
1506 ///
1507 /// </summary>
811 Dependent, 1508 Dependent,
1509
1510 /// <summary>
1511 ///
1512 /// </summary>
812 Update, 1513 Update,
813 } 1514 }
814 1515
@@ -840,72 +1541,161 @@ namespace WixToolset.Mba.Core
840 } 1541 }
841 1542
842 /// <summary> 1543 /// <summary>
843 /// The available actions for OnApplyComplete. 1544 /// The available actions for <see cref="IDefaultBootstrapperApplication.ApplyComplete"/>.
844 /// </summary> 1545 /// </summary>
845 public enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION 1546 public enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION
846 { 1547 {
1548 /// <summary>
1549 ///
1550 /// </summary>
847 None, 1551 None,
1552
1553 /// <summary>
1554 /// Instructs the engine to restart.
1555 /// The engine will not launch again after the machine is rebooted.
1556 /// Ignored if reboot was already initiated by <see cref="IDefaultBootstrapperApplication.ExecutePackageComplete"/>.
1557 /// </summary>
848 Restart, 1558 Restart,
849 } 1559 }
850 1560
851 /// <summary> 1561 /// <summary>
852 /// The available actions for OnCacheAcquireComplete. 1562 /// The available actions for <see cref="IDefaultBootstrapperApplication.CacheAcquireComplete"/>.
853 /// </summary> 1563 /// </summary>
854 public enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION 1564 public enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION
855 { 1565 {
1566 /// <summary>
1567 ///
1568 /// </summary>
856 None, 1569 None,
1570
1571 /// <summary>
1572 /// Instructs the engine to try the acquisition of the package again.
1573 /// Ignored if hrStatus is a success.
1574 /// </summary>
857 Retry, 1575 Retry,
858 } 1576 }
859 1577
860 /// <summary> 1578 /// <summary>
861 /// The available actions for OnCachePackageComplete. 1579 /// The available actions for <see cref="IDefaultBootstrapperApplication.CachePackageComplete"/>.
862 /// </summary> 1580 /// </summary>
863 public enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION 1581 public enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION
864 { 1582 {
1583 /// <summary>
1584 ///
1585 /// </summary>
865 None, 1586 None,
1587
1588 /// <summary>
1589 /// Instructs the engine to ignore non-vital package failures and continue with the caching.
1590 /// Ignored if hrStatus is a success or the package is vital.
1591 /// </summary>
866 Ignore, 1592 Ignore,
1593
1594 /// <summary>
1595 /// Instructs the engine to try the acquisition and verification of the package again.
1596 /// Ignored if hrStatus is a success.
1597 /// </summary>
867 Retry, 1598 Retry,
868 } 1599 }
869 1600
870 /// <summary> 1601 /// <summary>
871 /// The available actions for OnCacheVerifyComplete. 1602 /// The available actions for <see cref="IDefaultBootstrapperApplication.CacheVerifyComplete"/>.
872 /// </summary> 1603 /// </summary>
873 public enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION 1604 public enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION
874 { 1605 {
1606 /// <summary>
1607 ///
1608 /// </summary>
875 None, 1609 None,
1610
1611 /// <summary>
1612 /// Ignored if hrStatus is a success.
1613 /// </summary>
876 RetryVerification, 1614 RetryVerification,
1615
1616 /// <summary>
1617 /// Ignored if hrStatus is a success.
1618 /// </summary>
877 RetryAcquisition, 1619 RetryAcquisition,
878 } 1620 }
879 1621
880 /// <summary> 1622 /// <summary>
881 /// The available actions for OnExecutePackageComplete. 1623 /// The available actions for <see cref="IDefaultBootstrapperApplication.ExecutePackageComplete"/>.
882 /// </summary> 1624 /// </summary>
883 public enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION 1625 public enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION
884 { 1626 {
1627 /// <summary>
1628 ///
1629 /// </summary>
885 None, 1630 None,
1631
1632 /// <summary>
1633 /// Instructs the engine to ignore non-vital package failures and continue with the install.
1634 /// Ignored if hrStatus is a success or the package is vital.
1635 /// </summary>
886 Ignore, 1636 Ignore,
1637
1638 /// <summary>
1639 /// Instructs the engine to try the execution of the package again.
1640 /// Ignored if hrStatus is a success.
1641 /// </summary>
887 Retry, 1642 Retry,
1643
1644 /// <summary>
1645 /// Instructs the engine to stop processing the chain and restart.
1646 /// The engine will launch again after the machine is restarted.
1647 /// </summary>
888 Restart, 1648 Restart,
1649
1650 /// <summary>
1651 /// Instructs the engine to stop processing the chain and suspend the current state.
1652 /// </summary>
889 Suspend, 1653 Suspend,
890 } 1654 }
891 1655
892 /// <summary> 1656 /// <summary>
893 /// The available actions for OnResolveSource. 1657 /// The available actions for <see cref="IDefaultBootstrapperApplication.ResolveSource"/>.
894 /// </summary> 1658 /// </summary>
895 public enum BOOTSTRAPPER_RESOLVESOURCE_ACTION 1659 public enum BOOTSTRAPPER_RESOLVESOURCE_ACTION
896 { 1660 {
1661 /// <summary>
1662 /// Instructs the engine that the source can't be found.
1663 /// </summary>
897 None, 1664 None,
1665
1666 /// <summary>
1667 /// Instructs the engine to try the local source again.
1668 /// </summary>
898 Retry, 1669 Retry,
1670
1671 /// <summary>
1672 /// Instructs the engine to try the download source.
1673 /// </summary>
899 Download, 1674 Download,
900 } 1675 }
901 1676
902 /// <summary> 1677 /// <summary>
903 /// The available actions for OnShutdown. 1678 /// The available actions for <see cref="IDefaultBootstrapperApplication.Shutdown"/>.
904 /// </summary> 1679 /// </summary>
905 public enum BOOTSTRAPPER_SHUTDOWN_ACTION 1680 public enum BOOTSTRAPPER_SHUTDOWN_ACTION
906 { 1681 {
1682 /// <summary>
1683 ///
1684 /// </summary>
907 None, 1685 None,
1686
1687 /// <summary>
1688 /// Instructs the engine to restart.
1689 /// The engine will not launch again after the machine is rebooted.
1690 /// Ignored if reboot was already initiated by <see cref="IDefaultBootstrapperApplication.ExecutePackageComplete"/>.
1691 /// </summary>
908 Restart, 1692 Restart,
1693
1694 /// <summary>
1695 /// Instructs the engine to unload the bootstrapper application and
1696 /// restart the engine which will load the bootstrapper application again.
1697 /// Typically used to switch from a native bootstrapper application to a managed one.
1698 /// </summary>
909 ReloadBootstrapper, 1699 ReloadBootstrapper,
910 } 1700 }
911 1701
diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplicationData.cs b/src/WixToolset.Mba.Core/IBootstrapperApplicationData.cs
index a19a34b5..23a1c8a3 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperApplicationData.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperApplicationData.cs
@@ -4,9 +4,19 @@ namespace WixToolset.Mba.Core
4{ 4{
5 using System.IO; 5 using System.IO;
6 6
7 /// <summary>
8 /// Interface for BootstrapperApplicationData.xml.
9 /// </summary>
7 public interface IBootstrapperApplicationData 10 public interface IBootstrapperApplicationData
8 { 11 {
12 /// <summary>
13 /// The BootstrapperApplicationData.xml file.
14 /// </summary>
9 FileInfo BADataFile { get; } 15 FileInfo BADataFile { get; }
16
17 /// <summary>
18 /// The BA manifest.
19 /// </summary>
10 IBundleInfo Bundle { get; } 20 IBundleInfo Bundle { get; }
11 } 21 }
12} \ No newline at end of file 22} \ No newline at end of file
diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs b/src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs
index b9c62a99..0f9193d0 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs
@@ -6,12 +6,20 @@ namespace WixToolset.Mba.Core
6 using System.CodeDom.Compiler; 6 using System.CodeDom.Compiler;
7 using System.Runtime.InteropServices; 7 using System.Runtime.InteropServices;
8 8
9 /// <summary>
10 /// Interface used by WixToolset.Mba.Host to dynamically load the BA.
11 /// </summary>
9 [ComVisible(true)] 12 [ComVisible(true)]
10 [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 13 [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
11 [Guid("2965A12F-AC7B-43A0-85DF-E4B2168478A4")] 14 [Guid("2965A12F-AC7B-43A0-85DF-E4B2168478A4")]
12 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")] 15 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
13 public interface IBootstrapperApplicationFactory 16 public interface IBootstrapperApplicationFactory
14 { 17 {
18 /// <summary>
19 /// Low level method called by the native host.
20 /// </summary>
21 /// <param name="pArgs"></param>
22 /// <param name="pResults"></param>
15 void Create( 23 void Create(
16 IntPtr pArgs, 24 IntPtr pArgs,
17 IntPtr pResults 25 IntPtr pResults
@@ -21,7 +29,7 @@ namespace WixToolset.Mba.Core
21 [Serializable] 29 [Serializable]
22 [StructLayout(LayoutKind.Sequential)] 30 [StructLayout(LayoutKind.Sequential)]
23 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")] 31 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
24 public struct Command 32 internal struct Command
25 { 33 {
26 // Strings must be declared as pointers so that Marshaling doesn't free them. 34 // Strings must be declared as pointers so that Marshaling doesn't free them.
27 [MarshalAs(UnmanagedType.I4)] internal int cbSize; 35 [MarshalAs(UnmanagedType.I4)] internal int cbSize;
@@ -55,25 +63,4 @@ namespace WixToolset.Mba.Core
55 Marshal.PtrToStringUni(this.wzBootstrapperApplicationDataPath)); 63 Marshal.PtrToStringUni(this.wzBootstrapperApplicationDataPath));
56 } 64 }
57 } 65 }
58
59 [Serializable]
60 [StructLayout(LayoutKind.Sequential)]
61 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
62 public struct BootstrapperCreateArgs
63 {
64 [MarshalAs(UnmanagedType.I4)] public readonly int cbSize;
65 [MarshalAs(UnmanagedType.I8)] public readonly long qwEngineAPIVersion;
66 public readonly IntPtr pfnBootstrapperEngineProc;
67 public readonly IntPtr pvBootstrapperEngineProcContext;
68 public readonly IntPtr pCommand;
69
70 public BootstrapperCreateArgs(long version, IntPtr pEngineProc, IntPtr pEngineContext, IntPtr pCommand)
71 {
72 this.cbSize = Marshal.SizeOf(typeof(BootstrapperCreateArgs));
73 this.qwEngineAPIVersion = version;
74 this.pfnBootstrapperEngineProc = pEngineProc;
75 this.pvBootstrapperEngineProcContext = pEngineContext;
76 this.pCommand = pCommand;
77 }
78 }
79} 66}
diff --git a/src/WixToolset.Mba.Core/IBootstrapperCommand.cs b/src/WixToolset.Mba.Core/IBootstrapperCommand.cs
index 889db529..e861813f 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperCommand.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperCommand.cs
@@ -33,6 +33,9 @@ namespace WixToolset.Mba.Core
33 /// <exception type="Win32Exception">The command line could not be parsed into an array.</exception> 33 /// <exception type="Win32Exception">The command line could not be parsed into an array.</exception>
34 string[] CommandLineArgs { get; } 34 string[] CommandLineArgs { get; }
35 35
36 /// <summary>
37 /// Hint for the initial visibility of the window.
38 /// </summary>
36 int CmdShow { get; } 39 int CmdShow { get; }
37 40
38 /// <summary> 41 /// <summary>
diff --git a/src/WixToolset.Mba.Core/IBootstrapperEngine.cs b/src/WixToolset.Mba.Core/IBootstrapperEngine.cs
index 5cc42071..ddf223df 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperEngine.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperEngine.cs
@@ -16,16 +16,33 @@ namespace WixToolset.Mba.Core
16 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")] 16 [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
17 public interface IBootstrapperEngine 17 public interface IBootstrapperEngine
18 { 18 {
19 /// <summary>
20 /// See <see cref="IEngine.PackageCount"/>.
21 /// </summary>
22 /// <param name="pcPackages"></param>
19 void GetPackageCount( 23 void GetPackageCount(
20 [MarshalAs(UnmanagedType.U4)] out int pcPackages 24 [MarshalAs(UnmanagedType.U4)] out int pcPackages
21 ); 25 );
22 26
27 /// <summary>
28 /// See <see cref="IEngine.GetVariableNumeric(string)"/>.
29 /// </summary>
30 /// <param name="wzVariable"></param>
31 /// <param name="pllValue"></param>
32 /// <returns></returns>
23 [PreserveSig] 33 [PreserveSig]
24 int GetVariableNumeric( 34 int GetVariableNumeric(
25 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 35 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
26 out long pllValue 36 out long pllValue
27 ); 37 );
28 38
39 /// <summary>
40 /// See <see cref="IEngine.GetVariableString(string)"/>.
41 /// </summary>
42 /// <param name="wzVariable"></param>
43 /// <param name="wzValue"></param>
44 /// <param name="pcchValue"></param>
45 /// <returns></returns>
29 [PreserveSig] 46 [PreserveSig]
30 int GetVariableString( 47 int GetVariableString(
31 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 48 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
@@ -33,6 +50,13 @@ namespace WixToolset.Mba.Core
33 [MarshalAs(UnmanagedType.U4)] ref int pcchValue 50 [MarshalAs(UnmanagedType.U4)] ref int pcchValue
34 ); 51 );
35 52
53 /// <summary>
54 /// See <see cref="IEngine.GetVariableVersion(string)"/>.
55 /// </summary>
56 /// <param name="wzVariable"></param>
57 /// <param name="wzValue"></param>
58 /// <param name="pcchValue"></param>
59 /// <returns></returns>
36 [PreserveSig] 60 [PreserveSig]
37 int GetVariableVersion( 61 int GetVariableVersion(
38 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 62 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
@@ -40,6 +64,13 @@ namespace WixToolset.Mba.Core
40 [MarshalAs(UnmanagedType.U4)] ref int pcchValue 64 [MarshalAs(UnmanagedType.U4)] ref int pcchValue
41 ); 65 );
42 66
67 /// <summary>
68 /// See <see cref="IEngine.FormatString(string)"/>.
69 /// </summary>
70 /// <param name="wzIn"></param>
71 /// <param name="wzOut"></param>
72 /// <param name="pcchOut"></param>
73 /// <returns></returns>
43 [PreserveSig] 74 [PreserveSig]
44 int FormatString( 75 int FormatString(
45 [MarshalAs(UnmanagedType.LPWStr)] string wzIn, 76 [MarshalAs(UnmanagedType.LPWStr)] string wzIn,
@@ -47,6 +78,13 @@ namespace WixToolset.Mba.Core
47 [MarshalAs(UnmanagedType.U4)] ref int pcchOut 78 [MarshalAs(UnmanagedType.U4)] ref int pcchOut
48 ); 79 );
49 80
81 /// <summary>
82 /// See <see cref="IEngine.EscapeString(string)"/>.
83 /// </summary>
84 /// <param name="wzIn"></param>
85 /// <param name="wzOut"></param>
86 /// <param name="pcchOut"></param>
87 /// <returns></returns>
50 [PreserveSig] 88 [PreserveSig]
51 int EscapeString( 89 int EscapeString(
52 [MarshalAs(UnmanagedType.LPWStr)] string wzIn, 90 [MarshalAs(UnmanagedType.LPWStr)] string wzIn,
@@ -54,16 +92,33 @@ namespace WixToolset.Mba.Core
54 [MarshalAs(UnmanagedType.U4)] ref int pcchOut 92 [MarshalAs(UnmanagedType.U4)] ref int pcchOut
55 ); 93 );
56 94
95 /// <summary>
96 /// See <see cref="IEngine.EvaluateCondition(string)"/>.
97 /// </summary>
98 /// <param name="wzCondition"></param>
99 /// <param name="pf"></param>
57 void EvaluateCondition( 100 void EvaluateCondition(
58 [MarshalAs(UnmanagedType.LPWStr)] string wzCondition, 101 [MarshalAs(UnmanagedType.LPWStr)] string wzCondition,
59 [MarshalAs(UnmanagedType.Bool)] out bool pf 102 [MarshalAs(UnmanagedType.Bool)] out bool pf
60 ); 103 );
61 104
105 /// <summary>
106 /// See <see cref="IEngine.Log(LogLevel, string)"/>.
107 /// </summary>
108 /// <param name="level"></param>
109 /// <param name="wzMessage"></param>
62 void Log( 110 void Log(
63 [MarshalAs(UnmanagedType.U4)] LogLevel level, 111 [MarshalAs(UnmanagedType.U4)] LogLevel level,
64 [MarshalAs(UnmanagedType.LPWStr)] string wzMessage 112 [MarshalAs(UnmanagedType.LPWStr)] string wzMessage
65 ); 113 );
66 114
115 /// <summary>
116 /// See <see cref="IEngine.SendEmbeddedError(int, string, int)"/>.
117 /// </summary>
118 /// <param name="dwErrorCode"></param>
119 /// <param name="wzMessage"></param>
120 /// <param name="dwUIHint"></param>
121 /// <param name="pnResult"></param>
67 void SendEmbeddedError( 122 void SendEmbeddedError(
68 [MarshalAs(UnmanagedType.U4)] int dwErrorCode, 123 [MarshalAs(UnmanagedType.U4)] int dwErrorCode,
69 [MarshalAs(UnmanagedType.LPWStr)] string wzMessage, 124 [MarshalAs(UnmanagedType.LPWStr)] string wzMessage,
@@ -71,12 +126,27 @@ namespace WixToolset.Mba.Core
71 [MarshalAs(UnmanagedType.I4)] out int pnResult 126 [MarshalAs(UnmanagedType.I4)] out int pnResult
72 ); 127 );
73 128
129 /// <summary>
130 /// See <see cref="IEngine.SendEmbeddedProgress(int, int)"/>.
131 /// </summary>
132 /// <param name="dwProgressPercentage"></param>
133 /// <param name="dwOverallProgressPercentage"></param>
134 /// <param name="pnResult"></param>
74 void SendEmbeddedProgress( 135 void SendEmbeddedProgress(
75 [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage, 136 [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
76 [MarshalAs(UnmanagedType.U4)] int dwOverallProgressPercentage, 137 [MarshalAs(UnmanagedType.U4)] int dwOverallProgressPercentage,
77 [MarshalAs(UnmanagedType.I4)] out int pnResult 138 [MarshalAs(UnmanagedType.I4)] out int pnResult
78 ); 139 );
79 140
141 /// <summary>
142 /// See <see cref="IEngine.SetUpdate(string, string, long, UpdateHashType, byte[])"/>.
143 /// </summary>
144 /// <param name="wzLocalSource"></param>
145 /// <param name="wzDownloadSource"></param>
146 /// <param name="qwValue"></param>
147 /// <param name="hashType"></param>
148 /// <param name="rgbHash"></param>
149 /// <param name="cbHash"></param>
80 void SetUpdate( 150 void SetUpdate(
81 [MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource, 151 [MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource,
82 [MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource, 152 [MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource,
@@ -86,12 +156,26 @@ namespace WixToolset.Mba.Core
86 [MarshalAs(UnmanagedType.U4)] int cbHash 156 [MarshalAs(UnmanagedType.U4)] int cbHash
87 ); 157 );
88 158
159 /// <summary>
160 /// See <see cref="IEngine.SetLocalSource(string, string, string)"/>.
161 /// </summary>
162 /// <param name="wzPackageOrContainerId"></param>
163 /// <param name="wzPayloadId"></param>
164 /// <param name="wzPath"></param>
89 void SetLocalSource( 165 void SetLocalSource(
90 [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId, 166 [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
91 [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId, 167 [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
92 [MarshalAs(UnmanagedType.LPWStr)] string wzPath 168 [MarshalAs(UnmanagedType.LPWStr)] string wzPath
93 ); 169 );
94 170
171 /// <summary>
172 /// See <see cref="IEngine.SetDownloadSource(string, string, string, string, string)"/>.
173 /// </summary>
174 /// <param name="wzPackageOrContainerId"></param>
175 /// <param name="wzPayloadId"></param>
176 /// <param name="wzUrl"></param>
177 /// <param name="wzUser"></param>
178 /// <param name="wzPassword"></param>
95 void SetDownloadSource( 179 void SetDownloadSource(
96 [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId, 180 [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
97 [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId, 181 [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
@@ -100,45 +184,92 @@ namespace WixToolset.Mba.Core
100 [MarshalAs(UnmanagedType.LPWStr)] string wzPassword 184 [MarshalAs(UnmanagedType.LPWStr)] string wzPassword
101 ); 185 );
102 186
187 /// <summary>
188 /// See <see cref="IEngine.SetVariableNumeric(string, long)"/>.
189 /// </summary>
190 /// <param name="wzVariable"></param>
191 /// <param name="llValue"></param>
103 void SetVariableNumeric( 192 void SetVariableNumeric(
104 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 193 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
105 long llValue 194 long llValue
106 ); 195 );
107 196
197 /// <summary>
198 /// See <see cref="IEngine.SetVariableString(string, string, bool)"/>.
199 /// </summary>
200 /// <param name="wzVariable"></param>
201 /// <param name="wzValue"></param>
202 /// <param name="fFormatted"></param>
108 void SetVariableString( 203 void SetVariableString(
109 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 204 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
110 IntPtr wzValue, 205 IntPtr wzValue,
111 [MarshalAs(UnmanagedType.Bool)] bool fFormatted 206 [MarshalAs(UnmanagedType.Bool)] bool fFormatted
112 ); 207 );
113 208
209 /// <summary>
210 /// See <see cref="IEngine.SetVariableVersion(string, string)"/>.
211 /// </summary>
212 /// <param name="wzVariable"></param>
213 /// <param name="wzValue"></param>
114 void SetVariableVersion( 214 void SetVariableVersion(
115 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable, 215 [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
116 IntPtr wzValue 216 IntPtr wzValue
117 ); 217 );
118 218
219 /// <summary>
220 /// See <see cref="IEngine.CloseSplashScreen"/>.
221 /// </summary>
119 void CloseSplashScreen(); 222 void CloseSplashScreen();
120 223
224 /// <summary>
225 /// See <see cref="IEngine.Detect(IntPtr)"/>.
226 /// </summary>
227 /// <param name="hwndParent"></param>
121 void Detect( 228 void Detect(
122 IntPtr hwndParent 229 IntPtr hwndParent
123 ); 230 );
124 231
232 /// <summary>
233 /// See <see cref="IEngine.Plan(LaunchAction)"/>.
234 /// </summary>
235 /// <param name="action"></param>
125 void Plan( 236 void Plan(
126 [MarshalAs(UnmanagedType.U4)] LaunchAction action 237 [MarshalAs(UnmanagedType.U4)] LaunchAction action
127 ); 238 );
128 239
240 /// <summary>
241 /// See <see cref="IEngine.Elevate(IntPtr)"/>.
242 /// </summary>
243 /// <param name="hwndParent"></param>
244 /// <returns></returns>
129 [PreserveSig] 245 [PreserveSig]
130 int Elevate( 246 int Elevate(
131 IntPtr hwndParent 247 IntPtr hwndParent
132 ); 248 );
133 249
250 /// <summary>
251 /// See <see cref="IEngine.Apply(IntPtr)"/>.
252 /// </summary>
253 /// <param name="hwndParent"></param>
134 void Apply( 254 void Apply(
135 IntPtr hwndParent 255 IntPtr hwndParent
136 ); 256 );
137 257
258 /// <summary>
259 /// See <see cref="IEngine.Quit(int)"/>.
260 /// </summary>
261 /// <param name="dwExitCode"></param>
138 void Quit( 262 void Quit(
139 [MarshalAs(UnmanagedType.U4)] int dwExitCode 263 [MarshalAs(UnmanagedType.U4)] int dwExitCode
140 ); 264 );
141 265
266 /// <summary>
267 /// See <see cref="IEngine.LaunchApprovedExe(IntPtr, string, string, int)"/>.
268 /// </summary>
269 /// <param name="hwndParent"></param>
270 /// <param name="wzApprovedExeForElevationId"></param>
271 /// <param name="wzArguments"></param>
272 /// <param name="dwWaitForInputIdleTimeout"></param>
142 void LaunchApprovedExe( 273 void LaunchApprovedExe(
143 IntPtr hwndParent, 274 IntPtr hwndParent,
144 [MarshalAs(UnmanagedType.LPWStr)] string wzApprovedExeForElevationId, 275 [MarshalAs(UnmanagedType.LPWStr)] string wzApprovedExeForElevationId,
@@ -146,6 +277,12 @@ namespace WixToolset.Mba.Core
146 [MarshalAs(UnmanagedType.U4)] int dwWaitForInputIdleTimeout 277 [MarshalAs(UnmanagedType.U4)] int dwWaitForInputIdleTimeout
147 ); 278 );
148 279
280 /// <summary>
281 /// See <see cref="IEngine.CompareVersions(string, string)"/>.
282 /// </summary>
283 /// <param name="wzVersion1"></param>
284 /// <param name="wzVersion2"></param>
285 /// <param name="pnResult"></param>
149 void CompareVersions( 286 void CompareVersions(
150 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion1, 287 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion1,
151 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion2, 288 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion2,
@@ -158,14 +295,49 @@ namespace WixToolset.Mba.Core
158 /// </summary> 295 /// </summary>
159 public enum ActionState 296 public enum ActionState
160 { 297 {
298 /// <summary>
299 ///
300 /// </summary>
161 None, 301 None,
302
303 /// <summary>
304 ///
305 /// </summary>
162 Uninstall, 306 Uninstall,
307
308 /// <summary>
309 ///
310 /// </summary>
163 Install, 311 Install,
312
313 /// <summary>
314 ///
315 /// </summary>
164 AdminInstall, 316 AdminInstall,
317
318 /// <summary>
319 ///
320 /// </summary>
165 Modify, 321 Modify,
322
323 /// <summary>
324 ///
325 /// </summary>
166 Repair, 326 Repair,
327
328 /// <summary>
329 ///
330 /// </summary>
167 MinorUpgrade, 331 MinorUpgrade,
332
333 /// <summary>
334 ///
335 /// </summary>
168 MajorUpgrade, 336 MajorUpgrade,
337
338 /// <summary>
339 ///
340 /// </summary>
169 Patch, 341 Patch,
170 } 342 }
171 343
@@ -174,15 +346,54 @@ namespace WixToolset.Mba.Core
174 /// </summary> 346 /// </summary>
175 public enum LaunchAction 347 public enum LaunchAction
176 { 348 {
349 /// <summary>
350 ///
351 /// </summary>
177 Unknown, 352 Unknown,
353
354 /// <summary>
355 ///
356 /// </summary>
178 Help, 357 Help,
358
359 /// <summary>
360 ///
361 /// </summary>
179 Layout, 362 Layout,
363
364 /// <summary>
365 ///
366 /// </summary>
180 Uninstall, 367 Uninstall,
368
369 /// <summary>
370 ///
371 /// </summary>
181 Cache, 372 Cache,
373
374 /// <summary>
375 ///
376 /// </summary>
182 Install, 377 Install,
378
379 /// <summary>
380 ///
381 /// </summary>
183 Modify, 382 Modify,
383
384 /// <summary>
385 ///
386 /// </summary>
184 Repair, 387 Repair,
388
389 /// <summary>
390 ///
391 /// </summary>
185 UpdateReplace, 392 UpdateReplace,
393
394 /// <summary>
395 ///
396 /// </summary>
186 UpdateReplaceEmbedded, 397 UpdateReplaceEmbedded,
187 } 398 }
188 399
@@ -238,11 +449,34 @@ namespace WixToolset.Mba.Core
238 /// </summary> 449 /// </summary>
239 public enum PackageState 450 public enum PackageState
240 { 451 {
452 /// <summary>
453 ///
454 /// </summary>
241 Unknown, 455 Unknown,
456
457 /// <summary>
458 ///
459 /// </summary>
242 Obsolete, 460 Obsolete,
461
462 /// <summary>
463 ///
464 /// </summary>
243 Absent, 465 Absent,
466
467 /// <summary>
468 ///
469 /// </summary>
244 Cached, 470 Cached,
471
472 /// <summary>
473 ///
474 /// </summary>
245 Present, 475 Present,
476
477 /// <summary>
478 ///
479 /// </summary>
246 Superseded, 480 Superseded,
247 } 481 }
248 482
@@ -251,11 +485,34 @@ namespace WixToolset.Mba.Core
251 /// </summary> 485 /// </summary>
252 public enum RequestState 486 public enum RequestState
253 { 487 {
488 /// <summary>
489 ///
490 /// </summary>
254 None, 491 None,
492
493 /// <summary>
494 /// /
495 /// </summary>
255 ForceAbsent, 496 ForceAbsent,
497
498 /// <summary>
499 ///
500 /// </summary>
256 Absent, 501 Absent,
502
503 /// <summary>
504 ///
505 /// </summary>
257 Cache, 506 Cache,
507
508 /// <summary>
509 ///
510 /// </summary>
258 Present, 511 Present,
512
513 /// <summary>
514 ///
515 /// </summary>
259 Repair, 516 Repair,
260 } 517 }
261 518
@@ -264,10 +521,29 @@ namespace WixToolset.Mba.Core
264 /// </summary> 521 /// </summary>
265 public enum FeatureState 522 public enum FeatureState
266 { 523 {
524 /// <summary>
525 ///
526 /// </summary>
267 Unknown, 527 Unknown,
528
529 /// <summary>
530 ///
531 /// </summary>
268 Absent, 532 Absent,
533
534 /// <summary>
535 ///
536 /// </summary>
269 Advertised, 537 Advertised,
538
539 /// <summary>
540 ///
541 /// </summary>
270 Local, 542 Local,
543
544 /// <summary>
545 ///
546 /// </summary>
271 Source, 547 Source,
272 } 548 }
273 549
@@ -276,12 +552,39 @@ namespace WixToolset.Mba.Core
276 /// </summary> 552 /// </summary>
277 public enum FeatureAction 553 public enum FeatureAction
278 { 554 {
555 /// <summary>
556 ///
557 /// </summary>
279 None, 558 None,
559
560 /// <summary>
561 ///
562 /// </summary>
280 AddLocal, 563 AddLocal,
564
565 /// <summary>
566 ///
567 /// </summary>
281 AddSource, 568 AddSource,
569
570 /// <summary>
571 ///
572 /// </summary>
282 AddDefault, 573 AddDefault,
574
575 /// <summary>
576 ///
577 /// </summary>
283 Reinstall, 578 Reinstall,
579
580 /// <summary>
581 ///
582 /// </summary>
284 Advertise, 583 Advertise,
584
585 /// <summary>
586 ///
587 /// </summary>
285 Remove, 588 Remove,
286 } 589 }
287} 590}
diff --git a/src/WixToolset.Mba.Core/IBundleInfo.cs b/src/WixToolset.Mba.Core/IBundleInfo.cs
index d471c677..f4a82f36 100644
--- a/src/WixToolset.Mba.Core/IBundleInfo.cs
+++ b/src/WixToolset.Mba.Core/IBundleInfo.cs
@@ -4,13 +4,36 @@ namespace WixToolset.Mba.Core
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 6
7 /// <summary>
8 /// BA manifest data.
9 /// </summary>
7 public interface IBundleInfo 10 public interface IBundleInfo
8 { 11 {
12 /// <summary>
13 ///
14 /// </summary>
9 string LogVariable { get; } 15 string LogVariable { get; }
16
17 /// <summary>
18 ///
19 /// </summary>
10 string Name { get; } 20 string Name { get; }
21
22 /// <summary>
23 ///
24 /// </summary>
11 IDictionary<string, IPackageInfo> Packages { get; } 25 IDictionary<string, IPackageInfo> Packages { get; }
26
27 /// <summary>
28 ///
29 /// </summary>
12 bool PerMachine { get; } 30 bool PerMachine { get; }
13 31
32 /// <summary>
33 /// Adds a related bundle as a package.
34 /// </summary>
35 /// <param name="e"></param>
36 /// <returns>The created <see cref="IPackageInfo"/>.</returns>
14 IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e); 37 IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e);
15 } 38 }
16} \ No newline at end of file 39} \ No newline at end of file
diff --git a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
index 4a30da7e..b7e4759c 100644
--- a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
@@ -4,73 +4,351 @@ namespace WixToolset.Mba.Core
4{ 4{
5 using System; 5 using System;
6 6
7 /// <summary>
8 /// Interface for built-in implementation of <see cref="IBootstrapperApplication"/>.
9 /// </summary>
7 public interface IDefaultBootstrapperApplication : IBootstrapperApplication 10 public interface IDefaultBootstrapperApplication : IBootstrapperApplication
8 { 11 {
12 /// <summary>
13 /// Fired when the engine has begun installing the bundle.
14 /// </summary>
9 event EventHandler<ApplyBeginEventArgs> ApplyBegin; 15 event EventHandler<ApplyBeginEventArgs> ApplyBegin;
16
17 /// <summary>
18 /// Fired when the engine has completed installing the bundle.
19 /// </summary>
10 event EventHandler<ApplyCompleteEventArgs> ApplyComplete; 20 event EventHandler<ApplyCompleteEventArgs> ApplyComplete;
21
22 /// <summary>
23 /// Fired when the engine is about to begin an MSI transaction.
24 /// </summary>
11 event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin; 25 event EventHandler<BeginMsiTransactionBeginEventArgs> BeginMsiTransactionBegin;
26
27 /// <summary>
28 /// Fired when the engine has completed beginning an MSI transaction.
29 /// </summary>
12 event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete; 30 event EventHandler<BeginMsiTransactionCompleteEventArgs> BeginMsiTransactionComplete;
31
32 /// <summary>
33 /// Fired when the engine has begun acquiring the installation sources.
34 /// </summary>
13 event EventHandler<CacheAcquireBeginEventArgs> CacheAcquireBegin; 35 event EventHandler<CacheAcquireBeginEventArgs> CacheAcquireBegin;
36
37 /// <summary>
38 /// Fired when the engine has completed the acquisition of the installation sources.
39 /// </summary>
14 event EventHandler<CacheAcquireCompleteEventArgs> CacheAcquireComplete; 40 event EventHandler<CacheAcquireCompleteEventArgs> CacheAcquireComplete;
41
42 /// <summary>
43 /// Fired when the engine has progress acquiring the installation sources.
44 /// </summary>
15 event EventHandler<CacheAcquireProgressEventArgs> CacheAcquireProgress; 45 event EventHandler<CacheAcquireProgressEventArgs> CacheAcquireProgress;
46
47 /// <summary>
48 /// Fired when the engine has begun caching the installation sources.
49 /// </summary>
16 event EventHandler<CacheBeginEventArgs> CacheBegin; 50 event EventHandler<CacheBeginEventArgs> CacheBegin;
51
52 /// <summary>
53 /// Fired after the engine has cached the installation sources.
54 /// </summary>
17 event EventHandler<CacheCompleteEventArgs> CacheComplete; 55 event EventHandler<CacheCompleteEventArgs> CacheComplete;
56
57 /// <summary>
58 /// Fired when the engine has begun caching a specific package.
59 /// </summary>
18 event EventHandler<CachePackageBeginEventArgs> CachePackageBegin; 60 event EventHandler<CachePackageBeginEventArgs> CachePackageBegin;
61
62 /// <summary>
63 /// Fired when the engine has completed caching a specific package.
64 /// </summary>
19 event EventHandler<CachePackageCompleteEventArgs> CachePackageComplete; 65 event EventHandler<CachePackageCompleteEventArgs> CachePackageComplete;
66
67 /// <summary>
68 /// Fired when the engine begins the verification of the acquired installation sources.
69 /// </summary>
20 event EventHandler<CacheVerifyBeginEventArgs> CacheVerifyBegin; 70 event EventHandler<CacheVerifyBeginEventArgs> CacheVerifyBegin;
71
72 /// <summary>
73 /// Fired when the engine complete the verification of the acquired installation sources.
74 /// </summary>
21 event EventHandler<CacheVerifyCompleteEventArgs> CacheVerifyComplete; 75 event EventHandler<CacheVerifyCompleteEventArgs> CacheVerifyComplete;
76
77 /// <summary>
78 /// Fired when the engine is about to commit an MSI transaction.
79 /// </summary>
22 event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin; 80 event EventHandler<CommitMsiTransactionBeginEventArgs> CommitMsiTransactionBegin;
81
82 /// <summary>
83 /// Fired when the engine has completed comitting an MSI transaction.
84 /// </summary>
23 event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete; 85 event EventHandler<CommitMsiTransactionCompleteEventArgs> CommitMsiTransactionComplete;
86
87 /// <summary>
88 /// Fired when the overall detection phase has begun.
89 /// </summary>
24 event EventHandler<DetectBeginEventArgs> DetectBegin; 90 event EventHandler<DetectBeginEventArgs> DetectBegin;
91
92 /// <summary>
93 /// Fired when a package was not detected but a package using the same provider key was.
94 /// </summary>
25 event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage; 95 event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage;
96
97 /// <summary>
98 /// Fired when the detection phase has completed.
99 /// </summary>
26 event EventHandler<DetectCompleteEventArgs> DetectComplete; 100 event EventHandler<DetectCompleteEventArgs> DetectComplete;
101
102 /// <summary>
103 /// Fired when a forward compatible bundle is detected.
104 /// </summary>
27 event EventHandler<DetectForwardCompatibleBundleEventArgs> DetectForwardCompatibleBundle; 105 event EventHandler<DetectForwardCompatibleBundleEventArgs> DetectForwardCompatibleBundle;
106
107 /// <summary>
108 /// Fired when a feature in an MSI package has been detected.
109 /// </summary>
28 event EventHandler<DetectMsiFeatureEventArgs> DetectMsiFeature; 110 event EventHandler<DetectMsiFeatureEventArgs> DetectMsiFeature;
111
112 /// <summary>
113 /// Fired when the detection for a specific package has begun.
114 /// </summary>
29 event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin; 115 event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin;
116
117 /// <summary>
118 /// Fired when the detection for a specific package has completed.
119 /// </summary>
30 event EventHandler<DetectPackageCompleteEventArgs> DetectPackageComplete; 120 event EventHandler<DetectPackageCompleteEventArgs> DetectPackageComplete;
121
122 /// <summary>
123 /// Fired when a related bundle has been detected for a bundle.
124 /// </summary>
31 event EventHandler<DetectRelatedBundleEventArgs> DetectRelatedBundle; 125 event EventHandler<DetectRelatedBundleEventArgs> DetectRelatedBundle;
126
127 /// <summary>
128 /// Fired when a related MSI package has been detected for a package.
129 /// </summary>
32 event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage; 130 event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage;
131
132 /// <summary>
133 /// Fired when an MSP package detects a target MSI has been detected.
134 /// </summary>
33 event EventHandler<DetectTargetMsiPackageEventArgs> DetectTargetMsiPackage; 135 event EventHandler<DetectTargetMsiPackageEventArgs> DetectTargetMsiPackage;
136
137 /// <summary>
138 /// Fired when the update detection has found a potential update candidate.
139 /// </summary>
34 event EventHandler<DetectUpdateEventArgs> DetectUpdate; 140 event EventHandler<DetectUpdateEventArgs> DetectUpdate;
141
142 /// <summary>
143 /// Fired when the update detection phase has begun.
144 /// </summary>
35 event EventHandler<DetectUpdateBeginEventArgs> DetectUpdateBegin; 145 event EventHandler<DetectUpdateBeginEventArgs> DetectUpdateBegin;
146
147 /// <summary>
148 /// Fired when the update detection phase has completed.
149 /// </summary>
36 event EventHandler<DetectUpdateCompleteEventArgs> DetectUpdateComplete; 150 event EventHandler<DetectUpdateCompleteEventArgs> DetectUpdateComplete;
151
152 /// <summary>
153 /// Fired when the engine is about to start the elevated process.
154 /// </summary>
37 event EventHandler<ElevateBeginEventArgs> ElevateBegin; 155 event EventHandler<ElevateBeginEventArgs> ElevateBegin;
156
157 /// <summary>
158 /// Fired when the engine has completed starting the elevated process.
159 /// </summary>
38 event EventHandler<ElevateCompleteEventArgs> ElevateComplete; 160 event EventHandler<ElevateCompleteEventArgs> ElevateComplete;
161
162 /// <summary>
163 /// Fired when the engine has encountered an error.
164 /// </summary>
39 event EventHandler<ErrorEventArgs> Error; 165 event EventHandler<ErrorEventArgs> Error;
166
167 /// <summary>
168 /// Fired when the engine has begun installing packages.
169 /// </summary>
40 event EventHandler<ExecuteBeginEventArgs> ExecuteBegin; 170 event EventHandler<ExecuteBeginEventArgs> ExecuteBegin;
171
172 /// <summary>
173 /// Fired when the engine has completed installing packages.
174 /// </summary>
41 event EventHandler<ExecuteCompleteEventArgs> ExecuteComplete; 175 event EventHandler<ExecuteCompleteEventArgs> ExecuteComplete;
176
177 /// <summary>
178 /// Fired when Windows Installer sends a files in use installation message.
179 /// </summary>
42 event EventHandler<ExecuteFilesInUseEventArgs> ExecuteFilesInUse; 180 event EventHandler<ExecuteFilesInUseEventArgs> ExecuteFilesInUse;
181
182 /// <summary>
183 /// Fired when Windows Installer sends an installation message.
184 /// </summary>
43 event EventHandler<ExecuteMsiMessageEventArgs> ExecuteMsiMessage; 185 event EventHandler<ExecuteMsiMessageEventArgs> ExecuteMsiMessage;
186
187 /// <summary>
188 /// Fired when the engine has begun installing a specific package.
189 /// </summary>
44 event EventHandler<ExecutePackageBeginEventArgs> ExecutePackageBegin; 190 event EventHandler<ExecutePackageBeginEventArgs> ExecutePackageBegin;
191
192 /// <summary>
193 /// Fired when the engine has completed installing a specific package.
194 /// </summary>
45 event EventHandler<ExecutePackageCompleteEventArgs> ExecutePackageComplete; 195 event EventHandler<ExecutePackageCompleteEventArgs> ExecutePackageComplete;
196
197 /// <summary>
198 /// Fired when the engine executes one or more patches targeting a product.
199 /// </summary>
46 event EventHandler<ExecutePatchTargetEventArgs> ExecutePatchTarget; 200 event EventHandler<ExecutePatchTargetEventArgs> ExecutePatchTarget;
201
202 /// <summary>
203 /// Fired by the engine while executing on payload.
204 /// </summary>
47 event EventHandler<ExecuteProgressEventArgs> ExecuteProgress; 205 event EventHandler<ExecuteProgressEventArgs> ExecuteProgress;
206
207 /// <summary>
208 /// Fired when the engine is about to launch the preapproved executable.
209 /// </summary>
48 event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin; 210 event EventHandler<LaunchApprovedExeBeginEventArgs> LaunchApprovedExeBegin;
211
212 /// <summary>
213 /// Fired when the engine has completed launching the preapproved executable.
214 /// </summary>
49 event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete; 215 event EventHandler<LaunchApprovedExeCompleteEventArgs> LaunchApprovedExeComplete;
216
217 /// <summary>
218 /// Fired when the engine is about to pause Windows automatic updates.
219 /// </summary>
50 event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin; 220 event EventHandler<PauseAutomaticUpdatesBeginEventArgs> PauseAutomaticUpdatesBegin;
221
222 /// <summary>
223 /// Fired when the engine has completed pausing Windows automatic updates.
224 /// </summary>
51 event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete; 225 event EventHandler<PauseAutomaticUpdatesCompleteEventArgs> PauseAutomaticUpdatesComplete;
226
227 /// <summary>
228 /// Fired when the engine has begun planning the installation.
229 /// </summary>
52 event EventHandler<PlanBeginEventArgs> PlanBegin; 230 event EventHandler<PlanBeginEventArgs> PlanBegin;
231
232 /// <summary>
233 /// Fired when the engine plans a new, compatible package using the same provider key.
234 /// </summary>
53 event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin; 235 event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin;
236
237 /// <summary>
238 /// Fired when the engine has completed planning the installation of a specific package.
239 /// </summary>
54 event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete; 240 event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete;
241
242 /// <summary>
243 /// Fired when the engine has completed planning the installation.
244 /// </summary>
55 event EventHandler<PlanCompleteEventArgs> PlanComplete; 245 event EventHandler<PlanCompleteEventArgs> PlanComplete;
246
247 /// <summary>
248 /// Fired when the engine is about to plan a feature in an MSI package.
249 /// </summary>
56 event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature; 250 event EventHandler<PlanMsiFeatureEventArgs> PlanMsiFeature;
251
252 /// <summary>
253 /// Fired when the engine is planning an MSI or MSP package.
254 /// </summary>
57 event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage; 255 event EventHandler<PlanMsiPackageEventArgs> PlanMsiPackage;
256
257 /// <summary>
258 /// Fired when the engine has begun planning the installation of a specific package.
259 /// </summary>
58 event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin; 260 event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin;
261
262 /// <summary>
263 /// Fired when the engine has completed planning the installation of a specific package.
264 /// </summary>
59 event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; 265 event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete;
266
267 /// <summary>
268 /// Fired when the engine has begun planning for a related bundle.
269 /// </summary>
60 event EventHandler<PlanRelatedBundleEventArgs> PlanRelatedBundle; 270 event EventHandler<PlanRelatedBundleEventArgs> PlanRelatedBundle;
271
272 /// <summary>
273 /// Fired when the engine is about to plan the target MSI of a MSP package.
274 /// </summary>
61 event EventHandler<PlanTargetMsiPackageEventArgs> PlanTargetMsiPackage; 275 event EventHandler<PlanTargetMsiPackageEventArgs> PlanTargetMsiPackage;
276
277 /// <summary>
278 /// Fired when the engine has changed progress for the bundle installation.
279 /// </summary>
62 event EventHandler<ProgressEventArgs> Progress; 280 event EventHandler<ProgressEventArgs> Progress;
281
282 /// <summary>
283 /// Fired when the engine has begun registering the location and visibility of the bundle.
284 /// </summary>
63 event EventHandler<RegisterBeginEventArgs> RegisterBegin; 285 event EventHandler<RegisterBeginEventArgs> RegisterBegin;
286
287 /// <summary>
288 /// Fired when the engine has completed registering the location and visibility of the bundle.
289 /// </summary>
64 event EventHandler<RegisterCompleteEventArgs> RegisterComplete; 290 event EventHandler<RegisterCompleteEventArgs> RegisterComplete;
291
292 /// <summary>
293 /// Fired by the engine to allow the BA to change the source
294 /// using <see cref="IEngine.SetLocalSource(string, string, string)"/> or <see cref="IEngine.SetDownloadSource(string, string, string, string, string)"/>.
295 /// </summary>
65 event EventHandler<ResolveSourceEventArgs> ResolveSource; 296 event EventHandler<ResolveSourceEventArgs> ResolveSource;
297
298 /// <summary>
299 /// Fired when the engine is about to rollback an MSI transaction.
300 /// </summary>
66 event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin; 301 event EventHandler<RollbackMsiTransactionBeginEventArgs> RollbackMsiTransactionBegin;
302
303 /// <summary>
304 /// Fired when the engine has completed rolling back an MSI transaction.
305 /// </summary>
67 event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; 306 event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete;
307
308 /// <summary>
309 /// Fired when the engine is shutting down the bootstrapper application.
310 /// </summary>
68 event EventHandler<ShutdownEventArgs> Shutdown; 311 event EventHandler<ShutdownEventArgs> Shutdown;
312
313 /// <summary>
314 /// Fired when the engine is starting up the bootstrapper application.
315 /// </summary>
69 event EventHandler<StartupEventArgs> Startup; 316 event EventHandler<StartupEventArgs> Startup;
317
318 /// <summary>
319 /// Fired when the engine is about to take a system restore point.
320 /// </summary>
70 event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin; 321 event EventHandler<SystemRestorePointBeginEventArgs> SystemRestorePointBegin;
322
323 /// <summary>
324 /// Fired when the engine has completed taking a system restore point.
325 /// </summary>
71 event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete; 326 event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete;
327
328 /// <summary>
329 /// Fired when the system is shutting down or user is logging off.
330 /// </summary>
331 /// <remarks>
332 /// <para>To prevent shutting down or logging off, set <see cref="CancellableHResultEventArgs.Cancel"/> to
333 /// true; otherwise, set it to false.</para>
334 /// <para>By default setup will prevent shutting down or logging off between
335 /// <see cref="IDefaultBootstrapperApplication.ApplyBegin"/> and <see cref="IDefaultBootstrapperApplication.ApplyComplete"/>.
336 /// Derivatives can change this behavior by handling <see cref="IDefaultBootstrapperApplication.SystemShutdown"/>.</para>
337 /// <para>If <see cref="SystemShutdownEventArgs.Reasons"/> contains <see cref="EndSessionReasons.Critical"/>
338 /// the bootstrapper cannot prevent the shutdown and only has a few seconds to save state or perform any other
339 /// critical operations before being closed by the operating system.</para>
340 /// <para>This event may be fired on a different thread.</para>
341 /// </remarks>
72 event EventHandler<SystemShutdownEventArgs> SystemShutdown; 342 event EventHandler<SystemShutdownEventArgs> SystemShutdown;
343
344 /// <summary>
345 /// Fired when the engine has begun removing the registration for the location and visibility of the bundle.
346 /// </summary>
73 event EventHandler<UnregisterBeginEventArgs> UnregisterBegin; 347 event EventHandler<UnregisterBeginEventArgs> UnregisterBegin;
348
349 /// <summary>
350 /// Fired when the engine has completed removing the registration for the location and visibility of the bundle.
351 /// </summary>
74 event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete; 352 event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete;
75 } 353 }
76} \ No newline at end of file 354} \ No newline at end of file
diff --git a/src/WixToolset.Mba.Core/IEngine.cs b/src/WixToolset.Mba.Core/IEngine.cs
index 8403352d..0899ec43 100644
--- a/src/WixToolset.Mba.Core/IEngine.cs
+++ b/src/WixToolset.Mba.Core/IEngine.cs
@@ -6,6 +6,9 @@ namespace WixToolset.Mba.Core
6 using System.ComponentModel; 6 using System.ComponentModel;
7 using System.Security; 7 using System.Security;
8 8
9 /// <summary>
10 /// High level abstraction over the <see cref="IBootstrapperEngine"/> interface.
11 /// </summary>
9 public interface IEngine 12 public interface IEngine
10 { 13 {
11 /// <summary> 14 /// <summary>
diff --git a/src/WixToolset.Mba.Core/IPackageInfo.cs b/src/WixToolset.Mba.Core/IPackageInfo.cs
index a82e81ea..0d7e549e 100644
--- a/src/WixToolset.Mba.Core/IPackageInfo.cs
+++ b/src/WixToolset.Mba.Core/IPackageInfo.cs
@@ -2,23 +2,89 @@
2 2
3namespace WixToolset.Mba.Core 3namespace WixToolset.Mba.Core
4{ 4{
5 /// <summary>
6 /// Package information from the BA manifest.
7 /// </summary>
5 public interface IPackageInfo 8 public interface IPackageInfo
6 { 9 {
10 /// <summary>
11 ///
12 /// </summary>
7 CacheType CacheType { get; } 13 CacheType CacheType { get; }
14
15 /// <summary>
16 /// Place for the BA to store it's own custom data for this package.
17 /// </summary>
8 object CustomData { get; set; } 18 object CustomData { get; set; }
19
20 /// <summary>
21 ///
22 /// </summary>
9 string Description { get; } 23 string Description { get; }
24
25 /// <summary>
26 ///
27 /// </summary>
10 string DisplayInternalUICondition { get; } 28 string DisplayInternalUICondition { get; }
29
30 /// <summary>
31 ///
32 /// </summary>
11 string DisplayName { get; } 33 string DisplayName { get; }
34
35 /// <summary>
36 ///
37 /// </summary>
12 string Id { get; } 38 string Id { get; }
39
40 /// <summary>
41 ///
42 /// </summary>
13 string InstallCondition { get; } 43 string InstallCondition { get; }
44
45 /// <summary>
46 ///
47 /// </summary>
14 bool Permanent { get; } 48 bool Permanent { get; }
49
50 /// <summary>
51 ///
52 /// </summary>
15 bool PrereqPackage { get; } 53 bool PrereqPackage { get; }
54
55 /// <summary>
56 ///
57 /// </summary>
16 string PrereqLicenseFile { get; } 58 string PrereqLicenseFile { get; }
59
60 /// <summary>
61 ///
62 /// </summary>
17 string PrereqLicenseUrl { get; } 63 string PrereqLicenseUrl { get; }
64
65 /// <summary>
66 ///
67 /// </summary>
18 string ProductCode { get; } 68 string ProductCode { get; }
69
70 /// <summary>
71 ///
72 /// </summary>
19 PackageType Type { get; } 73 PackageType Type { get; }
74
75 /// <summary>
76 ///
77 /// </summary>
20 string UpgradeCode { get; } 78 string UpgradeCode { get; }
79
80 /// <summary>
81 ///
82 /// </summary>
21 string Version { get; } 83 string Version { get; }
84
85 /// <summary>
86 ///
87 /// </summary>
22 bool Vital { get; } 88 bool Vital { get; }
23 } 89 }
24} \ No newline at end of file 90} \ No newline at end of file
diff --git a/src/WixToolset.Mba.Core/PackageInfo.cs b/src/WixToolset.Mba.Core/PackageInfo.cs
index d54438f5..75a0fd53 100644
--- a/src/WixToolset.Mba.Core/PackageInfo.cs
+++ b/src/WixToolset.Mba.Core/PackageInfo.cs
@@ -7,46 +7,133 @@ namespace WixToolset.Mba.Core
7 using System.Xml; 7 using System.Xml;
8 using System.Xml.XPath; 8 using System.Xml.XPath;
9 9
10 /// <summary>
11 ///
12 /// </summary>
10 public enum CacheType 13 public enum CacheType
11 { 14 {
15 /// <summary>
16 ///
17 /// </summary>
12 No, 18 No,
19
20 /// <summary>
21 ///
22 /// </summary>
13 Yes, 23 Yes,
24
25 /// <summary>
26 ///
27 /// </summary>
14 Always, 28 Always,
15 } 29 }
16 30
31 /// <summary>
32 ///
33 /// </summary>
17 public enum PackageType 34 public enum PackageType
18 { 35 {
36 /// <summary>
37 ///
38 /// </summary>
19 Unknown, 39 Unknown,
40
41 /// <summary>
42 ///
43 /// </summary>
20 Exe, 44 Exe,
45
46 /// <summary>
47 ///
48 /// </summary>
21 Msi, 49 Msi,
50
51 /// <summary>
52 ///
53 /// </summary>
22 Msp, 54 Msp,
55
56 /// <summary>
57 ///
58 /// </summary>
23 Msu, 59 Msu,
60
61 /// <summary>
62 ///
63 /// </summary>
24 UpgradeBundle, 64 UpgradeBundle,
65
66 /// <summary>
67 ///
68 /// </summary>
25 AddonBundle, 69 AddonBundle,
70
71 /// <summary>
72 ///
73 /// </summary>
26 PatchBundle, 74 PatchBundle,
27 } 75 }
28 76
77 /// <summary>
78 /// Default implementation of <see cref="IPackageInfo"/>.
79 /// </summary>
29 public class PackageInfo : IPackageInfo 80 public class PackageInfo : IPackageInfo
30 { 81 {
82 /// <inheritdoc/>
31 public string Id { get; internal set; } 83 public string Id { get; internal set; }
84
85 /// <inheritdoc/>
32 public string DisplayName { get; internal set; } 86 public string DisplayName { get; internal set; }
87
88 /// <inheritdoc/>
33 public string Description { get; internal set; } 89 public string Description { get; internal set; }
90
91 /// <inheritdoc/>
34 public PackageType Type { get; internal set; } 92 public PackageType Type { get; internal set; }
93
94 /// <inheritdoc/>
35 public bool Permanent { get; internal set; } 95 public bool Permanent { get; internal set; }
96
97 /// <inheritdoc/>
36 public bool Vital { get; internal set; } 98 public bool Vital { get; internal set; }
99
100 /// <inheritdoc/>
37 public string DisplayInternalUICondition { get; internal set; } 101 public string DisplayInternalUICondition { get; internal set; }
102
103 /// <inheritdoc/>
38 public string ProductCode { get; internal set; } 104 public string ProductCode { get; internal set; }
105
106 /// <inheritdoc/>
39 public string UpgradeCode { get; internal set; } 107 public string UpgradeCode { get; internal set; }
108
109 /// <inheritdoc/>
40 public string Version { get; internal set; } 110 public string Version { get; internal set; }
111
112 /// <inheritdoc/>
41 public string InstallCondition { get; internal set; } 113 public string InstallCondition { get; internal set; }
114
115 /// <inheritdoc/>
42 public CacheType CacheType { get; internal set; } 116 public CacheType CacheType { get; internal set; }
117
118 /// <inheritdoc/>
43 public bool PrereqPackage { get; internal set; } 119 public bool PrereqPackage { get; internal set; }
120
121 /// <inheritdoc/>
44 public string PrereqLicenseFile { get; internal set; } 122 public string PrereqLicenseFile { get; internal set; }
123
124 /// <inheritdoc/>
45 public string PrereqLicenseUrl { get; internal set; } 125 public string PrereqLicenseUrl { get; internal set; }
126
127 /// <inheritdoc/>
46 public object CustomData { get; set; } 128 public object CustomData { get; set; }
47 129
48 internal PackageInfo() { } 130 internal PackageInfo() { }
49 131
132 /// <summary>
133 ///
134 /// </summary>
135 /// <param name="root"></param>
136 /// <returns></returns>
50 public static IDictionary<string, IPackageInfo> ParsePackagesFromXml(XPathNavigator root) 137 public static IDictionary<string, IPackageInfo> ParsePackagesFromXml(XPathNavigator root)
51 { 138 {
52 var packagesById = new Dictionary<string, IPackageInfo>(); 139 var packagesById = new Dictionary<string, IPackageInfo>();
@@ -105,6 +192,12 @@ namespace WixToolset.Mba.Core
105 return packagesById; 192 return packagesById;
106 } 193 }
107 194
195 /// <summary>
196 ///
197 /// </summary>
198 /// <param name="node"></param>
199 /// <param name="attributeName"></param>
200 /// <returns></returns>
108 public static CacheType? GetCacheTypeAttribute(XPathNavigator node, string attributeName) 201 public static CacheType? GetCacheTypeAttribute(XPathNavigator node, string attributeName)
109 { 202 {
110 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName); 203 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName);
@@ -128,6 +221,12 @@ namespace WixToolset.Mba.Core
128 } 221 }
129 } 222 }
130 223
224 /// <summary>
225 ///
226 /// </summary>
227 /// <param name="node"></param>
228 /// <param name="attributeName"></param>
229 /// <returns></returns>
131 public static PackageType? GetPackageTypeAttribute(XPathNavigator node, string attributeName) 230 public static PackageType? GetPackageTypeAttribute(XPathNavigator node, string attributeName)
132 { 231 {
133 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName); 232 string attributeValue = BootstrapperApplicationData.GetAttribute(node, attributeName);
@@ -159,6 +258,14 @@ namespace WixToolset.Mba.Core
159 } 258 }
160 } 259 }
161 260
261 /// <summary>
262 ///
263 /// </summary>
264 /// <param name="id"></param>
265 /// <param name="relationType"></param>
266 /// <param name="perMachine"></param>
267 /// <param name="version"></param>
268 /// <returns></returns>
162 public static IPackageInfo GetRelatedBundleAsPackage(string id, RelationType relationType, bool perMachine, string version) 269 public static IPackageInfo GetRelatedBundleAsPackage(string id, RelationType relationType, bool perMachine, string version)
163 { 270 {
164 PackageInfo package = new PackageInfo(); 271 PackageInfo package = new PackageInfo();
diff --git a/src/WixToolset.Mba.Core/VerUtil.cs b/src/WixToolset.Mba.Core/VerUtil.cs
index dcc9dee2..81c5b716 100644
--- a/src/WixToolset.Mba.Core/VerUtil.cs
+++ b/src/WixToolset.Mba.Core/VerUtil.cs
@@ -6,6 +6,9 @@ namespace WixToolset.Mba.Core
6 using System.Runtime.InteropServices; 6 using System.Runtime.InteropServices;
7 using System.Text; 7 using System.Text;
8 8
9 /// <summary>
10 /// Managed wrapper for verutil.
11 /// </summary>
9 public static class VerUtil 12 public static class VerUtil
10 { 13 {
11 [DllImport("mbanative.dll", ExactSpelling = true, PreserveSig = false)] 14 [DllImport("mbanative.dll", ExactSpelling = true, PreserveSig = false)]
@@ -105,18 +108,34 @@ namespace WixToolset.Mba.Core
105 return VerCompareStringVersions(version1, version2, strict); 108 return VerCompareStringVersions(version1, version2, strict);
106 } 109 }
107 110
111 /// <summary>
112 ///
113 /// </summary>
114 /// <param name="version"></param>
115 /// <returns></returns>
108 public static VerUtilVersion CopyVersion(VerUtilVersion version) 116 public static VerUtilVersion CopyVersion(VerUtilVersion version)
109 { 117 {
110 var handle = VerCopyVersion(version.GetHandle()); 118 var handle = VerCopyVersion(version.GetHandle());
111 return new VerUtilVersion(handle); 119 return new VerUtilVersion(handle);
112 } 120 }
113 121
122 /// <summary>
123 ///
124 /// </summary>
125 /// <param name="version"></param>
126 /// <param name="strict">Whether to throw exception on invalid version.</param>
127 /// <returns></returns>
114 public static VerUtilVersion ParseVersion(string version, bool strict) 128 public static VerUtilVersion ParseVersion(string version, bool strict)
115 { 129 {
116 var handle = VerParseVersion(version, 0, strict); 130 var handle = VerParseVersion(version, 0, strict);
117 return new VerUtilVersion(handle); 131 return new VerUtilVersion(handle);
118 } 132 }
119 133
134 /// <summary>
135 ///
136 /// </summary>
137 /// <param name="version"></param>
138 /// <returns></returns>
120 public static VerUtilVersion VersionFromQword(long version) 139 public static VerUtilVersion VersionFromQword(long version)
121 { 140 {
122 var handle = VerVersionFromQword(version); 141 var handle = VerVersionFromQword(version);
diff --git a/src/WixToolset.Mba.Core/VerUtilVersion.cs b/src/WixToolset.Mba.Core/VerUtilVersion.cs
index 2b509a21..7408c26f 100644
--- a/src/WixToolset.Mba.Core/VerUtilVersion.cs
+++ b/src/WixToolset.Mba.Core/VerUtilVersion.cs
@@ -5,6 +5,9 @@ namespace WixToolset.Mba.Core
5 using System; 5 using System;
6 using System.Runtime.InteropServices; 6 using System.Runtime.InteropServices;
7 7
8 /// <summary>
9 /// An enhanced implementation of SemVer 2.0.
10 /// </summary>
8 public sealed class VerUtilVersion : IDisposable 11 public sealed class VerUtilVersion : IDisposable
9 { 12 {
10 internal VerUtilVersion(VerUtil.VersionHandle handle) 13 internal VerUtilVersion(VerUtil.VersionHandle handle)
@@ -30,15 +33,48 @@ namespace WixToolset.Mba.Core
30 } 33 }
31 } 34 }
32 35
36 /// <summary>
37 /// String version, which would have stripped the leading 'v'.
38 /// </summary>
33 public string Version { get; private set; } 39 public string Version { get; private set; }
40
41 /// <summary>
42 /// For version A.B.C.D, Major is A. It is 0 if not specified.
43 /// </summary>
34 public uint Major { get; private set; } 44 public uint Major { get; private set; }
45
46 /// <summary>
47 /// For version A.B.C.D, Minor is B. It is 0 if not specified.
48 /// </summary>
35 public uint Minor { get; private set; } 49 public uint Minor { get; private set; }
50
51 /// <summary>
52 /// For version A.B.C.D, Patch is C. It is 0 if not specified.
53 /// </summary>
36 public uint Patch { get; private set; } 54 public uint Patch { get; private set; }
55
56 /// <summary>
57 /// For version A.B.C.D, Revision is D. It is 0 if not specified.
58 /// </summary>
37 public uint Revision { get; private set; } 59 public uint Revision { get; private set; }
60
61 /// <summary>
62 /// For version X.Y.Z-releaselabels+metadata, ReleaseLabels is the parsed information for releaselabels.
63 /// </summary>
38 public VerUtilVersionReleaseLabel[] ReleaseLabels { get; private set; } 64 public VerUtilVersionReleaseLabel[] ReleaseLabels { get; private set; }
65
66 /// <summary>
67 /// For version X.Y.Z-releaselabels+metadata, Metadata is the rest of the string after +.
68 /// For invalid versions, it is all of the string after the point where it was an invalid string.
69 /// </summary>
39 public string Metadata { get; private set; } 70 public string Metadata { get; private set; }
71
72 /// <summary>
73 /// Whether the version conformed to the spec.
74 /// </summary>
40 public bool IsInvalid { get; private set; } 75 public bool IsInvalid { get; private set; }
41 76
77 /// <inheritdoc/>
42 public void Dispose() 78 public void Dispose()
43 { 79 {
44 if (this.Handle != null) 80 if (this.Handle != null)
diff --git a/src/WixToolset.Mba.Core/VerUtilVersionReleaseLabel.cs b/src/WixToolset.Mba.Core/VerUtilVersionReleaseLabel.cs
index 84ff3b36..97e8190d 100644
--- a/src/WixToolset.Mba.Core/VerUtilVersionReleaseLabel.cs
+++ b/src/WixToolset.Mba.Core/VerUtilVersionReleaseLabel.cs
@@ -5,6 +5,9 @@ namespace WixToolset.Mba.Core
5 using System; 5 using System;
6 using System.Runtime.InteropServices; 6 using System.Runtime.InteropServices;
7 7
8 /// <summary>
9 /// A release label from a <see cref="VerUtilVersion"/>.
10 /// </summary>
8 public sealed class VerUtilVersionReleaseLabel 11 public sealed class VerUtilVersionReleaseLabel
9 { 12 {
10 internal VerUtilVersionReleaseLabel(IntPtr pReleaseLabel, IntPtr wzVersion) 13 internal VerUtilVersionReleaseLabel(IntPtr pReleaseLabel, IntPtr wzVersion)
@@ -15,8 +18,19 @@ namespace WixToolset.Mba.Core
15 this.Label = VerUtil.VersionStringFromOffset(wzVersion, releaseLabel.cchLabelOffset, releaseLabel.cchLabel); 18 this.Label = VerUtil.VersionStringFromOffset(wzVersion, releaseLabel.cchLabelOffset, releaseLabel.cchLabel);
16 } 19 }
17 20
21 /// <summary>
22 /// Whether the label was parsed as a number.
23 /// </summary>
18 public bool IsNumeric { get; private set; } 24 public bool IsNumeric { get; private set; }
25
26 /// <summary>
27 /// If <see cref="IsNumeric"/> then the value that was parsed.
28 /// </summary>
19 public uint Value { get; private set; } 29 public uint Value { get; private set; }
30
31 /// <summary>
32 /// The string version of the label.
33 /// </summary>
20 public string Label { get; private set; } 34 public string Label { get; private set; }
21 } 35 }
22} 36}
diff --git a/src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj b/src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj
index 2ca3d2d9..1cfc8c11 100644
--- a/src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj
+++ b/src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj
@@ -10,11 +10,7 @@
10 <Description>Managed Bootstrapper Application Core</Description> 10 <Description>Managed Bootstrapper Application Core</Description>
11 <NuspecFile>$(MSBuildThisFileName).nuspec</NuspecFile> 11 <NuspecFile>$(MSBuildThisFileName).nuspec</NuspecFile>
12 <IncludeSymbols>true</IncludeSymbols> 12 <IncludeSymbols>true</IncludeSymbols>
13 <NBGV_EmitThisAssemblyClass>false</NBGV_EmitThisAssemblyClass> 13 <CreateDocumentationFile>true</CreateDocumentationFile>
14 </PropertyGroup>
15
16 <PropertyGroup Condition=" '$(UsingMicrosoftNETSdk)'!='true' and '$(CreateDocumentation)'!='false' ">
17 <DocumentationFile>$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
18 </PropertyGroup> 14 </PropertyGroup>
19 15
20 <ItemGroup> 16 <ItemGroup>
diff --git a/src/WixToolset.Mba.Core/WixToolset.Mba.Core.nuspec b/src/WixToolset.Mba.Core/WixToolset.Mba.Core.nuspec
index cf7d014d..a5e09ea9 100644
--- a/src/WixToolset.Mba.Core/WixToolset.Mba.Core.nuspec
+++ b/src/WixToolset.Mba.Core/WixToolset.Mba.Core.nuspec
@@ -19,7 +19,9 @@
19 19
20 <files> 20 <files>
21 <file src="net20\$id$.dll" target="lib\net20" /> 21 <file src="net20\$id$.dll" target="lib\net20" />
22 <file src="net20\$id$.xml" target="lib\net20" />
22 <file src="netstandard2.0\$id$.dll" target="lib\netstandard2.0" /> 23 <file src="netstandard2.0\$id$.dll" target="lib\netstandard2.0" />
24 <file src="netstandard2.0\$id$.xml" target="lib\netstandard2.0" />
23 25
24 <file src="v142\ARM64\mbanative.dll" target="runtimes\win-arm64\native" /> 26 <file src="v142\ARM64\mbanative.dll" target="runtimes\win-arm64\native" />
25 <file src="v142\ARM64\mbanative.pdb" target="runtimes\win-arm64\native" /> 27 <file src="v142\ARM64\mbanative.pdb" target="runtimes\win-arm64\native" />
diff --git a/src/test/WixToolsetTest.Mba.Core/BaseBootstrapperApplicationFactoryFixture.cs b/src/test/WixToolsetTest.Mba.Core/BaseBootstrapperApplicationFactoryFixture.cs
index 7fe0a405..aaf5ee29 100644
--- a/src/test/WixToolsetTest.Mba.Core/BaseBootstrapperApplicationFactoryFixture.cs
+++ b/src/test/WixToolsetTest.Mba.Core/BaseBootstrapperApplicationFactoryFixture.cs
@@ -103,6 +103,25 @@ namespace WixToolsetTest.Mba.Core
103 } 103 }
104 104
105 [StructLayout(LayoutKind.Sequential)] 105 [StructLayout(LayoutKind.Sequential)]
106 public struct BootstrapperCreateArgs
107 {
108 [MarshalAs(UnmanagedType.I4)] public readonly int cbSize;
109 [MarshalAs(UnmanagedType.I8)] public readonly long qwEngineAPIVersion;
110 public readonly IntPtr pfnBootstrapperEngineProc;
111 public readonly IntPtr pvBootstrapperEngineProcContext;
112 public readonly IntPtr pCommand;
113
114 public BootstrapperCreateArgs(long version, IntPtr pEngineProc, IntPtr pEngineContext, IntPtr pCommand)
115 {
116 this.cbSize = Marshal.SizeOf(typeof(BootstrapperCreateArgs));
117 this.qwEngineAPIVersion = version;
118 this.pfnBootstrapperEngineProc = pEngineProc;
119 this.pvBootstrapperEngineProcContext = pEngineContext;
120 this.pCommand = pCommand;
121 }
122 }
123
124 [StructLayout(LayoutKind.Sequential)]
106 public struct TestCreateResults 125 public struct TestCreateResults
107 { 126 {
108 public int cbSize; 127 public int cbSize;