aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn/inc/BootstrapperEngine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn/inc/BootstrapperEngine.h')
-rw-r--r--src/api/burn/inc/BootstrapperEngine.h460
1 files changed, 460 insertions, 0 deletions
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