diff options
Diffstat (limited to 'src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h')
-rw-r--r-- | src/WixToolset.BootstrapperCore.Native/inc/BootstrapperEngine.h | 442 |
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) | ||
6 | extern "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 | |||
16 | static 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. | ||
20 | enum 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 | |||
34 | enum 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 | |||
45 | enum 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 | |||
54 | enum 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 | |||
65 | enum 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 | |||
74 | enum 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 | |||
83 | enum BOOTSTRAPPER_UPDATE_HASH_TYPE | ||
84 | { | ||
85 | BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE, | ||
86 | BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA512, | ||
87 | }; | ||
88 | |||
89 | enum 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 | |||
118 | typedef struct _BAENGINE_APPLY_ARGS | ||
119 | { | ||
120 | DWORD cbSize; | ||
121 | HWND hwndParent; | ||
122 | } BAENGINE_APPLY_ARGS; | ||
123 | |||
124 | typedef struct _BAENGINE_APPLY_RESULTS | ||
125 | { | ||
126 | DWORD cbSize; | ||
127 | } BAENGINE_APPLY_RESULTS; | ||
128 | |||
129 | typedef struct _BAENGINE_CLOSESPLASHSCREEN_ARGS | ||
130 | { | ||
131 | DWORD cbSize; | ||
132 | } BAENGINE_CLOSESPLASHSCREEN_ARGS; | ||
133 | |||
134 | typedef struct _BAENGINE_CLOSESPLASHSCREEN_RESULTS | ||
135 | { | ||
136 | DWORD cbSize; | ||
137 | } BAENGINE_CLOSESPLASHSCREEN_RESULTS; | ||
138 | |||
139 | typedef struct _BAENGINE_COMPAREVERSIONS_ARGS | ||
140 | { | ||
141 | DWORD cbSize; | ||
142 | LPCWSTR wzVersion1; | ||
143 | LPCWSTR wzVersion2; | ||
144 | } BAENGINE_COMPAREVERSIONS_ARGS; | ||
145 | |||
146 | typedef struct _BAENGINE_COMPAREVERSIONS_RESULTS | ||
147 | { | ||
148 | DWORD cbSize; | ||
149 | int nResult; | ||
150 | } BAENGINE_COMPAREVERSIONS_RESULTS; | ||
151 | |||
152 | typedef struct _BAENGINE_DETECT_ARGS | ||
153 | { | ||
154 | DWORD cbSize; | ||
155 | HWND hwndParent; | ||
156 | } BAENGINE_DETECT_ARGS; | ||
157 | |||
158 | typedef struct _BAENGINE_DETECT_RESULTS | ||
159 | { | ||
160 | DWORD cbSize; | ||
161 | } BAENGINE_DETECT_RESULTS; | ||
162 | |||
163 | typedef struct _BAENGINE_ELEVATE_ARGS | ||
164 | { | ||
165 | DWORD cbSize; | ||
166 | HWND hwndParent; | ||
167 | } BAENGINE_ELEVATE_ARGS; | ||
168 | |||
169 | typedef struct _BAENGINE_ELEVATE_RESULTS | ||
170 | { | ||
171 | DWORD cbSize; | ||
172 | } BAENGINE_ELEVATE_RESULTS; | ||
173 | |||
174 | typedef struct _BAENGINE_ESCAPESTRING_ARGS | ||
175 | { | ||
176 | DWORD cbSize; | ||
177 | LPCWSTR wzIn; | ||
178 | } BAENGINE_ESCAPESTRING_ARGS; | ||
179 | |||
180 | typedef 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 | |||
188 | typedef struct _BAENGINE_EVALUATECONDITION_ARGS | ||
189 | { | ||
190 | DWORD cbSize; | ||
191 | LPCWSTR wzCondition; | ||
192 | } BAENGINE_EVALUATECONDITION_ARGS; | ||
193 | |||
194 | typedef struct _BAENGINE_EVALUATECONDITION_RESULTS | ||
195 | { | ||
196 | DWORD cbSize; | ||
197 | BOOL f; | ||
198 | } BAENGINE_EVALUATECONDITION_RESULTS; | ||
199 | |||
200 | typedef struct _BAENGINE_FORMATSTRING_ARGS | ||
201 | { | ||
202 | DWORD cbSize; | ||
203 | LPCWSTR wzIn; | ||
204 | } BAENGINE_FORMATSTRING_ARGS; | ||
205 | |||
206 | typedef 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 | |||
214 | typedef struct _BAENGINE_GETPACKAGECOUNT_ARGS | ||
215 | { | ||
216 | DWORD cbSize; | ||
217 | } BAENGINE_GETPACKAGECOUNT_ARGS; | ||
218 | |||
219 | typedef struct _BAENGINE_GETPACKAGECOUNT_RESULTS | ||
220 | { | ||
221 | DWORD cbSize; | ||
222 | DWORD cPackages; | ||
223 | } BAENGINE_GETPACKAGECOUNT_RESULTS; | ||
224 | |||
225 | typedef struct _BAENGINE_GETVARIABLENUMERIC_ARGS | ||
226 | { | ||
227 | DWORD cbSize; | ||
228 | LPCWSTR wzVariable; | ||
229 | } BAENGINE_GETVARIABLENUMERIC_ARGS; | ||
230 | |||
231 | typedef struct _BAENGINE_GETVARIABLENUMERIC_RESULTS | ||
232 | { | ||
233 | DWORD cbSize; | ||
234 | LONGLONG llValue; | ||
235 | } BAENGINE_GETVARIABLENUMERIC_RESULTS; | ||
236 | |||
237 | typedef struct _BAENGINE_GETVARIABLESTRING_ARGS | ||
238 | { | ||
239 | DWORD cbSize; | ||
240 | LPCWSTR wzVariable; | ||
241 | } BAENGINE_GETVARIABLESTRING_ARGS; | ||
242 | |||
243 | typedef 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 | |||
251 | typedef struct _BAENGINE_GETVARIABLEVERSION_ARGS | ||
252 | { | ||
253 | DWORD cbSize; | ||
254 | LPCWSTR wzVariable; | ||
255 | } BAENGINE_GETVARIABLEVERSION_ARGS; | ||
256 | |||
257 | typedef 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 | |||
265 | typedef 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 | |||
274 | typedef struct _BAENGINE_LAUNCHAPPROVEDEXE_RESULTS | ||
275 | { | ||
276 | DWORD cbSize; | ||
277 | } BAENGINE_LAUNCHAPPROVEDEXE_RESULTS; | ||
278 | |||
279 | typedef struct _BAENGINE_SETUPDATESOURCE_ARGS | ||
280 | { | ||
281 | DWORD cbSize; | ||
282 | LPCWSTR wzUrl; | ||
283 | } BAENGINE_SETUPDATESOURCE_ARGS; | ||
284 | |||
285 | typedef struct _BAENGINE_SETUPDATESOURCE_RESULTS | ||
286 | { | ||
287 | DWORD cbSize; | ||
288 | } BAENGINE_SETUPDATESOURCE_RESULTS; | ||
289 | |||
290 | typedef struct _BAENGINE_LOG_ARGS | ||
291 | { | ||
292 | DWORD cbSize; | ||
293 | BOOTSTRAPPER_LOG_LEVEL level; | ||
294 | LPCWSTR wzMessage; | ||
295 | } BAENGINE_LOG_ARGS; | ||
296 | |||
297 | typedef struct _BAENGINE_LOG_RESULTS | ||
298 | { | ||
299 | DWORD cbSize; | ||
300 | } BAENGINE_LOG_RESULTS; | ||
301 | |||
302 | typedef struct _BAENGINE_PLAN_ARGS | ||
303 | { | ||
304 | DWORD cbSize; | ||
305 | BOOTSTRAPPER_ACTION action; | ||
306 | } BAENGINE_PLAN_ARGS; | ||
307 | |||
308 | typedef struct _BAENGINE_PLAN_RESULTS | ||
309 | { | ||
310 | DWORD cbSize; | ||
311 | } BAENGINE_PLAN_RESULTS; | ||
312 | |||
313 | typedef struct _BAENGINE_QUIT_ARGS | ||
314 | { | ||
315 | DWORD cbSize; | ||
316 | DWORD dwExitCode; | ||
317 | } BAENGINE_QUIT_ARGS; | ||
318 | |||
319 | typedef struct _BAENGINE_QUIT_RESULTS | ||
320 | { | ||
321 | DWORD cbSize; | ||
322 | } BAENGINE_QUIT_RESULTS; | ||
323 | |||
324 | typedef struct _BAENGINE_SENDEMBEDDEDERROR_ARGS | ||
325 | { | ||
326 | DWORD cbSize; | ||
327 | DWORD dwErrorCode; | ||
328 | LPCWSTR wzMessage; | ||
329 | DWORD dwUIHint; | ||
330 | } BAENGINE_SENDEMBEDDEDERROR_ARGS; | ||
331 | |||
332 | typedef struct _BAENGINE_SENDEMBEDDEDERROR_RESULTS | ||
333 | { | ||
334 | DWORD cbSize; | ||
335 | int nResult; | ||
336 | } BAENGINE_SENDEMBEDDEDERROR_RESULTS; | ||
337 | |||
338 | typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_ARGS | ||
339 | { | ||
340 | DWORD cbSize; | ||
341 | DWORD dwProgressPercentage; | ||
342 | DWORD dwOverallProgressPercentage; | ||
343 | } BAENGINE_SENDEMBEDDEDPROGRESS_ARGS; | ||
344 | |||
345 | typedef struct _BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS | ||
346 | { | ||
347 | DWORD cbSize; | ||
348 | int nResult; | ||
349 | } BAENGINE_SENDEMBEDDEDPROGRESS_RESULTS; | ||
350 | |||
351 | typedef 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 | |||
361 | typedef struct _BAENGINE_SETDOWNLOADSOURCE_RESULTS | ||
362 | { | ||
363 | DWORD cbSize; | ||
364 | } BAENGINE_SETDOWNLOADSOURCE_RESULTS; | ||
365 | |||
366 | typedef struct _BAENGINE_SETLOCALSOURCE_ARGS | ||
367 | { | ||
368 | DWORD cbSize; | ||
369 | LPCWSTR wzPackageOrContainerId; | ||
370 | LPCWSTR wzPayloadId; | ||
371 | LPCWSTR wzPath; | ||
372 | } BAENGINE_SETLOCALSOURCE_ARGS; | ||
373 | |||
374 | typedef struct _BAENGINE_SETLOCALSOURCE_RESULTS | ||
375 | { | ||
376 | DWORD cbSize; | ||
377 | } BAENGINE_SETLOCALSOURCE_RESULTS; | ||
378 | |||
379 | typedef 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 | |||
390 | typedef struct _BAENGINE_SETUPDATE_RESULTS | ||
391 | { | ||
392 | DWORD cbSize; | ||
393 | } BAENGINE_SETUPDATE_RESULTS; | ||
394 | |||
395 | typedef struct _BAENGINE_SETVARIABLENUMERIC_ARGS | ||
396 | { | ||
397 | DWORD cbSize; | ||
398 | LPCWSTR wzVariable; | ||
399 | LONGLONG llValue; | ||
400 | } BAENGINE_SETVARIABLENUMERIC_ARGS; | ||
401 | |||
402 | typedef struct _BAENGINE_SETVARIABLENUMERIC_RESULTS | ||
403 | { | ||
404 | DWORD cbSize; | ||
405 | } BAENGINE_SETVARIABLENUMERIC_RESULTS; | ||
406 | |||
407 | typedef struct _BAENGINE_SETVARIABLESTRING_ARGS | ||
408 | { | ||
409 | DWORD cbSize; | ||
410 | LPCWSTR wzVariable; | ||
411 | LPCWSTR wzValue; | ||
412 | BOOL fFormatted; | ||
413 | } BAENGINE_SETVARIABLESTRING_ARGS; | ||
414 | |||
415 | typedef struct _BAENGINE_SETVARIABLESTRING_RESULTS | ||
416 | { | ||
417 | DWORD cbSize; | ||
418 | } BAENGINE_SETVARIABLESTRING_RESULTS; | ||
419 | |||
420 | typedef struct _BAENGINE_SETVARIABLEVERSION_ARGS | ||
421 | { | ||
422 | DWORD cbSize; | ||
423 | LPCWSTR wzVariable; | ||
424 | LPCWSTR wzValue; | ||
425 | } BAENGINE_SETVARIABLEVERSION_ARGS; | ||
426 | |||
427 | typedef struct _BAENGINE_SETVARIABLEVERSION_RESULTS | ||
428 | { | ||
429 | DWORD cbSize; | ||
430 | } BAENGINE_SETVARIABLEVERSION_RESULTS; | ||
431 | |||
432 | |||
433 | extern "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 | ||