aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn/inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn/inc')
-rw-r--r--src/api/burn/inc/BootstrapperApplication.h1606
-rw-r--r--src/api/burn/inc/BootstrapperEngine.h460
-rw-r--r--src/api/burn/inc/BundleExtension.h61
-rw-r--r--src/api/burn/inc/BundleExtensionEngine.h200
4 files changed, 2327 insertions, 0 deletions
diff --git a/src/api/burn/inc/BootstrapperApplication.h b/src/api/burn/inc/BootstrapperApplication.h
new file mode 100644
index 00000000..79b1df80
--- /dev/null
+++ b/src/api/burn/inc/BootstrapperApplication.h
@@ -0,0 +1,1606 @@
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#include "BootstrapperEngine.h"
5
6#if defined(__cplusplus)
7extern "C" {
8#endif
9
10const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_API_VERSION = L"burn.ba.apiver";
11const LPCWSTR BOOTSTRAPPER_APPLICATION_COMMANDLINE_SWITCH_PIPE_NAME = L"burn.ba.pipe";
12const DWORD WIX_5_BOOTSTRAPPER_APPLICATION_API_VERSION = 5;
13
14enum BOOTSTRAPPER_DISPLAY
15{
16 BOOTSTRAPPER_DISPLAY_UNKNOWN,
17 BOOTSTRAPPER_DISPLAY_EMBEDDED,
18 BOOTSTRAPPER_DISPLAY_NONE,
19 BOOTSTRAPPER_DISPLAY_PASSIVE,
20 BOOTSTRAPPER_DISPLAY_FULL,
21};
22
23enum BOOTSTRAPPER_REGISTRATION_TYPE
24{
25 BOOTSTRAPPER_REGISTRATION_TYPE_NONE, // The engine will ignore NONE if it recommended INPROGRESS or FULL.
26 BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS,
27 BOOTSTRAPPER_REGISTRATION_TYPE_FULL,
28};
29
30enum BOOTSTRAPPER_RESUME_TYPE
31{
32 BOOTSTRAPPER_RESUME_TYPE_NONE,
33 BOOTSTRAPPER_RESUME_TYPE_INVALID, // resume information is present but invalid
34 BOOTSTRAPPER_RESUME_TYPE_INTERRUPTED, // relaunched after an unexpected interruption
35 BOOTSTRAPPER_RESUME_TYPE_REBOOT, // relaunched after reboot
36 BOOTSTRAPPER_RESUME_TYPE_SUSPEND, // relaunched after suspend
37 BOOTSTRAPPER_RESUME_TYPE_ARP, // launched from ARP
38};
39
40enum BOOTSTRAPPER_ERROR_TYPE
41{
42 BOOTSTRAPPER_ERROR_TYPE_ELEVATE, // error occurred trying to elevate.
43 BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, // error came from windows installer.
44 BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, // error came from an exe package.
45 BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_SERVER, // error occurred trying to authenticate with HTTP server.
46 BOOTSTRAPPER_ERROR_TYPE_HTTP_AUTH_PROXY, // error occurred trying to authenticate with HTTP proxy.
47 BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply.
48};
49
50enum BOOTSTRAPPER_FILES_IN_USE_TYPE
51{
52 BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI, // INSTALLMESSAGE_FILESINUSE
53 BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM, // INSTALLMESSAGE_RMFILESINUSE
54 BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, // MMIO_CLOSE_APPS
55};
56
57enum BOOTSTRAPPER_RELATED_OPERATION
58{
59 BOOTSTRAPPER_RELATED_OPERATION_NONE,
60 BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE,
61 BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE,
62 BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE,
63 BOOTSTRAPPER_RELATED_OPERATION_REMOVE,
64 BOOTSTRAPPER_RELATED_OPERATION_INSTALL,
65 BOOTSTRAPPER_RELATED_OPERATION_REPAIR,
66};
67
68enum BOOTSTRAPPER_CACHE_OPERATION
69{
70 // There is no source available.
71 BOOTSTRAPPER_CACHE_OPERATION_NONE,
72 // Copy the payload or container from the chosen local source.
73 BOOTSTRAPPER_CACHE_OPERATION_COPY,
74 // Download the payload or container using the download URL.
75 BOOTSTRAPPER_CACHE_OPERATION_DOWNLOAD,
76 // Extract the payload from the container.
77 BOOTSTRAPPER_CACHE_OPERATION_EXTRACT,
78};
79
80enum BOOTSTRAPPER_CACHE_RESOLVE_OPERATION
81{
82 // There is no source available.
83 BOOTSTRAPPER_CACHE_RESOLVE_NONE,
84 // Copy the payload or container from the chosen local source.
85 BOOTSTRAPPER_CACHE_RESOLVE_LOCAL,
86 // Download the payload or container from the download URL.
87 BOOTSTRAPPER_CACHE_RESOLVE_DOWNLOAD,
88 // Extract the payload from the container.
89 BOOTSTRAPPER_CACHE_RESOLVE_CONTAINER,
90 // Look again for the payload or container locally.
91 BOOTSTRAPPER_CACHE_RESOLVE_RETRY,
92};
93
94enum BOOTSTRAPPER_CACHE_VERIFY_STEP
95{
96 BOOTSTRAPPER_CACHE_VERIFY_STEP_STAGE,
97 BOOTSTRAPPER_CACHE_VERIFY_STEP_HASH,
98 BOOTSTRAPPER_CACHE_VERIFY_STEP_FINALIZE,
99};
100
101enum BOOTSTRAPPER_APPLY_RESTART
102{
103 BOOTSTRAPPER_APPLY_RESTART_NONE,
104 BOOTSTRAPPER_APPLY_RESTART_REQUIRED,
105 BOOTSTRAPPER_APPLY_RESTART_INITIATED,
106};
107
108enum BOOTSTRAPPER_RELATION_TYPE
109{
110 BOOTSTRAPPER_RELATION_NONE,
111 BOOTSTRAPPER_RELATION_DETECT,
112 BOOTSTRAPPER_RELATION_UPGRADE,
113 BOOTSTRAPPER_RELATION_ADDON,
114 BOOTSTRAPPER_RELATION_PATCH,
115 BOOTSTRAPPER_RELATION_DEPENDENT_ADDON,
116 BOOTSTRAPPER_RELATION_DEPENDENT_PATCH,
117 BOOTSTRAPPER_RELATION_UPDATE,
118 BOOTSTRAPPER_RELATION_CHAIN_PACKAGE,
119};
120
121enum BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE
122{
123 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_NONE,
124 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE,
125 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE,
126 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_ADDON,
127 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_PATCH,
128 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_ADDON,
129 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_PATCH,
130};
131
132enum BOOTSTRAPPER_CACHE_TYPE
133{
134 BOOTSTRAPPER_CACHE_TYPE_REMOVE,
135 BOOTSTRAPPER_CACHE_TYPE_KEEP,
136 BOOTSTRAPPER_CACHE_TYPE_FORCE,
137};
138
139enum BOOTSTRAPPER_PACKAGE_CONDITION_RESULT
140{
141 BOOTSTRAPPER_PACKAGE_CONDITION_DEFAULT,
142 BOOTSTRAPPER_PACKAGE_CONDITION_FALSE,
143 BOOTSTRAPPER_PACKAGE_CONDITION_TRUE,
144};
145
146enum BOOTSTRAPPER_MSI_FILE_VERSIONING
147{
148 BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, //o
149 BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER_OR_EQUAL, //e
150 BOOTSTRAPPER_MSI_FILE_VERSIONING_ALL, //a
151};
152
153enum BOOTSTRAPPER_APPLICATION_MESSAGE
154{
155 BOOTSTRAPPER_APPLICATION_MESSAGE_UNKNOWN = 65536,
156 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCREATE,
157 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDESTROY,
158 BOOTSTRAPPER_APPLICATION_MESSAGE_ONSTARTUP,
159 BOOTSTRAPPER_APPLICATION_MESSAGE_ONSHUTDOWN,
160 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTBEGIN,
161 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPLETE,
162 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTFORWARDCOMPATIBLEBUNDLE,
163 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE,
164 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGEBEGIN,
165 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGECOMPLETE,
166 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPATCHTARGET,
167 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLE,
168 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE,
169 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATEBEGIN,
170 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATE,
171 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATECOMPLETE,
172 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANBEGIN,
173 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPLETE,
174 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE,
175 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN,
176 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGECOMPLETE,
177 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPATCHTARGET,
178 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLE,
179 BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYBEGIN,
180 BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATEBEGIN,
181 BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATECOMPLETE,
182 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPROGRESS,
183 BOOTSTRAPPER_APPLICATION_MESSAGE_ONERROR,
184 BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERBEGIN,
185 BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERCOMPLETE,
186 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEBEGIN,
187 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGEBEGIN,
188 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREBEGIN,
189 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREPROGRESS,
190 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRERESOLVING,
191 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRECOMPLETE,
192 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYBEGIN,
193 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYCOMPLETE,
194 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGECOMPLETE,
195 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECOMPLETE,
196 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEBEGIN,
197 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGEBEGIN,
198 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPATCHTARGET,
199 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROGRESS,
200 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEMSIMESSAGE,
201 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEFILESINUSE,
202 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGECOMPLETE,
203 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTECOMPLETE,
204 BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERBEGIN,
205 BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERCOMPLETE,
206 BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE,
207 BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN,
208 BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE,
209 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE,
210 BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN,
211 BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE,
212 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN,
213 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE,
214 BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN,
215 BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE,
216 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN,
217 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE,
218 BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN,
219 BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE,
220 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE,
221 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE,
222 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS,
223 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN,
224 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE,
225 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS,
226 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTBEGIN,
227 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE,
228 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS,
229 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY,
230 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE,
231 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN,
232 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE,
233 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE,
234 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRESTORERELATEDBUNDLE,
235 BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLETYPE,
236 BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYDOWNGRADE,
237 BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROCESSCANCEL,
238 BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLEPACKAGE,
239 BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGENONVITALVALIDATIONFAILURE,
240};
241
242enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION
243{
244 BOOTSTRAPPER_APPLYCOMPLETE_ACTION_NONE,
245 // Instructs the engine to restart.
246 // The engine will not launch again after the machine is rebooted.
247 // Ignored if reboot was already initiated by OnExecutePackageComplete().
248 BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART,
249};
250
251enum BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION
252{
253 BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_NONE,
254 // Instructs the engine to try the acquisition of the payload again.
255 // Ignored if hrStatus is a success.
256 BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY,
257};
258
259enum BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION
260{
261 BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_NONE,
262 // Instructs the engine to ignore non-vital package failures and
263 // continue with the caching.
264 // Ignored if hrStatus is a success or the package is vital.
265 BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_IGNORE,
266 // Instructs the engine to try the acquisition and verification of the package again.
267 // Ignored if hrStatus is a success.
268 BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION_RETRY,
269};
270
271enum BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION
272{
273 BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_NONE,
274 // Instructs the engine to try to acquire the package so execution can use it.
275 // Most of the time this is used for installing the package during rollback.
276 BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_ACQUIRE,
277};
278
279enum BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION
280{
281 BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_NONE,
282 // Ignored if hrStatus is a success.
283 BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYVERIFICATION,
284 // Ignored if hrStatus is a success.
285 BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION_RETRYACQUISITION,
286};
287
288enum BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION
289{
290 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_NONE,
291 // Instructs the engine to ignore non-vital package failures and
292 // continue with the install.
293 // Ignored if hrStatus is a success or the package is vital.
294 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_IGNORE,
295 // Instructs the engine to try the execution of the package again.
296 // Ignored if hrStatus is a success.
297 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RETRY,
298 // Instructs the engine to stop processing the chain and restart.
299 // The engine will launch again after the machine is restarted.
300 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_RESTART,
301 // Instructs the engine to stop processing the chain and
302 // suspend the current state.
303 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION_SUSPEND,
304};
305
306enum BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION
307{
308 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_NONE,
309 // Instructs the engine to stop processing the chain and restart.
310 // The engine will launch again after the machine is restarted.
311 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION_RESTART,
312};
313
314enum BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION
315{
316 // Instructs the engine to stop waiting for the process to exit.
317 // The package is immediately considered to have failed with ERROR_INSTALL_USEREXIT.
318 // The engine will never rollback the package.
319 BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_ABANDON,
320 // Instructs the engine to wait for the process to exit.
321 // Once the process has exited, the package is considered to have failed with ERROR_INSTALL_USEREXIT.
322 // This allows the engine to rollback the package if necessary.
323 BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION_WAIT,
324};
325
326enum BOOTSTRAPPER_SHUTDOWN_ACTION
327{
328 BOOTSTRAPPER_SHUTDOWN_ACTION_NONE,
329 // Instructs the engine to restart.
330 // The engine will not launch again after the machine is rebooted.
331 // Ignored if reboot was already initiated by OnExecutePackageComplete().
332 BOOTSTRAPPER_SHUTDOWN_ACTION_RESTART,
333 // Instructs the engine to unload the bootstrapper application and
334 // restart the engine which will load the bootstrapper application again.
335 // Typically used to switch from a native bootstrapper application to a managed one.
336 BOOTSTRAPPER_SHUTDOWN_ACTION_RELOAD_BOOTSTRAPPER,
337 // Opts out of the engine behavior of trying to uninstall itself
338 // when no non-permanent packages are installed.
339 BOOTSTRAPPER_SHUTDOWN_ACTION_SKIP_CLEANUP,
340};
341
342enum BURN_MSI_PROPERTY
343{
344 BURN_MSI_PROPERTY_NONE, // no property added
345 BURN_MSI_PROPERTY_INSTALL, // add BURNMSIINSTALL=1
346 BURN_MSI_PROPERTY_MODIFY, // add BURNMSIMODIFY=1
347 BURN_MSI_PROPERTY_REPAIR, // add BURNMSIREPAIR=1
348 BURN_MSI_PROPERTY_UNINSTALL,// add BURNMSIUNINSTALL=1
349};
350
351struct BOOTSTRAPPER_COMMAND
352{
353 DWORD cbSize;
354 BOOTSTRAPPER_ACTION action;
355 BOOTSTRAPPER_DISPLAY display;
356
357 LPWSTR wzCommandLine;
358 INT32 nCmdShow;
359
360 BOOTSTRAPPER_RESUME_TYPE resumeType;
361 HWND hwndSplashScreen;
362
363 // If this was run from a related bundle, specifies the relation type
364 BOOTSTRAPPER_RELATION_TYPE relationType;
365 BOOL fPassthrough;
366
367 LPWSTR wzLayoutDirectory;
368 LPWSTR wzBootstrapperWorkingFolder;
369 LPWSTR wzBootstrapperApplicationDataPath;
370};
371
372struct BA_ONAPPLYBEGIN_ARGS
373{
374 DWORD dwApiVersion;
375 DWORD dwPhaseCount;
376};
377
378struct BA_ONAPPLYBEGIN_RESULTS
379{
380 DWORD dwApiVersion;
381 BOOL fCancel;
382};
383
384struct BA_ONAPPLYCOMPLETE_ARGS
385{
386 DWORD dwApiVersion;
387 HRESULT hrStatus;
388 // Indicates whether any package required a reboot or initiated the reboot already.
389 BOOTSTRAPPER_APPLY_RESTART restart;
390 BOOTSTRAPPER_APPLYCOMPLETE_ACTION recommendation;
391};
392
393struct BA_ONAPPLYCOMPLETE_RESULTS
394{
395 DWORD dwApiVersion;
396 BOOTSTRAPPER_APPLYCOMPLETE_ACTION action;
397};
398
399struct BA_ONAPPLYDOWNGRADE_ARGS
400{
401 DWORD dwApiVersion;
402 HRESULT hrRecommended;
403};
404
405struct BA_ONAPPLYDOWNGRADE_RESULTS
406{
407 DWORD dwApiVersion;
408 HRESULT hrStatus;
409};
410
411struct BA_ONBEGINMSITRANSACTIONBEGIN_ARGS
412{
413 DWORD dwApiVersion;
414 LPCWSTR wzTransactionId;
415};
416
417struct BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS
418{
419 DWORD dwApiVersion;
420 BOOL fCancel;
421};
422
423struct BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS
424{
425 DWORD dwApiVersion;
426 LPCWSTR wzTransactionId;
427 HRESULT hrStatus;
428};
429
430struct BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS
431{
432 DWORD dwApiVersion;
433};
434
435struct BA_ONCACHEACQUIREBEGIN_ARGS
436{
437 DWORD dwApiVersion;
438 LPCWSTR wzPackageOrContainerId;
439 LPCWSTR wzPayloadId;
440 LPCWSTR wzSource;
441 LPCWSTR wzDownloadUrl;
442 LPCWSTR wzPayloadContainerId;
443 BOOTSTRAPPER_CACHE_OPERATION recommendation;
444};
445
446struct BA_ONCACHEACQUIREBEGIN_RESULTS
447{
448 DWORD dwApiVersion;
449 BOOL fCancel;
450 BOOTSTRAPPER_CACHE_OPERATION action;
451};
452
453struct BA_ONCACHEACQUIRECOMPLETE_ARGS
454{
455 DWORD dwApiVersion;
456 LPCWSTR wzPackageOrContainerId;
457 LPCWSTR wzPayloadId;
458 HRESULT hrStatus;
459 BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION recommendation;
460};
461
462struct BA_ONCACHEACQUIRECOMPLETE_RESULTS
463{
464 DWORD dwApiVersion;
465 BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION action;
466};
467
468struct BA_ONCACHEACQUIREPROGRESS_ARGS
469{
470 DWORD dwApiVersion;
471 LPCWSTR wzPackageOrContainerId;
472 LPCWSTR wzPayloadId;
473 DWORD64 dw64Progress;
474 DWORD64 dw64Total;
475 DWORD dwOverallPercentage;
476};
477
478struct BA_ONCACHEACQUIREPROGRESS_RESULTS
479{
480 DWORD dwApiVersion;
481 BOOL fCancel;
482};
483
484struct BA_ONCACHEACQUIRERESOLVING_ARGS
485{
486 DWORD dwApiVersion;
487 LPCWSTR wzPackageOrContainerId;
488 LPCWSTR wzPayloadId;
489 LPCWSTR* rgSearchPaths;
490 DWORD cSearchPaths;
491 BOOL fFoundLocal;
492 DWORD dwRecommendedSearchPath;
493 LPCWSTR wzDownloadUrl;
494 LPCWSTR wzPayloadContainerId;
495 BOOTSTRAPPER_CACHE_RESOLVE_OPERATION recommendation;
496};
497
498struct BA_ONCACHEACQUIRERESOLVING_RESULTS
499{
500 DWORD dwApiVersion;
501 DWORD dwChosenSearchPath;
502 BOOTSTRAPPER_CACHE_RESOLVE_OPERATION action;
503 BOOL fCancel;
504};
505
506struct BA_ONCACHEBEGIN_ARGS
507{
508 DWORD dwApiVersion;
509};
510
511struct BA_ONCACHEBEGIN_RESULTS
512{
513 DWORD dwApiVersion;
514 BOOL fCancel;
515};
516
517struct BA_ONCACHECOMPLETE_ARGS
518{
519 DWORD dwApiVersion;
520 HRESULT hrStatus;
521};
522
523struct BA_ONCACHECOMPLETE_RESULTS
524{
525 DWORD dwApiVersion;
526};
527
528struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS
529{
530 DWORD dwApiVersion;
531 LPCWSTR wzPackageOrContainerId;
532 LPCWSTR wzPayloadId;
533};
534
535struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS
536{
537 DWORD dwApiVersion;
538 BOOL fCancel;
539};
540
541struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS
542{
543 DWORD dwApiVersion;
544 LPCWSTR wzPackageOrContainerId;
545 LPCWSTR wzPayloadId;
546 HRESULT hrStatus;
547};
548
549struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS
550{
551 DWORD dwApiVersion;
552};
553
554struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS
555{
556 DWORD dwApiVersion;
557 LPCWSTR wzPackageOrContainerId;
558 LPCWSTR wzPayloadId;
559 DWORD64 dw64Progress;
560 DWORD64 dw64Total;
561 DWORD dwOverallPercentage;
562};
563
564struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS
565{
566 DWORD dwApiVersion;
567 BOOL fCancel;
568};
569
570struct BA_ONCACHEPACKAGEBEGIN_ARGS
571{
572 DWORD dwApiVersion;
573 LPCWSTR wzPackageId;
574 DWORD cCachePayloads;
575 DWORD64 dw64PackageCacheSize;
576 // If caching a package is not vital, then acquisition will be skipped unless the BA opts in through OnCachePackageNonVitalValidationFailure.
577 BOOL fVital;
578};
579
580struct BA_ONCACHEPACKAGEBEGIN_RESULTS
581{
582 DWORD dwApiVersion;
583 BOOL fCancel;
584};
585
586struct BA_ONCACHEPACKAGECOMPLETE_ARGS
587{
588 DWORD dwApiVersion;
589 LPCWSTR wzPackageId;
590 HRESULT hrStatus;
591 BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION recommendation;
592};
593
594struct BA_ONCACHEPACKAGECOMPLETE_RESULTS
595{
596 DWORD dwApiVersion;
597 BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION action;
598};
599
600struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_ARGS
601{
602 DWORD dwApiVersion;
603 LPCWSTR wzPackageId;
604 HRESULT hrStatus;
605 BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION recommendation;
606};
607
608struct BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_RESULTS
609{
610 DWORD dwApiVersion;
611 BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION action;
612};
613
614struct BA_ONCACHEPAYLOADEXTRACTBEGIN_ARGS
615{
616 DWORD dwApiVersion;
617 LPCWSTR wzContainerId;
618 LPCWSTR wzPayloadId;
619};
620
621struct BA_ONCACHEPAYLOADEXTRACTBEGIN_RESULTS
622{
623 DWORD dwApiVersion;
624 BOOL fCancel;
625};
626
627struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_ARGS
628{
629 DWORD dwApiVersion;
630 LPCWSTR wzContainerId;
631 LPCWSTR wzPayloadId;
632 HRESULT hrStatus;
633};
634
635struct BA_ONCACHEPAYLOADEXTRACTCOMPLETE_RESULTS
636{
637 DWORD dwApiVersion;
638};
639
640struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_ARGS
641{
642 DWORD dwApiVersion;
643 LPCWSTR wzContainerId;
644 LPCWSTR wzPayloadId;
645 DWORD64 dw64Progress;
646 DWORD64 dw64Total;
647 DWORD dwOverallPercentage;
648};
649
650struct BA_ONCACHEPAYLOADEXTRACTPROGRESS_RESULTS
651{
652 DWORD dwApiVersion;
653 BOOL fCancel;
654};
655
656struct BA_ONCACHEVERIFYBEGIN_ARGS
657{
658 DWORD dwApiVersion;
659 LPCWSTR wzPackageOrContainerId;
660 LPCWSTR wzPayloadId;
661};
662
663struct BA_ONCACHEVERIFYBEGIN_RESULTS
664{
665 DWORD dwApiVersion;
666 BOOL fCancel;
667};
668
669struct BA_ONCACHEVERIFYCOMPLETE_ARGS
670{
671 DWORD dwApiVersion;
672 LPCWSTR wzPackageOrContainerId;
673 LPCWSTR wzPayloadId;
674 HRESULT hrStatus;
675 BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION recommendation;
676};
677
678struct BA_ONCACHEVERIFYCOMPLETE_RESULTS
679{
680 DWORD dwApiVersion;
681 BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION action;
682};
683
684struct BA_ONCACHEVERIFYPROGRESS_ARGS
685{
686 DWORD dwApiVersion;
687 LPCWSTR wzPackageOrContainerId;
688 LPCWSTR wzPayloadId;
689 DWORD64 dw64Progress;
690 DWORD64 dw64Total;
691 DWORD dwOverallPercentage;
692 BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep;
693};
694
695struct BA_ONCACHEVERIFYPROGRESS_RESULTS
696{
697 DWORD dwApiVersion;
698 BOOL fCancel;
699};
700
701struct BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS
702{
703 DWORD dwApiVersion;
704 LPCWSTR wzTransactionId;
705};
706
707struct BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS
708{
709 DWORD dwApiVersion;
710 BOOL fCancel;
711};
712
713struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS
714{
715 DWORD dwApiVersion;
716 LPCWSTR wzTransactionId;
717 HRESULT hrStatus;
718 BOOTSTRAPPER_APPLY_RESTART restart;
719 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation;
720};
721
722struct BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS
723{
724 DWORD dwApiVersion;
725 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action;
726};
727
728struct BA_ONCREATE_ARGS
729{
730 DWORD dwApiVersion;
731 BOOTSTRAPPER_COMMAND command;
732 // BOOTSTRAPPER_ACTION action;
733 // BOOTSTRAPPER_DISPLAY display;
734
735 // LPWSTR wzCommandLine;
736 // INT32 nCmdShow;
737
738 // BOOTSTRAPPER_RESUME_TYPE resumeType;
739 // HWND hwndSplashScreen;
740
741 // BOOTSTRAPPER_RELATION_TYPE relationType;
742 // BOOL fPassthrough;
743
744 // LPWSTR wzLayoutDirectory;
745 // LPWSTR wzBootstrapperWorkingFolder;
746 // LPWSTR wzBootstrapperApplicationDataPath;
747};
748
749struct BA_ONCREATE_RESULTS
750{
751 DWORD dwApiVersion;
752};
753
754struct BA_ONDESTROY_ARGS
755{
756 DWORD dwApiVersion;
757 BOOL fReload;
758};
759
760struct BA_ONDESTROY_RESULTS
761{
762 DWORD dwApiVersion;
763};
764
765struct BA_ONDETECTBEGIN_ARGS
766{
767 DWORD dwApiVersion;
768 BOOTSTRAPPER_REGISTRATION_TYPE registrationType;
769 DWORD cPackages;
770 BOOL fCached;
771};
772
773struct BA_ONDETECTBEGIN_RESULTS
774{
775 DWORD dwApiVersion;
776 BOOL fCancel;
777};
778
779struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS
780{
781 DWORD dwApiVersion;
782 LPCWSTR wzPackageId;
783 LPCWSTR wzCompatiblePackageId;
784 LPCWSTR wzCompatiblePackageVersion;
785};
786
787struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS
788{
789 DWORD dwApiVersion;
790 BOOL fCancel;
791};
792
793struct BA_ONDETECTCOMPLETE_ARGS
794{
795 DWORD dwApiVersion;
796 HRESULT hrStatus;
797 BOOL fEligibleForCleanup;
798};
799
800struct BA_ONDETECTCOMPLETE_RESULTS
801{
802 DWORD dwApiVersion;
803};
804
805struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_ARGS
806{
807 DWORD dwApiVersion;
808 LPCWSTR wzBundleId;
809 BOOTSTRAPPER_RELATION_TYPE relationType;
810 LPCWSTR wzBundleTag;
811 BOOL fPerMachine;
812 LPCWSTR wzVersion;
813 BOOL fMissingFromCache;
814};
815
816struct BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_RESULTS
817{
818 DWORD dwApiVersion;
819 BOOL fCancel;
820};
821
822struct BA_ONDETECTMSIFEATURE_ARGS
823{
824 DWORD dwApiVersion;
825 LPCWSTR wzPackageId;
826 LPCWSTR wzFeatureId;
827 BOOTSTRAPPER_FEATURE_STATE state;
828};
829
830struct BA_ONDETECTMSIFEATURE_RESULTS
831{
832 DWORD dwApiVersion;
833 BOOL fCancel;
834};
835
836struct BA_ONDETECTPACKAGEBEGIN_ARGS
837{
838 DWORD dwApiVersion;
839 LPCWSTR wzPackageId;
840};
841
842struct BA_ONDETECTPACKAGEBEGIN_RESULTS
843{
844 DWORD dwApiVersion;
845 BOOL fCancel;
846};
847
848struct BA_ONDETECTPACKAGECOMPLETE_ARGS
849{
850 DWORD dwApiVersion;
851 LPCWSTR wzPackageId;
852 HRESULT hrStatus;
853 BOOTSTRAPPER_PACKAGE_STATE state;
854 BOOL fCached;
855};
856
857struct BA_ONDETECTPACKAGECOMPLETE_RESULTS
858{
859 DWORD dwApiVersion;
860};
861
862struct BA_ONDETECTRELATEDBUNDLE_ARGS
863{
864 DWORD dwApiVersion;
865 LPCWSTR wzBundleId;
866 BOOTSTRAPPER_RELATION_TYPE relationType;
867 LPCWSTR wzBundleTag;
868 BOOL fPerMachine;
869 LPCWSTR wzVersion;
870 BOOL fMissingFromCache;
871};
872
873struct BA_ONDETECTRELATEDBUNDLE_RESULTS
874{
875 DWORD dwApiVersion;
876 BOOL fCancel;
877};
878
879struct BA_ONDETECTRELATEDBUNDLEPACKAGE_ARGS
880{
881 DWORD dwApiVersion;
882 LPCWSTR wzPackageId;
883 LPCWSTR wzBundleId;
884 BOOTSTRAPPER_RELATION_TYPE relationType;
885 BOOL fPerMachine;
886 LPCWSTR wzVersion;
887};
888
889struct BA_ONDETECTRELATEDBUNDLEPACKAGE_RESULTS
890{
891 DWORD dwApiVersion;
892 BOOL fCancel;
893};
894
895struct BA_ONDETECTRELATEDMSIPACKAGE_ARGS
896{
897 DWORD dwApiVersion;
898 LPCWSTR wzPackageId;
899 LPCWSTR wzUpgradeCode;
900 LPCWSTR wzProductCode;
901 BOOL fPerMachine;
902 LPCWSTR wzVersion;
903 BOOTSTRAPPER_RELATED_OPERATION operation;
904};
905
906struct BA_ONDETECTRELATEDMSIPACKAGE_RESULTS
907{
908 DWORD dwApiVersion;
909 BOOL fCancel;
910};
911
912struct BA_ONDETECTPATCHTARGET_ARGS
913{
914 DWORD dwApiVersion;
915 LPCWSTR wzPackageId;
916 LPCWSTR wzProductCode;
917 BOOTSTRAPPER_PACKAGE_STATE patchState;
918};
919
920struct BA_ONDETECTPATCHTARGET_RESULTS
921{
922 DWORD dwApiVersion;
923 BOOL fCancel;
924};
925
926struct BA_ONDETECTUPDATE_ARGS
927{
928 DWORD dwApiVersion;
929 LPCWSTR wzUpdateLocation;
930 DWORD64 dw64Size;
931 LPCWSTR wzHash;
932 BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm;
933 LPCWSTR wzVersion;
934 LPCWSTR wzTitle;
935 LPCWSTR wzSummary;
936 LPCWSTR wzContentType;
937 LPCWSTR wzContent;
938};
939
940struct BA_ONDETECTUPDATE_RESULTS
941{
942 DWORD dwApiVersion;
943 BOOL fCancel;
944 BOOL fStopProcessingUpdates;
945};
946
947struct BA_ONDETECTUPDATEBEGIN_ARGS
948{
949 DWORD dwApiVersion;
950 LPCWSTR wzUpdateLocation;
951};
952
953struct BA_ONDETECTUPDATEBEGIN_RESULTS
954{
955 DWORD dwApiVersion;
956 BOOL fCancel;
957 BOOL fSkip;
958};
959
960struct BA_ONDETECTUPDATECOMPLETE_ARGS
961{
962 DWORD dwApiVersion;
963 HRESULT hrStatus;
964};
965
966struct BA_ONDETECTUPDATECOMPLETE_RESULTS
967{
968 DWORD dwApiVersion;
969 BOOL fIgnoreError;
970};
971
972struct BA_ONELEVATEBEGIN_ARGS
973{
974 DWORD dwApiVersion;
975};
976
977struct BA_ONELEVATEBEGIN_RESULTS
978{
979 DWORD dwApiVersion;
980 BOOL fCancel;
981};
982
983struct BA_ONELEVATECOMPLETE_ARGS
984{
985 DWORD dwApiVersion;
986 HRESULT hrStatus;
987};
988
989struct BA_ONELEVATECOMPLETE_RESULTS
990{
991 DWORD dwApiVersion;
992};
993
994struct BA_ONERROR_ARGS
995{
996 DWORD dwApiVersion;
997 BOOTSTRAPPER_ERROR_TYPE errorType;
998 LPCWSTR wzPackageId;
999 DWORD dwCode;
1000 LPCWSTR wzError;
1001 DWORD dwUIHint;
1002 DWORD cData;
1003 LPCWSTR* rgwzData;
1004 INT32 nRecommendation;
1005};
1006
1007struct BA_ONERROR_RESULTS
1008{
1009 DWORD dwApiVersion;
1010 INT32 nResult;
1011};
1012
1013struct BA_ONEXECUTEBEGIN_ARGS
1014{
1015 DWORD dwApiVersion;
1016 DWORD cExecutingPackages;
1017};
1018
1019struct BA_ONEXECUTEBEGIN_RESULTS
1020{
1021 DWORD dwApiVersion;
1022 BOOL fCancel;
1023};
1024
1025struct BA_ONEXECUTECOMPLETE_ARGS
1026{
1027 DWORD dwApiVersion;
1028 HRESULT hrStatus;
1029};
1030
1031struct BA_ONEXECUTECOMPLETE_RESULTS
1032{
1033 DWORD dwApiVersion;
1034};
1035
1036struct BA_ONEXECUTEFILESINUSE_ARGS
1037{
1038 DWORD dwApiVersion;
1039 LPCWSTR wzPackageId;
1040 DWORD cFiles;
1041 LPCWSTR* rgwzFiles;
1042 INT32 nRecommendation;
1043 BOOTSTRAPPER_FILES_IN_USE_TYPE source;
1044};
1045
1046struct BA_ONEXECUTEFILESINUSE_RESULTS
1047{
1048 DWORD dwApiVersion;
1049 INT32 nResult;
1050};
1051
1052struct BA_ONEXECUTEMSIMESSAGE_ARGS
1053{
1054 DWORD dwApiVersion;
1055 LPCWSTR wzPackageId;
1056 INSTALLMESSAGE messageType;
1057 DWORD dwUIHint;
1058 LPCWSTR wzMessage;
1059 DWORD cData;
1060 LPCWSTR* rgwzData;
1061 INT32 nRecommendation;
1062};
1063
1064struct BA_ONEXECUTEMSIMESSAGE_RESULTS
1065{
1066 DWORD dwApiVersion;
1067 INT32 nResult;
1068};
1069
1070struct BA_ONEXECUTEPACKAGEBEGIN_ARGS
1071{
1072 DWORD dwApiVersion;
1073 LPCWSTR wzPackageId;
1074 BOOL fExecute; // false means rollback.
1075 BOOTSTRAPPER_ACTION_STATE action;
1076 INSTALLUILEVEL uiLevel;
1077 BOOL fDisableExternalUiHandler;
1078};
1079
1080struct BA_ONEXECUTEPACKAGEBEGIN_RESULTS
1081{
1082 DWORD dwApiVersion;
1083 BOOL fCancel;
1084};
1085
1086struct BA_ONEXECUTEPACKAGECOMPLETE_ARGS
1087{
1088 DWORD dwApiVersion;
1089 LPCWSTR wzPackageId;
1090 HRESULT hrStatus;
1091 // Indicates whether this package requires a reboot or initiated the reboot already.
1092 BOOTSTRAPPER_APPLY_RESTART restart;
1093 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION recommendation;
1094};
1095
1096struct BA_ONEXECUTEPACKAGECOMPLETE_RESULTS
1097{
1098 DWORD dwApiVersion;
1099 BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION action;
1100};
1101
1102struct BA_ONEXECUTEPATCHTARGET_ARGS
1103{
1104 DWORD dwApiVersion;
1105 LPCWSTR wzPackageId;
1106 LPCWSTR wzTargetProductCode;
1107};
1108
1109struct BA_ONEXECUTEPATCHTARGET_RESULTS
1110{
1111 DWORD dwApiVersion;
1112 BOOL fCancel;
1113};
1114
1115struct BA_ONEXECUTEPROCESSCANCEL_ARGS
1116{
1117 DWORD dwApiVersion;
1118 LPCWSTR wzPackageId;
1119 DWORD dwProcessId;
1120 BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION recommendation;
1121};
1122
1123struct BA_ONEXECUTEPROCESSCANCEL_RESULTS
1124{
1125 DWORD dwApiVersion;
1126 BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION action;
1127};
1128
1129struct BA_ONEXECUTEPROGRESS_ARGS
1130{
1131 DWORD dwApiVersion;
1132 LPCWSTR wzPackageId;
1133 DWORD dwProgressPercentage;
1134 DWORD dwOverallPercentage;
1135};
1136
1137struct BA_ONEXECUTEPROGRESS_RESULTS
1138{
1139 DWORD dwApiVersion;
1140 BOOL fCancel;
1141};
1142
1143struct BA_ONLAUNCHAPPROVEDEXEBEGIN_ARGS
1144{
1145 DWORD dwApiVersion;
1146};
1147
1148struct BA_ONLAUNCHAPPROVEDEXEBEGIN_RESULTS
1149{
1150 DWORD dwApiVersion;
1151 BOOL fCancel;
1152};
1153
1154struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS
1155{
1156 DWORD dwApiVersion;
1157 HRESULT hrStatus;
1158 // Only valid if the operation succeeded.
1159 DWORD dwProcessId;
1160};
1161
1162struct BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS
1163{
1164 DWORD dwApiVersion;
1165};
1166
1167struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS
1168{
1169 DWORD dwApiVersion;
1170};
1171
1172struct BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS
1173{
1174 DWORD dwApiVersion;
1175};
1176
1177struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS
1178{
1179 DWORD dwApiVersion;
1180 HRESULT hrStatus;
1181};
1182
1183struct BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS
1184{
1185 DWORD dwApiVersion;
1186};
1187
1188struct BA_ONPLANBEGIN_ARGS
1189{
1190 DWORD dwApiVersion;
1191 DWORD cPackages;
1192};
1193
1194struct BA_ONPLANBEGIN_RESULTS
1195{
1196 DWORD dwApiVersion;
1197 BOOL fCancel;
1198};
1199
1200struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS
1201{
1202 DWORD dwApiVersion;
1203 LPCWSTR wzPackageId;
1204 LPCWSTR wzCompatiblePackageId;
1205 LPCWSTR wzCompatiblePackageVersion;
1206 BOOL fRecommendedRemove;
1207};
1208
1209struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS
1210{
1211 DWORD dwApiVersion;
1212 BOOL fCancel;
1213 BOOL fRequestRemove;
1214};
1215
1216struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS
1217{
1218 DWORD dwApiVersion;
1219 LPCWSTR wzPackageId;
1220 LPCWSTR wzCompatiblePackageId;
1221 HRESULT hrStatus;
1222 BOOL fRequestedRemove;
1223};
1224
1225struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS
1226{
1227 DWORD dwApiVersion;
1228};
1229
1230struct BA_ONPLANCOMPLETE_ARGS
1231{
1232 DWORD dwApiVersion;
1233 HRESULT hrStatus;
1234};
1235
1236struct BA_ONPLANCOMPLETE_RESULTS
1237{
1238 DWORD dwApiVersion;
1239};
1240
1241struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_ARGS
1242{
1243 DWORD dwApiVersion;
1244 LPCWSTR wzBundleId;
1245 BOOTSTRAPPER_RELATION_TYPE relationType;
1246 LPCWSTR wzBundleTag;
1247 BOOL fPerMachine;
1248 LPCWSTR wzVersion;
1249 BOOL fRecommendedIgnoreBundle;
1250};
1251
1252struct BA_ONPLANFORWARDCOMPATIBLEBUNDLE_RESULTS
1253{
1254 DWORD dwApiVersion;
1255 BOOL fCancel;
1256 BOOL fIgnoreBundle;
1257};
1258
1259struct BA_ONPLANMSIFEATURE_ARGS
1260{
1261 DWORD dwApiVersion;
1262 LPCWSTR wzPackageId;
1263 LPCWSTR wzFeatureId;
1264 BOOTSTRAPPER_FEATURE_STATE recommendedState;
1265};
1266
1267struct BA_ONPLANMSIFEATURE_RESULTS
1268{
1269 DWORD dwApiVersion;
1270 BOOTSTRAPPER_FEATURE_STATE requestedState;
1271 BOOL fCancel;
1272};
1273
1274struct BA_ONPLANMSIPACKAGE_ARGS
1275{
1276 DWORD dwApiVersion;
1277 LPCWSTR wzPackageId;
1278 BOOL fExecute; // false means rollback.
1279 BOOTSTRAPPER_ACTION_STATE action;
1280 BOOTSTRAPPER_MSI_FILE_VERSIONING recommendedFileVersioning;
1281};
1282
1283struct BA_ONPLANMSIPACKAGE_RESULTS
1284{
1285 DWORD dwApiVersion;
1286 BOOL fCancel;
1287 BURN_MSI_PROPERTY actionMsiProperty;
1288 INSTALLUILEVEL uiLevel;
1289 BOOL fDisableExternalUiHandler;
1290 BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning;
1291};
1292
1293struct BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS
1294{
1295 DWORD dwApiVersion;
1296 LPCWSTR wzPackageId;
1297 LPCWSTR wzCompatiblePackageId;
1298 BOOL fRemove;
1299};
1300
1301struct BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS
1302{
1303 DWORD dwApiVersion;
1304};
1305
1306struct BA_ONPLANNEDPACKAGE_ARGS
1307{
1308 DWORD dwApiVersion;
1309 LPCWSTR wzPackageId;
1310 BOOTSTRAPPER_ACTION_STATE execute;
1311 BOOTSTRAPPER_ACTION_STATE rollback;
1312 BOOL fPlannedCache;
1313 BOOL fPlannedUncache;
1314};
1315
1316struct BA_ONPLANNEDPACKAGE_RESULTS
1317{
1318 DWORD dwApiVersion;
1319};
1320
1321struct BA_ONPLANPACKAGEBEGIN_ARGS
1322{
1323 DWORD dwApiVersion;
1324 LPCWSTR wzPackageId;
1325 BOOTSTRAPPER_PACKAGE_STATE state;
1326 BOOL fCached;
1327 BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition;
1328 BOOTSTRAPPER_REQUEST_STATE recommendedState;
1329 BOOTSTRAPPER_CACHE_TYPE recommendedCacheType;
1330 BOOTSTRAPPER_PACKAGE_CONDITION_RESULT repairCondition;
1331};
1332
1333struct BA_ONPLANPACKAGEBEGIN_RESULTS
1334{
1335 DWORD dwApiVersion;
1336 BOOL fCancel;
1337 BOOTSTRAPPER_REQUEST_STATE requestedState;
1338 BOOTSTRAPPER_CACHE_TYPE requestedCacheType;
1339};
1340
1341struct BA_ONPLANPACKAGECOMPLETE_ARGS
1342{
1343 DWORD dwApiVersion;
1344 LPCWSTR wzPackageId;
1345 HRESULT hrStatus;
1346 BOOTSTRAPPER_REQUEST_STATE requested;
1347};
1348
1349struct BA_ONPLANPACKAGECOMPLETE_RESULTS
1350{
1351 DWORD dwApiVersion;
1352};
1353
1354struct BA_ONPLANRELATEDBUNDLE_ARGS
1355{
1356 DWORD dwApiVersion;
1357 LPCWSTR wzBundleId;
1358 BOOTSTRAPPER_REQUEST_STATE recommendedState;
1359};
1360
1361struct BA_ONPLANRELATEDBUNDLE_RESULTS
1362{
1363 DWORD dwApiVersion;
1364 BOOL fCancel;
1365 BOOTSTRAPPER_REQUEST_STATE requestedState;
1366};
1367
1368struct BA_ONPLANRELATEDBUNDLETYPE_ARGS
1369{
1370 DWORD dwApiVersion;
1371 LPCWSTR wzBundleId;
1372 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE recommendedType;
1373};
1374
1375struct BA_ONPLANRELATEDBUNDLETYPE_RESULTS
1376{
1377 DWORD dwApiVersion;
1378 BOOL fCancel;
1379 BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE requestedType;
1380};
1381
1382struct BA_ONPLANRESTORERELATEDBUNDLE_ARGS
1383{
1384 DWORD dwApiVersion;
1385 LPCWSTR wzBundleId;
1386 BOOTSTRAPPER_REQUEST_STATE recommendedState;
1387};
1388
1389struct BA_ONPLANRESTORERELATEDBUNDLE_RESULTS
1390{
1391 DWORD dwApiVersion;
1392 BOOL fCancel;
1393 BOOTSTRAPPER_REQUEST_STATE requestedState;
1394};
1395
1396struct BA_ONPLANROLLBACKBOUNDARY_ARGS
1397{
1398 DWORD dwApiVersion;
1399 LPCWSTR wzRollbackBoundaryId;
1400 BOOL fRecommendedTransaction;
1401};
1402
1403struct BA_ONPLANROLLBACKBOUNDARY_RESULTS
1404{
1405 DWORD dwApiVersion;
1406 BOOL fTransaction;
1407 BOOL fCancel;
1408};
1409
1410struct BA_ONPLANPATCHTARGET_ARGS
1411{
1412 DWORD dwApiVersion;
1413 LPCWSTR wzPackageId;
1414 LPCWSTR wzProductCode;
1415 BOOTSTRAPPER_REQUEST_STATE recommendedState;
1416};
1417
1418struct BA_ONPLANPATCHTARGET_RESULTS
1419{
1420 DWORD dwApiVersion;
1421 BOOL fCancel;
1422 BOOTSTRAPPER_REQUEST_STATE requestedState;
1423};
1424
1425struct BA_ONPROGRESS_ARGS
1426{
1427 DWORD dwApiVersion;
1428 DWORD dwProgressPercentage;
1429 DWORD dwOverallPercentage;
1430};
1431
1432struct BA_ONPROGRESS_RESULTS
1433{
1434 DWORD dwApiVersion;
1435 BOOL fCancel;
1436};
1437
1438struct BA_ONREGISTERBEGIN_ARGS
1439{
1440 DWORD dwApiVersion;
1441 BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType;
1442};
1443
1444struct BA_ONREGISTERBEGIN_RESULTS
1445{
1446 DWORD dwApiVersion;
1447 BOOL fCancel;
1448 BOOTSTRAPPER_REGISTRATION_TYPE registrationType;
1449};
1450
1451struct BA_ONREGISTERCOMPLETE_ARGS
1452{
1453 DWORD dwApiVersion;
1454 HRESULT hrStatus;
1455};
1456
1457struct BA_ONREGISTERCOMPLETE_RESULTS
1458{
1459 DWORD dwApiVersion;
1460};
1461
1462struct BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS
1463{
1464 DWORD dwApiVersion;
1465 LPCWSTR wzTransactionId;
1466};
1467
1468struct BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS
1469{
1470 DWORD dwApiVersion;
1471};
1472
1473struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS
1474{
1475 DWORD dwApiVersion;
1476 LPCWSTR wzTransactionId;
1477 HRESULT hrStatus;
1478 BOOTSTRAPPER_APPLY_RESTART restart;
1479 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION recommendation;
1480};
1481
1482struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS
1483{
1484 DWORD dwApiVersion;
1485 BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION action;
1486};
1487
1488struct BA_ONSHUTDOWN_ARGS
1489{
1490 DWORD dwApiVersion;
1491};
1492
1493struct BA_ONSHUTDOWN_RESULTS
1494{
1495 DWORD dwApiVersion;
1496 BOOTSTRAPPER_SHUTDOWN_ACTION action;
1497};
1498
1499struct BA_ONSTARTUP_ARGS
1500{
1501 DWORD dwApiVersion;
1502};
1503
1504struct BA_ONSTARTUP_RESULTS
1505{
1506 DWORD dwApiVersion;
1507};
1508
1509struct BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS
1510{
1511 DWORD dwApiVersion;
1512};
1513
1514struct BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS
1515{
1516 DWORD dwApiVersion;
1517};
1518
1519struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS
1520{
1521 DWORD dwApiVersion;
1522 HRESULT hrStatus;
1523};
1524
1525struct BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS
1526{
1527 DWORD dwApiVersion;
1528};
1529
1530struct BA_ONUNREGISTERBEGIN_ARGS
1531{
1532 DWORD dwApiVersion;
1533 BOOTSTRAPPER_REGISTRATION_TYPE recommendedRegistrationType;
1534};
1535
1536struct BA_ONUNREGISTERBEGIN_RESULTS
1537{
1538 DWORD dwApiVersion;
1539 BOOTSTRAPPER_REGISTRATION_TYPE registrationType;
1540};
1541
1542struct BA_ONUNREGISTERCOMPLETE_ARGS
1543{
1544 DWORD dwApiVersion;
1545 HRESULT hrStatus;
1546};
1547
1548struct BA_ONUNREGISTERCOMPLETE_RESULTS
1549{
1550 DWORD dwApiVersion;
1551};
1552
1553#ifdef TODO_DELETE
1554
1555extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_APPLICATION_PROC)(
1556 __in BOOTSTRAPPER_APPLICATION_MESSAGE message,
1557 __in const LPVOID pvArgs,
1558 __inout LPVOID pvResults,
1559 __in_opt LPVOID pvContext
1560 );
1561
1562struct BOOTSTRAPPER_DESTROY_ARGS
1563{
1564 DWORD dwApiVersion;
1565 BOOL fReload;
1566};
1567
1568struct BOOTSTRAPPER_DESTROY_RESULTS
1569{
1570 DWORD dwApiVersion;
1571 BOOL fDisableUnloading; // indicates the BA dll must not be unloaded after BootstrapperApplicationDestroy.
1572};
1573
1574extern "C" typedef void (WINAPI *PFN_BOOTSTRAPPER_APPLICATION_DESTROY)(
1575 __in const BOOTSTRAPPER_DESTROY_ARGS* pArgs,
1576 __inout BOOTSTRAPPER_DESTROY_RESULTS* pResults
1577 );
1578
1579
1580
1581struct BOOTSTRAPPER_CREATE_ARGS
1582{
1583 DWORD dwApiVersion;
1584 DWORD64 qwEngineAPIVersion;
1585 PFN_BOOTSTRAPPER_ENGINE_PROC pfnBootstrapperEngineProc;
1586 LPVOID pvBootstrapperEngineProcContext;
1587 BOOTSTRAPPER_COMMAND* pCommand;
1588};
1589
1590struct BOOTSTRAPPER_CREATE_RESULTS
1591{
1592 DWORD dwApiVersion;
1593 PFN_BOOTSTRAPPER_APPLICATION_PROC pfnBootstrapperApplicationProc;
1594 LPVOID pvBootstrapperApplicationProcContext;
1595};
1596
1597extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_APPLICATION_CREATE)(
1598 __in const BOOTSTRAPPER_CREATE_ARGS* pArgs,
1599 __inout BOOTSTRAPPER_CREATE_RESULTS* pResults
1600 );
1601
1602#endif
1603
1604#if defined(__cplusplus)
1605}
1606#endif
diff --git a/src/api/burn/inc/BootstrapperEngine.h b/src/api/burn/inc/BootstrapperEngine.h
new file mode 100644
index 00000000..7af41d97
--- /dev/null
+++ b/src/api/burn/inc/BootstrapperEngine.h
@@ -0,0 +1,460 @@
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#if defined(__cplusplus)
6extern "C" {
7#endif
8
9#define IDERROR -1
10#define IDNOACTION 0
11
12#ifndef FACILITY_WIX
13#define FACILITY_WIX 500
14#endif
15
16static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000);
17
18enum BOOTSTRAPPER_ACTION
19{
20 BOOTSTRAPPER_ACTION_UNKNOWN,
21 BOOTSTRAPPER_ACTION_HELP,
22 BOOTSTRAPPER_ACTION_LAYOUT,
23 BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL,
24 BOOTSTRAPPER_ACTION_UNINSTALL,
25 BOOTSTRAPPER_ACTION_CACHE,
26 BOOTSTRAPPER_ACTION_INSTALL,
27 BOOTSTRAPPER_ACTION_MODIFY,
28 BOOTSTRAPPER_ACTION_REPAIR,
29 BOOTSTRAPPER_ACTION_UPDATE_REPLACE,
30 BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED,
31};
32
33enum BOOTSTRAPPER_ACTION_STATE
34{
35 BOOTSTRAPPER_ACTION_STATE_NONE,
36 BOOTSTRAPPER_ACTION_STATE_UNINSTALL,
37 BOOTSTRAPPER_ACTION_STATE_INSTALL,
38 BOOTSTRAPPER_ACTION_STATE_MODIFY,
39 BOOTSTRAPPER_ACTION_STATE_REPAIR,
40 BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE,
41};
42
43enum BOOTSTRAPPER_PACKAGE_STATE
44{
45 BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN,
46 BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE,
47 BOOTSTRAPPER_PACKAGE_STATE_ABSENT,
48 BOOTSTRAPPER_PACKAGE_STATE_PRESENT,
49 BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED,
50};
51
52enum BOOTSTRAPPER_REQUEST_STATE
53{
54 BOOTSTRAPPER_REQUEST_STATE_NONE,
55 BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT,
56 BOOTSTRAPPER_REQUEST_STATE_ABSENT,
57 BOOTSTRAPPER_REQUEST_STATE_CACHE,
58 BOOTSTRAPPER_REQUEST_STATE_PRESENT,
59 BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT,
60 BOOTSTRAPPER_REQUEST_STATE_REPAIR,
61};
62
63enum BOOTSTRAPPER_FEATURE_STATE
64{
65 BOOTSTRAPPER_FEATURE_STATE_UNKNOWN,
66 BOOTSTRAPPER_FEATURE_STATE_ABSENT,
67 BOOTSTRAPPER_FEATURE_STATE_ADVERTISED,
68 BOOTSTRAPPER_FEATURE_STATE_LOCAL,
69 BOOTSTRAPPER_FEATURE_STATE_SOURCE,
70};
71
72enum BOOTSTRAPPER_LOG_LEVEL
73{
74 BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
75 BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on
76 BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
77 BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code
78 BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
79};
80
81enum BOOTSTRAPPER_UPDATE_HASH_TYPE
82{
83 BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE,
84 BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA512,
85};
86
87enum BOOTSTRAPPER_ENGINE_MESSAGE
88{
89 BOOTSTRAPPER_ENGINE_MESSAGE_UNKNOWN,
90 BOOTSTRAPPER_ENGINE_MESSAGE_GETPACKAGECOUNT,
91 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLENUMERIC,
92 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLESTRING,
93 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLEVERSION,
94 BOOTSTRAPPER_ENGINE_MESSAGE_FORMATSTRING,
95 BOOTSTRAPPER_ENGINE_MESSAGE_ESCAPESTRING,
96 BOOTSTRAPPER_ENGINE_MESSAGE_EVALUATECONDITION,
97 BOOTSTRAPPER_ENGINE_MESSAGE_LOG,
98 BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDERROR,
99 BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDPROGRESS,
100 BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATE,
101 BOOTSTRAPPER_ENGINE_MESSAGE_SETLOCALSOURCE,
102 BOOTSTRAPPER_ENGINE_MESSAGE_SETDOWNLOADSOURCE,
103 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLENUMERIC,
104 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLESTRING,
105 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLEVERSION,
106 BOOTSTRAPPER_ENGINE_MESSAGE_CLOSESPLASHSCREEN,
107 BOOTSTRAPPER_ENGINE_MESSAGE_DETECT,
108 BOOTSTRAPPER_ENGINE_MESSAGE_PLAN,
109 BOOTSTRAPPER_ENGINE_MESSAGE_ELEVATE,
110 BOOTSTRAPPER_ENGINE_MESSAGE_APPLY,
111 BOOTSTRAPPER_ENGINE_MESSAGE_QUIT,
112 BOOTSTRAPPER_ENGINE_MESSAGE_LAUNCHAPPROVEDEXE,
113 BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATESOURCE,
114 BOOTSTRAPPER_ENGINE_MESSAGE_COMPAREVERSIONS,
115 BOOTSTRAPPER_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE,
116
117 BOOTSTRAPPER_APPLICATION_MESSAGE_LAST = 65535
118};
119
120typedef struct _BAENGINE_APPLY_ARGS
121{
122 DWORD dwApiVersion;
123 DWORD64 hwndParent;
124} BAENGINE_APPLY_ARGS;
125
126typedef struct _BAENGINE_APPLY_RESULTS
127{
128 DWORD dwApiVersion;
129} BAENGINE_APPLY_RESULTS;
130
131typedef struct _BAENGINE_CLOSESPLASHSCREEN_ARGS
132{
133 DWORD dwApiVersion;
134} BAENGINE_CLOSESPLASHSCREEN_ARGS;
135
136typedef struct _BAENGINE_CLOSESPLASHSCREEN_RESULTS
137{
138 DWORD dwApiVersion;
139} BAENGINE_CLOSESPLASHSCREEN_RESULTS;
140
141typedef struct _BAENGINE_COMPAREVERSIONS_ARGS
142{
143 DWORD dwApiVersion;
144 LPCWSTR wzVersion1;
145 LPCWSTR wzVersion2;
146} BAENGINE_COMPAREVERSIONS_ARGS;
147
148typedef struct _BAENGINE_COMPAREVERSIONS_RESULTS
149{
150 DWORD dwApiVersion;
151 INT32 nResult;
152} BAENGINE_COMPAREVERSIONS_RESULTS;
153
154typedef struct _BAENGINE_DETECT_ARGS
155{
156 DWORD dwApiVersion;
157 DWORD64 hwndParent;
158} BAENGINE_DETECT_ARGS;
159
160typedef struct _BAENGINE_DETECT_RESULTS
161{
162 DWORD dwApiVersion;
163} BAENGINE_DETECT_RESULTS;
164
165typedef struct _BAENGINE_ELEVATE_ARGS
166{
167 DWORD dwApiVersion;
168 DWORD64 hwndParent;
169} BAENGINE_ELEVATE_ARGS;
170
171typedef struct _BAENGINE_ELEVATE_RESULTS
172{
173 DWORD dwApiVersion;
174} BAENGINE_ELEVATE_RESULTS;
175
176typedef struct _BAENGINE_ESCAPESTRING_ARGS
177{
178 DWORD dwApiVersion;
179 LPCWSTR wzIn;
180} BAENGINE_ESCAPESTRING_ARGS;
181
182typedef struct _BAENGINE_ESCAPESTRING_RESULTS
183{
184 DWORD dwApiVersion;
185 LPWSTR wzOut;
186 // Should be initialized to the size of wzOut.
187 DWORD cchOut;
188} BAENGINE_ESCAPESTRING_RESULTS;
189
190typedef struct _BAENGINE_EVALUATECONDITION_ARGS
191{
192 DWORD dwApiVersion;
193 LPCWSTR wzCondition;
194} BAENGINE_EVALUATECONDITION_ARGS;
195
196typedef struct _BAENGINE_EVALUATECONDITION_RESULTS
197{
198 DWORD dwApiVersion;
199 BOOL f;
200} BAENGINE_EVALUATECONDITION_RESULTS;
201
202typedef struct _BAENGINE_FORMATSTRING_ARGS
203{
204 DWORD dwApiVersion;
205 LPCWSTR wzIn;
206} BAENGINE_FORMATSTRING_ARGS;
207
208typedef struct _BAENGINE_FORMATSTRING_RESULTS
209{
210 DWORD dwApiVersion;
211 LPWSTR wzOut;
212 // Should be initialized to the size of wzOut.
213 DWORD cchOut;
214} BAENGINE_FORMATSTRING_RESULTS;
215
216typedef struct _BAENGINE_GETPACKAGECOUNT_ARGS
217{
218 DWORD dwApiVersion;
219} BAENGINE_GETPACKAGECOUNT_ARGS;
220
221typedef struct _BAENGINE_GETPACKAGECOUNT_RESULTS
222{
223 DWORD dwApiVersion;
224 DWORD cPackages;
225} BAENGINE_GETPACKAGECOUNT_RESULTS;
226
227typedef struct _BAENGINE_GETVARIABLENUMERIC_ARGS
228{
229 DWORD dwApiVersion;
230 LPCWSTR wzVariable;
231} BAENGINE_GETVARIABLENUMERIC_ARGS;
232
233typedef struct _BAENGINE_GETVARIABLENUMERIC_RESULTS
234{
235 DWORD dwApiVersion;
236 LONGLONG llValue;
237} BAENGINE_GETVARIABLENUMERIC_RESULTS;
238
239typedef struct _BAENGINE_GETVARIABLESTRING_ARGS
240{
241 DWORD dwApiVersion;
242 LPCWSTR wzVariable;
243} BAENGINE_GETVARIABLESTRING_ARGS;
244
245typedef struct _BAENGINE_GETVARIABLESTRING_RESULTS
246{
247 DWORD dwApiVersion;
248 LPWSTR wzValue;
249 // Should be initialized to the size of wzValue.
250 DWORD cchValue;
251} BAENGINE_GETVARIABLESTRING_RESULTS;
252
253typedef struct _BAENGINE_GETVARIABLEVERSION_ARGS
254{
255 DWORD dwApiVersion;
256 LPCWSTR wzVariable;
257} BAENGINE_GETVARIABLEVERSION_ARGS;
258
259typedef struct _BAENGINE_GETVARIABLEVERSION_RESULTS
260{
261 DWORD dwApiVersion;
262 LPWSTR wzValue;
263 // Should be initialized to the size of wzValue.
264 DWORD cchValue;
265} BAENGINE_GETVARIABLEVERSION_RESULTS;
266
267typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_ARGS
268{
269 DWORD dwApiVersion;
270 DWORD64 hwndParent;
271 LPCWSTR wzApprovedExeForElevationId;
272 LPCWSTR wzArguments;
273 DWORD dwWaitForInputIdleTimeout;
274} BAENGINE_LAUNCHAPPROVEDEXE_ARGS;
275
276typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_RESULTS
277{
278 DWORD dwApiVersion;
279} BAENGINE_LAUNCHAPPROVEDEXE_RESULTS;
280
281typedef struct _BAENGINE_SETUPDATESOURCE_ARGS
282{
283 DWORD dwApiVersion;
284 LPCWSTR wzUrl;
285 LPCWSTR wzAuthorizationHeader;
286} BAENGINE_SETUPDATESOURCE_ARGS;
287
288typedef struct _BAENGINE_SETUPDATESOURCE_RESULTS
289{
290 DWORD dwApiVersion;
291} BAENGINE_SETUPDATESOURCE_RESULTS;
292
293typedef struct _BAENGINE_LOG_ARGS
294{
295 DWORD dwApiVersion;
296 BOOTSTRAPPER_LOG_LEVEL level;
297 LPCWSTR wzMessage;
298} BAENGINE_LOG_ARGS;
299
300typedef struct _BAENGINE_LOG_RESULTS
301{
302 DWORD dwApiVersion;
303} BAENGINE_LOG_RESULTS;
304
305typedef struct _BAENGINE_PLAN_ARGS
306{
307 DWORD dwApiVersion;
308 BOOTSTRAPPER_ACTION action;
309} BAENGINE_PLAN_ARGS;
310
311typedef struct _BAENGINE_PLAN_RESULTS
312{
313 DWORD dwApiVersion;
314} BAENGINE_PLAN_RESULTS;
315
316typedef struct _BAENGINE_QUIT_ARGS
317{
318 DWORD dwApiVersion;
319 DWORD dwExitCode;
320} BAENGINE_QUIT_ARGS;
321
322typedef struct _BAENGINE_QUIT_RESULTS
323{
324 DWORD dwApiVersion;
325} BAENGINE_QUIT_RESULTS;
326
327typedef struct _BAENGINE_SENDEMBEDDEDERROR_ARGS
328{
329 DWORD dwApiVersion;
330 DWORD dwErrorCode;
331 LPCWSTR wzMessage;
332 DWORD dwUIHint;
333} BAENGINE_SENDEMBEDDEDERROR_ARGS;
334
335typedef struct _BAENGINE_SENDEMBEDDEDERROR_RESULTS
336{
337 DWORD dwApiVersion;
338 INT32 nResult;
339} BAENGINE_SENDEMBEDDEDERROR_RESULTS;
340
341typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_ARGS
342{
343 DWORD dwApiVersion;
344 DWORD dwProgressPercentage;
345 DWORD dwOverallProgressPercentage;
346} BAENGINE_SENDEMBEDDEDPROGRESS_ARGS;
347
348typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS
349{
350 DWORD dwApiVersion;
351 INT32 nResult;
352} BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS;
353
354typedef struct _BAENGINE_SETDOWNLOADSOURCE_ARGS
355{
356 DWORD dwApiVersion;
357 LPCWSTR wzPackageOrContainerId;
358 LPCWSTR wzPayloadId;
359 LPCWSTR wzUrl;
360 LPCWSTR wzUser;
361 LPCWSTR wzPassword;
362 LPCWSTR wzAuthorizationHeader;
363} BAENGINE_SETDOWNLOADSOURCE_ARGS;
364
365typedef struct _BAENGINE_SETDOWNLOADSOURCE_RESULTS
366{
367 DWORD dwApiVersion;
368} BAENGINE_SETDOWNLOADSOURCE_RESULTS;
369
370typedef struct _BAENGINE_SETLOCALSOURCE_ARGS
371{
372 DWORD dwApiVersion;
373 LPCWSTR wzPackageOrContainerId;
374 LPCWSTR wzPayloadId;
375 LPCWSTR wzPath;
376} BAENGINE_SETLOCALSOURCE_ARGS;
377
378typedef struct _BAENGINE_SETLOCALSOURCE_RESULTS
379{
380 DWORD dwApiVersion;
381} BAENGINE_SETLOCALSOURCE_RESULTS;
382
383typedef struct _BAENGINE_SETUPDATE_ARGS
384{
385 DWORD dwApiVersion;
386 LPCWSTR wzLocalSource;
387 LPCWSTR wzDownloadSource;
388 DWORD64 qwSize;
389 BOOTSTRAPPER_UPDATE_HASH_TYPE hashType;
390 LPCWSTR wzHash;
391 LPCWSTR wzUpdatePackageId;
392} BAENGINE_SETUPDATE_ARGS;
393
394typedef struct _BAENGINE_SETUPDATE_RESULTS
395{
396 DWORD dwApiVersion;
397} BAENGINE_SETUPDATE_RESULTS;
398
399typedef struct _BAENGINE_SETVARIABLENUMERIC_ARGS
400{
401 DWORD dwApiVersion;
402 LPCWSTR wzVariable;
403 LONGLONG llValue;
404} BAENGINE_SETVARIABLENUMERIC_ARGS;
405
406typedef struct _BAENGINE_SETVARIABLENUMERIC_RESULTS
407{
408 DWORD dwApiVersion;
409} BAENGINE_SETVARIABLENUMERIC_RESULTS;
410
411typedef struct _BAENGINE_SETVARIABLESTRING_ARGS
412{
413 DWORD dwApiVersion;
414 LPCWSTR wzVariable;
415 LPCWSTR wzValue;
416 BOOL fFormatted;
417} BAENGINE_SETVARIABLESTRING_ARGS;
418
419typedef struct _BAENGINE_SETVARIABLESTRING_RESULTS
420{
421 DWORD dwApiVersion;
422} BAENGINE_SETVARIABLESTRING_RESULTS;
423
424typedef struct _BAENGINE_SETVARIABLEVERSION_ARGS
425{
426 DWORD dwApiVersion;
427 LPCWSTR wzVariable;
428 LPCWSTR wzValue;
429} BAENGINE_SETVARIABLEVERSION_ARGS;
430
431typedef struct _BAENGINE_SETVARIABLEVERSION_RESULTS
432{
433 DWORD dwApiVersion;
434} BAENGINE_SETVARIABLEVERSION_RESULTS;
435
436typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS
437{
438 DWORD dwApiVersion;
439 LPCWSTR wzBundleId;
440 LPCWSTR wzVariable;
441} BAENGINE_GETRELATEDBUNDLEVARIABLE_ARGS;
442
443typedef struct _BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS
444{
445 DWORD dwApiVersion;
446 LPWSTR wzValue;
447 // Should be initialized to the size of wzValue.
448 DWORD cchValue;
449} BAENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS;
450
451// extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_ENGINE_PROC)(
452// __in BOOTSTRAPPER_ENGINE_MESSAGE message,
453// __in const LPVOID pvArgs,
454// __inout LPVOID pvResults,
455// __in_opt LPVOID pvContext
456// );
457
458#if defined(__cplusplus)
459}
460#endif
diff --git a/src/api/burn/inc/BundleExtension.h b/src/api/burn/inc/BundleExtension.h
new file mode 100644
index 00000000..17acff6e
--- /dev/null
+++ b/src/api/burn/inc/BundleExtension.h
@@ -0,0 +1,61 @@
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#include <BundleExtensionEngine.h>
5
6#if defined(__cplusplus)
7extern "C" {
8#endif
9
10enum BUNDLE_EXTENSION_MESSAGE
11{
12 BUNDLE_EXTENSION_MESSAGE_SEARCH,
13};
14
15typedef struct _BUNDLE_EXTENSION_SEARCH_ARGS
16{
17 DWORD cbSize;
18 LPCWSTR wzId;
19 LPCWSTR wzVariable;
20} BUNDLE_EXTENSION_SEARCH_ARGS;
21
22typedef struct _BUNDLE_EXTENSION_SEARCH_RESULTS
23{
24 DWORD cbSize;
25} BUNDLE_EXTENSION_SEARCH_RESULTS;
26
27extern "C" typedef HRESULT(WINAPI *PFN_BUNDLE_EXTENSION_PROC)(
28 __in BUNDLE_EXTENSION_MESSAGE message,
29 __in const LPVOID pvArgs,
30 __inout LPVOID pvResults,
31 __in_opt LPVOID pvContext
32 );
33
34typedef struct _BUNDLE_EXTENSION_CREATE_ARGS
35{
36 DWORD cbSize;
37 DWORD64 qwEngineAPIVersion;
38 PFN_BUNDLE_EXTENSION_ENGINE_PROC pfnBundleExtensionEngineProc;
39 LPVOID pvBundleExtensionEngineProcContext;
40 LPCWSTR wzBootstrapperWorkingFolder;
41 LPCWSTR wzBundleExtensionDataPath;
42 LPCWSTR wzExtensionId;
43} BUNDLE_EXTENSION_CREATE_ARGS;
44
45typedef struct _BUNDLE_EXTENSION_CREATE_RESULTS
46{
47 DWORD cbSize;
48 PFN_BUNDLE_EXTENSION_PROC pfnBundleExtensionProc;
49 LPVOID pvBundleExtensionProcContext;
50} BUNDLE_EXTENSION_CREATE_RESULTS;
51
52extern "C" typedef HRESULT(WINAPI *PFN_BUNDLE_EXTENSION_CREATE)(
53 __in const BUNDLE_EXTENSION_CREATE_ARGS* pArgs,
54 __inout BUNDLE_EXTENSION_CREATE_RESULTS* pResults
55 );
56
57extern "C" typedef void (WINAPI *PFN_BUNDLE_EXTENSION_DESTROY)();
58
59#if defined(__cplusplus)
60}
61#endif
diff --git a/src/api/burn/inc/BundleExtensionEngine.h b/src/api/burn/inc/BundleExtensionEngine.h
new file mode 100644
index 00000000..b585d1a2
--- /dev/null
+++ b/src/api/burn/inc/BundleExtensionEngine.h
@@ -0,0 +1,200 @@
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#if defined(__cplusplus)
6extern "C" {
7#endif
8
9enum BUNDLE_EXTENSION_LOG_LEVEL
10{
11 BUNDLE_EXTENSION_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
12 BUNDLE_EXTENSION_LOG_LEVEL_STANDARD, // written if reporting is on
13 BUNDLE_EXTENSION_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
14 BUNDLE_EXTENSION_LOG_LEVEL_DEBUG, // reporting useful when debugging code
15 BUNDLE_EXTENSION_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
16};
17
18enum BUNDLE_EXTENSION_ENGINE_MESSAGE
19{
20 BUNDLE_EXTENSION_ENGINE_MESSAGE_ESCAPESTRING,
21 BUNDLE_EXTENSION_ENGINE_MESSAGE_EVALUATECONDITION,
22 BUNDLE_EXTENSION_ENGINE_MESSAGE_FORMATSTRING,
23 BUNDLE_EXTENSION_ENGINE_MESSAGE_GETVARIABLENUMERIC,
24 BUNDLE_EXTENSION_ENGINE_MESSAGE_GETVARIABLESTRING,
25 BUNDLE_EXTENSION_ENGINE_MESSAGE_GETVARIABLEVERSION,
26 BUNDLE_EXTENSION_ENGINE_MESSAGE_LOG,
27 BUNDLE_EXTENSION_ENGINE_MESSAGE_SETVARIABLENUMERIC,
28 BUNDLE_EXTENSION_ENGINE_MESSAGE_SETVARIABLESTRING,
29 BUNDLE_EXTENSION_ENGINE_MESSAGE_SETVARIABLEVERSION,
30 BUNDLE_EXTENSION_ENGINE_MESSAGE_COMPAREVERSIONS,
31 BUNDLE_EXTENSION_ENGINE_MESSAGE_GETRELATEDBUNDLEVARIABLE,
32};
33
34typedef struct _BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS
35{
36 DWORD cbSize;
37 LPCWSTR wzVersion1;
38 LPCWSTR wzVersion2;
39} BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS;
40
41typedef struct _BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS
42{
43 DWORD cbSize;
44 int nResult;
45} BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS;
46
47typedef struct _BUNDLE_EXTENSION_ENGINE_ESCAPESTRING_ARGS
48{
49 DWORD cbSize;
50 LPCWSTR wzIn;
51} BUNDLE_EXTENSION_ENGINE_ESCAPESTRING_ARGS;
52
53typedef struct _BUNDLE_EXTENSION_ENGINE_ESCAPESTRING_RESULTS
54{
55 DWORD cbSize;
56 LPWSTR wzOut;
57 // Should be initialized to the size of wzOut.
58 SIZE_T cchOut;
59} BUNDLE_EXTENSION_ENGINE_ESCAPESTRING_RESULTS;
60
61typedef struct _BUNDLE_EXTENSION_ENGINE_EVALUATECONDITION_ARGS
62{
63 DWORD cbSize;
64 LPCWSTR wzCondition;
65} BUNDLE_EXTENSION_ENGINE_EVALUATECONDITION_ARGS;
66
67typedef struct _BUNDLE_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS
68{
69 DWORD cbSize;
70 BOOL f;
71} BUNDLE_EXTENSION_ENGINE_EVALUATECONDITION_RESULTS;
72
73typedef struct _BUNDLE_EXTENSION_ENGINE_FORMATSTRING_ARGS
74{
75 DWORD cbSize;
76 LPCWSTR wzIn;
77} BUNDLE_EXTENSION_ENGINE_FORMATSTRING_ARGS;
78
79typedef struct _BUNDLE_EXTENSION_ENGINE_FORMATSTRING_RESULTS
80{
81 DWORD cbSize;
82 LPWSTR wzOut;
83 // Should be initialized to the size of wzOut.
84 SIZE_T cchOut;
85} BUNDLE_EXTENSION_ENGINE_FORMATSTRING_RESULTS;
86
87typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS
88{
89 DWORD cbSize;
90 LPCWSTR wzVariable;
91} BUNDLE_EXTENSION_ENGINE_GETVARIABLENUMERIC_ARGS;
92
93typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS
94{
95 DWORD cbSize;
96 LONGLONG llValue;
97} BUNDLE_EXTENSION_ENGINE_GETVARIABLENUMERIC_RESULTS;
98
99typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS
100{
101 DWORD cbSize;
102 LPCWSTR wzVariable;
103} BUNDLE_EXTENSION_ENGINE_GETVARIABLESTRING_ARGS;
104
105typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS
106{
107 DWORD cbSize;
108 LPWSTR wzValue;
109 // Should be initialized to the size of wzValue.
110 SIZE_T cchValue;
111} BUNDLE_EXTENSION_ENGINE_GETVARIABLESTRING_RESULTS;
112
113typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS
114{
115 DWORD cbSize;
116 LPCWSTR wzVariable;
117} BUNDLE_EXTENSION_ENGINE_GETVARIABLEVERSION_ARGS;
118
119typedef struct _BUNDLE_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS
120{
121 DWORD cbSize;
122 LPWSTR wzValue;
123 // Should be initialized to the size of wzValue.
124 SIZE_T cchValue;
125} BUNDLE_EXTENSION_ENGINE_GETVARIABLEVERSION_RESULTS;
126
127typedef struct _BUNDLE_EXTENSION_ENGINE_LOG_ARGS
128{
129 DWORD cbSize;
130 BUNDLE_EXTENSION_LOG_LEVEL level;
131 LPCWSTR wzMessage;
132} BUNDLE_EXTENSION_ENGINE_LOG_ARGS;
133
134typedef struct _BUNDLE_EXTENSION_ENGINE_LOG_RESULTS
135{
136 DWORD cbSize;
137} BUNDLE_EXTENSION_ENGINE_LOG_RESULTS;
138
139typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS
140{
141 DWORD cbSize;
142 LPCWSTR wzVariable;
143 LONGLONG llValue;
144} BUNDLE_EXTENSION_ENGINE_SETVARIABLENUMERIC_ARGS;
145
146typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS
147{
148 DWORD cbSize;
149} BUNDLE_EXTENSION_ENGINE_SETVARIABLENUMERIC_RESULTS;
150
151typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS
152{
153 DWORD cbSize;
154 LPCWSTR wzVariable;
155 LPCWSTR wzValue;
156 BOOL fFormatted;
157} BUNDLE_EXTENSION_ENGINE_SETVARIABLESTRING_ARGS;
158
159typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS
160{
161 DWORD cbSize;
162} BUNDLE_EXTENSION_ENGINE_SETVARIABLESTRING_RESULTS;
163
164typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS
165{
166 DWORD cbSize;
167 LPCWSTR wzVariable;
168 LPCWSTR wzValue;
169} BUNDLE_EXTENSION_ENGINE_SETVARIABLEVERSION_ARGS;
170
171typedef struct _BUNDLE_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS
172{
173 DWORD cbSize;
174} BUNDLE_EXTENSION_ENGINE_SETVARIABLEVERSION_RESULTS;
175
176typedef struct _BUNDLE_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS
177{
178 DWORD cbSize;
179 LPCWSTR wzBundleId;
180 LPCWSTR wzVariable;
181} BUNDLE_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_ARGS;
182
183typedef struct _BUNDLE_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS
184{
185 DWORD cbSize;
186 LPWSTR wzValue;
187 // Should be initialized to the size of wzValue.
188 SIZE_T cchValue;
189} BUNDLE_EXTENSION_ENGINE_GETRELATEDBUNDLEVARIABLE_RESULTS;
190
191extern "C" typedef HRESULT(WINAPI *PFN_BUNDLE_EXTENSION_ENGINE_PROC)(
192 __in BUNDLE_EXTENSION_ENGINE_MESSAGE message,
193 __in const LPVOID pvArgs,
194 __inout LPVOID pvResults,
195 __in_opt LPVOID pvContext
196 );
197
198#if defined(__cplusplus)
199}
200#endif