Move IBootstrapperApplication and IBootstrapperEngine into balutil.
Sean Hall committed
Dec 21, 2019 at 11:23 UTC
f3c383c2412e376353d64a8b744184fa1cee1c6e
17 files changed
+1770
-18
src/WixToolset.Mba.Core/BaseBootstrapperApplicationFactory.cs
-2
@@ -2,8 +2,6 @@
2
3
namespace WixToolset.Mba.Core
4
{
5
- using WixToolset.BootstrapperCore;
6
-
5
public abstract class BaseBootstrapperApplicationFactory : IBootstrapperApplicationFactory
6
{
7
public IBootstrapperApplication Create(IBootstrapperEngine pEngine, ref Command command)
src/WixToolset.Mba.Core/BootstrapperApplication.cs
+2
-3
@@ -5,7 +5,6 @@ namespace WixToolset.Mba.Core
5
using System;
6
using System.Runtime.InteropServices;
7
using System.Threading;
8
- using WixToolset.BootstrapperCore;
8
9
/// <summary>
10
/// The default bootstrapper application.
@@ -1574,7 +1573,7 @@ namespace WixToolset.Mba.Core
1573
return args.HResult;
1574
}
1575
1577
- int IBootstrapperApplication.BAProc(BOOTSTRAPPER_APPLICATION_MESSAGE message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext)
1576
+ int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext)
1577
{
1578
switch (message)
1579
{
@@ -1583,7 +1582,7 @@ namespace WixToolset.Mba.Core
1582
}
1583
}
1584
1586
- void IBootstrapperApplication.BAProcFallback(BOOTSTRAPPER_APPLICATION_MESSAGE message, IntPtr pvArgs, IntPtr pvResults, ref int phr, IntPtr pvContext)
1585
+ void IBootstrapperApplication.BAProcFallback(int message, IntPtr pvArgs, IntPtr pvResults, ref int phr, IntPtr pvContext)
1586
{
1587
}
1588
src/WixToolset.Mba.Core/BootstrapperApplicationFactory.cs
-1
@@ -6,7 +6,6 @@ namespace WixToolset.Mba.Core
6
using System.Configuration;
7
using System.Reflection;
8
using System.Runtime.InteropServices;
9
- using WixToolset.BootstrapperCore;
9
10
/// <summary>
11
/// Entry point for the MBA host to create and return the IBootstrapperApplication implementation to the engine.
src/WixToolset.Mba.Core/BootstrapperCommand.cs
-1
@@ -5,7 +5,6 @@ namespace WixToolset.Mba.Core
5
using System;
6
using System.ComponentModel;
7
using System.Runtime.InteropServices;
8
- using WixToolset.BootstrapperCore;
8
9
public sealed class BootstrapperCommand : IBootstrapperCommand
10
{
src/WixToolset.Mba.Core/Engine.cs
-1
@@ -7,7 +7,6 @@ namespace WixToolset.Mba.Core
7
using System.Runtime.InteropServices;
8
using System.Security;
9
using System.Text;
10
- using WixToolset.BootstrapperCore;
10
11
/// <summary>
12
/// Container class for the <see cref="IBootstrapperEngine"/> interface.
src/WixToolset.Mba.Core/EventArgs.cs
-1
@@ -5,7 +5,6 @@ namespace WixToolset.Mba.Core
5
using System;
6
using System.Collections.Generic;
7
using System.Collections.ObjectModel;
8
- using WixToolset.BootstrapperCore;
8
9
/// <summary>
10
/// Base class for BA <see cref="EventArgs"/> classes.
src/WixToolset.Mba.Core/IBootstrapperApplication.cs
new
+834
@@ -0,0 +1,834 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+namespace WixToolset.Mba.Core
4
+{
5
+ using System;
6
+ using System.CodeDom.Compiler;
7
+ using System.Runtime.InteropServices;
8
+
9
+ /// <summary>
10
+ /// Allows customization of the bootstrapper application.
11
+ /// </summary>
12
+ [ComImport]
13
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
14
+ [Guid("53C31D56-49C0-426B-AB06-099D717C67FE")]
15
+ [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
16
+ public interface IBootstrapperApplication
17
+ {
18
+ [PreserveSig]
19
+ [return: MarshalAs(UnmanagedType.I4)]
20
+ int OnStartup();
21
+
22
+ [PreserveSig]
23
+ [return: MarshalAs(UnmanagedType.I4)]
24
+ int OnShutdown(ref BOOTSTRAPPER_SHUTDOWN_ACTION action);
25
+
26
+ [PreserveSig]
27
+ [return: MarshalAs(UnmanagedType.I4)]
28
+ int OnSystemShutdown(
29
+ [MarshalAs(UnmanagedType.U4)] EndSessionReasons dwEndSession,
30
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
31
+ );
32
+
33
+ [PreserveSig]
34
+ [return: MarshalAs(UnmanagedType.I4)]
35
+ int OnDetectBegin(
36
+ [MarshalAs(UnmanagedType.Bool)] bool fInstalled,
37
+ [MarshalAs(UnmanagedType.U4)] int cPackages,
38
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
39
+ );
40
+
41
+ [PreserveSig]
42
+ [return: MarshalAs(UnmanagedType.I4)]
43
+ int OnDetectForwardCompatibleBundle(
44
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
45
+ [MarshalAs(UnmanagedType.U4)] RelationType relationType,
46
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
47
+ [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
48
+ [MarshalAs(UnmanagedType.U8)] long dw64Version,
49
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
50
+ [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle
51
+ );
52
+
53
+ [PreserveSig]
54
+ [return: MarshalAs(UnmanagedType.I4)]
55
+ int OnDetectUpdateBegin(
56
+ [MarshalAs(UnmanagedType.LPWStr)] string wzUpdateLocation,
57
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
58
+ [MarshalAs(UnmanagedType.Bool)] ref bool fSkip
59
+ );
60
+
61
+ [PreserveSig]
62
+ [return: MarshalAs(UnmanagedType.I4)]
63
+ int OnDetectUpdate(
64
+ [MarshalAs(UnmanagedType.LPWStr)] string wzUpdateLocation,
65
+ [MarshalAs(UnmanagedType.U8)] long dw64Size,
66
+ [MarshalAs(UnmanagedType.U8)] long dw64Version,
67
+ [MarshalAs(UnmanagedType.LPWStr)] string wzTitle,
68
+ [MarshalAs(UnmanagedType.LPWStr)] string wzSummary,
69
+ [MarshalAs(UnmanagedType.LPWStr)] string wzContentType,
70
+ [MarshalAs(UnmanagedType.LPWStr)] string wzContent,
71
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
72
+ [MarshalAs(UnmanagedType.Bool)] ref bool fStopProcessingUpdates
73
+ );
74
+
75
+ [PreserveSig]
76
+ [return: MarshalAs(UnmanagedType.I4)]
77
+ int OnDetectUpdateComplete(
78
+ int hrStatus,
79
+ [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreError
80
+ );
81
+
82
+ [PreserveSig]
83
+ [return: MarshalAs(UnmanagedType.I4)]
84
+ int OnDetectRelatedBundle(
85
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
86
+ [MarshalAs(UnmanagedType.U4)] RelationType relationType,
87
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
88
+ [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
89
+ [MarshalAs(UnmanagedType.U8)] long dw64Version,
90
+ [MarshalAs(UnmanagedType.U4)] RelatedOperation operation,
91
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
92
+ );
93
+
94
+ [PreserveSig]
95
+ [return: MarshalAs(UnmanagedType.I4)]
96
+ int OnDetectPackageBegin(
97
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
98
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
99
+ );
100
+
101
+ [PreserveSig]
102
+ [return: MarshalAs(UnmanagedType.I4)]
103
+ int OnDetectCompatibleMsiPackage(
104
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
105
+ [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
106
+ [MarshalAs(UnmanagedType.U8)] long dw64CompatiblePackageVersion,
107
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
108
+ );
109
+
110
+ [PreserveSig]
111
+ [return: MarshalAs(UnmanagedType.I4)]
112
+ int OnDetectRelatedMsiPackage(
113
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
114
+ [MarshalAs(UnmanagedType.LPWStr)] string wzUpgradeCode,
115
+ [MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
116
+ [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
117
+ [MarshalAs(UnmanagedType.U8)] long dw64Version,
118
+ [MarshalAs(UnmanagedType.U4)] RelatedOperation operation,
119
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
120
+ );
121
+
122
+ [PreserveSig]
123
+ [return: MarshalAs(UnmanagedType.I4)]
124
+ int OnDetectTargetMsiPackage(
125
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
126
+ [MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
127
+ [MarshalAs(UnmanagedType.U4)] PackageState patchState,
128
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
129
+ );
130
+
131
+ [PreserveSig]
132
+ [return: MarshalAs(UnmanagedType.I4)]
133
+ int OnDetectMsiFeature(
134
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
135
+ [MarshalAs(UnmanagedType.LPWStr)] string wzFeatureId,
136
+ [MarshalAs(UnmanagedType.U4)] FeatureState state,
137
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
138
+ );
139
+
140
+ [PreserveSig]
141
+ [return: MarshalAs(UnmanagedType.I4)]
142
+ int OnDetectPackageComplete(
143
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
144
+ int hrStatus,
145
+ [MarshalAs(UnmanagedType.U4)] PackageState state
146
+ );
147
+
148
+ [PreserveSig]
149
+ [return: MarshalAs(UnmanagedType.I4)]
150
+ int OnDetectComplete(
151
+ int hrStatus
152
+ );
153
+
154
+ [PreserveSig]
155
+ [return: MarshalAs(UnmanagedType.I4)]
156
+ int OnPlanBegin(
157
+ [MarshalAs(UnmanagedType.U4)] int cPackages,
158
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
159
+ );
160
+
161
+ [PreserveSig]
162
+ [return: MarshalAs(UnmanagedType.I4)]
163
+ int OnPlanRelatedBundle(
164
+ [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
165
+ [MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
166
+ [MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
167
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
168
+ );
169
+
170
+ [PreserveSig]
171
+ [return: MarshalAs(UnmanagedType.I4)]
172
+ int OnPlanPackageBegin(
173
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
174
+ [MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
175
+ [MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
176
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
177
+ );
178
+
179
+ [PreserveSig]
180
+ [return: MarshalAs(UnmanagedType.I4)]
181
+ int OnPlanCompatibleMsiPackageBegin(
182
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
183
+ [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
184
+ [MarshalAs(UnmanagedType.U8)] long dw64CompatiblePackageVersion,
185
+ [MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
186
+ [MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
187
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
188
+ );
189
+
190
+ [PreserveSig]
191
+ [return: MarshalAs(UnmanagedType.I4)]
192
+ int OnPlanCompatibleMsiPackageComplete(
193
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
194
+ [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId,
195
+ int hrStatus,
196
+ [MarshalAs(UnmanagedType.U4)] PackageState state,
197
+ [MarshalAs(UnmanagedType.U4)] RequestState requested,
198
+ [MarshalAs(UnmanagedType.U4)] ActionState execute,
199
+ [MarshalAs(UnmanagedType.U4)] ActionState rollback
200
+ );
201
+
202
+ [PreserveSig]
203
+ [return: MarshalAs(UnmanagedType.I4)]
204
+ int OnPlanTargetMsiPackage(
205
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
206
+ [MarshalAs(UnmanagedType.LPWStr)] string wzProductCode,
207
+ [MarshalAs(UnmanagedType.U4)] RequestState recommendedState,
208
+ [MarshalAs(UnmanagedType.U4)] ref RequestState pRequestedState,
209
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
210
+ );
211
+
212
+ [PreserveSig]
213
+ [return: MarshalAs(UnmanagedType.I4)]
214
+ int OnPlanMsiFeature(
215
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
216
+ [MarshalAs(UnmanagedType.LPWStr)] string wzFeatureId,
217
+ [MarshalAs(UnmanagedType.U4)] FeatureState recommendedState,
218
+ [MarshalAs(UnmanagedType.U4)] ref FeatureState pRequestedState,
219
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
220
+ );
221
+
222
+ [PreserveSig]
223
+ [return: MarshalAs(UnmanagedType.I4)]
224
+ int OnPlanPackageComplete(
225
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
226
+ int hrStatus,
227
+ [MarshalAs(UnmanagedType.U4)] PackageState state,
228
+ [MarshalAs(UnmanagedType.U4)] RequestState requested,
229
+ [MarshalAs(UnmanagedType.U4)] ActionState execute,
230
+ [MarshalAs(UnmanagedType.U4)] ActionState rollback
231
+ );
232
+
233
+ [PreserveSig]
234
+ [return: MarshalAs(UnmanagedType.I4)]
235
+ int OnPlanComplete(
236
+ int hrStatus
237
+ );
238
+
239
+ [PreserveSig]
240
+ [return: MarshalAs(UnmanagedType.I4)]
241
+ int OnApplyBegin(
242
+ [MarshalAs(UnmanagedType.U4)] int dwPhaseCount,
243
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
244
+ );
245
+
246
+ [PreserveSig]
247
+ [return: MarshalAs(UnmanagedType.I4)]
248
+ int OnElevateBegin(
249
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
250
+ );
251
+
252
+ [PreserveSig]
253
+ [return: MarshalAs(UnmanagedType.I4)]
254
+ int OnElevateComplete(
255
+ int hrStatus
256
+ );
257
+
258
+ [PreserveSig]
259
+ [return: MarshalAs(UnmanagedType.I4)]
260
+ int OnProgress(
261
+ [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
262
+ [MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
263
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
264
+ );
265
+
266
+ [PreserveSig]
267
+ [return: MarshalAs(UnmanagedType.I4)]
268
+ int OnError(
269
+ [MarshalAs(UnmanagedType.U4)] ErrorType errorType,
270
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
271
+ [MarshalAs(UnmanagedType.U4)] int dwCode,
272
+ [MarshalAs(UnmanagedType.LPWStr)] string wzError,
273
+ [MarshalAs(UnmanagedType.I4)] int dwUIHint,
274
+ [MarshalAs(UnmanagedType.U4)] int cData,
275
+ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzData,
276
+ [MarshalAs(UnmanagedType.I4)] Result nRecommendation,
277
+ [MarshalAs(UnmanagedType.I4)] ref Result pResult
278
+ );
279
+
280
+ [PreserveSig]
281
+ [return: MarshalAs(UnmanagedType.I4)]
282
+ int OnRegisterBegin(
283
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
284
+ );
285
+
286
+ [PreserveSig]
287
+ [return: MarshalAs(UnmanagedType.I4)]
288
+ int OnRegisterComplete(
289
+ int hrStatus
290
+ );
291
+
292
+ [PreserveSig]
293
+ [return: MarshalAs(UnmanagedType.I4)]
294
+ int OnCacheBegin(
295
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
296
+ );
297
+
298
+ [PreserveSig]
299
+ [return: MarshalAs(UnmanagedType.I4)]
300
+ int OnCachePackageBegin(
301
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
302
+ [MarshalAs(UnmanagedType.U4)] int cCachePayloads,
303
+ [MarshalAs(UnmanagedType.U8)] long dw64PackageCacheSize,
304
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
305
+ );
306
+
307
+ [PreserveSig]
308
+ [return: MarshalAs(UnmanagedType.I4)]
309
+ int OnCacheAcquireBegin(
310
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
311
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
312
+ [MarshalAs(UnmanagedType.U4)] CacheOperation operation,
313
+ [MarshalAs(UnmanagedType.LPWStr)] string wzSource,
314
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
315
+ );
316
+
317
+ [PreserveSig]
318
+ [return: MarshalAs(UnmanagedType.I4)]
319
+ int OnCacheAcquireProgress(
320
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
321
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
322
+ [MarshalAs(UnmanagedType.U8)] long dw64Progress,
323
+ [MarshalAs(UnmanagedType.U8)] long dw64Total,
324
+ [MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
325
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
326
+ );
327
+
328
+ [PreserveSig]
329
+ [return: MarshalAs(UnmanagedType.I4)]
330
+ int OnResolveSource(
331
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
332
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
333
+ [MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource,
334
+ [MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource,
335
+ BOOTSTRAPPER_RESOLVESOURCE_ACTION recommendation,
336
+ ref BOOTSTRAPPER_RESOLVESOURCE_ACTION action,
337
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
338
+ );
339
+
340
+ [PreserveSig]
341
+ [return: MarshalAs(UnmanagedType.I4)]
342
+ int OnCacheAcquireComplete(
343
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
344
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
345
+ int hrStatus,
346
+ BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation,
347
+ ref BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION pAction
348
+ );
349
+
350
+ [PreserveSig]
351
+ [return: MarshalAs(UnmanagedType.I4)]
352
+ int OnCacheVerifyBegin(
353
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
354
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
355
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
356
+ );
357
+
358
+ [PreserveSig]
359
+ [return: MarshalAs(UnmanagedType.I4)]
360
+ int OnCacheVerifyComplete(
361
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
362
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
363
+ int hrStatus,
364
+ BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation,
365
+ ref BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action
366
+ );
367
+
368
+ [PreserveSig]
369
+ [return: MarshalAs(UnmanagedType.I4)]
370
+ int OnCachePackageComplete(
371
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
372
+ int hrStatus,
373
+ BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation,
374
+ ref BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action
375
+ );
376
+
377
+ [PreserveSig]
378
+ [return: MarshalAs(UnmanagedType.I4)]
379
+ int OnCacheComplete(
380
+ int hrStatus
381
+ );
382
+
383
+ [PreserveSig]
384
+ [return: MarshalAs(UnmanagedType.I4)]
385
+ int OnExecuteBegin(
386
+ [MarshalAs(UnmanagedType.U4)] int cExecutingPackages,
387
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
388
+ );
389
+
390
+ [PreserveSig]
391
+ [return: MarshalAs(UnmanagedType.I4)]
392
+ int OnExecutePackageBegin(
393
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
394
+ [MarshalAs(UnmanagedType.Bool)] bool fExecute,
395
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
396
+ );
397
+
398
+ [PreserveSig]
399
+ [return: MarshalAs(UnmanagedType.I4)]
400
+ int OnExecutePatchTarget(
401
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
402
+ [MarshalAs(UnmanagedType.LPWStr)] string wzTargetProductCode,
403
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
404
+ );
405
+
406
+ [PreserveSig]
407
+ [return: MarshalAs(UnmanagedType.I4)]
408
+ int OnExecuteProgress(
409
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
410
+ [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
411
+ [MarshalAs(UnmanagedType.U4)] int dwOverallPercentage,
412
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
413
+ );
414
+
415
+ [PreserveSig]
416
+ [return: MarshalAs(UnmanagedType.I4)]
417
+ int OnExecuteMsiMessage(
418
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
419
+ [MarshalAs(UnmanagedType.U4)] InstallMessage messageType,
420
+ [MarshalAs(UnmanagedType.I4)] int dwUIHint,
421
+ [MarshalAs(UnmanagedType.LPWStr)] string wzMessage,
422
+ [MarshalAs(UnmanagedType.U4)] int cData,
423
+ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzData,
424
+ [MarshalAs(UnmanagedType.I4)] Result nRecommendation,
425
+ [MarshalAs(UnmanagedType.I4)] ref Result pResult
426
+ );
427
+
428
+ [PreserveSig]
429
+ [return: MarshalAs(UnmanagedType.I4)]
430
+ int OnExecuteFilesInUse(
431
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
432
+ [MarshalAs(UnmanagedType.U4)] int cFiles,
433
+ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzFiles,
434
+ [MarshalAs(UnmanagedType.I4)] Result nRecommendation,
435
+ [MarshalAs(UnmanagedType.I4)] ref Result pResult
436
+ );
437
+
438
+ [PreserveSig]
439
+ [return: MarshalAs(UnmanagedType.I4)]
440
+ int OnExecutePackageComplete(
441
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId,
442
+ int hrStatus,
443
+ [MarshalAs(UnmanagedType.U4)] ApplyRestart restart,
444
+ [MarshalAs(UnmanagedType.I4)] BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation,
445
+ [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION pAction
446
+ );
447
+
448
+ [PreserveSig]
449
+ [return: MarshalAs(UnmanagedType.I4)]
450
+ int OnExecuteComplete(
451
+ int hrStatus
452
+ );
453
+
454
+ [PreserveSig]
455
+ [return: MarshalAs(UnmanagedType.I4)]
456
+ int OnUnregisterBegin(
457
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
458
+ );
459
+
460
+ [PreserveSig]
461
+ [return: MarshalAs(UnmanagedType.I4)]
462
+ int OnUnregisterComplete(
463
+ int hrStatus
464
+ );
465
+
466
+ [PreserveSig]
467
+ [return: MarshalAs(UnmanagedType.I4)]
468
+ int OnApplyComplete(
469
+ int hrStatus,
470
+ [MarshalAs(UnmanagedType.U4)] ApplyRestart restart,
471
+ [MarshalAs(UnmanagedType.I4)] BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation,
472
+ [MarshalAs(UnmanagedType.I4)] ref BOOTSTRAPPER_APPLYCOMPLETE_ACTION pAction
473
+ );
474
+
475
+ [PreserveSig]
476
+ [return: MarshalAs(UnmanagedType.I4)]
477
+ int OnLaunchApprovedExeBegin(
478
+ [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
479
+ );
480
+
481
+ [PreserveSig]
482
+ [return: MarshalAs(UnmanagedType.I4)]
483
+ int OnLaunchApprovedExeComplete(
484
+ int hrStatus,
485
+ int processId
486
+ );
487
+
488
+ [PreserveSig]
489
+ [return: MarshalAs(UnmanagedType.I4)]
490
+ int BAProc(
491
+ int message,
492
+ IntPtr pvArgs,
493
+ IntPtr pvResults,
494
+ IntPtr pvContext
495
+ );
496
+
497
+ void BAProcFallback(
498
+ int message,
499
+ IntPtr pvArgs,
500
+ IntPtr pvResults,
501
+ ref int phr,
502
+ IntPtr pvContext
503
+ );
504
+ }
505
+
506
+ /// <summary>
507
+ /// The display level for the BA.
508
+ /// </summary>
509
+ public enum Display
510
+ {
511
+ Unknown,
512
+ Embedded,
513
+ None,
514
+ Passive,
515
+ Full,
516
+ }
517
+
518
+ /// <summary>
519
+ /// Messages from Windows Installer.
520
+ /// </summary>
521
+ public enum InstallMessage
522
+ {
523
+ FatalExit,
524
+ Error = 0x01000000,
525
+ Warning = 0x02000000,
526
+ User = 0x03000000,
527
+ Info = 0x04000000,
528
+ FilesInUse = 0x05000000,
529
+ ResolveSource = 0x06000000,
530
+ OutOfDiskSpace = 0x07000000,
531
+ ActionStart = 0x08000000,
532
+ ActionData = 0x09000000,
533
+ Progress = 0x0a000000,
534
+ CommonData = 0x0b000000,
535
+ Initialize = 0x0c000000,
536
+ Terminate = 0x0d000000,
537
+ ShowDialog = 0x0e000000,
538
+ RMFilesInUse = 0x19000000,
539
+ }
540
+
541
+ /// <summary>
542
+ /// The action to perform when a reboot is necessary.
543
+ /// </summary>
544
+ public enum Restart
545
+ {
546
+ Unknown,
547
+ Never,
548
+ Prompt,
549
+ Automatic,
550
+ Always,
551
+ }
552
+
553
+ /// <summary>
554
+ /// Result codes.
555
+ /// </summary>
556
+ public enum Result
557
+ {
558
+ Error = -1,
559
+ None,
560
+ Ok,
561
+ Cancel,
562
+ Abort,
563
+ Retry,
564
+ Ignore,
565
+ Yes,
566
+ No,
567
+ Close,
568
+ Help,
569
+ TryAgain,
570
+ Continue,
571
+ }
572
+
573
+ /// <summary>
574
+ /// Describes why a bundle or packaged is being resumed.
575
+ /// </summary>
576
+ public enum ResumeType
577
+ {
578
+ None,
579
+
580
+ /// <summary>
581
+ /// Resume information exists but is invalid.
582
+ /// </summary>
583
+ Invalid,
584
+
585
+ /// <summary>
586
+ /// The bundle was re-launched after an unexpected interruption.
587
+ /// </summary>
588
+ Interrupted,
589
+
590
+ /// <summary>
591
+ /// A reboot is pending.
592
+ /// </summary>
593
+ RebootPending,
594
+
595
+ /// <summary>
596
+ /// The bundle was re-launched after a reboot.
597
+ /// </summary>
598
+ Reboot,
599
+
600
+ /// <summary>
601
+ /// The bundle was re-launched after being suspended.
602
+ /// </summary>
603
+ Suspend,
604
+
605
+ /// <summary>
606
+ /// The bundle was launched from Add/Remove Programs.
607
+ /// </summary>
608
+ Arp,
609
+ }
610
+
611
+ /// <summary>
612
+ /// Indicates what caused the error.
613
+ /// </summary>
614
+ public enum ErrorType
615
+ {
616
+ /// <summary>
617
+ /// The error occurred trying to elevate.
618
+ /// </summary>
619
+ Elevate,
620
+
621
+ /// <summary>
622
+ /// The error came from the Windows Installer.
623
+ /// </summary>
624
+ WindowsInstaller,
625
+
626
+ /// <summary>
627
+ /// The error came from an EXE Package.
628
+ /// </summary>
629
+ ExePackage,
630
+
631
+ /// <summary>
632
+ /// The error came while trying to authenticate with an HTTP server.
633
+ /// </summary>
634
+ HttpServerAuthentication,
635
+
636
+ /// <summary>
637
+ /// The error came while trying to authenticate with an HTTP proxy.
638
+ /// </summary>
639
+ HttpProxyAuthentication,
640
+
641
+ /// <summary>
642
+ /// The error occurred during apply.
643
+ /// </summary>
644
+ Apply,
645
+ };
646
+
647
+ public enum RelatedOperation
648
+ {
649
+ None,
650
+
651
+ /// <summary>
652
+ /// The related bundle or package will be downgraded.
653
+ /// </summary>
654
+ Downgrade,
655
+
656
+ /// <summary>
657
+ /// The related package will be upgraded as a minor revision.
658
+ /// </summary>
659
+ MinorUpdate,
660
+
661
+ /// <summary>
662
+ /// The related bundle or package will be upgraded as a major revision.
663
+ /// </summary>
664
+ MajorUpgrade,
665
+
666
+ /// <summary>
667
+ /// The related bundle will be removed.
668
+ /// </summary>
669
+ Remove,
670
+
671
+ /// <summary>
672
+ /// The related bundle will be installed.
673
+ /// </summary>
674
+ Install,
675
+
676
+ /// <summary>
677
+ /// The related bundle will be repaired.
678
+ /// </summary>
679
+ Repair,
680
+ };
681
+
682
+ /// <summary>
683
+ /// The cache operation used to acquire a container or payload.
684
+ /// </summary>
685
+ public enum CacheOperation
686
+ {
687
+ /// <summary>
688
+ /// Container or payload is being copied.
689
+ /// </summary>
690
+ Copy,
691
+
692
+ /// <summary>
693
+ /// Container or payload is being downloaded.
694
+ /// </summary>
695
+ Download,
696
+
697
+ /// <summary>
698
+ /// Container or payload is being extracted.
699
+ /// </summary>
700
+ Extract
701
+ }
702
+
703
+ /// <summary>
704
+ /// The restart state after a package or all packages were applied.
705
+ /// </summary>
706
+ public enum ApplyRestart
707
+ {
708
+ /// <summary>
709
+ /// Package or chain does not require a restart.
710
+ /// </summary>
711
+ None,
712
+
713
+ /// <summary>
714
+ /// Package or chain requires a restart but it has not been initiated yet.
715
+ /// </summary>
716
+ RestartRequired,
717
+
718
+ /// <summary>
719
+ /// Package or chain has already initiated the restart.
720
+ /// </summary>
721
+ RestartInitiated
722
+ }
723
+
724
+ /// <summary>
725
+ /// The relation type for related bundles.
726
+ /// </summary>
727
+ public enum RelationType
728
+ {
729
+ None,
730
+ Detect,
731
+ Upgrade,
732
+ Addon,
733
+ Patch,
734
+ Dependent,
735
+ Update,
736
+ }
737
+
738
+ /// <summary>
739
+ /// One or more reasons why the application is requested to be closed or is being closed.
740
+ /// </summary>
741
+ [Flags]
742
+ public enum EndSessionReasons
743
+ {
744
+ /// <summary>
745
+ /// The system is shutting down or restarting (it is not possible to determine which event is occurring).
746
+ /// </summary>
747
+ Unknown,
748
+
749
+ /// <summary>
750
+ /// The application is using a file that must be replaced, the system is being serviced, or system resources are exhausted.
751
+ /// </summary>
752
+ CloseApplication,
753
+
754
+ /// <summary>
755
+ /// The application is forced to shut down.
756
+ /// </summary>
757
+ Critical = 0x40000000,
758
+
759
+ /// <summary>
760
+ /// The user is logging off.
761
+ /// </summary>
762
+ Logoff = unchecked((int)0x80000000)
763
+ }
764
+
765
+ /// <summary>
766
+ /// The available actions for OnApplyComplete.
767
+ /// </summary>
768
+ public enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION
769
+ {
770
+ None,
771
+ Restart,
772
+ }
773
+
774
+ /// <summary>
775
+ /// The available actions for OnCacheAcquireComplete.
776
+ /// </summary>
777
+ public enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION
778
+ {
779
+ None,
780
+ Retry,
781
+ }
782
+
783
+ /// <summary>
784
+ /// The available actions for OnCachePackageComplete.
785
+ /// </summary>
786
+ public enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION
787
+ {
788
+ None,
789
+ Ignore,
790
+ Retry,
791
+ }
792
+
793
+ /// <summary>
794
+ /// The available actions for OnCacheVerifyComplete.
795
+ /// </summary>
796
+ public enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION
797
+ {
798
+ None,
799
+ RetryVerification,
800
+ RetryAcquisition,
801
+ }
802
+
803
+ /// <summary>
804
+ /// The available actions for OnExecutePackageComplete.
805
+ /// </summary>
806
+ public enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION
807
+ {
808
+ None,
809
+ Ignore,
810
+ Retry,
811
+ Restart,
812
+ Suspend,
813
+ }
814
+
815
+ /// <summary>
816
+ /// The available actions for OnResolveSource.
817
+ /// </summary>
818
+ public enum BOOTSTRAPPER_RESOLVESOURCE_ACTION
819
+ {
820
+ None,
821
+ Retry,
822
+ Download,
823
+ }
824
+
825
+ /// <summary>
826
+ /// The available actions for OnShutdown.
827
+ /// </summary>
828
+ public enum BOOTSTRAPPER_SHUTDOWN_ACTION
829
+ {
830
+ None,
831
+ Restart,
832
+ ReloadBootstrapper,
833
+ }
834
+}
src/WixToolset.Mba.Core/IBootstrapperApplicationFactory.cs
-1
@@ -5,7 +5,6 @@ namespace WixToolset.Mba.Core
5
using System;
6
using System.CodeDom.Compiler;
7
using System.Runtime.InteropServices;
8
- using WixToolset.BootstrapperCore;
8
9
[ComVisible(true)]
10
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
src/WixToolset.Mba.Core/IBootstrapperCommand.cs
-1
@@ -3,7 +3,6 @@
3
namespace WixToolset.Mba.Core
4
{
5
using System;
6
- using WixToolset.BootstrapperCore;
6
7
/// <summary>
8
/// Command information passed from the engine for the BA to perform.
src/WixToolset.Mba.Core/IBootstrapperEngine.cs
new
+279
@@ -0,0 +1,279 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+namespace WixToolset.Mba.Core
4
+{
5
+ using System;
6
+ using System.CodeDom.Compiler;
7
+ using System.Runtime.InteropServices;
8
+ using System.Text;
9
+
10
+ /// <summary>
11
+ /// Allows calls into the bootstrapper engine.
12
+ /// </summary>
13
+ [ComImport]
14
+ [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
15
+ [Guid("6480D616-27A0-44D7-905B-81512C29C2FB")]
16
+ [GeneratedCodeAttribute("WixToolset.Bootstrapper.InteropCodeGenerator", "1.0.0.0")]
17
+ public interface IBootstrapperEngine
18
+ {
19
+ void GetPackageCount(
20
+ [MarshalAs(UnmanagedType.U4)] out int pcPackages
21
+ );
22
+
23
+ [PreserveSig]
24
+ int GetVariableNumeric(
25
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
26
+ out long pllValue
27
+ );
28
+
29
+ [PreserveSig]
30
+ int GetVariableString(
31
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
32
+ IntPtr wzValue,
33
+ [MarshalAs(UnmanagedType.U4)] ref int pcchValue
34
+ );
35
+
36
+ [PreserveSig]
37
+ int GetVariableVersion(
38
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
39
+ [MarshalAs(UnmanagedType.U8)] out long pqwValue
40
+ );
41
+
42
+ [PreserveSig]
43
+ int FormatString(
44
+ [MarshalAs(UnmanagedType.LPWStr)] string wzIn,
45
+ [MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut,
46
+ [MarshalAs(UnmanagedType.U4)] ref int pcchOut
47
+ );
48
+
49
+ [PreserveSig]
50
+ int EscapeString(
51
+ [MarshalAs(UnmanagedType.LPWStr)] string wzIn,
52
+ [MarshalAs(UnmanagedType.LPWStr), Out] StringBuilder wzOut,
53
+ [MarshalAs(UnmanagedType.U4)] ref int pcchOut
54
+ );
55
+
56
+ void EvaluateCondition(
57
+ [MarshalAs(UnmanagedType.LPWStr)] string wzCondition,
58
+ [MarshalAs(UnmanagedType.Bool)] out bool pf
59
+ );
60
+
61
+ void Log(
62
+ [MarshalAs(UnmanagedType.U4)] LogLevel level,
63
+ [MarshalAs(UnmanagedType.LPWStr)] string wzMessage
64
+ );
65
+
66
+ void SendEmbeddedError(
67
+ [MarshalAs(UnmanagedType.U4)] int dwErrorCode,
68
+ [MarshalAs(UnmanagedType.LPWStr)] string wzMessage,
69
+ [MarshalAs(UnmanagedType.U4)] int dwUIHint,
70
+ [MarshalAs(UnmanagedType.I4)] out int pnResult
71
+ );
72
+
73
+ void SendEmbeddedProgress(
74
+ [MarshalAs(UnmanagedType.U4)] int dwProgressPercentage,
75
+ [MarshalAs(UnmanagedType.U4)] int dwOverallProgressPercentage,
76
+ [MarshalAs(UnmanagedType.I4)] out int pnResult
77
+ );
78
+
79
+ void SetUpdate(
80
+ [MarshalAs(UnmanagedType.LPWStr)] string wzLocalSource,
81
+ [MarshalAs(UnmanagedType.LPWStr)] string wzDownloadSource,
82
+ [MarshalAs(UnmanagedType.U8)] long qwValue,
83
+ [MarshalAs(UnmanagedType.U4)] UpdateHashType hashType,
84
+ [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=4)] byte[] rgbHash,
85
+ [MarshalAs(UnmanagedType.U4)] int cbHash
86
+ );
87
+
88
+ void SetLocalSource(
89
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
90
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
91
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPath
92
+ );
93
+
94
+ void SetDownloadSource(
95
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPackageOrContainerId,
96
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId,
97
+ [MarshalAs(UnmanagedType.LPWStr)] string wzUrl,
98
+ [MarshalAs(UnmanagedType.LPWStr)] string wzUser,
99
+ [MarshalAs(UnmanagedType.LPWStr)] string wzPassword
100
+ );
101
+
102
+ void SetVariableNumeric(
103
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
104
+ long llValue
105
+ );
106
+
107
+ void SetVariableString(
108
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
109
+ IntPtr wzValue
110
+ );
111
+
112
+ void SetVariableVersion(
113
+ [MarshalAs(UnmanagedType.LPWStr)] string wzVariable,
114
+ [MarshalAs(UnmanagedType.U8)] long qwValue
115
+ );
116
+
117
+ void CloseSplashScreen();
118
+
119
+ void Detect(
120
+ IntPtr hwndParent
121
+ );
122
+
123
+ void Plan(
124
+ [MarshalAs(UnmanagedType.U4)] LaunchAction action
125
+ );
126
+
127
+ [PreserveSig]
128
+ int Elevate(
129
+ IntPtr hwndParent
130
+ );
131
+
132
+ void Apply(
133
+ IntPtr hwndParent
134
+ );
135
+
136
+ void Quit(
137
+ [MarshalAs(UnmanagedType.U4)] int dwExitCode
138
+ );
139
+
140
+ void LaunchApprovedExe(
141
+ IntPtr hwndParent,
142
+ [MarshalAs(UnmanagedType.LPWStr)] string wzApprovedExeForElevationId,
143
+ [MarshalAs(UnmanagedType.LPWStr)] string wzArguments,
144
+ [MarshalAs(UnmanagedType.U4)] int dwWaitForInputIdleTimeout
145
+ );
146
+ }
147
+
148
+ /// <summary>
149
+ /// The installation action for the bundle or current package.
150
+ /// </summary>
151
+ public enum ActionState
152
+ {
153
+ None,
154
+ Uninstall,
155
+ Install,
156
+ AdminInstall,
157
+ Modify,
158
+ Repair,
159
+ MinorUpgrade,
160
+ MajorUpgrade,
161
+ Patch,
162
+ }
163
+
164
+ /// <summary>
165
+ /// The action for the BA to perform.
166
+ /// </summary>
167
+ public enum LaunchAction
168
+ {
169
+ Unknown,
170
+ Help,
171
+ Layout,
172
+ Uninstall,
173
+ Cache,
174
+ Install,
175
+ Modify,
176
+ Repair,
177
+ UpdateReplace,
178
+ UpdateReplaceEmbedded,
179
+ }
180
+
181
+ /// <summary>
182
+ /// The message log level.
183
+ /// </summary>
184
+ public enum LogLevel
185
+ {
186
+ /// <summary>
187
+ /// No logging level (generic).
188
+ /// </summary>
189
+ None,
190
+
191
+ /// <summary>
192
+ /// User messages.
193
+ /// </summary>
194
+ Standard,
195
+
196
+ /// <summary>
197
+ /// Verbose messages.
198
+ /// </summary>
199
+ Verbose,
200
+
201
+ /// <summary>
202
+ /// Messages for debugging.
203
+ /// </summary>
204
+ Debug,
205
+
206
+ /// <summary>
207
+ /// Error messages.
208
+ /// </summary>
209
+ Error,
210
+ }
211
+
212
+ /// <summary>
213
+ /// Type of hash used for update bundle.
214
+ /// </summary>
215
+ public enum UpdateHashType
216
+ {
217
+ /// <summary>
218
+ /// No hash provided.
219
+ /// </summary>
220
+ None,
221
+
222
+ /// <summary>
223
+ /// SHA-1 based hash provided.
224
+ /// </summary>
225
+ Sha1,
226
+ }
227
+
228
+ /// <summary>
229
+ /// Describes the state of an installation package.
230
+ /// </summary>
231
+ public enum PackageState
232
+ {
233
+ Unknown,
234
+ Obsolete,
235
+ Absent,
236
+ Cached,
237
+ Present,
238
+ Superseded,
239
+ }
240
+
241
+ /// <summary>
242
+ /// Indicates the state desired for an installation package.
243
+ /// </summary>
244
+ public enum RequestState
245
+ {
246
+ None,
247
+ ForceAbsent,
248
+ Absent,
249
+ Cache,
250
+ Present,
251
+ Repair,
252
+ }
253
+
254
+ /// <summary>
255
+ /// Indicates the state of a feature.
256
+ /// </summary>
257
+ public enum FeatureState
258
+ {
259
+ Unknown,
260
+ Absent,
261
+ Advertised,
262
+ Local,
263
+ Source,
264
+ }
265
+
266
+ /// <summary>
267
+ /// Indicates the action for a feature.
268
+ /// </summary>
269
+ public enum FeatureAction
270
+ {
271
+ None,
272
+ AddLocal,
273
+ AddSource,
274
+ AddDefault,
275
+ Reinstall,
276
+ Advertise,
277
+ Remove,
278
+ }
279
+}
src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
-1
@@ -3,7 +3,6 @@
3
namespace WixToolset.Mba.Core
4
{
5
using System;
6
- using WixToolset.BootstrapperCore;
6
7
public interface IDefaultBootstrapperApplication : IBootstrapperApplication
8
{
src/WixToolset.Mba.Core/IEngine.cs
-1
@@ -5,7 +5,6 @@ namespace WixToolset.Mba.Core
5
using System;
6
using System.ComponentModel;
7
using System.Security;
8
- using WixToolset.BootstrapperCore;
8
9
public interface IEngine
10
{
src/WixToolset.Mba.Core/PackageInfo.cs
-1
@@ -6,7 +6,6 @@ namespace WixToolset.Mba.Core
6
using System.Collections.Generic;
7
using System.Xml;
8
using System.Xml.XPath;
9
- using WixToolset.BootstrapperCore;
9
10
public enum CacheType
11
{
src/WixToolset.Mba.Core/WixToolset.Mba.Core.csproj
+2
-3
@@ -35,9 +35,11 @@
35
<Compile Include="EventArgs.cs" />
36
<Compile Include="Exceptions.cs" />
37
<Compile Include="HostSection.cs" />
38
+ <Compile Include="IBootstrapperApplication.cs" />
39
<Compile Include="IBootstrapperApplicationData.cs" />
40
<Compile Include="IBootstrapperApplicationFactory.cs" />
41
<Compile Include="IBootstrapperCommand.cs" />
42
+ <Compile Include="IBootstrapperEngine.cs" />
43
<Compile Include="IBundleInfo.cs" />
44
<Compile Include="IDefaultBootstrapperApplication.cs" />
45
<Compile Include="IEngine.cs" />
@@ -62,9 +64,6 @@
64
<Reference Include="System.Configuration" />
65
<Reference Include="System.Data" />
66
<Reference Include="System.Xml" />
65
- <Reference Include="WixToolset.BootstrapperCore">
66
- <HintPath>..\..\packages\WixToolset.BootstrapperCore.4.0.8\lib\net20\WixToolset.BootstrapperCore.dll</HintPath>
67
- </Reference>
67
</ItemGroup>
68
<ItemGroup>
69
<HeaderPath Include="$(BaseOutputPath)$(Configuration)\$(AssemblyName).h">
src/WixToolset.Mba.Core/packages.config
-1
@@ -1,5 +1,4 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<packages>
3
<package id="Nerdbank.GitVersioning" version="2.1.65" targetFramework="net20" developmentDependency="true" />
4
- <package id="WixToolset.BootstrapperCore" version="4.0.8" targetFramework="net20" />
4
</packages>
\ No newline at end of file
src/balutil/inc/IBootstrapperApplication.h
new
+525
@@ -0,0 +1,525 @@
1
+#pragma once
2
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
+
4
+
5
+DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-AB06-099D717C67FE")
6
+{
7
+ // OnStartup - called when the engine is ready for the bootstrapper application to start.
8
+ //
9
+ STDMETHOD(OnStartup)() = 0;
10
+
11
+ // OnShutdown - called after the bootstrapper application quits the engine.
12
+ STDMETHOD(OnShutdown)(
13
+ __inout BOOTSTRAPPER_SHUTDOWN_ACTION* pAction
14
+ ) = 0;
15
+
16
+ // OnSystemShutdown - called when the operating system is instructed to shutdown the machine.
17
+ STDMETHOD(OnSystemShutdown)(
18
+ __in DWORD dwEndSession,
19
+ __inout BOOL* pfCancel
20
+ ) = 0;
21
+
22
+ // OnDetectBegin - called when the engine begins detection.
23
+ STDMETHOD(OnDetectBegin)(
24
+ __in BOOL fInstalled,
25
+ __in DWORD cPackages,
26
+ __inout BOOL* pfCancel
27
+ ) = 0;
28
+
29
+ // OnDetectForwardCompatibleBundle - called when the engine detects a forward compatible bundle.
30
+ STDMETHOD(OnDetectForwardCompatibleBundle)(
31
+ __in_z LPCWSTR wzBundleId,
32
+ __in BOOTSTRAPPER_RELATION_TYPE relationType,
33
+ __in_z LPCWSTR wzBundleTag,
34
+ __in BOOL fPerMachine,
35
+ __in DWORD64 dw64Version,
36
+ __inout BOOL* pfCancel,
37
+ __inout BOOL* pfIgnoreBundle
38
+ ) = 0;
39
+
40
+ // OnDetectUpdateBegin - called when the engine begins detection for bundle update.
41
+ STDMETHOD(OnDetectUpdateBegin)(
42
+ __in_z LPCWSTR wzUpdateLocation,
43
+ __inout BOOL* pfCancel,
44
+ __inout BOOL* pfSkip
45
+ ) = 0;
46
+
47
+ // OnDetectUpdate - called when the engine has an update candidate for bundle update.
48
+ STDMETHOD(OnDetectUpdate)(
49
+ __in_z_opt LPCWSTR wzUpdateLocation,
50
+ __in DWORD64 dw64Size,
51
+ __in DWORD64 dw64Version,
52
+ __in_z_opt LPCWSTR wzTitle,
53
+ __in_z_opt LPCWSTR wzSummary,
54
+ __in_z_opt LPCWSTR wzContentType,
55
+ __in_z_opt LPCWSTR wzContent,
56
+ __inout BOOL* pfCancel,
57
+ __inout BOOL* pfStopProcessingUpdates
58
+ ) = 0;
59
+
60
+ // OnDetectUpdateComplete - called when the engine completes detection for bundle update.
61
+ STDMETHOD(OnDetectUpdateComplete)(
62
+ __in HRESULT hrStatus,
63
+ __inout BOOL* pfIgnoreError
64
+ ) = 0;
65
+
66
+ // OnDetectRelatedBundle - called when the engine detects a related bundle.
67
+ STDMETHOD(OnDetectRelatedBundle)(
68
+ __in_z LPCWSTR wzBundleId,
69
+ __in BOOTSTRAPPER_RELATION_TYPE relationType,
70
+ __in_z LPCWSTR wzBundleTag,
71
+ __in BOOL fPerMachine,
72
+ __in DWORD64 dw64Version,
73
+ __in BOOTSTRAPPER_RELATED_OPERATION operation,
74
+ __inout BOOL* pfCancel
75
+ ) = 0;
76
+
77
+ // OnDetectPackageBegin - called when the engine begins detecting a package.
78
+ STDMETHOD(OnDetectPackageBegin)(
79
+ __in_z LPCWSTR wzPackageId,
80
+ __inout BOOL* pfCancel
81
+ ) = 0;
82
+
83
+ // OnDetectCompatibleMsiPackage - called when the engine detects that a package is not installed but a newer package using the same provider key is.
84
+ STDMETHOD(OnDetectCompatibleMsiPackage)(
85
+ __in_z LPCWSTR wzPackageId,
86
+ __in_z LPCWSTR wzCompatiblePackageId,
87
+ __in DWORD64 dw64CompatiblePackageVersion,
88
+ __inout BOOL* pfCancel
89
+ ) = 0;
90
+
91
+ // OnDetectRelatedMsiPackage - called when the engine begins detects a related package.
92
+ STDMETHOD(OnDetectRelatedMsiPackage)(
93
+ __in_z LPCWSTR wzPackageId,
94
+ __in_z LPCWSTR wzUpgradeCode,
95
+ __in_z LPCWSTR wzProductCode,
96
+ __in BOOL fPerMachine,
97
+ __in DWORD64 dw64Version,
98
+ __in BOOTSTRAPPER_RELATED_OPERATION operation,
99
+ __inout BOOL* pfCancel
100
+ ) = 0;
101
+
102
+ // OnDetectTargetMsiPackage - called when the engine detects a target MSI package for
103
+ // an MSP package.
104
+ STDMETHOD(OnDetectTargetMsiPackage)(
105
+ __in_z LPCWSTR wzPackageId,
106
+ __in_z LPCWSTR wzProductCode,
107
+ __in BOOTSTRAPPER_PACKAGE_STATE patchState,
108
+ __inout BOOL* pfCancel
109
+ ) = 0;
110
+
111
+ // OnDetectMsiFeature - called when the engine detects a feature in an MSI package.
112
+ STDMETHOD(OnDetectMsiFeature)(
113
+ __in_z LPCWSTR wzPackageId,
114
+ __in_z LPCWSTR wzFeatureId,
115
+ __in BOOTSTRAPPER_FEATURE_STATE state,
116
+ __inout BOOL* pfCancel
117
+ ) = 0;
118
+
119
+ // OnDetectPackageComplete - called after the engine detects a package.
120
+ //
121
+ STDMETHOD(OnDetectPackageComplete)(
122
+ __in_z LPCWSTR wzPackageId,
123
+ __in HRESULT hrStatus,
124
+ __in BOOTSTRAPPER_PACKAGE_STATE state
125
+ ) = 0;
126
+
127
+ // OnDetectPackageComplete - called after the engine completes detection.
128
+ //
129
+ STDMETHOD(OnDetectComplete)(
130
+ __in HRESULT hrStatus
131
+ ) = 0;
132
+
133
+ // OnPlanBegin - called when the engine begins planning.
134
+ STDMETHOD(OnPlanBegin)(
135
+ __in DWORD cPackages,
136
+ __inout BOOL* pfCancel
137
+ ) = 0;
138
+
139
+ // OnPlanRelatedBundle - called when the engine begins planning a related bundle.
140
+ STDMETHOD(OnPlanRelatedBundle)(
141
+ __in_z LPCWSTR wzBundleId,
142
+ __in BOOTSTRAPPER_REQUEST_STATE recommendedState,
143
+ __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
144
+ __inout BOOL* pfCancel
145
+ ) = 0;
146
+
147
+ // OnPlanPackageBegin - called when the engine begins planning a package.
148
+ STDMETHOD(OnPlanPackageBegin)(
149
+ __in_z LPCWSTR wzPackageId,
150
+ __in BOOTSTRAPPER_REQUEST_STATE recommendedState,
151
+ __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
152
+ __inout BOOL* pfCancel
153
+ ) = 0;
154
+
155
+ // OnPlanCompatibleMsiPackageBegin - called when the engine plans a newer, compatible package using the same provider key.
156
+ STDMETHOD(OnPlanCompatibleMsiPackageBegin)(
157
+ __in_z LPCWSTR wzPackageId,
158
+ __in_z LPCWSTR wzCompatiblePackageId,
159
+ __in DWORD64 dw64CompatiblePackageVersion,
160
+ __in BOOTSTRAPPER_REQUEST_STATE recommendedState,
161
+ __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
162
+ __inout BOOL* pfCancel
163
+ ) = 0;
164
+
165
+ // OnPlanCompatibleMsiPackageComplete - called after the engine plans the package.
166
+ //
167
+ STDMETHOD(OnPlanCompatibleMsiPackageComplete)(
168
+ __in_z LPCWSTR wzPackageId,
169
+ __in_z LPCWSTR wzCompatiblePackageId,
170
+ __in HRESULT hrStatus,
171
+ __in BOOTSTRAPPER_PACKAGE_STATE state,
172
+ __in BOOTSTRAPPER_REQUEST_STATE requested,
173
+ __in BOOTSTRAPPER_ACTION_STATE execute,
174
+ __in BOOTSTRAPPER_ACTION_STATE rollback
175
+ ) = 0;
176
+
177
+ // OnPlanTargetMsiPackage - called when the engine plans an MSP package
178
+ // to apply to an MSI package.
179
+ STDMETHOD(OnPlanTargetMsiPackage)(
180
+ __in_z LPCWSTR wzPackageId,
181
+ __in_z LPCWSTR wzProductCode,
182
+ __in BOOTSTRAPPER_REQUEST_STATE recommendedState,
183
+ __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
184
+ __inout BOOL* pfCancel
185
+ ) = 0;
186
+
187
+ // OnPlanMsiFeature - called when the engine plans a feature in an
188
+ // MSI package.
189
+ STDMETHOD(OnPlanMsiFeature)(
190
+ __in_z LPCWSTR wzPackageId,
191
+ __in_z LPCWSTR wzFeatureId,
192
+ __in BOOTSTRAPPER_FEATURE_STATE recommendedState,
193
+ __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState,
194
+ __inout BOOL* pfCancel
195
+ ) = 0;
196
+
197
+ // OnPlanPackageComplete - called after the engine plans a package.
198
+ //
199
+ STDMETHOD(OnPlanPackageComplete)(
200
+ __in_z LPCWSTR wzPackageId,
201
+ __in HRESULT hrStatus,
202
+ __in BOOTSTRAPPER_PACKAGE_STATE state,
203
+ __in BOOTSTRAPPER_REQUEST_STATE requested,
204
+ __in BOOTSTRAPPER_ACTION_STATE execute,
205
+ __in BOOTSTRAPPER_ACTION_STATE rollback
206
+ ) = 0;
207
+
208
+ // OnPlanComplete - called when the engine completes planning.
209
+ //
210
+ STDMETHOD(OnPlanComplete)(
211
+ __in HRESULT hrStatus
212
+ ) = 0;
213
+
214
+ // OnApplyBegin - called when the engine begins applying the plan.
215
+ //
216
+ STDMETHOD(OnApplyBegin)(
217
+ __in DWORD dwPhaseCount,
218
+ __inout BOOL* pfCancel
219
+ ) = 0;
220
+
221
+ // OnElevateBegin - called before the engine displays an elevation prompt.
222
+ // Will only happen once per execution of the engine,
223
+ // assuming the elevation was successful.
224
+ STDMETHOD(OnElevateBegin)(
225
+ __inout BOOL* pfCancel
226
+ ) = 0;
227
+
228
+ // OnElevateComplete - called after the engine attempted to elevate.
229
+ //
230
+ STDMETHOD(OnElevateComplete)(
231
+ __in HRESULT hrStatus
232
+ ) = 0;
233
+
234
+ // OnProgress - called when the engine makes progress.
235
+ //
236
+ STDMETHOD(OnProgress)(
237
+ __in DWORD dwProgressPercentage,
238
+ __in DWORD dwOverallPercentage,
239
+ __inout BOOL* pfCancel
240
+ ) = 0;
241
+
242
+ // OnError - called when the engine encounters an error.
243
+ //
244
+ // nResult:
245
+ // uiFlags is a combination of valid ID* return values appropriate for
246
+ // the error.
247
+ //
248
+ // IDNOACTION instructs the engine to pass the error through to default
249
+ // handling which usually results in the apply failing.
250
+ STDMETHOD(OnError)(
251
+ __in BOOTSTRAPPER_ERROR_TYPE errorType,
252
+ __in_z_opt LPCWSTR wzPackageId,
253
+ __in DWORD dwCode,
254
+ __in_z_opt LPCWSTR wzError,
255
+ __in DWORD dwUIHint,
256
+ __in DWORD cData,
257
+ __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
258
+ __in int nRecommendation,
259
+ __inout int* pResult
260
+ ) = 0;
261
+
262
+ // OnRegisterBegin - called when the engine registers the bundle.
263
+ //
264
+ STDMETHOD(OnRegisterBegin)(
265
+ __inout BOOL* pfCancel
266
+ ) = 0;
267
+
268
+ // OnRegisterComplete - called when the engine registration is
269
+ // complete.
270
+ //
271
+ STDMETHOD(OnRegisterComplete)(
272
+ __in HRESULT hrStatus
273
+ ) = 0;
274
+
275
+ // OnCacheBegin - called when the engine begins caching.
276
+ //
277
+ STDMETHOD(OnCacheBegin)(
278
+ __inout BOOL* pfCancel
279
+ ) = 0;
280
+
281
+ // OnCachePackageBegin - called when the engine begins caching
282
+ // a package.
283
+ //
284
+ STDMETHOD(OnCachePackageBegin)(
285
+ __in_z LPCWSTR wzPackageId,
286
+ __in DWORD cCachePayloads,
287
+ __in DWORD64 dw64PackageCacheSize,
288
+ __inout BOOL* pfCancel
289
+ ) = 0;
290
+
291
+ // OnCacheAcquireBegin - called when the engine begins copying or
292
+ // downloading a payload to the working folder.
293
+ //
294
+ STDMETHOD(OnCacheAcquireBegin)(
295
+ __in_z_opt LPCWSTR wzPackageOrContainerId,
296
+ __in_z_opt LPCWSTR wzPayloadId,
297
+ __in BOOTSTRAPPER_CACHE_OPERATION operation,
298
+ __in_z LPCWSTR wzSource,
299
+ __inout BOOL* pfCancel
300
+ ) = 0;
301
+
302
+ // OnCacheAcquireProgress - called when the engine makes progresss copying
303
+ // or downloading a payload to the working folder.
304
+ //
305
+ STDMETHOD(OnCacheAcquireProgress)(
306
+ __in_z_opt LPCWSTR wzPackageOrContainerId,
307
+ __in_z_opt LPCWSTR wzPayloadId,
308
+ __in DWORD64 dw64Progress,
309
+ __in DWORD64 dw64Total,
310
+ __in DWORD dwOverallPercentage,
311
+ __inout BOOL* pfCancel
312
+ ) = 0;
313
+
314
+ // OnResolveSource - called when a payload or container cannot be found locally.
315
+ //
316
+ // Parameters:
317
+ // wzPayloadId will be NULL when resolving a container.
318
+ // wzDownloadSource will be NULL if the container or payload does not provide a DownloadURL.
319
+ //
320
+ // Notes:
321
+ // It is expected the BA may call IBootstrapperEngine::SetLocalSource() or IBootstrapperEngine::SetDownloadSource()
322
+ // to update the source location before returning BOOTSTRAPPER_RESOLVESOURCE_ACTION_RETRY or BOOTSTRAPPER_RESOLVESOURCE_ACTION_DOWNLOAD.
323
+ STDMETHOD(OnResolveSource)(
324
+ __in_z LPCWSTR wzPackageOrContainerId,
325
+ __in_z_opt LPCWSTR wzPayloadId,
326
+ __in_z LPCWSTR wzLocalSource,
327
+ __in_z_opt LPCWSTR wzDownloadSource,
328
+ __in BOOTSTRAPPER_RESOLVESOURCE_ACTION recommendation,
329
+ __inout BOOTSTRAPPER_RESOLVESOURCE_ACTION* pAction,
330
+ __inout BOOL* pfCancel
331
+ ) = 0;
332
+
333
+ // OnCacheAcquireComplete - called after the engine copied or downloaded
334
+ // a payload to the working folder.
335
+ //
336
+ STDMETHOD(OnCacheAcquireComplete)(
337
+ __in_z_opt LPCWSTR wzPackageOrContainerId,
338
+ __in_z_opt LPCWSTR wzPayloadId,
339
+ __in HRESULT hrStatus,
340
+ __in BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation,
341
+ __inout BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION* pAction
342
+ ) = 0;
343
+
344
+ // OnCacheVerifyBegin - called when the engine begins to verify then copy
345
+ // a payload or container to the package cache folder.
346
+ //
347
+ STDMETHOD(OnCacheVerifyBegin)(
348
+ __in_z_opt LPCWSTR wzPackageOrContainerId,
349
+ __in_z_opt LPCWSTR wzPayloadId,
350
+ __inout BOOL* pfCancel
351
+ ) = 0;
352
+
353
+ // OnCacheVerifyComplete - called after the engine verifies and copies
354
+ // a payload or container to the package cache folder.
355
+ //
356
+ STDMETHOD(OnCacheVerifyComplete)(
357
+ __in_z_opt LPCWSTR wzPackageOrContainerId,
358
+ __in_z_opt LPCWSTR wzPayloadId,
359
+ __in HRESULT hrStatus,
360
+ __in BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation,
361
+ __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction
362
+ ) = 0;
363
+
364
+ // OnCachePackageComplete - called after the engine attempts to copy or download all
365
+ // payloads of a package into the package cache folder.
366
+ //
367
+ STDMETHOD(OnCachePackageComplete)(
368
+ __in_z LPCWSTR wzPackageId,
369
+ __in HRESULT hrStatus,
370
+ __in BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation,
371
+ __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction
372
+ ) = 0;
373
+
374
+ // OnCacheComplete - called when the engine caching is complete.
375
+ //
376
+ STDMETHOD(OnCacheComplete)(
377
+ __in HRESULT hrStatus
378
+ ) = 0;
379
+
380
+ // OnExecuteBegin - called when the engine begins executing the plan.
381
+ //
382
+ STDMETHOD(OnExecuteBegin)(
383
+ __in DWORD cExecutingPackages,
384
+ __inout BOOL* pfCancel
385
+ ) = 0;
386
+
387
+ // OnExecuteBegin - called when the engine begins executing a package.
388
+ //
389
+ STDMETHOD(OnExecutePackageBegin)(
390
+ __in_z LPCWSTR wzPackageId,
391
+ __in BOOL fExecute,
392
+ __inout BOOL* pfCancel
393
+ ) = 0;
394
+
395
+ // OnExecutePatchTarget - called for each patch in an MspPackage targeting the product
396
+ // when the engine begins executing the MspPackage.
397
+ //
398
+ STDMETHOD(OnExecutePatchTarget)(
399
+ __in_z LPCWSTR wzPackageId,
400
+ __in_z LPCWSTR wzTargetProductCode,
401
+ __inout BOOL* pfCancel
402
+ ) = 0;
403
+
404
+ // OnExecuteProgress - called when the engine makes progress executing a package.
405
+ //
406
+ STDMETHOD(OnExecuteProgress)(
407
+ __in_z LPCWSTR wzPackageId,
408
+ __in DWORD dwProgressPercentage,
409
+ __in DWORD dwOverallPercentage,
410
+ __inout BOOL* pfCancel
411
+ ) = 0;
412
+
413
+ // OnExecuteMsiMessage - called when the engine receives an MSI package message.
414
+ //
415
+ // Return:
416
+ // uiFlags is a combination of valid ID* return values appropriate for
417
+ // the message.
418
+ //
419
+ // IDNOACTION instructs the engine to pass the message through to default
420
+ // handling which usually results in the execution continuing.
421
+ STDMETHOD(OnExecuteMsiMessage)(
422
+ __in_z LPCWSTR wzPackageId,
423
+ __in INSTALLMESSAGE messageType,
424
+ __in DWORD dwUIHint,
425
+ __in_z LPCWSTR wzMessage,
426
+ __in DWORD cData,
427
+ __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
428
+ __in int nRecommendation,
429
+ __inout int* pResult
430
+ ) = 0;
431
+
432
+ // OnExecuteFilesInUse - called when the engine encounters files in use while
433
+ // executing a package.
434
+ //
435
+ // Return:
436
+ // IDOK instructs the engine to let the Restart Manager attempt to close the
437
+ // applications to avoid a restart.
438
+ //
439
+ // IDCANCEL instructs the engine to abort the execution and start rollback.
440
+ //
441
+ // IDIGNORE instructs the engine to ignore the running applications. A restart will be
442
+ // required.
443
+ //
444
+ // IDRETRY instructs the engine to check if the applications are still running again.
445
+ //
446
+ // IDNOACTION is equivalent to ignoring the running applications. A restart will be
447
+ // required.
448
+ STDMETHOD(OnExecuteFilesInUse)(
449
+ __in_z LPCWSTR wzPackageId,
450
+ __in DWORD cFiles,
451
+ __in_ecount_z(cFiles) LPCWSTR* rgwzFiles,
452
+ __in int nRecommendation,
453
+ __inout int* pResult
454
+ ) = 0;
455
+
456
+ // OnExecutePackageComplete - called when a package execution is complete.
457
+ //
458
+ STDMETHOD(OnExecutePackageComplete)(
459
+ __in_z LPCWSTR wzPackageId,
460
+ __in HRESULT hrStatus,
461
+ __in BOOTSTRAPPER_APPLY_RESTART restart,
462
+ __in BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation,
463
+ __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction
464
+ ) = 0;
465
+
466
+ // OnExecuteComplete - called when the engine execution is complete.
467
+ //
468
+ STDMETHOD(OnExecuteComplete)(
469
+ __in HRESULT hrStatus
470
+ ) = 0;
471
+
472
+ // OnUnregisterBegin - called when the engine unregisters the bundle.
473
+ //
474
+ STDMETHOD(OnUnregisterBegin)(
475
+ __inout BOOL* pfCancel
476
+ ) = 0;
477
+
478
+ // OnUnregisterComplete - called when the engine unregistration is complete.
479
+ //
480
+ STDMETHOD(OnUnregisterComplete)(
481
+ __in HRESULT hrStatus
482
+ ) = 0;
483
+
484
+ // OnApplyComplete - called after the plan has been applied.
485
+ //
486
+ STDMETHOD(OnApplyComplete)(
487
+ __in HRESULT hrStatus,
488
+ __in BOOTSTRAPPER_APPLY_RESTART restart,
489
+ __in BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation,
490
+ __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction
491
+ ) = 0;
492
+
493
+ // OnLaunchApprovedExeBegin - called before trying to launch the preapproved executable.
494
+ //
495
+ STDMETHOD(OnLaunchApprovedExeBegin)(
496
+ __inout BOOL* pfCancel
497
+ ) = 0;
498
+
499
+ // OnLaunchApprovedExeComplete - called after trying to launch the preapproved executable.
500
+ //
501
+ STDMETHOD(OnLaunchApprovedExeComplete)(
502
+ __in HRESULT hrStatus,
503
+ __in DWORD dwProcessId
504
+ ) = 0;
505
+
506
+ // BAProc - The PFN_BOOTSTRAPPER_APPLICATION_PROC can call this method to give the BA raw access to the callback from the engine.
507
+ // This might be used to help the BA support more than one version of the engine.
508
+ STDMETHOD(BAProc)(
509
+ __in BOOTSTRAPPER_APPLICATION_MESSAGE message,
510
+ __in const LPVOID pvArgs,
511
+ __inout LPVOID pvResults,
512
+ __in_opt LPVOID pvContext
513
+ ) = 0;
514
+
515
+ // BAProcFallback - The PFN_BOOTSTRAPPER_APPLICATION_PROC can call this method
516
+ // to give the BA the ability to use default behavior
517
+ // and then forward the message to extensions.
518
+ STDMETHOD_(void, BAProcFallback)(
519
+ __in BOOTSTRAPPER_APPLICATION_MESSAGE message,
520
+ __in const LPVOID pvArgs,
521
+ __inout LPVOID pvResults,
522
+ __inout HRESULT* phr,
523
+ __in_opt LPVOID pvContext
524
+ ) = 0;
525
+};
src/balutil/inc/IBootstrapperEngine.h
new
+128
@@ -0,0 +1,128 @@
1
+#pragma once
2
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
+
4
+
5
+DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB")
6
+{
7
+ STDMETHOD(GetPackageCount)(
8
+ __out DWORD* pcPackages
9
+ ) = 0;
10
+
11
+ STDMETHOD(GetVariableNumeric)(
12
+ __in_z LPCWSTR wzVariable,
13
+ __out LONGLONG* pllValue
14
+ ) = 0;
15
+
16
+ STDMETHOD(GetVariableString)(
17
+ __in_z LPCWSTR wzVariable,
18
+ __out_ecount_opt(*pcchValue) LPWSTR wzValue,
19
+ __inout DWORD* pcchValue
20
+ ) = 0;
21
+
22
+ STDMETHOD(GetVariableVersion)(
23
+ __in_z LPCWSTR wzVariable,
24
+ __out DWORD64* pqwValue
25
+ ) = 0;
26
+
27
+ STDMETHOD(FormatString)(
28
+ __in_z LPCWSTR wzIn,
29
+ __out_ecount_opt(*pcchOut) LPWSTR wzOut,
30
+ __inout DWORD* pcchOut
31
+ ) = 0;
32
+
33
+ STDMETHOD(EscapeString)(
34
+ __in_z LPCWSTR wzIn,
35
+ __out_ecount_opt(*pcchOut) LPWSTR wzOut,
36
+ __inout DWORD* pcchOut
37
+ ) = 0;
38
+
39
+ STDMETHOD(EvaluateCondition)(
40
+ __in_z LPCWSTR wzCondition,
41
+ __out BOOL* pf
42
+ ) = 0;
43
+
44
+ STDMETHOD(Log)(
45
+ __in BOOTSTRAPPER_LOG_LEVEL level,
46
+ __in_z LPCWSTR wzMessage
47
+ ) = 0;
48
+
49
+ STDMETHOD(SendEmbeddedError)(
50
+ __in DWORD dwErrorCode,
51
+ __in_z_opt LPCWSTR wzMessage,
52
+ __in DWORD dwUIHint,
53
+ __out int* pnResult
54
+ ) = 0;
55
+
56
+ STDMETHOD(SendEmbeddedProgress)(
57
+ __in DWORD dwProgressPercentage,
58
+ __in DWORD dwOverallProgressPercentage,
59
+ __out int* pnResult
60
+ ) = 0;
61
+
62
+ STDMETHOD(SetUpdate)(
63
+ __in_z_opt LPCWSTR wzLocalSource,
64
+ __in_z_opt LPCWSTR wzDownloadSource,
65
+ __in DWORD64 qwSize,
66
+ __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashType,
67
+ __in_bcount_opt(cbHash) BYTE* rgbHash,
68
+ __in DWORD cbHash
69
+ ) = 0;
70
+
71
+ STDMETHOD(SetLocalSource)(
72
+ __in_z LPCWSTR wzPackageOrContainerId,
73
+ __in_z_opt LPCWSTR wzPayloadId,
74
+ __in_z LPCWSTR wzPath
75
+ ) = 0;
76
+
77
+ STDMETHOD(SetDownloadSource)(
78
+ __in_z LPCWSTR wzPackageOrContainerId,
79
+ __in_z_opt LPCWSTR wzPayloadId,
80
+ __in_z LPCWSTR wzUrl,
81
+ __in_z_opt LPCWSTR wzUser,
82
+ __in_z_opt LPCWSTR wzPassword
83
+ ) = 0;
84
+
85
+ STDMETHOD(SetVariableNumeric)(
86
+ __in_z LPCWSTR wzVariable,
87
+ __in LONGLONG llValue
88
+ ) = 0;
89
+
90
+ STDMETHOD(SetVariableString)(
91
+ __in_z LPCWSTR wzVariable,
92
+ __in_z_opt LPCWSTR wzValue
93
+ ) = 0;
94
+
95
+ STDMETHOD(SetVariableVersion)(
96
+ __in_z LPCWSTR wzVariable,
97
+ __in DWORD64 qwValue
98
+ ) = 0;
99
+
100
+ STDMETHOD(CloseSplashScreen)() = 0;
101
+
102
+ STDMETHOD(Detect)(
103
+ __in_opt HWND hwndParent = NULL
104
+ ) = 0;
105
+
106
+ STDMETHOD(Plan)(
107
+ __in BOOTSTRAPPER_ACTION action
108
+ ) = 0;
109
+
110
+ STDMETHOD(Elevate)(
111
+ __in_opt HWND hwndParent
112
+ ) = 0;
113
+
114
+ STDMETHOD(Apply)(
115
+ __in_opt HWND hwndParent
116
+ ) = 0;
117
+
118
+ STDMETHOD(Quit)(
119
+ __in DWORD dwExitCode
120
+ ) = 0;
121
+
122
+ STDMETHOD(LaunchApprovedExe)(
123
+ __in_opt HWND hwndParent,
124
+ __in_z LPCWSTR wzApprovedExeForElevationId,
125
+ __in_z_opt LPCWSTR wzArguments,
126
+ __in DWORD dwWaitForInputIdleTimeout
127
+ ) = 0;
128
+};