aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h')
-rw-r--r--src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h442
1 files changed, 442 insertions, 0 deletions
diff --git a/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h b/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h
new file mode 100644
index 00000000..9c9b38a5
--- /dev/null
+++ b/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h
@@ -0,0 +1,442 @@
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
18// Note that ordering of the enumeration values is important.
19// Some code paths use < or > comparisions and simply reording values will break those comparisons.
20enum BOOTSTRAPPER_ACTION
21{
22 BOOTSTRAPPER_ACTION_UNKNOWN,
23 BOOTSTRAPPER_ACTION_HELP,
24 BOOTSTRAPPER_ACTION_LAYOUT,
25 BOOTSTRAPPER_ACTION_UNINSTALL,
26 BOOTSTRAPPER_ACTION_CACHE,
27 BOOTSTRAPPER_ACTION_INSTALL,
28 BOOTSTRAPPER_ACTION_MODIFY,
29 BOOTSTRAPPER_ACTION_REPAIR,
30 BOOTSTRAPPER_ACTION_UPDATE_REPLACE,
31 BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED,
32};
33
34enum BOOTSTRAPPER_ACTION_STATE
35{
36 BOOTSTRAPPER_ACTION_STATE_NONE,
37 BOOTSTRAPPER_ACTION_STATE_UNINSTALL,
38 BOOTSTRAPPER_ACTION_STATE_INSTALL,
39 BOOTSTRAPPER_ACTION_STATE_MODIFY,
40 BOOTSTRAPPER_ACTION_STATE_MEND,
41 BOOTSTRAPPER_ACTION_STATE_REPAIR,
42 BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE,
43};
44
45enum BOOTSTRAPPER_PACKAGE_STATE
46{
47 BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN,
48 BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE,
49 BOOTSTRAPPER_PACKAGE_STATE_ABSENT,
50 BOOTSTRAPPER_PACKAGE_STATE_PRESENT,
51 BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED,
52};
53
54enum BOOTSTRAPPER_REQUEST_STATE
55{
56 BOOTSTRAPPER_REQUEST_STATE_NONE,
57 BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT,
58 BOOTSTRAPPER_REQUEST_STATE_ABSENT,
59 BOOTSTRAPPER_REQUEST_STATE_CACHE,
60 BOOTSTRAPPER_REQUEST_STATE_PRESENT,
61 BOOTSTRAPPER_REQUEST_STATE_MEND,
62 BOOTSTRAPPER_REQUEST_STATE_REPAIR,
63};
64
65enum BOOTSTRAPPER_FEATURE_STATE
66{
67 BOOTSTRAPPER_FEATURE_STATE_UNKNOWN,
68 BOOTSTRAPPER_FEATURE_STATE_ABSENT,
69 BOOTSTRAPPER_FEATURE_STATE_ADVERTISED,
70 BOOTSTRAPPER_FEATURE_STATE_LOCAL,
71 BOOTSTRAPPER_FEATURE_STATE_SOURCE,
72};
73
74enum BOOTSTRAPPER_LOG_LEVEL
75{
76 BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
77 BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on
78 BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
79 BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code
80 BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
81};
82
83enum BOOTSTRAPPER_UPDATE_HASH_TYPE
84{
85 BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE,
86 BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA512,
87};
88
89enum BOOTSTRAPPER_ENGINE_MESSAGE
90{
91 BOOTSTRAPPER_ENGINE_MESSAGE_GETPACKAGECOUNT,
92 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLENUMERIC,
93 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLESTRING,
94 BOOTSTRAPPER_ENGINE_MESSAGE_GETVARIABLEVERSION,
95 BOOTSTRAPPER_ENGINE_MESSAGE_FORMATSTRING,
96 BOOTSTRAPPER_ENGINE_MESSAGE_ESCAPESTRING,
97 BOOTSTRAPPER_ENGINE_MESSAGE_EVALUATECONDITION,
98 BOOTSTRAPPER_ENGINE_MESSAGE_LOG,
99 BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDERROR,
100 BOOTSTRAPPER_ENGINE_MESSAGE_SENDEMBEDDEDPROGRESS,
101 BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATE,
102 BOOTSTRAPPER_ENGINE_MESSAGE_SETLOCALSOURCE,
103 BOOTSTRAPPER_ENGINE_MESSAGE_SETDOWNLOADSOURCE,
104 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLENUMERIC,
105 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLESTRING,
106 BOOTSTRAPPER_ENGINE_MESSAGE_SETVARIABLEVERSION,
107 BOOTSTRAPPER_ENGINE_MESSAGE_CLOSESPLASHSCREEN,
108 BOOTSTRAPPER_ENGINE_MESSAGE_DETECT,
109 BOOTSTRAPPER_ENGINE_MESSAGE_PLAN,
110 BOOTSTRAPPER_ENGINE_MESSAGE_ELEVATE,
111 BOOTSTRAPPER_ENGINE_MESSAGE_APPLY,
112 BOOTSTRAPPER_ENGINE_MESSAGE_QUIT,
113 BOOTSTRAPPER_ENGINE_MESSAGE_LAUNCHAPPROVEDEXE,
114 BOOTSTRAPPER_ENGINE_MESSAGE_SETUPDATESOURCE,
115 BOOTSTRAPPER_ENGINE_MESSAGE_COMPAREVERSIONS,
116};
117
118typedef struct _BAENGINE_APPLY_ARGS
119{
120 DWORD cbSize;
121 HWND hwndParent;
122} BAENGINE_APPLY_ARGS;
123
124typedef struct _BAENGINE_APPLY_RESULTS
125{
126 DWORD cbSize;
127} BAENGINE_APPLY_RESULTS;
128
129typedef struct _BAENGINE_CLOSESPLASHSCREEN_ARGS
130{
131 DWORD cbSize;
132} BAENGINE_CLOSESPLASHSCREEN_ARGS;
133
134typedef struct _BAENGINE_CLOSESPLASHSCREEN_RESULTS
135{
136 DWORD cbSize;
137} BAENGINE_CLOSESPLASHSCREEN_RESULTS;
138
139typedef struct _BAENGINE_COMPAREVERSIONS_ARGS
140{
141 DWORD cbSize;
142 LPCWSTR wzVersion1;
143 LPCWSTR wzVersion2;
144} BAENGINE_COMPAREVERSIONS_ARGS;
145
146typedef struct _BAENGINE_COMPAREVERSIONS_RESULTS
147{
148 DWORD cbSize;
149 int nResult;
150} BAENGINE_COMPAREVERSIONS_RESULTS;
151
152typedef struct _BAENGINE_DETECT_ARGS
153{
154 DWORD cbSize;
155 HWND hwndParent;
156} BAENGINE_DETECT_ARGS;
157
158typedef struct _BAENGINE_DETECT_RESULTS
159{
160 DWORD cbSize;
161} BAENGINE_DETECT_RESULTS;
162
163typedef struct _BAENGINE_ELEVATE_ARGS
164{
165 DWORD cbSize;
166 HWND hwndParent;
167} BAENGINE_ELEVATE_ARGS;
168
169typedef struct _BAENGINE_ELEVATE_RESULTS
170{
171 DWORD cbSize;
172} BAENGINE_ELEVATE_RESULTS;
173
174typedef struct _BAENGINE_ESCAPESTRING_ARGS
175{
176 DWORD cbSize;
177 LPCWSTR wzIn;
178} BAENGINE_ESCAPESTRING_ARGS;
179
180typedef struct _BAENGINE_ESCAPESTRING_RESULTS
181{
182 DWORD cbSize;
183 LPWSTR wzOut;
184 // Should be initialized to the size of wzOut.
185 SIZE_T cchOut;
186} BAENGINE_ESCAPESTRING_RESULTS;
187
188typedef struct _BAENGINE_EVALUATECONDITION_ARGS
189{
190 DWORD cbSize;
191 LPCWSTR wzCondition;
192} BAENGINE_EVALUATECONDITION_ARGS;
193
194typedef struct _BAENGINE_EVALUATECONDITION_RESULTS
195{
196 DWORD cbSize;
197 BOOL f;
198} BAENGINE_EVALUATECONDITION_RESULTS;
199
200typedef struct _BAENGINE_FORMATSTRING_ARGS
201{
202 DWORD cbSize;
203 LPCWSTR wzIn;
204} BAENGINE_FORMATSTRING_ARGS;
205
206typedef struct _BAENGINE_FORMATSTRING_RESULTS
207{
208 DWORD cbSize;
209 LPWSTR wzOut;
210 // Should be initialized to the size of wzOut.
211 SIZE_T cchOut;
212} BAENGINE_FORMATSTRING_RESULTS;
213
214typedef struct _BAENGINE_GETPACKAGECOUNT_ARGS
215{
216 DWORD cbSize;
217} BAENGINE_GETPACKAGECOUNT_ARGS;
218
219typedef struct _BAENGINE_GETPACKAGECOUNT_RESULTS
220{
221 DWORD cbSize;
222 DWORD cPackages;
223} BAENGINE_GETPACKAGECOUNT_RESULTS;
224
225typedef struct _BAENGINE_GETVARIABLENUMERIC_ARGS
226{
227 DWORD cbSize;
228 LPCWSTR wzVariable;
229} BAENGINE_GETVARIABLENUMERIC_ARGS;
230
231typedef struct _BAENGINE_GETVARIABLENUMERIC_RESULTS
232{
233 DWORD cbSize;
234 LONGLONG llValue;
235} BAENGINE_GETVARIABLENUMERIC_RESULTS;
236
237typedef struct _BAENGINE_GETVARIABLESTRING_ARGS
238{
239 DWORD cbSize;
240 LPCWSTR wzVariable;
241} BAENGINE_GETVARIABLESTRING_ARGS;
242
243typedef struct _BAENGINE_GETVARIABLESTRING_RESULTS
244{
245 DWORD cbSize;
246 LPWSTR wzValue;
247 // Should be initialized to the size of wzValue.
248 SIZE_T cchValue;
249} BAENGINE_GETVARIABLESTRING_RESULTS;
250
251typedef struct _BAENGINE_GETVARIABLEVERSION_ARGS
252{
253 DWORD cbSize;
254 LPCWSTR wzVariable;
255} BAENGINE_GETVARIABLEVERSION_ARGS;
256
257typedef struct _BAENGINE_GETVARIABLEVERSION_RESULTS
258{
259 DWORD cbSize;
260 LPWSTR wzValue;
261 // Should be initialized to the size of wzValue.
262 SIZE_T cchValue;
263} BAENGINE_GETVARIABLEVERSION_RESULTS;
264
265typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_ARGS
266{
267 DWORD cbSize;
268 HWND hwndParent;
269 LPCWSTR wzApprovedExeForElevationId;
270 LPCWSTR wzArguments;
271 DWORD dwWaitForInputIdleTimeout;
272} BAENGINE_LAUNCHAPPROVEDEXE_ARGS;
273
274typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_RESULTS
275{
276 DWORD cbSize;
277} BAENGINE_LAUNCHAPPROVEDEXE_RESULTS;
278
279typedef struct _BAENGINE_SETUPDATESOURCE_ARGS
280{
281 DWORD cbSize;
282 LPCWSTR wzUrl;
283} BAENGINE_SETUPDATESOURCE_ARGS;
284
285typedef struct _BAENGINE_SETUPDATESOURCE_RESULTS
286{
287 DWORD cbSize;
288} BAENGINE_SETUPDATESOURCE_RESULTS;
289
290typedef struct _BAENGINE_LOG_ARGS
291{
292 DWORD cbSize;
293 BOOTSTRAPPER_LOG_LEVEL level;
294 LPCWSTR wzMessage;
295} BAENGINE_LOG_ARGS;
296
297typedef struct _BAENGINE_LOG_RESULTS
298{
299 DWORD cbSize;
300} BAENGINE_LOG_RESULTS;
301
302typedef struct _BAENGINE_PLAN_ARGS
303{
304 DWORD cbSize;
305 BOOTSTRAPPER_ACTION action;
306} BAENGINE_PLAN_ARGS;
307
308typedef struct _BAENGINE_PLAN_RESULTS
309{
310 DWORD cbSize;
311} BAENGINE_PLAN_RESULTS;
312
313typedef struct _BAENGINE_QUIT_ARGS
314{
315 DWORD cbSize;
316 DWORD dwExitCode;
317} BAENGINE_QUIT_ARGS;
318
319typedef struct _BAENGINE_QUIT_RESULTS
320{
321 DWORD cbSize;
322} BAENGINE_QUIT_RESULTS;
323
324typedef struct _BAENGINE_SENDEMBEDDEDERROR_ARGS
325{
326 DWORD cbSize;
327 DWORD dwErrorCode;
328 LPCWSTR wzMessage;
329 DWORD dwUIHint;
330} BAENGINE_SENDEMBEDDEDERROR_ARGS;
331
332typedef struct _BAENGINE_SENDEMBEDDEDERROR_RESULTS
333{
334 DWORD cbSize;
335 int nResult;
336} BAENGINE_SENDEMBEDDEDERROR_RESULTS;
337
338typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_ARGS
339{
340 DWORD cbSize;
341 DWORD dwProgressPercentage;
342 DWORD dwOverallProgressPercentage;
343} BAENGINE_SENDEMBEDDEDPROGRESS_ARGS;
344
345typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS
346{
347 DWORD cbSize;
348 int nResult;
349} BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS;
350
351typedef struct _BAENGINE_SETDOWNLOADSOURCE_ARGS
352{
353 DWORD cbSize;
354 LPCWSTR wzPackageOrContainerId;
355 LPCWSTR wzPayloadId;
356 LPCWSTR wzUrl;
357 LPCWSTR wzUser;
358 LPCWSTR wzPassword;
359} BAENGINE_SETDOWNLOADSOURCE_ARGS;
360
361typedef struct _BAENGINE_SETDOWNLOADSOURCE_RESULTS
362{
363 DWORD cbSize;
364} BAENGINE_SETDOWNLOADSOURCE_RESULTS;
365
366typedef struct _BAENGINE_SETLOCALSOURCE_ARGS
367{
368 DWORD cbSize;
369 LPCWSTR wzPackageOrContainerId;
370 LPCWSTR wzPayloadId;
371 LPCWSTR wzPath;
372} BAENGINE_SETLOCALSOURCE_ARGS;
373
374typedef struct _BAENGINE_SETLOCALSOURCE_RESULTS
375{
376 DWORD cbSize;
377} BAENGINE_SETLOCALSOURCE_RESULTS;
378
379typedef struct _BAENGINE_SETUPDATE_ARGS
380{
381 DWORD cbSize;
382 LPCWSTR wzLocalSource;
383 LPCWSTR wzDownloadSource;
384 DWORD64 qwSize;
385 BOOTSTRAPPER_UPDATE_HASH_TYPE hashType;
386 BYTE* rgbHash;
387 DWORD cbHash;
388} BAENGINE_SETUPDATE_ARGS;
389
390typedef struct _BAENGINE_SETUPDATE_RESULTS
391{
392 DWORD cbSize;
393} BAENGINE_SETUPDATE_RESULTS;
394
395typedef struct _BAENGINE_SETVARIABLENUMERIC_ARGS
396{
397 DWORD cbSize;
398 LPCWSTR wzVariable;
399 LONGLONG llValue;
400} BAENGINE_SETVARIABLENUMERIC_ARGS;
401
402typedef struct _BAENGINE_SETVARIABLENUMERIC_RESULTS
403{
404 DWORD cbSize;
405} BAENGINE_SETVARIABLENUMERIC_RESULTS;
406
407typedef struct _BAENGINE_SETVARIABLESTRING_ARGS
408{
409 DWORD cbSize;
410 LPCWSTR wzVariable;
411 LPCWSTR wzValue;
412 BOOL fFormatted;
413} BAENGINE_SETVARIABLESTRING_ARGS;
414
415typedef struct _BAENGINE_SETVARIABLESTRING_RESULTS
416{
417 DWORD cbSize;
418} BAENGINE_SETVARIABLESTRING_RESULTS;
419
420typedef struct _BAENGINE_SETVARIABLEVERSION_ARGS
421{
422 DWORD cbSize;
423 LPCWSTR wzVariable;
424 LPCWSTR wzValue;
425} BAENGINE_SETVARIABLEVERSION_ARGS;
426
427typedef struct _BAENGINE_SETVARIABLEVERSION_RESULTS
428{
429 DWORD cbSize;
430} BAENGINE_SETVARIABLEVERSION_RESULTS;
431
432
433extern "C" typedef HRESULT(WINAPI *PFN_BOOTSTRAPPER_ENGINE_PROC)(
434 __in BOOTSTRAPPER_ENGINE_MESSAGE message,
435 __in const LPVOID pvArgs,
436 __inout LPVOID pvResults,
437 __in_opt LPVOID pvContext
438 );
439
440#if defined(__cplusplus)
441}
442#endif