aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2024-03-14 13:48:20 -0400
committerBob Arnson <github@bobs.org>2024-03-14 17:21:36 -0400
commitf104c01bc29378b544c0f458c45106bcfd63c11b (patch)
treeb93f92258c794610d7ad665fd4683a10cd4faae1
parentdabcb37846e8f6da9d43984863678e9a4cf57b3e (diff)
downloadwix-f104c01bc29378b544c0f458c45106bcfd63c11b.tar.gz
wix-f104c01bc29378b544c0f458c45106bcfd63c11b.tar.bz2
wix-f104c01bc29378b544c0f458c45106bcfd63c11b.zip
Clean up Burn a bit.
-rw-r--r--src/burn/engine/engine.vcxproj2
-rw-r--r--src/burn/engine/logging.cpp2
-rw-r--r--src/burn/engine/precomp.h1
-rw-r--r--src/burn/engine/userexperience.cpp2958
-rw-r--r--src/burn/engine/userexperience.h539
-rw-r--r--src/burn/test/BurnUnitTest/precomp.h1
6 files changed, 1 insertions, 3502 deletions
diff --git a/src/burn/engine/engine.vcxproj b/src/burn/engine/engine.vcxproj
index 62e03941..c4b64c36 100644
--- a/src/burn/engine/engine.vcxproj
+++ b/src/burn/engine/engine.vcxproj
@@ -94,7 +94,6 @@
94 <ClCompile Include="splashscreen.cpp" /> 94 <ClCompile Include="splashscreen.cpp" />
95 <ClCompile Include="uithread.cpp" /> 95 <ClCompile Include="uithread.cpp" />
96 <ClCompile Include="update.cpp" /> 96 <ClCompile Include="update.cpp" />
97 <ClCompile Include="userexperience.cpp" />
98 <ClCompile Include="variable.cpp" /> 97 <ClCompile Include="variable.cpp" />
99 <ClCompile Include="variant.cpp" /> 98 <ClCompile Include="variant.cpp" />
100 </ItemGroup> 99 </ItemGroup>
@@ -145,7 +144,6 @@
145 <ClInclude Include="splashscreen.h" /> 144 <ClInclude Include="splashscreen.h" />
146 <ClInclude Include="uithread.h" /> 145 <ClInclude Include="uithread.h" />
147 <ClInclude Include="update.h" /> 146 <ClInclude Include="update.h" />
148 <ClInclude Include="userexperience.h" />
149 <ClInclude Include="variable.h" /> 147 <ClInclude Include="variable.h" />
150 <ClInclude Include="variant.h" /> 148 <ClInclude Include="variant.h" />
151 </ItemGroup> 149 </ItemGroup>
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp
index f381193f..8a1f6510 100644
--- a/src/burn/engine/logging.cpp
+++ b/src/burn/engine/logging.cpp
@@ -110,7 +110,7 @@ extern "C" HRESULT LoggingOpen(
110 } 110 }
111 } 111 }
112 112
113 // Open the log approriately. 113 // Open the log appropriately.
114 if (pLog->sczPath && *pLog->sczPath) 114 if (pLog->sczPath && *pLog->sczPath)
115 { 115 {
116 DWORD cRetry = 0; 116 DWORD cRetry = 0;
diff --git a/src/burn/engine/precomp.h b/src/burn/engine/precomp.h
index 348c78ce..72c1e789 100644
--- a/src/burn/engine/precomp.h
+++ b/src/burn/engine/precomp.h
@@ -76,7 +76,6 @@
76#include "burnextension.h" 76#include "burnextension.h"
77#include "search.h" 77#include "search.h"
78#include "ba.h" 78#include "ba.h"
79#include "userexperience.h"
80#include "package.h" 79#include "package.h"
81#include "update.h" 80#include "update.h"
82#include "pseudobundle.h" 81#include "pseudobundle.h"
diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp
deleted file mode 100644
index 99561f35..00000000
--- a/src/burn/engine/userexperience.cpp
+++ /dev/null
@@ -1,2958 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3#include "precomp.h"
4
5// internal function declarations
6
7// static int FilterResult(
8// __in DWORD dwAllowedResults,
9// __in int nResult
10// );
11
12// static HRESULT FilterExecuteResult(
13// __in BURN_USER_EXPERIENCE* pUserExperience,
14// __in HRESULT hrStatus,
15// __in BOOL fRollback,
16// __in BOOL fCancel,
17// __in LPCWSTR sczEventName
18// );
19
20// static HRESULT SendBAMessage(
21// __in BURN_USER_EXPERIENCE* pUserExperience,
22// __in BOOTSTRAPPER_APPLICATION_MESSAGE message,
23// __in_bcount(cbArgs) const LPVOID pvArgs,
24// __in const DWORD cbArgs,
25// __in PIPE_RPC_RESULT* pResult
26// );
27
28// static HRESULT SendBAMessageFromInactiveEngine(
29// __in BURN_USER_EXPERIENCE* pUserExperience,
30// __in BOOTSTRAPPER_APPLICATION_MESSAGE message,
31// __in const LPVOID pvArgs,
32// __in const DWORD cbArgs,
33// __in PIPE_RPC_RESULT* pResult
34// );
35
36
37// function definitions
38
39// /*******************************************************************
40// UserExperienceUninitialize -
41
42// *******************************************************************/
43// extern "C" void UserExperienceUninitialize(
44// __in BURN_USER_EXPERIENCE* pUserExperience
45// )
46// {
47// if (pUserExperience->pEngineContext)
48// {
49// BAEngineFreeContext(pUserExperience->pEngineContext);
50// pUserExperience->pEngineContext = NULL;
51// }
52
53// ReleaseStr(pUserExperience->sczTempDirectory);
54// PayloadsUninitialize(&pUserExperience->payloads);
55
56// // clear struct
57// memset(pUserExperience, 0, sizeof(BURN_USER_EXPERIENCE));
58// }
59
60#ifdef TODO_DELETE
61/*******************************************************************
62 UserExperienceLoad -
63
64*******************************************************************/
65extern "C" HRESULT UserExperienceLoad(
66 __in BURN_USER_EXPERIENCE* pUserExperience,
67 __in BOOTSTRAPPER_ENGINE_CONTEXT* pEngineContext,
68 __in BOOTSTRAPPER_COMMAND* pCommand
69 )
70{
71 HRESULT hr = S_OK;
72 BOOTSTRAPPER_CREATE_ARGS args = { };
73 BOOTSTRAPPER_CREATE_RESULTS results = { };
74 LPCWSTR wzPath = pUserExperience->payloads.rgPayloads[0].sczLocalFilePath;
75
76 args.cbSize = sizeof(BOOTSTRAPPER_CREATE_ARGS);
77 args.pCommand = pCommand;
78 args.pfnBootstrapperEngineProc = EngineForApplicationProc;
79 args.pvBootstrapperEngineProcContext = pEngineContext;
80 args.qwEngineAPIVersion = MAKEQWORDVERSION(2022, 6, 10, 0);
81
82 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS);
83
84 // Load BA DLL.
85 pUserExperience->hUXModule = ::LoadLibraryExW(wzPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
86 ExitOnNullWithLastError(pUserExperience->hUXModule, hr, "Failed to load BA DLL: %ls", wzPath);
87
88 // Get BootstrapperApplicationCreate entry-point.
89 PFN_BOOTSTRAPPER_APPLICATION_CREATE pfnCreate = (PFN_BOOTSTRAPPER_APPLICATION_CREATE)::GetProcAddress(pUserExperience->hUXModule, "BootstrapperApplicationCreate");
90 ExitOnNullWithLastError(pfnCreate, hr, "Failed to get BootstrapperApplicationCreate entry-point");
91
92 // Create BA.
93 hr = pfnCreate(&args, &results);
94 ExitOnFailure(hr, "Failed to create BA.");
95
96 pUserExperience->pfnBAProc = results.pfnBootstrapperApplicationProc;
97 pUserExperience->pvBAProcContext = results.pvBootstrapperApplicationProcContext;
98
99LExit:
100 return hr;
101}
102
103/*******************************************************************
104 UserExperienceUnload -
105
106*******************************************************************/
107extern "C" HRESULT UserExperienceUnload(
108 __in BURN_USER_EXPERIENCE* pUserExperience,
109 __in BOOL fReload
110 )
111{
112 HRESULT hr = S_OK;
113 BOOTSTRAPPER_DESTROY_ARGS args = { };
114 BOOTSTRAPPER_DESTROY_RESULTS results = { };
115
116 args.cbSize = sizeof(BOOTSTRAPPER_DESTROY_ARGS);
117 args.fReload = fReload;
118
119 results.cbSize = sizeof(BOOTSTRAPPER_DESTROY_RESULTS);
120
121 if (pUserExperience->hUXModule)
122 {
123 // Get BootstrapperApplicationDestroy entry-point and call it if it exists.
124 PFN_BOOTSTRAPPER_APPLICATION_DESTROY pfnDestroy = (PFN_BOOTSTRAPPER_APPLICATION_DESTROY)::GetProcAddress(pUserExperience->hUXModule, "BootstrapperApplicationDestroy");
125 if (pfnDestroy)
126 {
127 pfnDestroy(&args, &results);
128 }
129
130 // Free BA DLL if it supports it.
131 if (!results.fDisableUnloading && !::FreeLibrary(pUserExperience->hUXModule))
132 {
133 hr = HRESULT_FROM_WIN32(::GetLastError());
134 TraceError(hr, "Failed to unload BA DLL.");
135 }
136 pUserExperience->hUXModule = NULL;
137 }
138
139//LExit:
140 return hr;
141}
142#endif
143
144// EXTERN_C BAAPI UserExperienceOnApplyBegin(
145// __in BURN_USER_EXPERIENCE* pUserExperience,
146// __in DWORD dwPhaseCount
147// )
148// {
149// HRESULT hr = S_OK;
150// BA_ONAPPLYBEGIN_ARGS args = { };
151// BA_ONAPPLYBEGIN_RESULTS results = { };
152// PIPE_RPC_RESULT result = { };
153
154// args.cbSize = sizeof(args);
155// args.dwPhaseCount = dwPhaseCount;
156
157// results.cbSize = sizeof(results);
158
159// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYBEGIN, &args, args.cbSize, &result);
160// ExitOnFailure(hr, "BA OnApplyBegin failed.");
161
162// if (results.fCancel)
163// {
164// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
165// }
166
167// LExit:
168// return hr;
169// }
170
171// EXTERN_C BAAPI UserExperienceOnApplyComplete(
172// __in BURN_USER_EXPERIENCE* pUserExperience,
173// __in HRESULT hrStatus,
174// __in BOOTSTRAPPER_APPLY_RESTART restart,
175// __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction
176// )
177// {
178// HRESULT hr = S_OK;
179// BA_ONAPPLYCOMPLETE_ARGS args = { };
180// BA_ONAPPLYCOMPLETE_RESULTS results = { };
181// PIPE_RPC_RESULT result = { };
182
183// args.cbSize = sizeof(args);
184// args.hrStatus = hrStatus;
185// args.restart = restart;
186// args.recommendation = *pAction;
187
188// results.cbSize = sizeof(results);
189// results.action = *pAction;
190
191// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYCOMPLETE, &args, args.cbSize, &result);
192// ExitOnFailure(hr, "BA OnApplyComplete failed.");
193
194// *pAction = results.action;
195
196// LExit:
197// return hr;
198// }
199
200// EXTERN_C BAAPI UserExperienceOnApplyDowngrade(
201// __in BURN_USER_EXPERIENCE* pUserExperience,
202// __inout HRESULT* phrStatus
203// )
204// {
205// HRESULT hr = S_OK;
206// BA_ONAPPLYDOWNGRADE_ARGS args = { };
207// BA_ONAPPLYDOWNGRADE_RESULTS results = { };
208// PIPE_RPC_RESULT result = { };
209
210// args.cbSize = sizeof(args);
211// args.hrRecommended = *phrStatus;
212
213// results.cbSize = sizeof(results);
214// results.hrStatus = *phrStatus;
215
216// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONAPPLYDOWNGRADE, &args, args.cbSize, &result);
217// ExitOnFailure(hr, "BA OnApplyDowngrade failed.");
218
219// *phrStatus = results.hrStatus;
220
221// LExit:
222// return hr;
223// }
224
225// EXTERN_C BAAPI UserExperienceOnBeginMsiTransactionBegin(
226// __in BURN_USER_EXPERIENCE* pUserExperience,
227// __in LPCWSTR wzTransactionId
228// )
229// {
230// HRESULT hr = S_OK;
231// BA_ONBEGINMSITRANSACTIONBEGIN_ARGS args = { };
232// BA_ONBEGINMSITRANSACTIONBEGIN_RESULTS results = { };
233// PIPE_RPC_RESULT result = { };
234
235// args.cbSize = sizeof(args);
236// args.wzTransactionId = wzTransactionId;
237
238// results.cbSize = sizeof(results);
239
240// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, &args, args.cbSize, &result);
241// ExitOnFailure(hr, "BA OnBeginMsiTransactionBegin failed.");
242
243// if (results.fCancel)
244// {
245// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
246// }
247
248// LExit:
249// return hr;
250// }
251
252// EXTERN_C BAAPI UserExperienceOnBeginMsiTransactionComplete(
253// __in BURN_USER_EXPERIENCE* pUserExperience,
254// __in LPCWSTR wzTransactionId,
255// __in HRESULT hrStatus
256// )
257// {
258// HRESULT hr = S_OK;
259// BA_ONBEGINMSITRANSACTIONCOMPLETE_ARGS args = { };
260// BA_ONBEGINMSITRANSACTIONCOMPLETE_RESULTS results = { };
261// PIPE_RPC_RESULT result = { };
262
263// args.cbSize = sizeof(args);
264// args.wzTransactionId = wzTransactionId;
265// args.hrStatus = hrStatus;
266
267// results.cbSize = sizeof(results);
268
269// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONCOMPLETE, &args, args.cbSize, &result);
270// ExitOnFailure(hr, "BA OnBeginMsiTransactionComplete failed.");
271
272// LExit:
273// return hr;
274// }
275
276// EXTERN_C BAAPI UserExperienceOnCacheAcquireBegin(
277// __in BURN_USER_EXPERIENCE* pUserExperience,
278// __in_z_opt LPCWSTR wzPackageOrContainerId,
279// __in_z_opt LPCWSTR wzPayloadId,
280// __in_z LPWSTR* pwzSource,
281// __in_z LPWSTR* pwzDownloadUrl,
282// __in_z_opt LPCWSTR wzPayloadContainerId,
283// __out BOOTSTRAPPER_CACHE_OPERATION* pCacheOperation
284// )
285// {
286// HRESULT hr = S_OK;
287// BA_ONCACHEACQUIREBEGIN_ARGS args = { };
288// BA_ONCACHEACQUIREBEGIN_RESULTS results = { };
289// PIPE_RPC_RESULT result = { };
290
291// *pCacheOperation = BOOTSTRAPPER_CACHE_OPERATION_NONE;
292
293// args.cbSize = sizeof(args);
294// args.wzPackageOrContainerId = wzPackageOrContainerId;
295// args.wzPayloadId = wzPayloadId;
296// args.wzSource = *pwzSource;
297// args.wzDownloadUrl = *pwzDownloadUrl;
298// args.wzPayloadContainerId = wzPayloadContainerId;
299// args.recommendation = *pCacheOperation;
300
301// results.cbSize = sizeof(results);
302// results.action = *pCacheOperation;
303
304// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREBEGIN, &args, args.cbSize, &result);
305// ExitOnFailure(hr, "BA OnCacheAcquireBegin failed.");
306
307// if (results.fCancel)
308// {
309// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
310// }
311// else
312// {
313// // Verify the BA requested an action that is possible.
314// if (BOOTSTRAPPER_CACHE_OPERATION_DOWNLOAD == results.action && *pwzDownloadUrl && **pwzDownloadUrl ||
315// BOOTSTRAPPER_CACHE_OPERATION_EXTRACT == results.action && wzPayloadContainerId ||
316// BOOTSTRAPPER_CACHE_OPERATION_COPY == results.action ||
317// BOOTSTRAPPER_CACHE_OPERATION_NONE == results.action)
318// {
319// *pCacheOperation = results.action;
320// }
321// }
322
323// LExit:
324// return hr;
325// }
326
327// EXTERN_C BAAPI UserExperienceOnCacheAcquireComplete(
328// __in BURN_USER_EXPERIENCE* pUserExperience,
329// __in_z_opt LPCWSTR wzPackageOrContainerId,
330// __in_z_opt LPCWSTR wzPayloadId,
331// __in HRESULT hrStatus,
332// __inout BOOL* pfRetry
333// )
334// {
335// HRESULT hr = S_OK;
336// BA_ONCACHEACQUIRECOMPLETE_ARGS args = { };
337// BA_ONCACHEACQUIRECOMPLETE_RESULTS results = { };
338// PIPE_RPC_RESULT result = { };
339
340// args.cbSize = sizeof(args);
341// args.wzPackageOrContainerId = wzPackageOrContainerId;
342// args.wzPayloadId = wzPayloadId;
343// args.hrStatus = hrStatus;
344// args.recommendation = *pfRetry ? BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY : BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_NONE;
345
346// results.cbSize = sizeof(results);
347// results.action = args.recommendation;
348
349// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRECOMPLETE, &args, args.cbSize, &result);
350// ExitOnFailure(hr, "BA OnCacheAcquireComplete failed.");
351
352// if (FAILED(hrStatus))
353// {
354// *pfRetry = BOOTSTRAPPER_CACHEACQUIRECOMPLETE_ACTION_RETRY == results.action;
355// }
356
357// LExit:
358// return hr;
359// }
360
361// EXTERN_C BAAPI UserExperienceOnCacheAcquireProgress(
362// __in BURN_USER_EXPERIENCE* pUserExperience,
363// __in_z_opt LPCWSTR wzPackageOrContainerId,
364// __in_z_opt LPCWSTR wzPayloadId,
365// __in DWORD64 dw64Progress,
366// __in DWORD64 dw64Total,
367// __in DWORD dwOverallPercentage
368// )
369// {
370// HRESULT hr = S_OK;
371// BA_ONCACHEACQUIREPROGRESS_ARGS args = { };
372// BA_ONCACHEACQUIREPROGRESS_RESULTS results = { };
373// PIPE_RPC_RESULT result = { };
374
375// args.cbSize = sizeof(args);
376// args.wzPackageOrContainerId = wzPackageOrContainerId;
377// args.wzPayloadId = wzPayloadId;
378// args.dw64Progress = dw64Progress;
379// args.dw64Total = dw64Total;
380// args.dwOverallPercentage = dwOverallPercentage;
381
382// results.cbSize = sizeof(results);
383
384// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIREPROGRESS, &args, args.cbSize, &result);
385// ExitOnFailure(hr, "BA OnCacheAcquireProgress failed.");
386
387// if (results.fCancel)
388// {
389// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
390// }
391
392// LExit:
393// return hr;
394// }
395
396// EXTERN_C BAAPI UserExperienceOnCacheAcquireResolving(
397// __in BURN_USER_EXPERIENCE* pUserExperience,
398// __in_z_opt LPCWSTR wzPackageOrContainerId,
399// __in_z_opt LPCWSTR wzPayloadId,
400// __in_z LPWSTR* rgSearchPaths,
401// __in DWORD cSearchPaths,
402// __in BOOL fFoundLocal,
403// __in DWORD* pdwChosenSearchPath,
404// __in_z_opt LPWSTR* pwzDownloadUrl,
405// __in_z_opt LPCWSTR wzPayloadContainerId,
406// __inout BOOTSTRAPPER_CACHE_RESOLVE_OPERATION* pCacheOperation
407// )
408// {
409// HRESULT hr = S_OK;
410// BA_ONCACHEACQUIRERESOLVING_ARGS args = { };
411// BA_ONCACHEACQUIRERESOLVING_RESULTS results = { };
412// PIPE_RPC_RESULT result = { };
413
414// args.cbSize = sizeof(args);
415// args.wzPackageOrContainerId = wzPackageOrContainerId;
416// args.wzPayloadId = wzPayloadId;
417// args.rgSearchPaths = const_cast<LPCWSTR*>(rgSearchPaths);
418// args.cSearchPaths = cSearchPaths;
419// args.fFoundLocal = fFoundLocal;
420// args.dwRecommendedSearchPath = *pdwChosenSearchPath;
421// args.wzDownloadUrl = *pwzDownloadUrl;
422// args.recommendation = *pCacheOperation;
423
424// results.cbSize = sizeof(results);
425// results.dwChosenSearchPath = *pdwChosenSearchPath;
426// results.action = *pCacheOperation;
427
428// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEACQUIRERESOLVING, &args, args.cbSize, &result);
429// ExitOnFailure(hr, "BA OnCacheAcquireResolving failed.");
430
431// if (results.fCancel)
432// {
433// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
434// }
435// else
436// {
437// // Verify the BA requested an action that is possible.
438// if (BOOTSTRAPPER_CACHE_RESOLVE_DOWNLOAD == results.action && *pwzDownloadUrl && **pwzDownloadUrl ||
439// BOOTSTRAPPER_CACHE_RESOLVE_CONTAINER == results.action && wzPayloadContainerId ||
440// BOOTSTRAPPER_CACHE_RESOLVE_RETRY == results.action ||
441// BOOTSTRAPPER_CACHE_RESOLVE_NONE == results.action)
442// {
443// *pCacheOperation = results.action;
444// }
445// else if (BOOTSTRAPPER_CACHE_RESOLVE_LOCAL == results.action && results.dwChosenSearchPath < cSearchPaths)
446// {
447// *pdwChosenSearchPath = results.dwChosenSearchPath;
448// *pCacheOperation = results.action;
449// }
450// }
451
452// LExit:
453// return hr;
454// }
455
456// EXTERN_C BAAPI UserExperienceOnCacheBegin(
457// __in BURN_USER_EXPERIENCE* pUserExperience
458// )
459// {
460// HRESULT hr = S_OK;
461// BA_ONCACHEBEGIN_ARGS args = { };
462// BA_ONCACHEBEGIN_RESULTS results = { };
463// PIPE_RPC_RESULT result = { };
464
465// args.cbSize = sizeof(args);
466
467// results.cbSize = sizeof(results);
468
469// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEBEGIN, &args, args.cbSize, &result);
470// ExitOnFailure(hr, "BA OnCacheBegin failed.");
471
472// if (results.fCancel)
473// {
474// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
475// }
476
477// LExit:
478// return hr;
479// }
480
481// EXTERN_C BAAPI UserExperienceOnCacheComplete(
482// __in BURN_USER_EXPERIENCE* pUserExperience,
483// __in HRESULT hrStatus
484// )
485// {
486// HRESULT hr = S_OK;
487// BA_ONCACHECOMPLETE_ARGS args = { };
488// BA_ONCACHECOMPLETE_RESULTS results = { };
489// PIPE_RPC_RESULT result = { };
490
491// args.cbSize = sizeof(args);
492// args.hrStatus = hrStatus;
493
494// results.cbSize = sizeof(results);
495
496// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECOMPLETE, &args, args.cbSize, &result);
497// ExitOnFailure(hr, "BA OnCacheComplete failed.");
498
499// LExit:
500// return hr;
501// }
502
503// EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyBegin(
504// __in BURN_USER_EXPERIENCE* pUserExperience,
505// __in_z_opt LPCWSTR wzPackageOrContainerId,
506// __in_z_opt LPCWSTR wzPayloadId
507// )
508// {
509// HRESULT hr = S_OK;
510// BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS args = { };
511// BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS results = { };
512// PIPE_RPC_RESULT result = { };
513
514// args.cbSize = sizeof(args);
515// args.wzPackageOrContainerId = wzPackageOrContainerId;
516// args.wzPayloadId = wzPayloadId;
517
518// results.cbSize = sizeof(results);
519
520// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN, &args, args.cbSize, &result);
521// ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyBegin failed.");
522
523// if (results.fCancel)
524// {
525// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
526// }
527
528// LExit:
529// return hr;
530// }
531
532// EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyComplete(
533// __in BURN_USER_EXPERIENCE* pUserExperience,
534// __in_z_opt LPCWSTR wzPackageOrContainerId,
535// __in_z_opt LPCWSTR wzPayloadId,
536// __in HRESULT hrStatus
537// )
538// {
539// HRESULT hr = S_OK;
540// BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS args = { };
541// BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS results = { };
542// PIPE_RPC_RESULT result = { };
543
544// args.cbSize = sizeof(args);
545// args.wzPackageOrContainerId = wzPackageOrContainerId;
546// args.wzPayloadId = wzPayloadId;
547// args.hrStatus = hrStatus;
548
549// results.cbSize = sizeof(results);
550
551// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE, &args, args.cbSize, &result);
552// ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyComplete failed.");
553
554// LExit:
555// return hr;
556// }
557
558// EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyProgress(
559// __in BURN_USER_EXPERIENCE* pUserExperience,
560// __in_z_opt LPCWSTR wzPackageOrContainerId,
561// __in_z_opt LPCWSTR wzPayloadId,
562// __in DWORD64 dw64Progress,
563// __in DWORD64 dw64Total,
564// __in DWORD dwOverallPercentage
565// )
566// {
567// HRESULT hr = S_OK;
568// BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS args = { };
569// BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS results = { };
570// PIPE_RPC_RESULT result = { };
571
572// args.cbSize = sizeof(args);
573// args.wzPackageOrContainerId = wzPackageOrContainerId;
574// args.wzPayloadId = wzPayloadId;
575// args.dw64Progress = dw64Progress;
576// args.dw64Total = dw64Total;
577// args.dwOverallPercentage = dwOverallPercentage;
578
579// results.cbSize = sizeof(results);
580
581// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS, &args, args.cbSize, &result);
582// ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyProgress failed.");
583
584// if (results.fCancel)
585// {
586// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
587// }
588
589// LExit:
590// return hr;
591// }
592
593// EXTERN_C BAAPI UserExperienceOnCachePackageBegin(
594// __in BURN_USER_EXPERIENCE* pUserExperience,
595// __in_z LPCWSTR wzPackageId,
596// __in DWORD cCachePayloads,
597// __in DWORD64 dw64PackageCacheSize,
598// __in BOOL fVital
599// )
600// {
601// HRESULT hr = S_OK;
602// BA_ONCACHEPACKAGEBEGIN_ARGS args = { };
603// BA_ONCACHEPACKAGEBEGIN_RESULTS results = { };
604// PIPE_RPC_RESULT result = { };
605
606// args.cbSize = sizeof(args);
607// args.wzPackageId = wzPackageId;
608// args.cCachePayloads = cCachePayloads;
609// args.dw64PackageCacheSize = dw64PackageCacheSize;
610// args.fVital = fVital;
611
612// results.cbSize = sizeof(results);
613
614// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGEBEGIN, &args, args.cbSize, &result);
615// ExitOnFailure(hr, "BA OnCachePackageBegin failed.");
616
617// if (results.fCancel)
618// {
619// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
620// }
621
622// LExit:
623// return hr;
624// }
625
626// EXTERN_C BAAPI UserExperienceOnCachePackageComplete(
627// __in BURN_USER_EXPERIENCE* pUserExperience,
628// __in_z LPCWSTR wzPackageId,
629// __in HRESULT hrStatus,
630// __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction
631// )
632// {
633// HRESULT hr = S_OK;
634// BA_ONCACHEPACKAGECOMPLETE_ARGS args = { };
635// BA_ONCACHEPACKAGECOMPLETE_RESULTS results = { };
636// PIPE_RPC_RESULT result = { };
637
638// args.cbSize = sizeof(args);
639// args.wzPackageId = wzPackageId;
640// args.hrStatus = hrStatus;
641// args.recommendation = *pAction;
642
643// results.cbSize = sizeof(results);
644// results.action = *pAction;
645
646// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGECOMPLETE, &args, args.cbSize, &result);
647// ExitOnFailure(hr, "BA OnCachePackageComplete failed.");
648
649// if (FAILED(hrStatus))
650// {
651// *pAction = results.action;
652// }
653
654// LExit:
655// return hr;
656// }
657
658// EXTERN_C BAAPI UserExperienceOnCachePackageNonVitalValidationFailure(
659// __in BURN_USER_EXPERIENCE* pUserExperience,
660// __in_z LPCWSTR wzPackageId,
661// __in HRESULT hrStatus,
662// __inout BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION* pAction
663// )
664// {
665// HRESULT hr = S_OK;
666// BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_ARGS args = { };
667// BA_ONCACHEPACKAGENONVITALVALIDATIONFAILURE_RESULTS results = { };
668// PIPE_RPC_RESULT result = { };
669
670// args.cbSize = sizeof(args);
671// args.wzPackageId = wzPackageId;
672// args.hrStatus = hrStatus;
673// args.recommendation = *pAction;
674
675// results.cbSize = sizeof(results);
676// results.action = *pAction;
677
678// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPACKAGENONVITALVALIDATIONFAILURE, &args, args.cbSize, &result);
679// ExitOnFailure(hr, "BA OnCachePackageNonVitalValidationFailure failed.");
680
681// switch (results.action)
682// {
683// case BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_NONE: __fallthrough;
684// case BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION_ACQUIRE:
685// *pAction = results.action;
686// break;
687// }
688
689// LExit:
690// return hr;
691// }
692
693// EXTERN_C BAAPI UserExperienceOnCachePayloadExtractBegin(
694// __in BURN_USER_EXPERIENCE* pUserExperience,
695// __in_z_opt LPCWSTR wzContainerId,
696// __in_z_opt LPCWSTR wzPayloadId
697// )
698// {
699// HRESULT hr = S_OK;
700// BA_ONCACHEPAYLOADEXTRACTBEGIN_ARGS args = { };
701// BA_ONCACHEPAYLOADEXTRACTBEGIN_RESULTS results = { };
702// PIPE_RPC_RESULT result = { };
703
704// args.cbSize = sizeof(args);
705// args.wzContainerId = wzContainerId;
706// args.wzPayloadId = wzPayloadId;
707
708// results.cbSize = sizeof(results);
709
710// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTBEGIN, &args, args.cbSize, &result);
711// ExitOnFailure(hr, "BA OnCachePayloadExtractBegin failed.");
712
713// if (results.fCancel)
714// {
715// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
716// }
717
718// LExit:
719// return hr;
720// }
721
722// EXTERN_C BAAPI UserExperienceOnCachePayloadExtractComplete(
723// __in BURN_USER_EXPERIENCE* pUserExperience,
724// __in_z_opt LPCWSTR wzContainerId,
725// __in_z_opt LPCWSTR wzPayloadId,
726// __in HRESULT hrStatus
727// )
728// {
729// HRESULT hr = S_OK;
730// BA_ONCACHEPAYLOADEXTRACTCOMPLETE_ARGS args = { };
731// BA_ONCACHEPAYLOADEXTRACTCOMPLETE_RESULTS results = { };
732// PIPE_RPC_RESULT result = { };
733
734// args.cbSize = sizeof(args);
735// args.wzContainerId = wzContainerId;
736// args.wzPayloadId = wzPayloadId;
737// args.hrStatus = hrStatus;
738
739// results.cbSize = sizeof(results);
740
741// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, &args, args.cbSize, &result);
742// ExitOnFailure(hr, "BA OnCachePayloadExtractComplete failed.");
743
744// LExit:
745// return hr;
746// }
747
748// EXTERN_C BAAPI UserExperienceOnCachePayloadExtractProgress(
749// __in BURN_USER_EXPERIENCE* pUserExperience,
750// __in_z_opt LPCWSTR wzContainerId,
751// __in_z_opt LPCWSTR wzPayloadId,
752// __in DWORD64 dw64Progress,
753// __in DWORD64 dw64Total,
754// __in DWORD dwOverallPercentage
755// )
756// {
757// HRESULT hr = S_OK;
758// BA_ONCACHEPAYLOADEXTRACTPROGRESS_ARGS args = { };
759// BA_ONCACHEPAYLOADEXTRACTPROGRESS_RESULTS results = { };
760// PIPE_RPC_RESULT result = { };
761
762// args.cbSize = sizeof(args);
763// args.wzContainerId = wzContainerId;
764// args.wzPayloadId = wzPayloadId;
765// args.dw64Progress = dw64Progress;
766// args.dw64Total = dw64Total;
767// args.dwOverallPercentage = dwOverallPercentage;
768
769// results.cbSize = sizeof(results);
770
771// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, &args, args.cbSize, &result);
772// ExitOnFailure(hr, "BA OnCachePayloadExtractProgress failed.");
773
774// if (results.fCancel)
775// {
776// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
777// }
778
779// LExit:
780// return hr;
781// }
782
783// EXTERN_C BAAPI UserExperienceOnCacheVerifyBegin(
784// __in BURN_USER_EXPERIENCE* pUserExperience,
785// __in_z_opt LPCWSTR wzPackageOrContainerId,
786// __in_z_opt LPCWSTR wzPayloadId
787// )
788// {
789// HRESULT hr = S_OK;
790// BA_ONCACHEVERIFYBEGIN_ARGS args = { };
791// BA_ONCACHEVERIFYBEGIN_RESULTS results = { };
792// PIPE_RPC_RESULT result = { };
793
794// args.cbSize = sizeof(args);
795// args.wzPackageOrContainerId = wzPackageOrContainerId;
796// args.wzPayloadId = wzPayloadId;
797
798// results.cbSize = sizeof(results);
799
800// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYBEGIN, &args, args.cbSize, &result);
801// ExitOnFailure(hr, "BA OnCacheVerifyBegin failed.");
802
803// if (results.fCancel)
804// {
805// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
806// }
807
808// LExit:
809// return hr;
810// }
811
812// EXTERN_C BAAPI UserExperienceOnCacheVerifyComplete(
813// __in BURN_USER_EXPERIENCE* pUserExperience,
814// __in_z_opt LPCWSTR wzPackageOrContainerId,
815// __in_z_opt LPCWSTR wzPayloadId,
816// __in HRESULT hrStatus,
817// __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction
818// )
819// {
820// HRESULT hr = S_OK;
821// BA_ONCACHEVERIFYCOMPLETE_ARGS args = { };
822// BA_ONCACHEVERIFYCOMPLETE_RESULTS results = { };
823// PIPE_RPC_RESULT result = { };
824
825// args.cbSize = sizeof(args);
826// args.wzPackageOrContainerId = wzPackageOrContainerId;
827// args.wzPayloadId = wzPayloadId;
828// args.hrStatus = hrStatus;
829// args.recommendation = *pAction;
830
831// results.cbSize = sizeof(results);
832// results.action = *pAction;
833
834// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYCOMPLETE, &args, args.cbSize, &result);
835// ExitOnFailure(hr, "BA OnCacheVerifyComplete failed.");
836
837// if (FAILED(hrStatus))
838// {
839// *pAction = results.action;
840// }
841
842// LExit:
843// return hr;
844// }
845
846// EXTERN_C BAAPI UserExperienceOnCacheVerifyProgress(
847// __in BURN_USER_EXPERIENCE* pUserExperience,
848// __in_z_opt LPCWSTR wzPackageOrContainerId,
849// __in_z_opt LPCWSTR wzPayloadId,
850// __in DWORD64 dw64Progress,
851// __in DWORD64 dw64Total,
852// __in DWORD dwOverallPercentage,
853// __in BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep
854// )
855// {
856// HRESULT hr = S_OK;
857// BA_ONCACHEVERIFYPROGRESS_ARGS args = { };
858// BA_ONCACHEVERIFYPROGRESS_RESULTS results = { };
859// PIPE_RPC_RESULT result = { };
860
861// args.cbSize = sizeof(args);
862// args.wzPackageOrContainerId = wzPackageOrContainerId;
863// args.wzPayloadId = wzPayloadId;
864// args.dw64Progress = dw64Progress;
865// args.dw64Total = dw64Total;
866// args.dwOverallPercentage = dwOverallPercentage;
867// args.verifyStep = verifyStep;
868
869// results.cbSize = sizeof(results);
870
871// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS, &args, args.cbSize, &result);
872// ExitOnFailure(hr, "BA OnCacheVerifyProgress failed.");
873
874// if (results.fCancel)
875// {
876// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
877// }
878
879// LExit:
880// return hr;
881// }
882
883// EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionBegin(
884// __in BURN_USER_EXPERIENCE* pUserExperience,
885// __in LPCWSTR wzTransactionId
886// )
887// {
888// HRESULT hr = S_OK;
889// BA_ONCOMMITMSITRANSACTIONBEGIN_ARGS args = { };
890// BA_ONCOMMITMSITRANSACTIONBEGIN_RESULTS results = { };
891// PIPE_RPC_RESULT result = { };
892
893// args.cbSize = sizeof(args);
894// args.wzTransactionId = wzTransactionId;
895
896// results.cbSize = sizeof(results);
897
898// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, &args, args.cbSize, &result);
899// ExitOnFailure(hr, "BA OnCommitMsiTransactionBegin failed.");
900
901// if (results.fCancel)
902// {
903// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
904// }
905
906// LExit:
907// return hr;
908// }
909
910// EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionComplete(
911// __in BURN_USER_EXPERIENCE* pUserExperience,
912// __in LPCWSTR wzTransactionId,
913// __in HRESULT hrStatus,
914// __in BOOTSTRAPPER_APPLY_RESTART restart,
915// __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction
916// )
917// {
918// HRESULT hr = S_OK;
919// BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS args = { };
920// BA_ONCOMMITMSITRANSACTIONCOMPLETE_RESULTS results = { };
921// PIPE_RPC_RESULT result = { };
922
923// args.cbSize = sizeof(args);
924// args.wzTransactionId = wzTransactionId;
925// args.hrStatus = hrStatus;
926// args.restart = restart;
927// args.recommendation = *pAction;
928
929// results.cbSize = sizeof(results);
930// results.action = *pAction;
931
932// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, &args, args.cbSize, &result);
933// ExitOnFailure(hr, "BA OnCommitMsiTransactionComplete failed.");
934
935// *pAction = results.action;
936
937// LExit:
938// return hr;
939// }
940
941// EXTERN_C BAAPI UserExperienceOnDetectBegin(
942// __in BURN_USER_EXPERIENCE* pUserExperience,
943// __in BOOL fCached,
944// __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType,
945// __in DWORD cPackages
946// )
947// {
948// HRESULT hr = S_OK;
949// BA_ONDETECTBEGIN_ARGS args = { };
950// BA_ONDETECTBEGIN_RESULTS results = { };
951// PIPE_RPC_RESULT result = { };
952
953// args.cbSize = sizeof(args);
954// args.cPackages = cPackages;
955// args.registrationType = registrationType;
956// args.fCached = fCached;
957
958// results.cbSize = sizeof(results);
959
960// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTBEGIN, &args, args.cbSize, &result);
961// ExitOnFailure(hr, "BA OnDetectBegin failed.");
962
963// if (results.fCancel)
964// {
965// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
966// }
967
968// LExit:
969// return hr;
970// }
971
972// EXTERN_C BAAPI UserExperienceOnDetectCompatibleMsiPackage(
973// __in BURN_USER_EXPERIENCE* pUserExperience,
974// __in_z LPCWSTR wzPackageId,
975// __in_z LPCWSTR wzCompatiblePackageId,
976// __in VERUTIL_VERSION* pCompatiblePackageVersion
977// )
978// {
979// HRESULT hr = S_OK;
980// BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS args = { };
981// BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS results = { };
982// PIPE_RPC_RESULT result = { };
983
984// args.cbSize = sizeof(args);
985// args.wzPackageId = wzPackageId;
986// args.wzCompatiblePackageId = wzCompatiblePackageId;
987// args.wzCompatiblePackageVersion = pCompatiblePackageVersion->sczVersion;
988
989// results.cbSize = sizeof(results);
990
991// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, &args, args.cbSize, &result);
992// ExitOnFailure(hr, "BA OnDetectCompatibleMsiPackage failed.");
993
994// if (results.fCancel)
995// {
996// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
997// }
998
999// LExit:
1000// return hr;
1001// }
1002
1003// EXTERN_C BAAPI UserExperienceOnDetectComplete(
1004// __in BURN_USER_EXPERIENCE* pUserExperience,
1005// __in HRESULT hrStatus,
1006// __in BOOL fEligibleForCleanup
1007// )
1008// {
1009// HRESULT hr = S_OK;
1010// BA_ONDETECTCOMPLETE_ARGS args = { };
1011// BA_ONDETECTCOMPLETE_RESULTS results = { };
1012// PIPE_RPC_RESULT result = { };
1013
1014// args.cbSize = sizeof(args);
1015// args.hrStatus = hrStatus;
1016// args.fEligibleForCleanup = fEligibleForCleanup;
1017
1018// results.cbSize = sizeof(results);
1019
1020// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPLETE, &args, args.cbSize, &result);
1021// ExitOnFailure(hr, "BA OnDetectComplete failed.");
1022
1023// LExit:
1024// return hr;
1025// }
1026
1027// EXTERN_C BAAPI UserExperienceOnDetectForwardCompatibleBundle(
1028// __in BURN_USER_EXPERIENCE* pUserExperience,
1029// __in_z LPCWSTR wzBundleId,
1030// __in BOOTSTRAPPER_RELATION_TYPE relationType,
1031// __in_z LPCWSTR wzBundleTag,
1032// __in BOOL fPerMachine,
1033// __in VERUTIL_VERSION* pVersion,
1034// __in BOOL fMissingFromCache
1035// )
1036// {
1037// HRESULT hr = S_OK;
1038// BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_ARGS args = { };
1039// BA_ONDETECTFORWARDCOMPATIBLEBUNDLE_RESULTS results = { };
1040// PIPE_RPC_RESULT result = { };
1041
1042// args.cbSize = sizeof(args);
1043// args.wzBundleId = wzBundleId;
1044// args.relationType = relationType;
1045// args.wzBundleTag = wzBundleTag;
1046// args.fPerMachine = fPerMachine;
1047// args.wzVersion = pVersion->sczVersion;
1048// args.fMissingFromCache = fMissingFromCache;
1049
1050// results.cbSize = sizeof(results);
1051
1052// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTFORWARDCOMPATIBLEBUNDLE, &args, args.cbSize, &result);
1053// ExitOnFailure(hr, "BA OnDetectForwardCompatibleBundle failed.");
1054
1055// if (results.fCancel)
1056// {
1057// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1058// }
1059
1060// LExit:
1061// return hr;
1062// }
1063
1064// EXTERN_C BAAPI UserExperienceOnDetectMsiFeature(
1065// __in BURN_USER_EXPERIENCE* pUserExperience,
1066// __in_z LPCWSTR wzPackageId,
1067// __in_z LPCWSTR wzFeatureId,
1068// __in BOOTSTRAPPER_FEATURE_STATE state
1069// )
1070// {
1071// HRESULT hr = S_OK;
1072// BA_ONDETECTMSIFEATURE_ARGS args = { };
1073// BA_ONDETECTMSIFEATURE_RESULTS results = { };
1074// PIPE_RPC_RESULT result = { };
1075
1076// args.cbSize = sizeof(args);
1077// args.wzPackageId = wzPackageId;
1078// args.wzFeatureId = wzFeatureId;
1079// args.state = state;
1080
1081// results.cbSize = sizeof(results);
1082
1083// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTMSIFEATURE, &args, args.cbSize, &result);
1084// ExitOnFailure(hr, "BA OnDetectMsiFeature failed.");
1085
1086// if (results.fCancel)
1087// {
1088// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1089// }
1090
1091// LExit:
1092// return hr;
1093// }
1094
1095// EXTERN_C BAAPI UserExperienceOnDetectPackageBegin(
1096// __in BURN_USER_EXPERIENCE* pUserExperience,
1097// __in_z LPCWSTR wzPackageId
1098// )
1099// {
1100// HRESULT hr = S_OK;
1101// BA_ONDETECTPACKAGEBEGIN_ARGS args = { };
1102// BA_ONDETECTPACKAGEBEGIN_RESULTS results = { };
1103// PIPE_RPC_RESULT result = { };
1104
1105// args.cbSize = sizeof(args);
1106// args.wzPackageId = wzPackageId;
1107
1108// results.cbSize = sizeof(results);
1109
1110// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGEBEGIN, &args, args.cbSize, &result);
1111// ExitOnFailure(hr, "BA OnDetectPackageBegin failed.");
1112
1113// if (results.fCancel)
1114// {
1115// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1116// }
1117
1118// LExit:
1119// return hr;
1120// }
1121
1122// EXTERN_C BAAPI UserExperienceOnDetectPackageComplete(
1123// __in BURN_USER_EXPERIENCE* pUserExperience,
1124// __in_z LPCWSTR wzPackageId,
1125// __in HRESULT hrStatus,
1126// __in BOOTSTRAPPER_PACKAGE_STATE state,
1127// __in BOOL fCached
1128// )
1129// {
1130// HRESULT hr = S_OK;
1131// BA_ONDETECTPACKAGECOMPLETE_ARGS args = { };
1132// BA_ONDETECTPACKAGECOMPLETE_RESULTS results = { };
1133// PIPE_RPC_RESULT result = { };
1134
1135// args.cbSize = sizeof(args);
1136// args.wzPackageId = wzPackageId;
1137// args.hrStatus = hrStatus;
1138// args.state = state;
1139// args.fCached = fCached;
1140
1141// results.cbSize = sizeof(results);
1142
1143// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPACKAGECOMPLETE, &args, args.cbSize, &result);
1144// ExitOnFailure(hr, "BA OnDetectPackageComplete failed.");
1145
1146// LExit:
1147// return hr;
1148// }
1149
1150// EXTERN_C BAAPI UserExperienceOnDetectRelatedBundle(
1151// __in BURN_USER_EXPERIENCE* pUserExperience,
1152// __in_z LPCWSTR wzBundleId,
1153// __in BOOTSTRAPPER_RELATION_TYPE relationType,
1154// __in_z LPCWSTR wzBundleTag,
1155// __in BOOL fPerMachine,
1156// __in VERUTIL_VERSION* pVersion,
1157// __in BOOL fMissingFromCache
1158// )
1159// {
1160// HRESULT hr = S_OK;
1161// BA_ONDETECTRELATEDBUNDLE_ARGS args = { };
1162// BA_ONDETECTRELATEDBUNDLE_RESULTS results = { };
1163// PIPE_RPC_RESULT result = { };
1164
1165// args.cbSize = sizeof(args);
1166// args.wzBundleId = wzBundleId;
1167// args.relationType = relationType;
1168// args.wzBundleTag = wzBundleTag;
1169// args.fPerMachine = fPerMachine;
1170// args.wzVersion = pVersion->sczVersion;
1171// args.fMissingFromCache = fMissingFromCache;
1172
1173// results.cbSize = sizeof(results);
1174
1175// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLE, &args, args.cbSize, &result);
1176// ExitOnFailure(hr, "BA OnDetectRelatedBundle failed.");
1177
1178// if (results.fCancel)
1179// {
1180// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1181// }
1182
1183// LExit:
1184// return hr;
1185// }
1186
1187// EXTERN_C BAAPI UserExperienceOnDetectRelatedBundlePackage(
1188// __in BURN_USER_EXPERIENCE* pUserExperience,
1189// __in_z LPCWSTR wzPackageId,
1190// __in_z LPCWSTR wzBundleId,
1191// __in BOOTSTRAPPER_RELATION_TYPE relationType,
1192// __in BOOL fPerMachine,
1193// __in VERUTIL_VERSION* pVersion
1194// )
1195// {
1196// HRESULT hr = S_OK;
1197// BA_ONDETECTRELATEDBUNDLEPACKAGE_ARGS args = { };
1198// BA_ONDETECTRELATEDBUNDLEPACKAGE_RESULTS results = { };
1199// PIPE_RPC_RESULT result = { };
1200
1201// args.cbSize = sizeof(args);
1202// args.wzPackageId = wzPackageId;
1203// args.wzBundleId = wzBundleId;
1204// args.relationType = relationType;
1205// args.fPerMachine = fPerMachine;
1206// args.wzVersion = pVersion->sczVersion;
1207
1208// results.cbSize = sizeof(results);
1209
1210// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDBUNDLEPACKAGE, &args, args.cbSize, &result);
1211// ExitOnFailure(hr, "BA OnDetectRelatedBundlePackage failed.");
1212
1213// if (results.fCancel)
1214// {
1215// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1216// }
1217
1218// LExit:
1219// return hr;
1220// }
1221
1222// EXTERN_C BAAPI UserExperienceOnDetectRelatedMsiPackage(
1223// __in BURN_USER_EXPERIENCE* pUserExperience,
1224// __in_z LPCWSTR wzPackageId,
1225// __in_z LPCWSTR wzUpgradeCode,
1226// __in_z LPCWSTR wzProductCode,
1227// __in BOOL fPerMachine,
1228// __in VERUTIL_VERSION* pVersion,
1229// __in BOOTSTRAPPER_RELATED_OPERATION operation
1230// )
1231// {
1232// HRESULT hr = S_OK;
1233// BA_ONDETECTRELATEDMSIPACKAGE_ARGS args = { };
1234// BA_ONDETECTRELATEDMSIPACKAGE_RESULTS results = { };
1235// PIPE_RPC_RESULT result = { };
1236
1237// args.cbSize = sizeof(args);
1238// args.wzPackageId = wzPackageId;
1239// args.wzUpgradeCode = wzUpgradeCode;
1240// args.wzProductCode = wzProductCode;
1241// args.fPerMachine = fPerMachine;
1242// args.wzVersion = pVersion->sczVersion;
1243// args.operation = operation;
1244
1245// results.cbSize = sizeof(results);
1246
1247// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTRELATEDMSIPACKAGE, &args, args.cbSize, &result);
1248// ExitOnFailure(hr, "BA OnDetectRelatedMsiPackage failed.");
1249
1250// if (results.fCancel)
1251// {
1252// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1253// }
1254
1255// LExit:
1256// return hr;
1257// }
1258
1259// EXTERN_C BAAPI UserExperienceOnDetectPatchTarget(
1260// __in BURN_USER_EXPERIENCE* pUserExperience,
1261// __in_z LPCWSTR wzPackageId,
1262// __in_z LPCWSTR wzProductCode,
1263// __in BOOTSTRAPPER_PACKAGE_STATE patchState
1264// )
1265// {
1266// HRESULT hr = S_OK;
1267// BA_ONDETECTPATCHTARGET_ARGS args = { };
1268// BA_ONDETECTPATCHTARGET_RESULTS results = { };
1269// PIPE_RPC_RESULT result = { };
1270
1271// args.cbSize = sizeof(args);
1272// args.wzPackageId = wzPackageId;
1273// args.wzProductCode = wzProductCode;
1274// args.patchState = patchState;
1275
1276// results.cbSize = sizeof(results);
1277
1278// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTPATCHTARGET, &args, args.cbSize, &result);
1279// ExitOnFailure(hr, "BA OnDetectPatchTarget failed.");
1280
1281// if (results.fCancel)
1282// {
1283// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1284// }
1285
1286// LExit:
1287// return hr;
1288// }
1289
1290// EXTERN_C BAAPI UserExperienceOnDetectUpdate(
1291// __in BURN_USER_EXPERIENCE* pUserExperience,
1292// __in_z_opt LPCWSTR wzUpdateLocation,
1293// __in DWORD64 dw64Size,
1294// __in_z_opt LPCWSTR wzHash,
1295// __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm,
1296// __in VERUTIL_VERSION* pVersion,
1297// __in_z_opt LPCWSTR wzTitle,
1298// __in_z_opt LPCWSTR wzSummary,
1299// __in_z_opt LPCWSTR wzContentType,
1300// __in_z_opt LPCWSTR wzContent,
1301// __inout BOOL* pfStopProcessingUpdates
1302// )
1303// {
1304// HRESULT hr = S_OK;
1305// BA_ONDETECTUPDATE_ARGS args = { };
1306// BA_ONDETECTUPDATE_RESULTS results = { };
1307// PIPE_RPC_RESULT result = { };
1308
1309// args.cbSize = sizeof(args);
1310// args.wzUpdateLocation = wzUpdateLocation;
1311// args.dw64Size = dw64Size;
1312// args.wzHash = wzHash;
1313// args.hashAlgorithm = hashAlgorithm;
1314// args.wzVersion = pVersion->sczVersion;
1315// args.wzTitle = wzTitle;
1316// args.wzSummary = wzSummary;
1317// args.wzContentType = wzContentType;
1318// args.wzContent = wzContent;
1319
1320// results.cbSize = sizeof(results);
1321// results.fStopProcessingUpdates = *pfStopProcessingUpdates;
1322
1323// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATE, &args, args.cbSize, &result);
1324// ExitOnFailure(hr, "BA OnDetectUpdate failed.");
1325
1326// if (results.fCancel)
1327// {
1328// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1329// }
1330
1331// *pfStopProcessingUpdates = results.fStopProcessingUpdates;
1332
1333// LExit:
1334// return hr;
1335// }
1336
1337// EXTERN_C BAAPI UserExperienceOnDetectUpdateBegin(
1338// __in BURN_USER_EXPERIENCE* pUserExperience,
1339// __in_z LPCWSTR wzUpdateLocation,
1340// __inout BOOL* pfSkip
1341// )
1342// {
1343// HRESULT hr = S_OK;
1344// BA_ONDETECTUPDATEBEGIN_ARGS args = { };
1345// BA_ONDETECTUPDATEBEGIN_RESULTS results = { };
1346// PIPE_RPC_RESULT result = { };
1347
1348// args.cbSize = sizeof(args);
1349// args.wzUpdateLocation = wzUpdateLocation;
1350
1351// results.cbSize = sizeof(results);
1352// results.fSkip = *pfSkip;
1353
1354// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATEBEGIN, &args, args.cbSize, &result);
1355// ExitOnFailure(hr, "BA OnDetectUpdateBegin failed.");
1356
1357// if (results.fCancel)
1358// {
1359// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1360// }
1361// *pfSkip = results.fSkip;
1362
1363// LExit:
1364// return hr;
1365// }
1366
1367// EXTERN_C BAAPI UserExperienceOnDetectUpdateComplete(
1368// __in BURN_USER_EXPERIENCE* pUserExperience,
1369// __in HRESULT hrStatus,
1370// __inout BOOL* pfIgnoreError
1371// )
1372// {
1373// HRESULT hr = S_OK;
1374// BA_ONDETECTUPDATECOMPLETE_ARGS args = { };
1375// BA_ONDETECTUPDATECOMPLETE_RESULTS results = { };
1376// PIPE_RPC_RESULT result = { };
1377
1378// args.cbSize = sizeof(args);
1379// args.hrStatus = hrStatus;
1380
1381// results.cbSize = sizeof(results);
1382// results.fIgnoreError = *pfIgnoreError;
1383
1384// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTUPDATECOMPLETE, &args, args.cbSize, &result);
1385// ExitOnFailure(hr, "BA OnDetectUpdateComplete failed.");
1386
1387// if (FAILED(hrStatus))
1388// {
1389// *pfIgnoreError = results.fIgnoreError;
1390// }
1391
1392// LExit:
1393// return hr;
1394// }
1395
1396// EXTERN_C BAAPI UserExperienceOnElevateBegin(
1397// __in BURN_USER_EXPERIENCE* pUserExperience
1398// )
1399// {
1400// HRESULT hr = S_OK;
1401// BA_ONELEVATEBEGIN_ARGS args = { };
1402// BA_ONELEVATEBEGIN_RESULTS results = { };
1403// PIPE_RPC_RESULT result = { };
1404
1405// args.cbSize = sizeof(args);
1406
1407// results.cbSize = sizeof(results);
1408
1409// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATEBEGIN, &args, args.cbSize, &result);
1410// ExitOnFailure(hr, "BA OnElevateBegin failed.");
1411
1412// if (results.fCancel)
1413// {
1414// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1415// }
1416
1417// LExit:
1418// return hr;
1419// }
1420
1421// EXTERN_C BAAPI UserExperienceOnElevateComplete(
1422// __in BURN_USER_EXPERIENCE* pUserExperience,
1423// __in HRESULT hrStatus
1424// )
1425// {
1426// HRESULT hr = S_OK;
1427// BA_ONELEVATECOMPLETE_ARGS args = { };
1428// BA_ONELEVATECOMPLETE_RESULTS results = { };
1429// PIPE_RPC_RESULT result = { };
1430
1431// args.cbSize = sizeof(args);
1432// args.hrStatus = hrStatus;
1433
1434// results.cbSize = sizeof(results);
1435
1436// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONELEVATECOMPLETE, &args, args.cbSize, &result);
1437// ExitOnFailure(hr, "BA OnElevateComplete failed.");
1438
1439// LExit:
1440// return hr;
1441// }
1442
1443// EXTERN_C BAAPI UserExperienceOnError(
1444// __in BURN_USER_EXPERIENCE* pUserExperience,
1445// __in BOOTSTRAPPER_ERROR_TYPE errorType,
1446// __in_z_opt LPCWSTR wzPackageId,
1447// __in DWORD dwCode,
1448// __in_z_opt LPCWSTR wzError,
1449// __in DWORD dwUIHint,
1450// __in DWORD cData,
1451// __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
1452// __inout int* pnResult
1453// )
1454// {
1455// HRESULT hr = S_OK;
1456// BA_ONERROR_ARGS args = { };
1457// BA_ONERROR_RESULTS results = { };
1458// PIPE_RPC_RESULT result = { };
1459
1460// args.cbSize = sizeof(args);
1461// args.errorType = errorType;
1462// args.wzPackageId = wzPackageId;
1463// args.dwCode = dwCode;
1464// args.wzError = wzError;
1465// args.dwUIHint = dwUIHint;
1466// args.cData = cData;
1467// args.rgwzData = rgwzData;
1468// args.nRecommendation = *pnResult;
1469
1470// results.cbSize = sizeof(results);
1471// results.nResult = *pnResult;
1472
1473// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONERROR, &args, args.cbSize, &result);
1474// ExitOnFailure(hr, "BA OnError failed.");
1475
1476// *pnResult = results.nResult;
1477
1478// LExit:
1479// return hr;
1480// }
1481
1482// EXTERN_C BAAPI UserExperienceOnExecuteBegin(
1483// __in BURN_USER_EXPERIENCE* pUserExperience,
1484// __in DWORD cExecutingPackages
1485// )
1486// {
1487// HRESULT hr = S_OK;
1488// BA_ONEXECUTEBEGIN_ARGS args = { };
1489// BA_ONEXECUTEBEGIN_RESULTS results = { };
1490// PIPE_RPC_RESULT result = { };
1491
1492// args.cbSize = sizeof(args);
1493// args.cExecutingPackages = cExecutingPackages;
1494
1495// results.cbSize = sizeof(results);
1496
1497// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEBEGIN, &args, args.cbSize, &result);
1498// ExitOnFailure(hr, "BA OnExecuteBegin failed.");
1499
1500// if (results.fCancel)
1501// {
1502// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1503// }
1504
1505// LExit:
1506// return hr;
1507// }
1508
1509// EXTERN_C BAAPI UserExperienceOnExecuteComplete(
1510// __in BURN_USER_EXPERIENCE* pUserExperience,
1511// __in HRESULT hrStatus
1512// )
1513// {
1514// HRESULT hr = S_OK;
1515// BA_ONEXECUTECOMPLETE_ARGS args = { };
1516// BA_ONEXECUTECOMPLETE_RESULTS results = { };
1517// PIPE_RPC_RESULT result = { };
1518
1519// args.cbSize = sizeof(args);
1520// args.hrStatus = hrStatus;
1521
1522// results.cbSize = sizeof(results);
1523
1524// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTECOMPLETE, &args, args.cbSize, &result);
1525// ExitOnFailure(hr, "BA OnExecuteComplete failed.");
1526
1527// LExit:
1528// return hr;
1529// }
1530
1531// EXTERN_C BAAPI UserExperienceOnExecuteFilesInUse(
1532// __in BURN_USER_EXPERIENCE* pUserExperience,
1533// __in_z LPCWSTR wzPackageId,
1534// __in DWORD cFiles,
1535// __in_ecount_z_opt(cFiles) LPCWSTR* rgwzFiles,
1536// __in BOOTSTRAPPER_FILES_IN_USE_TYPE source,
1537// __inout int* pnResult
1538// )
1539// {
1540// HRESULT hr = S_OK;
1541// BA_ONEXECUTEFILESINUSE_ARGS args = { };
1542// BA_ONEXECUTEFILESINUSE_RESULTS results = { };
1543// PIPE_RPC_RESULT result = { };
1544
1545// args.cbSize = sizeof(args);
1546// args.wzPackageId = wzPackageId;
1547// args.cFiles = cFiles;
1548// args.rgwzFiles = rgwzFiles;
1549// args.nRecommendation = *pnResult;
1550// args.source = source;
1551
1552// results.cbSize = sizeof(results);
1553// results.nResult = *pnResult;
1554
1555// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEFILESINUSE, &args, args.cbSize, &result);
1556// ExitOnFailure(hr, "BA OnExecuteFilesInUse failed.");
1557
1558// *pnResult = results.nResult;
1559
1560// LExit:
1561// return hr;
1562// }
1563
1564// EXTERN_C BAAPI UserExperienceOnExecuteMsiMessage(
1565// __in BURN_USER_EXPERIENCE* pUserExperience,
1566// __in_z LPCWSTR wzPackageId,
1567// __in INSTALLMESSAGE messageType,
1568// __in DWORD dwUIHint,
1569// __in_z LPCWSTR wzMessage,
1570// __in DWORD cData,
1571// __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
1572// __inout int* pnResult
1573// )
1574// {
1575// HRESULT hr = S_OK;
1576// BA_ONEXECUTEMSIMESSAGE_ARGS args = { };
1577// BA_ONEXECUTEMSIMESSAGE_RESULTS results = { };
1578// PIPE_RPC_RESULT result = { };
1579
1580// args.cbSize = sizeof(args);
1581// args.wzPackageId = wzPackageId;
1582// args.messageType = messageType;
1583// args.dwUIHint = dwUIHint;
1584// args.wzMessage = wzMessage;
1585// args.cData = cData;
1586// args.rgwzData = rgwzData;
1587// args.nRecommendation = *pnResult;
1588
1589// results.cbSize = sizeof(results);
1590// results.nResult = *pnResult;
1591
1592// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEMSIMESSAGE, &args, args.cbSize, &result);
1593// ExitOnFailure(hr, "BA OnExecuteMsiMessage failed.");
1594
1595// *pnResult = results.nResult;
1596
1597// LExit:
1598// return hr;
1599// }
1600
1601// EXTERN_C BAAPI UserExperienceOnExecutePackageBegin(
1602// __in BURN_USER_EXPERIENCE* pUserExperience,
1603// __in_z LPCWSTR wzPackageId,
1604// __in BOOL fExecute,
1605// __in BOOTSTRAPPER_ACTION_STATE action,
1606// __in INSTALLUILEVEL uiLevel,
1607// __in BOOL fDisableExternalUiHandler
1608// )
1609// {
1610// HRESULT hr = S_OK;
1611// BA_ONEXECUTEPACKAGEBEGIN_ARGS args = { };
1612// BA_ONEXECUTEPACKAGEBEGIN_RESULTS results = { };
1613// PIPE_RPC_RESULT result = { };
1614
1615// args.cbSize = sizeof(args);
1616// args.wzPackageId = wzPackageId;
1617// args.fExecute = fExecute;
1618// args.action = action;
1619// args.uiLevel = uiLevel;
1620// args.fDisableExternalUiHandler = fDisableExternalUiHandler;
1621
1622// results.cbSize = sizeof(results);
1623
1624// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGEBEGIN, &args, args.cbSize, &result);
1625// ExitOnFailure(hr, "BA OnExecutePackageBegin failed.");
1626
1627// if (results.fCancel)
1628// {
1629// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1630// }
1631
1632// LExit:
1633// return hr;
1634// }
1635
1636// EXTERN_C BAAPI UserExperienceOnExecutePackageComplete(
1637// __in BURN_USER_EXPERIENCE* pUserExperience,
1638// __in_z LPCWSTR wzPackageId,
1639// __in HRESULT hrStatus,
1640// __in BOOTSTRAPPER_APPLY_RESTART restart,
1641// __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction
1642// )
1643// {
1644// HRESULT hr = S_OK;
1645// BA_ONEXECUTEPACKAGECOMPLETE_ARGS args = { };
1646// BA_ONEXECUTEPACKAGECOMPLETE_RESULTS results = { };
1647// PIPE_RPC_RESULT result = { };
1648
1649// args.cbSize = sizeof(args);
1650// args.wzPackageId = wzPackageId;
1651// args.hrStatus = hrStatus;
1652// args.restart = restart;
1653// args.recommendation = *pAction;
1654
1655// results.cbSize = sizeof(results);
1656// results.action = *pAction;
1657
1658// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPACKAGECOMPLETE, &args, args.cbSize, &result);
1659// ExitOnFailure(hr, "BA OnExecutePackageComplete failed.");
1660
1661// *pAction = results.action;
1662
1663// LExit:
1664// return hr;
1665// }
1666
1667// EXTERN_C BAAPI UserExperienceOnExecutePatchTarget(
1668// __in BURN_USER_EXPERIENCE* pUserExperience,
1669// __in_z LPCWSTR wzPackageId,
1670// __in_z LPCWSTR wzTargetProductCode
1671// )
1672// {
1673// HRESULT hr = S_OK;
1674// BA_ONEXECUTEPATCHTARGET_ARGS args = { };
1675// BA_ONEXECUTEPATCHTARGET_RESULTS results = { };
1676// PIPE_RPC_RESULT result = { };
1677
1678// args.cbSize = sizeof(args);
1679// args.wzPackageId = wzPackageId;
1680// args.wzTargetProductCode = wzTargetProductCode;
1681
1682// results.cbSize = sizeof(results);
1683
1684// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPATCHTARGET, &args, args.cbSize, &result);
1685// ExitOnFailure(hr, "BA OnExecutePatchTarget failed.");
1686
1687// if (results.fCancel)
1688// {
1689// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1690// }
1691
1692// LExit:
1693// return hr;
1694// }
1695
1696// BAAPI UserExperienceOnExecuteProcessCancel(
1697// __in BURN_USER_EXPERIENCE* pUserExperience,
1698// __in_z LPCWSTR wzPackageId,
1699// __in DWORD dwProcessId,
1700// __inout BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION* pAction
1701// )
1702// {
1703// HRESULT hr = S_OK;
1704// BA_ONEXECUTEPROCESSCANCEL_ARGS args = { };
1705// BA_ONEXECUTEPROCESSCANCEL_RESULTS results = { };
1706// PIPE_RPC_RESULT result = { };
1707
1708// args.cbSize = sizeof(args);
1709// args.wzPackageId = wzPackageId;
1710// args.dwProcessId = dwProcessId;
1711// args.recommendation = *pAction;
1712
1713// results.cbSize = sizeof(results);
1714// results.action = *pAction;
1715
1716// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROCESSCANCEL, &args, args.cbSize, &result);
1717// ExitOnFailure(hr, "BA OnExecuteProcessCancel failed.");
1718
1719// *pAction = results.action;
1720
1721// LExit:
1722// return hr;
1723// }
1724
1725// EXTERN_C BAAPI UserExperienceOnExecuteProgress(
1726// __in BURN_USER_EXPERIENCE* pUserExperience,
1727// __in_z LPCWSTR wzPackageId,
1728// __in DWORD dwProgressPercentage,
1729// __in DWORD dwOverallPercentage,
1730// __out int* pnResult
1731// )
1732// {
1733// HRESULT hr = S_OK;
1734// BA_ONEXECUTEPROGRESS_ARGS args = { };
1735// BA_ONEXECUTEPROGRESS_RESULTS results = { };
1736// PIPE_RPC_RESULT result = { };
1737
1738// args.cbSize = sizeof(args);
1739// args.wzPackageId = wzPackageId;
1740// args.dwProgressPercentage = dwProgressPercentage;
1741// args.dwOverallPercentage = dwOverallPercentage;
1742
1743// results.cbSize = sizeof(results);
1744
1745// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONEXECUTEPROGRESS, &args, args.cbSize, &result);
1746// ExitOnFailure(hr, "BA OnExecuteProgress failed.");
1747
1748// LExit:
1749// if (FAILED(hr))
1750// {
1751// *pnResult = IDERROR;
1752// }
1753// else if (results.fCancel)
1754// {
1755// *pnResult = IDCANCEL;
1756// }
1757// else
1758// {
1759// *pnResult = IDNOACTION;
1760// }
1761// return hr;
1762// }
1763
1764// EXTERN_C BAAPI UserExperienceOnLaunchApprovedExeBegin(
1765// __in BURN_USER_EXPERIENCE* pUserExperience
1766// )
1767// {
1768// HRESULT hr = S_OK;
1769// BA_ONLAUNCHAPPROVEDEXEBEGIN_ARGS args = { };
1770// BA_ONLAUNCHAPPROVEDEXEBEGIN_RESULTS results = { };
1771// PIPE_RPC_RESULT result = { };
1772
1773// args.cbSize = sizeof(args);
1774
1775// results.cbSize = sizeof(results);
1776
1777// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXEBEGIN, &args, args.cbSize, &result);
1778// ExitOnFailure(hr, "BA OnLaunchApprovedExeBegin failed.");
1779
1780// if (results.fCancel)
1781// {
1782// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1783// }
1784
1785// LExit:
1786// return hr;
1787// }
1788
1789// EXTERN_C BAAPI UserExperienceOnLaunchApprovedExeComplete(
1790// __in BURN_USER_EXPERIENCE* pUserExperience,
1791// __in HRESULT hrStatus,
1792// __in DWORD dwProcessId
1793// )
1794// {
1795// HRESULT hr = S_OK;
1796// BA_ONLAUNCHAPPROVEDEXECOMPLETE_ARGS args = { };
1797// BA_ONLAUNCHAPPROVEDEXECOMPLETE_RESULTS results = { };
1798// PIPE_RPC_RESULT result = { };
1799
1800// args.cbSize = sizeof(args);
1801// args.hrStatus = hrStatus;
1802// args.dwProcessId = dwProcessId;
1803
1804// results.cbSize = sizeof(results);
1805
1806// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONLAUNCHAPPROVEDEXECOMPLETE, &args, args.cbSize, &result);
1807// ExitOnFailure(hr, "BA OnLaunchApprovedExeComplete failed.");
1808
1809// LExit:
1810// return hr;
1811// }
1812
1813// EXTERN_C BAAPI UserExperienceOnPauseAUBegin(
1814// __in BURN_USER_EXPERIENCE* pUserExperience
1815// )
1816// {
1817// HRESULT hr = S_OK;
1818// BA_ONPAUSEAUTOMATICUPDATESBEGIN_ARGS args = { };
1819// BA_ONPAUSEAUTOMATICUPDATESBEGIN_RESULTS results = { };
1820// PIPE_RPC_RESULT result = { };
1821
1822// args.cbSize = sizeof(args);
1823
1824// results.cbSize = sizeof(results);
1825
1826// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, &args, args.cbSize, &result);
1827// ExitOnFailure(hr, "BA OnPauseAUBegin failed.");
1828
1829// LExit:
1830// return hr;
1831// }
1832
1833// EXTERN_C BAAPI UserExperienceOnPauseAUComplete(
1834// __in BURN_USER_EXPERIENCE* pUserExperience,
1835// __in HRESULT hrStatus
1836// )
1837// {
1838// HRESULT hr = S_OK;
1839// BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_ARGS args = { };
1840// BA_ONPAUSEAUTOMATICUPDATESCOMPLETE_RESULTS results = { };
1841// PIPE_RPC_RESULT result = { };
1842
1843// args.cbSize = sizeof(args);
1844// args.hrStatus = hrStatus;
1845
1846// results.cbSize = sizeof(results);
1847
1848// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESCOMPLETE, &args, args.cbSize, &result);
1849// ExitOnFailure(hr, "BA OnPauseAUComplete failed.");
1850
1851// LExit:
1852// return hr;
1853// }
1854
1855// EXTERN_C BAAPI UserExperienceOnPlanBegin(
1856// __in BURN_USER_EXPERIENCE* pUserExperience,
1857// __in DWORD cPackages
1858// )
1859// {
1860// HRESULT hr = S_OK;
1861// BA_ONPLANBEGIN_ARGS args = { };
1862// BA_ONPLANBEGIN_RESULTS results = { };
1863// PIPE_RPC_RESULT result = { };
1864
1865// args.cbSize = sizeof(args);
1866// args.cPackages = cPackages;
1867
1868// results.cbSize = sizeof(results);
1869
1870// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANBEGIN, &args, args.cbSize, &result);
1871// ExitOnFailure(hr, "BA OnPlanBegin failed.");
1872
1873// if (results.fCancel)
1874// {
1875// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1876// }
1877
1878// LExit:
1879// return hr;
1880// }
1881
1882// EXTERN_C BAAPI UserExperienceOnPlanCompatibleMsiPackageBegin(
1883// __in BURN_USER_EXPERIENCE* pUserExperience,
1884// __in_z LPCWSTR wzPackageId,
1885// __in_z LPCWSTR wzCompatiblePackageId,
1886// __in VERUTIL_VERSION* pCompatiblePackageVersion,
1887// __inout BOOL* pfRequested
1888// )
1889// {
1890// HRESULT hr = S_OK;
1891// BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS args = { };
1892// BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS results = { };
1893// PIPE_RPC_RESULT result = { };
1894
1895// args.cbSize = sizeof(args);
1896// args.wzPackageId = wzPackageId;
1897// args.wzCompatiblePackageId = wzCompatiblePackageId;
1898// args.wzCompatiblePackageVersion = pCompatiblePackageVersion->sczVersion;
1899// args.fRecommendedRemove = *pfRequested;
1900
1901// results.cbSize = sizeof(results);
1902// results.fRequestRemove = *pfRequested;
1903
1904// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, &args, args.cbSize, &result);
1905// ExitOnFailure(hr, "BA OnPlanCompatibleMsiPackageBegin failed.");
1906
1907// if (results.fCancel)
1908// {
1909// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1910// }
1911// *pfRequested = results.fRequestRemove;
1912
1913// LExit:
1914// return hr;
1915// }
1916
1917// EXTERN_C BAAPI UserExperienceOnPlanCompatibleMsiPackageComplete(
1918// __in BURN_USER_EXPERIENCE* pUserExperience,
1919// __in_z LPCWSTR wzPackageId,
1920// __in_z LPCWSTR wzCompatiblePackageId,
1921// __in HRESULT hrStatus,
1922// __in BOOL fRequested
1923// )
1924// {
1925// HRESULT hr = S_OK;
1926// BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS args = { };
1927// BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS results = { };
1928// PIPE_RPC_RESULT result = { };
1929
1930// args.cbSize = sizeof(args);
1931// args.wzPackageId = wzPackageId;
1932// args.wzCompatiblePackageId = wzCompatiblePackageId;
1933// args.hrStatus = hrStatus;
1934// args.fRequestedRemove = fRequested;
1935
1936// results.cbSize = sizeof(results);
1937
1938// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, &args, args.cbSize, &result);
1939// ExitOnFailure(hr, "BA OnPlanCompatibleMsiPackageComplete failed.");
1940
1941// LExit:
1942// return hr;
1943// }
1944
1945// EXTERN_C BAAPI UserExperienceOnPlanMsiFeature(
1946// __in BURN_USER_EXPERIENCE* pUserExperience,
1947// __in_z LPCWSTR wzPackageId,
1948// __in_z LPCWSTR wzFeatureId,
1949// __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState
1950// )
1951// {
1952// HRESULT hr = S_OK;
1953// BA_ONPLANMSIFEATURE_ARGS args = { };
1954// BA_ONPLANMSIFEATURE_RESULTS results = { };
1955// PIPE_RPC_RESULT result = { };
1956
1957// args.cbSize = sizeof(args);
1958// args.wzPackageId = wzPackageId;
1959// args.wzFeatureId = wzFeatureId;
1960// args.recommendedState = *pRequestedState;
1961
1962// results.cbSize = sizeof(results);
1963// results.requestedState = *pRequestedState;
1964
1965// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIFEATURE, &args, args.cbSize, &result);
1966// ExitOnFailure(hr, "BA OnPlanMsiFeature failed.");
1967
1968// if (results.fCancel)
1969// {
1970// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1971// }
1972// *pRequestedState = results.requestedState;
1973
1974// LExit:
1975// return hr;
1976// }
1977
1978// EXTERN_C BAAPI UserExperienceOnPlanComplete(
1979// __in BURN_USER_EXPERIENCE* pUserExperience,
1980// __in HRESULT hrStatus
1981// )
1982// {
1983// HRESULT hr = S_OK;
1984// BA_ONPLANCOMPLETE_ARGS args = { };
1985// BA_ONPLANCOMPLETE_RESULTS results = { };
1986// PIPE_RPC_RESULT result = { };
1987
1988// args.cbSize = sizeof(args);
1989// args.hrStatus = hrStatus;
1990
1991// results.cbSize = sizeof(results);
1992
1993// hr = SendBAMessageFromInactiveEngine(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPLETE, &args, args.cbSize, &result);
1994// ExitOnFailure(hr, "BA OnPlanComplete failed.");
1995
1996// LExit:
1997// return hr;
1998// }
1999
2000// EXTERN_C BAAPI UserExperienceOnPlanForwardCompatibleBundle(
2001// __in BURN_USER_EXPERIENCE* pUserExperience,
2002// __in_z LPCWSTR wzBundleId,
2003// __in BOOTSTRAPPER_RELATION_TYPE relationType,
2004// __in_z LPCWSTR wzBundleTag,
2005// __in BOOL fPerMachine,
2006// __in VERUTIL_VERSION* pVersion,
2007// __inout BOOL* pfIgnoreBundle
2008// )
2009// {
2010// HRESULT hr = S_OK;
2011// BA_ONPLANFORWARDCOMPATIBLEBUNDLE_ARGS args = { };
2012// BA_ONPLANFORWARDCOMPATIBLEBUNDLE_RESULTS results = { };
2013// PIPE_RPC_RESULT result = { };
2014
2015// args.cbSize = sizeof(args);
2016// args.wzBundleId = wzBundleId;
2017// args.relationType = relationType;
2018// args.wzBundleTag = wzBundleTag;
2019// args.fPerMachine = fPerMachine;
2020// args.wzVersion = pVersion->sczVersion;
2021// args.fRecommendedIgnoreBundle = *pfIgnoreBundle;
2022
2023// results.cbSize = sizeof(results);
2024// results.fIgnoreBundle = *pfIgnoreBundle;
2025
2026// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE, &args, args.cbSize, &result);
2027// ExitOnFailure(hr, "BA OnPlanForwardCompatibleBundle failed.");
2028
2029// if (results.fCancel)
2030// {
2031// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2032// }
2033// *pfIgnoreBundle = results.fIgnoreBundle;
2034
2035// LExit:
2036// return hr;
2037// }
2038
2039// EXTERN_C BAAPI UserExperienceOnPlanMsiPackage(
2040// __in BURN_USER_EXPERIENCE* pUserExperience,
2041// __in_z LPCWSTR wzPackageId,
2042// __in BOOL fExecute,
2043// __in BOOTSTRAPPER_ACTION_STATE action,
2044// __inout BURN_MSI_PROPERTY* pActionMsiProperty,
2045// __inout INSTALLUILEVEL* pUiLevel,
2046// __inout BOOL* pfDisableExternalUiHandler,
2047// __inout BOOTSTRAPPER_MSI_FILE_VERSIONING* pFileVersioning
2048// )
2049// {
2050// HRESULT hr = S_OK;
2051// BA_ONPLANMSIPACKAGE_ARGS args = { };
2052// BA_ONPLANMSIPACKAGE_RESULTS results = { };
2053// PIPE_RPC_RESULT result = { };
2054
2055// args.cbSize = sizeof(args);
2056// args.wzPackageId = wzPackageId;
2057// args.fExecute = fExecute;
2058// args.action = action;
2059// args.recommendedFileVersioning = *pFileVersioning;
2060
2061// results.cbSize = sizeof(results);
2062// results.actionMsiProperty = *pActionMsiProperty;
2063// results.uiLevel = *pUiLevel;
2064// results.fDisableExternalUiHandler = *pfDisableExternalUiHandler;
2065// results.fileVersioning = args.recommendedFileVersioning;
2066
2067// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, &args, args.cbSize, &result);
2068// ExitOnFailure(hr, "BA OnPlanMsiPackage failed.");
2069
2070// if (results.fCancel)
2071// {
2072// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2073// }
2074// *pActionMsiProperty = results.actionMsiProperty;
2075// *pUiLevel = results.uiLevel;
2076// *pfDisableExternalUiHandler = results.fDisableExternalUiHandler;
2077// *pFileVersioning = results.fileVersioning;
2078
2079// LExit:
2080// return hr;
2081// }
2082
2083// EXTERN_C BAAPI UserExperienceOnPlannedCompatiblePackage(
2084// __in BURN_USER_EXPERIENCE* pUserExperience,
2085// __in_z LPCWSTR wzPackageId,
2086// __in_z LPCWSTR wzCompatiblePackageId,
2087// __in BOOL fRemove
2088// )
2089// {
2090// HRESULT hr = S_OK;
2091// BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS args = { };
2092// BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS results = { };
2093// PIPE_RPC_RESULT result = { };
2094
2095// args.cbSize = sizeof(args);
2096// args.wzPackageId = wzPackageId;
2097// args.wzCompatiblePackageId = wzCompatiblePackageId;
2098// args.fRemove = fRemove;
2099
2100// results.cbSize = sizeof(results);
2101
2102// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, &args, args.cbSize, &result);
2103// ExitOnFailure(hr, "BA OnPlannedCompatiblePackage failed.");
2104
2105// LExit:
2106// return hr;
2107// }
2108
2109// EXTERN_C BAAPI UserExperienceOnPlannedPackage(
2110// __in BURN_USER_EXPERIENCE* pUserExperience,
2111// __in_z LPCWSTR wzPackageId,
2112// __in BOOTSTRAPPER_ACTION_STATE execute,
2113// __in BOOTSTRAPPER_ACTION_STATE rollback,
2114// __in BOOL fPlannedCache,
2115// __in BOOL fPlannedUncache
2116// )
2117// {
2118// HRESULT hr = S_OK;
2119// BA_ONPLANNEDPACKAGE_ARGS args = { };
2120// BA_ONPLANNEDPACKAGE_RESULTS results = { };
2121// PIPE_RPC_RESULT result = { };
2122
2123// args.cbSize = sizeof(args);
2124// args.wzPackageId = wzPackageId;
2125// args.execute = execute;
2126// args.rollback = rollback;
2127// args.fPlannedCache = fPlannedCache;
2128// args.fPlannedUncache = fPlannedUncache;
2129
2130// results.cbSize = sizeof(results);
2131
2132// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, &args, args.cbSize, &result);
2133// ExitOnFailure(hr, "BA OnPlannedPackage failed.");
2134
2135// LExit:
2136// return hr;
2137// }
2138
2139// EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
2140// __in BURN_USER_EXPERIENCE* pUserExperience,
2141// __in_z LPCWSTR wzPackageId,
2142// __in BOOTSTRAPPER_PACKAGE_STATE state,
2143// __in BOOL fCached,
2144// __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition,
2145// __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT repairCondition,
2146// __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
2147// __inout BOOTSTRAPPER_CACHE_TYPE* pRequestedCacheType
2148// )
2149// {
2150// HRESULT hr = S_OK;
2151// BA_ONPLANPACKAGEBEGIN_ARGS args = { };
2152// BA_ONPLANPACKAGEBEGIN_RESULTS results = { };
2153// PIPE_RPC_RESULT result = { };
2154
2155// args.cbSize = sizeof(args);
2156// args.wzPackageId = wzPackageId;
2157// args.state = state;
2158// args.fCached = fCached;
2159// args.installCondition = installCondition;
2160// args.repairCondition = repairCondition;
2161// args.recommendedState = *pRequestedState;
2162// args.recommendedCacheType = *pRequestedCacheType;
2163
2164// results.cbSize = sizeof(results);
2165// results.requestedState = *pRequestedState;
2166// results.requestedCacheType = *pRequestedCacheType;
2167
2168// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGEBEGIN, &args, args.cbSize, &result);
2169// ExitOnFailure(hr, "BA OnPlanPackageBegin failed.");
2170
2171// if (results.fCancel)
2172// {
2173// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2174// }
2175// *pRequestedState = results.requestedState;
2176
2177// if (BOOTSTRAPPER_CACHE_TYPE_REMOVE <= results.requestedCacheType && BOOTSTRAPPER_CACHE_TYPE_FORCE >= results.requestedCacheType)
2178// {
2179// *pRequestedCacheType = results.requestedCacheType;
2180// }
2181
2182// LExit:
2183// return hr;
2184// }
2185
2186// EXTERN_C BAAPI UserExperienceOnPlanPackageComplete(
2187// __in BURN_USER_EXPERIENCE* pUserExperience,
2188// __in_z LPCWSTR wzPackageId,
2189// __in HRESULT hrStatus,
2190// __in BOOTSTRAPPER_REQUEST_STATE requested
2191// )
2192// {
2193// HRESULT hr = S_OK;
2194// BA_ONPLANPACKAGECOMPLETE_ARGS args = { };
2195// BA_ONPLANPACKAGECOMPLETE_RESULTS results = { };
2196// PIPE_RPC_RESULT result = { };
2197
2198// args.cbSize = sizeof(args);
2199// args.wzPackageId = wzPackageId;
2200// args.hrStatus = hrStatus;
2201// args.requested = requested;
2202
2203// results.cbSize = sizeof(results);
2204
2205// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPACKAGECOMPLETE, &args, args.cbSize, &result);
2206// ExitOnFailure(hr, "BA OnPlanPackageComplete failed.");
2207
2208// LExit:
2209// return hr;
2210// }
2211
2212// EXTERN_C BAAPI UserExperienceOnPlanRelatedBundle(
2213// __in BURN_USER_EXPERIENCE* pUserExperience,
2214// __in_z LPCWSTR wzBundleId,
2215// __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
2216// )
2217// {
2218// HRESULT hr = S_OK;
2219// BA_ONPLANRELATEDBUNDLE_ARGS args = { };
2220// BA_ONPLANRELATEDBUNDLE_RESULTS results = { };
2221// PIPE_RPC_RESULT result = { };
2222
2223// args.cbSize = sizeof(args);
2224// args.wzBundleId = wzBundleId;
2225// args.recommendedState = *pRequestedState;
2226
2227// results.cbSize = sizeof(results);
2228// results.requestedState = *pRequestedState;
2229
2230// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLE, &args, args.cbSize, &result);
2231// ExitOnFailure(hr, "BA OnPlanRelatedBundle failed.");
2232
2233// if (results.fCancel)
2234// {
2235// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2236// }
2237// *pRequestedState = results.requestedState;
2238
2239// LExit:
2240// return hr;
2241// }
2242
2243// EXTERN_C BAAPI UserExperienceOnPlanRelatedBundleType(
2244// __in BURN_USER_EXPERIENCE* pUserExperience,
2245// __in_z LPCWSTR wzBundleId,
2246// __inout BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE* pRequestedType
2247// )
2248// {
2249// HRESULT hr = S_OK;
2250// BA_ONPLANRELATEDBUNDLETYPE_ARGS args = { };
2251// BA_ONPLANRELATEDBUNDLETYPE_RESULTS results = { };
2252// PIPE_RPC_RESULT result = { };
2253
2254// args.cbSize = sizeof(args);
2255// args.wzBundleId = wzBundleId;
2256// args.recommendedType = *pRequestedType;
2257
2258// results.cbSize = sizeof(results);
2259// results.requestedType = *pRequestedType;
2260
2261// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRELATEDBUNDLETYPE, &args, args.cbSize, &result);
2262// ExitOnFailure(hr, "BA OnPlanRelatedBundleType failed.");
2263
2264// if (results.fCancel)
2265// {
2266// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2267// }
2268// *pRequestedType = results.requestedType;
2269
2270// LExit:
2271// return hr;
2272// }
2273
2274// EXTERN_C BAAPI UserExperienceOnPlanRestoreRelatedBundle(
2275// __in BURN_USER_EXPERIENCE* pUserExperience,
2276// __in_z LPCWSTR wzBundleId,
2277// __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
2278// )
2279// {
2280// HRESULT hr = S_OK;
2281// BA_ONPLANRESTORERELATEDBUNDLE_ARGS args = { };
2282// BA_ONPLANRESTORERELATEDBUNDLE_RESULTS results = { };
2283// PIPE_RPC_RESULT result = { };
2284
2285// args.cbSize = sizeof(args);
2286// args.wzBundleId = wzBundleId;
2287// args.recommendedState = *pRequestedState;
2288
2289// results.cbSize = sizeof(results);
2290// results.requestedState = *pRequestedState;
2291
2292// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANRESTORERELATEDBUNDLE, &args, args.cbSize, &result);
2293// ExitOnFailure(hr, "BA OnPlanRestoreRelatedBundle failed.");
2294
2295// if (results.fCancel)
2296// {
2297// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2298// }
2299// *pRequestedState = results.requestedState;
2300
2301// LExit:
2302// return hr;
2303// }
2304
2305// EXTERN_C BAAPI UserExperienceOnPlanRollbackBoundary(
2306// __in BURN_USER_EXPERIENCE* pUserExperience,
2307// __in_z LPCWSTR wzRollbackBoundaryId,
2308// __inout BOOL* pfTransaction
2309// )
2310// {
2311// HRESULT hr = S_OK;
2312// BA_ONPLANROLLBACKBOUNDARY_ARGS args = { };
2313// BA_ONPLANROLLBACKBOUNDARY_RESULTS results = { };
2314// PIPE_RPC_RESULT result = { };
2315
2316// args.cbSize = sizeof(args);
2317// args.wzRollbackBoundaryId = wzRollbackBoundaryId;
2318// args.fRecommendedTransaction = *pfTransaction;
2319
2320// results.cbSize = sizeof(results);
2321// results.fTransaction = *pfTransaction;
2322
2323// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, &args, args.cbSize, &result);
2324// ExitOnFailure(hr, "BA OnPlanRollbackBoundary failed.");
2325
2326// if (results.fCancel)
2327// {
2328// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2329// }
2330// *pfTransaction = results.fTransaction;
2331
2332// LExit:
2333// return hr;
2334// }
2335
2336// EXTERN_C BAAPI UserExperienceOnPlanPatchTarget(
2337// __in BURN_USER_EXPERIENCE* pUserExperience,
2338// __in_z LPCWSTR wzPackageId,
2339// __in_z LPCWSTR wzProductCode,
2340// __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
2341// )
2342// {
2343// HRESULT hr = S_OK;
2344// BA_ONPLANPATCHTARGET_ARGS args = { };
2345// BA_ONPLANPATCHTARGET_RESULTS results = { };
2346// PIPE_RPC_RESULT result = { };
2347
2348// args.cbSize = sizeof(args);
2349// args.wzPackageId = wzPackageId;
2350// args.wzProductCode = wzProductCode;
2351// args.recommendedState = *pRequestedState;
2352
2353// results.cbSize = sizeof(results);
2354// results.requestedState = *pRequestedState;
2355
2356// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANPATCHTARGET, &args, args.cbSize, &result);
2357// ExitOnFailure(hr, "BA OnPlanPatchTarget failed.");
2358
2359// if (results.fCancel)
2360// {
2361// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2362// }
2363// *pRequestedState = results.requestedState;
2364
2365// LExit:
2366// return hr;
2367// }
2368
2369// EXTERN_C BAAPI UserExperienceOnProgress(
2370// __in BURN_USER_EXPERIENCE* pUserExperience,
2371// __in BOOL fRollback,
2372// __in DWORD dwProgressPercentage,
2373// __in DWORD dwOverallPercentage
2374// )
2375// {
2376// HRESULT hr = S_OK;
2377// BA_ONPROGRESS_ARGS args = { };
2378// BA_ONPROGRESS_RESULTS results = { };
2379// PIPE_RPC_RESULT result = { };
2380
2381// args.cbSize = sizeof(args);
2382// args.dwProgressPercentage = dwProgressPercentage;
2383// args.dwOverallPercentage = dwOverallPercentage;
2384
2385// results.cbSize = sizeof(results);
2386
2387// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPROGRESS, &args, args.cbSize, &result);
2388// hr = FilterExecuteResult(pUserExperience, hr, fRollback, results.fCancel, L"OnProgress");
2389
2390// return hr;
2391// }
2392
2393// EXTERN_C BAAPI UserExperienceOnRegisterBegin(
2394// __in BURN_USER_EXPERIENCE* pUserExperience,
2395// __inout BOOTSTRAPPER_REGISTRATION_TYPE* pRegistrationType
2396// )
2397// {
2398// HRESULT hr = S_OK;
2399// BA_ONREGISTERBEGIN_ARGS args = { };
2400// BA_ONREGISTERBEGIN_RESULTS results = { };
2401// PIPE_RPC_RESULT result = { };
2402
2403// args.cbSize = sizeof(args);
2404// args.recommendedRegistrationType = *pRegistrationType;
2405
2406// results.cbSize = sizeof(results);
2407// results.registrationType = *pRegistrationType;
2408
2409// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERBEGIN, &args, args.cbSize, &result);
2410// ExitOnFailure(hr, "BA OnRegisterBegin failed.");
2411
2412// if (results.fCancel)
2413// {
2414// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2415// }
2416// else if (BOOTSTRAPPER_REGISTRATION_TYPE_NONE < results.registrationType && BOOTSTRAPPER_REGISTRATION_TYPE_FULL >= results.registrationType)
2417// {
2418// *pRegistrationType = results.registrationType;
2419// }
2420
2421// LExit:
2422// return hr;
2423// }
2424
2425// EXTERN_C BAAPI UserExperienceOnRegisterComplete(
2426// __in BURN_USER_EXPERIENCE* pUserExperience,
2427// __in HRESULT hrStatus
2428// )
2429// {
2430// HRESULT hr = S_OK;
2431// BA_ONREGISTERCOMPLETE_ARGS args = { };
2432// BA_ONREGISTERCOMPLETE_RESULTS results = { };
2433// PIPE_RPC_RESULT result = { };
2434
2435// args.cbSize = sizeof(args);
2436// args.hrStatus = hrStatus;
2437
2438// results.cbSize = sizeof(results);
2439
2440// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONREGISTERCOMPLETE, &args, args.cbSize, &result);
2441// ExitOnFailure(hr, "BA OnRegisterComplete failed.");
2442
2443// LExit:
2444// return hr;
2445// }
2446
2447// EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionBegin(
2448// __in BURN_USER_EXPERIENCE* pUserExperience,
2449// __in LPCWSTR wzTransactionId
2450// )
2451// {
2452// HRESULT hr = S_OK;
2453// BA_ONROLLBACKMSITRANSACTIONBEGIN_ARGS args = { };
2454// BA_ONROLLBACKMSITRANSACTIONBEGIN_RESULTS results = { };
2455// PIPE_RPC_RESULT result = { };
2456
2457// args.cbSize = sizeof(args);
2458// args.wzTransactionId = wzTransactionId;
2459
2460// results.cbSize = sizeof(results);
2461
2462// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, &args, args.cbSize, &result);
2463// ExitOnFailure(hr, "BA OnRollbackMsiTransactionBegin failed.");
2464
2465// LExit:
2466// return hr;
2467// }
2468
2469// EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionComplete(
2470// __in BURN_USER_EXPERIENCE* pUserExperience,
2471// __in LPCWSTR wzTransactionId,
2472// __in HRESULT hrStatus,
2473// __in BOOTSTRAPPER_APPLY_RESTART restart,
2474// __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION *pAction
2475// )
2476// {
2477// HRESULT hr = S_OK;
2478// BA_ONROLLBACKMSITRANSACTIONCOMPLETE_ARGS args = { };
2479// BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS results = { };
2480// PIPE_RPC_RESULT result = { };
2481
2482// args.cbSize = sizeof(args);
2483// args.wzTransactionId = wzTransactionId;
2484// args.hrStatus = hrStatus;
2485// args.restart = restart;
2486// args.recommendation = *pAction;
2487
2488// results.cbSize = sizeof(results);
2489// results.action = *pAction;
2490
2491// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, &args, args.cbSize, &result);
2492// ExitOnFailure(hr, "BA OnRollbackMsiTransactionComplete failed.");
2493
2494// *pAction = results.action;
2495
2496// LExit:
2497// return hr;
2498// }
2499
2500// EXTERN_C BAAPI UserExperienceOnSetUpdateBegin(
2501// __in BURN_USER_EXPERIENCE* pUserExperience
2502// )
2503// {
2504// HRESULT hr = S_OK;
2505// BA_ONSETUPDATEBEGIN_ARGS args = { };
2506// BA_ONSETUPDATEBEGIN_RESULTS results = { };
2507// PIPE_RPC_RESULT result = { };
2508
2509// args.cbSize = sizeof(args);
2510
2511// results.cbSize = sizeof(results);
2512
2513// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, &args, args.cbSize, &result);
2514// ExitOnFailure(hr, "BA OnSetUpdateBegin failed.");
2515
2516// LExit:
2517// return hr;
2518// }
2519
2520// EXTERN_C BAAPI UserExperienceOnSetUpdateComplete(
2521// __in BURN_USER_EXPERIENCE* pUserExperience,
2522// __in HRESULT hrStatus,
2523// __in_z_opt LPCWSTR wzPreviousPackageId,
2524// __in_z_opt LPCWSTR wzNewPackageId
2525// )
2526// {
2527// HRESULT hr = S_OK;
2528// BA_ONSETUPDATECOMPLETE_ARGS args = { };
2529// BA_ONSETUPDATECOMPLETE_RESULTS results = { };
2530// PIPE_RPC_RESULT result = { };
2531
2532// args.cbSize = sizeof(args);
2533// args.hrStatus = hrStatus;
2534// args.wzPreviousPackageId = wzPreviousPackageId;
2535// args.wzNewPackageId = wzNewPackageId;
2536
2537// results.cbSize = sizeof(results);
2538
2539// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, &args, args.cbSize, &result);
2540// ExitOnFailure(hr, "BA OnSetUpdateComplete failed.");
2541
2542// LExit:
2543// return hr;
2544// }
2545
2546// EXTERN_C BAAPI UserExperienceOnSystemRestorePointBegin(
2547// __in BURN_USER_EXPERIENCE* pUserExperience
2548// )
2549// {
2550// HRESULT hr = S_OK;
2551// BA_ONSYSTEMRESTOREPOINTBEGIN_ARGS args = { };
2552// BA_ONSYSTEMRESTOREPOINTBEGIN_RESULTS results = { };
2553// PIPE_RPC_RESULT result = { };
2554
2555// args.cbSize = sizeof(args);
2556
2557// results.cbSize = sizeof(results);
2558
2559// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, &args, args.cbSize, &result);
2560// ExitOnFailure(hr, "BA OnSystemRestorePointBegin failed.");
2561
2562// LExit:
2563// return hr;
2564// }
2565
2566// EXTERN_C BAAPI UserExperienceOnSystemRestorePointComplete(
2567// __in BURN_USER_EXPERIENCE* pUserExperience,
2568// __in HRESULT hrStatus
2569// )
2570// {
2571// HRESULT hr = S_OK;
2572// BA_ONSYSTEMRESTOREPOINTCOMPLETE_ARGS args = { };
2573// BA_ONSYSTEMRESTOREPOINTCOMPLETE_RESULTS results = { };
2574// PIPE_RPC_RESULT result = { };
2575
2576// args.cbSize = sizeof(args);
2577// args.hrStatus = hrStatus;
2578
2579// results.cbSize = sizeof(results);
2580
2581// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTCOMPLETE, &args, args.cbSize, &result);
2582// ExitOnFailure(hr, "BA OnSystemRestorePointComplete failed.");
2583
2584// LExit:
2585// return hr;
2586// }
2587
2588// EXTERN_C BAAPI UserExperienceOnUnregisterBegin(
2589// __in BURN_USER_EXPERIENCE* pUserExperience,
2590// __inout BOOTSTRAPPER_REGISTRATION_TYPE* pRegistrationType
2591// )
2592// {
2593// HRESULT hr = S_OK;
2594// BA_ONUNREGISTERBEGIN_ARGS args = { };
2595// BA_ONUNREGISTERBEGIN_RESULTS results = { };
2596// PIPE_RPC_RESULT result = { };
2597
2598// args.cbSize = sizeof(args);
2599// args.recommendedRegistrationType = *pRegistrationType;
2600
2601// results.cbSize = sizeof(results);
2602// results.registrationType = *pRegistrationType;
2603
2604// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERBEGIN, &args, args.cbSize, &result);
2605// ExitOnFailure(hr, "BA OnUnregisterBegin failed.");
2606
2607// if (BOOTSTRAPPER_REGISTRATION_TYPE_NONE < results.registrationType && BOOTSTRAPPER_REGISTRATION_TYPE_FULL >= results.registrationType)
2608// {
2609// *pRegistrationType = results.registrationType;
2610// }
2611
2612// LExit:
2613// return hr;
2614// }
2615
2616// EXTERN_C BAAPI UserExperienceOnUnregisterComplete(
2617// __in BURN_USER_EXPERIENCE* pUserExperience,
2618// __in HRESULT hrStatus
2619// )
2620// {
2621// HRESULT hr = S_OK;
2622// BA_ONUNREGISTERCOMPLETE_ARGS args = { };
2623// BA_ONUNREGISTERCOMPLETE_RESULTS results = { };
2624// PIPE_RPC_RESULT result = { };
2625
2626// args.cbSize = sizeof(args);
2627// args.hrStatus = hrStatus;
2628
2629// results.cbSize = sizeof(results);
2630
2631// hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONUNREGISTERCOMPLETE, &args, args.cbSize, &result);
2632// ExitOnFailure(hr, "BA OnUnregisterComplete failed.");
2633
2634// LExit:
2635// return hr;
2636// }
2637
2638// extern "C" int UserExperienceCheckExecuteResult(
2639// __in BURN_USER_EXPERIENCE* pUserExperience,
2640// __in BOOL fRollback,
2641// __in DWORD dwAllowedResults,
2642// __in int nResult
2643// )
2644// {
2645// // Do not allow canceling while rolling back.
2646// if (fRollback && (IDCANCEL == nResult || IDABORT == nResult))
2647// {
2648// nResult = IDNOACTION;
2649// }
2650// else if (FAILED(pUserExperience->hrApplyError) && !fRollback) // if we failed cancel except not during rollback.
2651// {
2652// nResult = IDCANCEL;
2653// }
2654
2655// nResult = FilterResult(dwAllowedResults, nResult);
2656// return nResult;
2657// }
2658
2659// extern "C" HRESULT UserExperienceInterpretExecuteResult(
2660// __in BURN_USER_EXPERIENCE* pUserExperience,
2661// __in BOOL fRollback,
2662// __in DWORD dwAllowedResults,
2663// __in int nResult
2664// )
2665// {
2666// HRESULT hr = S_OK;
2667
2668// // If we failed return that error unless this is rollback which should roll on.
2669// if (FAILED(pUserExperience->hrApplyError) && !fRollback)
2670// {
2671// hr = pUserExperience->hrApplyError;
2672// }
2673// else
2674// {
2675// int nCheckedResult = UserExperienceCheckExecuteResult(pUserExperience, fRollback, dwAllowedResults, nResult);
2676// hr = IDOK == nCheckedResult || IDNOACTION == nCheckedResult ? S_OK : IDCANCEL == nCheckedResult || IDABORT == nCheckedResult ? HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT) : HRESULT_FROM_WIN32(ERROR_INSTALL_FAILURE);
2677// }
2678
2679// return hr;
2680// }
2681
2682
2683// // internal functions
2684
2685// static int FilterResult(
2686// __in DWORD dwAllowedResults,
2687// __in int nResult
2688// )
2689// {
2690// if (IDNOACTION == nResult || IDERROR == nResult) // do nothing and errors pass through.
2691// {
2692// }
2693// else
2694// {
2695// switch (dwAllowedResults)
2696// {
2697// case MB_OK:
2698// nResult = IDOK;
2699// break;
2700
2701// case MB_OKCANCEL:
2702// if (IDOK == nResult || IDYES == nResult)
2703// {
2704// nResult = IDOK;
2705// }
2706// else if (IDCANCEL == nResult || IDABORT == nResult || IDNO == nResult)
2707// {
2708// nResult = IDCANCEL;
2709// }
2710// else
2711// {
2712// nResult = IDNOACTION;
2713// }
2714// break;
2715
2716// case MB_ABORTRETRYIGNORE:
2717// if (IDCANCEL == nResult || IDABORT == nResult)
2718// {
2719// nResult = IDABORT;
2720// }
2721// else if (IDRETRY == nResult || IDTRYAGAIN == nResult)
2722// {
2723// nResult = IDRETRY;
2724// }
2725// else if (IDIGNORE == nResult)
2726// {
2727// nResult = IDIGNORE;
2728// }
2729// else
2730// {
2731// nResult = IDNOACTION;
2732// }
2733// break;
2734
2735// case MB_YESNO:
2736// if (IDOK == nResult || IDYES == nResult)
2737// {
2738// nResult = IDYES;
2739// }
2740// else if (IDCANCEL == nResult || IDABORT == nResult || IDNO == nResult)
2741// {
2742// nResult = IDNO;
2743// }
2744// else
2745// {
2746// nResult = IDNOACTION;
2747// }
2748// break;
2749
2750// case MB_YESNOCANCEL:
2751// if (IDOK == nResult || IDYES == nResult)
2752// {
2753// nResult = IDYES;
2754// }
2755// else if (IDNO == nResult)
2756// {
2757// nResult = IDNO;
2758// }
2759// else if (IDCANCEL == nResult || IDABORT == nResult)
2760// {
2761// nResult = IDCANCEL;
2762// }
2763// else
2764// {
2765// nResult = IDNOACTION;
2766// }
2767// break;
2768
2769// case MB_RETRYCANCEL:
2770// if (IDRETRY == nResult || IDTRYAGAIN == nResult)
2771// {
2772// nResult = IDRETRY;
2773// }
2774// else if (IDCANCEL == nResult || IDABORT == nResult)
2775// {
2776// nResult = IDABORT;
2777// }
2778// else
2779// {
2780// nResult = IDNOACTION;
2781// }
2782// break;
2783
2784// case MB_CANCELTRYCONTINUE:
2785// if (IDCANCEL == nResult || IDABORT == nResult)
2786// {
2787// nResult = IDABORT;
2788// }
2789// else if (IDRETRY == nResult || IDTRYAGAIN == nResult)
2790// {
2791// nResult = IDRETRY;
2792// }
2793// else if (IDCONTINUE == nResult || IDIGNORE == nResult)
2794// {
2795// nResult = IDCONTINUE;
2796// }
2797// else
2798// {
2799// nResult = IDNOACTION;
2800// }
2801// break;
2802
2803// case BURN_MB_RETRYTRYAGAIN: // custom return code.
2804// if (IDRETRY != nResult && IDTRYAGAIN != nResult)
2805// {
2806// nResult = IDNOACTION;
2807// }
2808// break;
2809
2810// default:
2811// AssertSz(FALSE, "Unknown allowed results.");
2812// break;
2813// }
2814// }
2815
2816// return nResult;
2817// }
2818
2819// // This filters the BA's responses to events during apply.
2820// // If an apply thread failed, then return its error so this thread will bail out.
2821// // During rollback, the BA can't cancel.
2822// static HRESULT FilterExecuteResult(
2823// __in BURN_USER_EXPERIENCE* pUserExperience,
2824// __in HRESULT hrStatus,
2825// __in BOOL fRollback,
2826// __in BOOL fCancel,
2827// __in LPCWSTR sczEventName
2828// )
2829// {
2830// HRESULT hr = hrStatus;
2831// HRESULT hrApplyError = pUserExperience->hrApplyError; // make sure to use the same value for the whole method, since it can be changed in other threads.
2832
2833// // If we failed return that error unless this is rollback which should roll on.
2834// if (FAILED(hrApplyError) && !fRollback)
2835// {
2836// hr = hrApplyError;
2837// }
2838// else if (fRollback)
2839// {
2840// if (fCancel)
2841// {
2842// LogId(REPORT_STANDARD, MSG_APPLY_CANCEL_IGNORED_DURING_ROLLBACK, sczEventName);
2843// }
2844// // TODO: since cancel isn't allowed, should the BA's HRESULT be ignored as well?
2845// // In the previous code, they could still alter rollback by returning IDERROR.
2846// }
2847// else
2848// {
2849// ExitOnFailure(hr, "BA %ls failed.", sczEventName);
2850
2851// if (fCancel)
2852// {
2853// hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
2854// }
2855// }
2856
2857// LExit:
2858// return hr;
2859// }
2860
2861// static HRESULT SendBAMessage(
2862// __in BURN_USER_EXPERIENCE* /*pUserExperience*/,
2863// __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/,
2864// __in_bcount(cbArgs) const LPVOID /*pvArgs*/,
2865// __in DWORD /*cbArgs*/,
2866// __in PIPE_RPC_RESULT* /*pResult*/
2867// )
2868// {
2869// // // HRESULT hr = S_OK;
2870// // // // DWORD rgResultAndSize[2] = { };
2871// // // // DWORD cbSize = 0;
2872// // // // LPVOID pvData = NULL;
2873// // // // DWORD cbData = 0;
2874
2875// // // //if (!pUserExperience->hUXModule)
2876// // // if (!PipeRpcInitialized(&pUserExperience->hBARpcPipe))
2877// // // {
2878// // // ExitFunction();
2879// // // }
2880
2881// // // //hr = pUserExperience->pfnBAProc(message, pvArgs, pvResults, pUserExperience->pvBAProcContext);
2882// // // //if (hr == E_NOTIMPL)
2883// // // //{
2884// // // // hr = S_OK;
2885// // // //}
2886
2887// // // // Send the message.
2888// // // // hr = PipeWriteMessage(hPipe, message, pvArgs, cbArgs);
2889// // // hr = PipeRpcRequest(&pUserExperience->hBARpcPipe, message, pvArgs, cbArgs, pResult);
2890// // // ExitOnFailure(hr, "Failed to write message to BA.");
2891
2892// // // #if TODO_DELETE
2893// // // // Read the result and size of response.
2894// // // hr = FileReadHandle(hPipe, reinterpret_cast<LPBYTE>(rgResultAndSize), sizeof(rgResultAndSize));
2895// // // ExitOnFailure(hr, "Failed to read result and size of message.");
2896
2897// // // pResult->hr = rgResultAndSize[0];
2898// // // cbSize = rgResultAndSize[1];
2899
2900// // // // Ensure the message size isn't "too big".
2901// // // if (cbSize > MAX_SIZE_BA_RESPONSE)
2902// // // {
2903// // // hr = E_INVALIDDATA;
2904// // // ExitOnRootFailure(hr, "BA sent too much data in response.");
2905// // // }
2906// // // else if (cbSize > sizeof(DWORD)) // if there is data beyond the size of the response struct, read it.
2907// // // {
2908// // // cbData = cbSize - sizeof(DWORD);
2909
2910// // // pvData = MemAlloc(cbData, TRUE);
2911// // // ExitOnNull(pvData, hr, E_OUTOFMEMORY, "Failed to allocate memory for BA results.");
2912
2913// // // hr = FileReadHandle(hPipe, reinterpret_cast<LPBYTE>(pvData), cbData);
2914// // // ExitOnFailure(hr, "Failed to read result and size of message.");
2915// // // }
2916
2917// // // pResult->cbSize = cbSize;
2918// // // pResult->cbData = cbData;
2919// // // pResult->pvData = pvData;
2920// // // pvData = NULL;
2921// // // #endif
2922
2923// // // hr = pResult->hr;
2924// // // ExitOnFailure(hr, "BA reported failure.");
2925
2926// // // LExit:
2927// // // // ReleaseMem(pvData);
2928
2929// // // return hr;
2930// return E_NOTIMPL;
2931// }
2932
2933// static HRESULT SendBAMessageFromInactiveEngine(
2934// __in BURN_USER_EXPERIENCE* /*pUserExperience*/,
2935// __in BOOTSTRAPPER_APPLICATION_MESSAGE /*message*/,
2936// __in_bcount(cbArgs) const LPVOID /*pvArgs*/,
2937// __in DWORD /*cbArgs*/,
2938// __in PIPE_RPC_RESULT* /*pResult*/
2939// )
2940// {
2941// // // HRESULT hr = S_OK;
2942
2943// // // //if (!pUserExperience->hUXModule)
2944// // // if (!PipeRpcInitialized(&pUserExperience->hBARpcPipe))
2945// // // {
2946// // // ExitFunction();
2947// // // }
2948
2949// // // UserExperienceDeactivateEngine(pUserExperience);
2950
2951// // // hr = SendBAMessage(pUserExperience, message, pvArgs, cbArgs, pResult);
2952
2953// // // UserExperienceActivateEngine(pUserExperience);
2954
2955// // // LExit:
2956// // // return hr;
2957// return E_NOTIMPL;
2958// }
diff --git a/src/burn/engine/userexperience.h b/src/burn/engine/userexperience.h
deleted file mode 100644
index 23068e3e..00000000
--- a/src/burn/engine/userexperience.h
+++ /dev/null
@@ -1,539 +0,0 @@
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#if defined(__cplusplus)
5extern "C" {
6#endif
7
8
9// constants
10
11
12// structs
13
14
15// functions
16
17#ifdef TODO_DELETE
18void UserExperienceUninitialize(
19 __in BURN_USER_EXPERIENCE* pUserExperience
20 );
21HRESULT UserExperienceLoad(
22 __in BURN_USER_EXPERIENCE* pUserExperience,
23 __in BOOTSTRAPPER_ENGINE_CONTEXT* pEngineContext,
24 __in BOOTSTRAPPER_COMMAND* pCommand
25 );
26HRESULT UserExperienceUnload(
27 __in BURN_USER_EXPERIENCE* pUserExperience,
28 __in BOOL fReload
29 );
30
31BAAPI UserExperienceOnApplyBegin(
32 __in BURN_USER_EXPERIENCE* pUserExperience,
33 __in DWORD dwPhaseCount
34 );
35BAAPI UserExperienceOnApplyComplete(
36 __in BURN_USER_EXPERIENCE* pUserExperience,
37 __in HRESULT hrStatus,
38 __in BOOTSTRAPPER_APPLY_RESTART restart,
39 __inout BOOTSTRAPPER_APPLYCOMPLETE_ACTION* pAction
40 );
41BAAPI UserExperienceOnApplyDowngrade(
42 __in BURN_USER_EXPERIENCE* pUserExperience,
43 __inout HRESULT* phrStatus
44 );
45BAAPI UserExperienceOnBeginMsiTransactionBegin(
46 __in BURN_USER_EXPERIENCE* pUserExperience,
47 __in LPCWSTR wzTransactionId
48 );
49BAAPI UserExperienceOnBeginMsiTransactionComplete(
50 __in BURN_USER_EXPERIENCE* pUserExperience,
51 __in LPCWSTR wzTransactionId,
52 __in HRESULT hrStatus
53 );
54BAAPI UserExperienceOnCacheAcquireBegin(
55 __in BURN_USER_EXPERIENCE* pUserExperience,
56 __in_z_opt LPCWSTR wzPackageOrContainerId,
57 __in_z_opt LPCWSTR wzPayloadId,
58 __in_z LPWSTR* pwzSource,
59 __in_z LPWSTR* pwzDownloadUrl,
60 __in_z_opt LPCWSTR wzPayloadContainerId,
61 __out BOOTSTRAPPER_CACHE_OPERATION* pCacheOperation
62 );
63BAAPI UserExperienceOnCacheAcquireComplete(
64 __in BURN_USER_EXPERIENCE* pUserExperience,
65 __in_z_opt LPCWSTR wzPackageOrContainerId,
66 __in_z_opt LPCWSTR wzPayloadId,
67 __in HRESULT hrStatus,
68 __inout BOOL* pfRetry
69 );
70BAAPI UserExperienceOnCacheAcquireProgress(
71 __in BURN_USER_EXPERIENCE* pUserExperience,
72 __in_z_opt LPCWSTR wzPackageOrContainerId,
73 __in_z_opt LPCWSTR wzPayloadId,
74 __in DWORD64 dw64Progress,
75 __in DWORD64 dw64Total,
76 __in DWORD dwOverallPercentage
77 );
78BAAPI UserExperienceOnCacheAcquireResolving(
79 __in BURN_USER_EXPERIENCE* pUserExperience,
80 __in_z_opt LPCWSTR wzPackageOrContainerId,
81 __in_z_opt LPCWSTR wzPayloadId,
82 __in_z LPWSTR* rgSearchPaths,
83 __in DWORD cSearchPaths,
84 __in BOOL fFoundLocal,
85 __in DWORD* pdwChosenSearchPath,
86 __in_z_opt LPWSTR* pwzDownloadUrl,
87 __in_z_opt LPCWSTR wzPayloadContainerId,
88 __inout BOOTSTRAPPER_CACHE_RESOLVE_OPERATION* pCacheOperation
89 );
90BAAPI UserExperienceOnCacheBegin(
91 __in BURN_USER_EXPERIENCE* pUserExperience
92 );
93BAAPI UserExperienceOnCacheComplete(
94 __in BURN_USER_EXPERIENCE* pUserExperience,
95 __in HRESULT hrStatus
96 );
97BAAPI UserExperienceOnCacheContainerOrPayloadVerifyBegin(
98 __in BURN_USER_EXPERIENCE* pUserExperience,
99 __in_z_opt LPCWSTR wzPackageOrContainerId,
100 __in_z_opt LPCWSTR wzPayloadId
101 );
102BAAPI UserExperienceOnCacheContainerOrPayloadVerifyComplete(
103 __in BURN_USER_EXPERIENCE* pUserExperience,
104 __in_z_opt LPCWSTR wzPackageOrContainerId,
105 __in_z_opt LPCWSTR wzPayloadId,
106 __in HRESULT hrStatus
107 );
108BAAPI UserExperienceOnCacheContainerOrPayloadVerifyProgress(
109 __in BURN_USER_EXPERIENCE* pUserExperience,
110 __in_z_opt LPCWSTR wzPackageOrContainerId,
111 __in_z_opt LPCWSTR wzPayloadId,
112 __in DWORD64 dw64Progress,
113 __in DWORD64 dw64Total,
114 __in DWORD dwOverallPercentage
115 );
116BAAPI UserExperienceOnCachePackageBegin(
117 __in BURN_USER_EXPERIENCE* pUserExperience,
118 __in_z LPCWSTR wzPackageId,
119 __in DWORD cCachePayloads,
120 __in DWORD64 dw64PackageCacheSize,
121 __in BOOL fVital
122 );
123BAAPI UserExperienceOnCachePackageNonVitalValidationFailure(
124 __in BURN_USER_EXPERIENCE* pUserExperience,
125 __in_z LPCWSTR wzPackageId,
126 __in HRESULT hrStatus,
127 __inout BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION* pAction
128 );
129BAAPI UserExperienceOnCachePackageComplete(
130 __in BURN_USER_EXPERIENCE* pUserExperience,
131 __in_z LPCWSTR wzPackageId,
132 __in HRESULT hrStatus,
133 __inout BOOTSTRAPPER_CACHEPACKAGECOMPLETE_ACTION* pAction
134 );
135BAAPI UserExperienceOnCachePayloadExtractBegin(
136 __in BURN_USER_EXPERIENCE* pUserExperience,
137 __in_z_opt LPCWSTR wzContainerId,
138 __in_z_opt LPCWSTR wzPayloadId
139 );
140BAAPI UserExperienceOnCachePayloadExtractComplete(
141 __in BURN_USER_EXPERIENCE* pUserExperience,
142 __in_z_opt LPCWSTR wzContainerId,
143 __in_z_opt LPCWSTR wzPayloadId,
144 __in HRESULT hrStatus
145 );
146BAAPI UserExperienceOnCachePayloadExtractProgress(
147 __in BURN_USER_EXPERIENCE* pUserExperience,
148 __in_z_opt LPCWSTR wzContainerId,
149 __in_z_opt LPCWSTR wzPayloadId,
150 __in DWORD64 dw64Progress,
151 __in DWORD64 dw64Total,
152 __in DWORD dwOverallPercentage
153 );
154BAAPI UserExperienceOnCacheVerifyBegin(
155 __in BURN_USER_EXPERIENCE* pUserExperience,
156 __in_z_opt LPCWSTR wzPackageOrContainerId,
157 __in_z_opt LPCWSTR wzPayloadId
158 );
159BAAPI UserExperienceOnCacheVerifyComplete(
160 __in BURN_USER_EXPERIENCE* pUserExperience,
161 __in_z_opt LPCWSTR wzPackageOrContainerId,
162 __in_z_opt LPCWSTR wzPayloadId,
163 __in HRESULT hrStatus,
164 __inout BOOTSTRAPPER_CACHEVERIFYCOMPLETE_ACTION* pAction
165 );
166BAAPI UserExperienceOnCacheVerifyProgress(
167 __in BURN_USER_EXPERIENCE* pUserExperience,
168 __in_z_opt LPCWSTR wzPackageOrContainerId,
169 __in_z_opt LPCWSTR wzPayloadId,
170 __in DWORD64 dw64Progress,
171 __in DWORD64 dw64Total,
172 __in DWORD dwOverallPercentage,
173 __in BOOTSTRAPPER_CACHE_VERIFY_STEP verifyStep
174 );
175BAAPI UserExperienceOnCommitMsiTransactionBegin(
176 __in BURN_USER_EXPERIENCE* pUserExperience,
177 __in LPCWSTR wzTransactionId
178 );
179BAAPI UserExperienceOnCommitMsiTransactionComplete(
180 __in BURN_USER_EXPERIENCE* pUserExperience,
181 __in LPCWSTR wzTransactionId,
182 __in HRESULT hrStatus,
183 __in BOOTSTRAPPER_APPLY_RESTART restart,
184 __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction
185);
186BAAPI UserExperienceOnDetectBegin(
187 __in BURN_USER_EXPERIENCE* pUserExperience,
188 __in BOOL fCached,
189 __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType,
190 __in DWORD cPackages
191 );
192BAAPI UserExperienceOnDetectCompatibleMsiPackage(
193 __in BURN_USER_EXPERIENCE* pUserExperience,
194 __in_z LPCWSTR wzPackageId,
195 __in_z LPCWSTR wzCompatiblePackageId,
196 __in VERUTIL_VERSION* pCompatiblePackageVersion
197 );
198BAAPI UserExperienceOnDetectComplete(
199 __in BURN_USER_EXPERIENCE* pUserExperience,
200 __in HRESULT hrStatus,
201 __in BOOL fEligibleForCleanup
202 );
203BAAPI UserExperienceOnDetectForwardCompatibleBundle(
204 __in BURN_USER_EXPERIENCE* pUserExperience,
205 __in_z LPCWSTR wzBundleId,
206 __in BOOTSTRAPPER_RELATION_TYPE relationType,
207 __in_z LPCWSTR wzBundleTag,
208 __in BOOL fPerMachine,
209 __in VERUTIL_VERSION* pVersion,
210 __in BOOL fMissingFromCache
211 );
212BAAPI UserExperienceOnDetectMsiFeature(
213 __in BURN_USER_EXPERIENCE* pUserExperience,
214 __in_z LPCWSTR wzPackageId,
215 __in_z LPCWSTR wzFeatureId,
216 __in BOOTSTRAPPER_FEATURE_STATE state
217 );
218BAAPI UserExperienceOnDetectPackageBegin(
219 __in BURN_USER_EXPERIENCE* pUserExperience,
220 __in_z LPCWSTR wzPackageId
221 );
222BAAPI UserExperienceOnDetectPackageComplete(
223 __in BURN_USER_EXPERIENCE* pUserExperience,
224 __in_z LPCWSTR wzPackageId,
225 __in HRESULT hrStatus,
226 __in BOOTSTRAPPER_PACKAGE_STATE state,
227 __in BOOL fCached
228 );
229BAAPI UserExperienceOnDetectRelatedBundle(
230 __in BURN_USER_EXPERIENCE* pUserExperience,
231 __in_z LPCWSTR wzBundleId,
232 __in BOOTSTRAPPER_RELATION_TYPE relationType,
233 __in_z LPCWSTR wzBundleTag,
234 __in BOOL fPerMachine,
235 __in VERUTIL_VERSION* pVersion,
236 __in BOOL fMissingFromCache
237 );
238BAAPI UserExperienceOnDetectRelatedBundlePackage(
239 __in BURN_USER_EXPERIENCE* pUserExperience,
240 __in_z LPCWSTR wzPackageId,
241 __in_z LPCWSTR wzBundleId,
242 __in BOOTSTRAPPER_RELATION_TYPE relationType,
243 __in BOOL fPerMachine,
244 __in VERUTIL_VERSION* pVersion
245 );
246BAAPI UserExperienceOnDetectRelatedMsiPackage(
247 __in BURN_USER_EXPERIENCE* pUserExperience,
248 __in_z LPCWSTR wzPackageId,
249 __in_z LPCWSTR wzUpgradeCode,
250 __in_z LPCWSTR wzProductCode,
251 __in BOOL fPerMachine,
252 __in VERUTIL_VERSION* pVersion,
253 __in BOOTSTRAPPER_RELATED_OPERATION operation
254 );
255BAAPI UserExperienceOnDetectPatchTarget(
256 __in BURN_USER_EXPERIENCE* pUserExperience,
257 __in_z LPCWSTR wzPackageId,
258 __in_z LPCWSTR wzProductCode,
259 __in BOOTSTRAPPER_PACKAGE_STATE patchState
260 );
261BAAPI UserExperienceOnDetectUpdate(
262 __in BURN_USER_EXPERIENCE* pUserExperience,
263 __in_z_opt LPCWSTR wzUpdateLocation,
264 __in DWORD64 dw64Size,
265 __in_z_opt LPCWSTR wzHash,
266 __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm,
267 __in VERUTIL_VERSION* pVersion,
268 __in_z_opt LPCWSTR wzTitle,
269 __in_z_opt LPCWSTR wzSummary,
270 __in_z_opt LPCWSTR wzContentType,
271 __in_z_opt LPCWSTR wzContent,
272 __inout BOOL* pfStopProcessingUpdates
273 );
274BAAPI UserExperienceOnDetectUpdateBegin(
275 __in BURN_USER_EXPERIENCE* pUserExperience,
276 __in_z LPCWSTR wzUpdateLocation,
277 __inout BOOL* pfSkip
278 );
279BAAPI UserExperienceOnDetectUpdateComplete(
280 __in BURN_USER_EXPERIENCE* pUserExperience,
281 __in HRESULT hrStatus,
282 __inout BOOL* pfIgnoreError
283 );
284BAAPI UserExperienceOnElevateBegin(
285 __in BURN_USER_EXPERIENCE* pUserExperience
286 );
287BAAPI UserExperienceOnElevateComplete(
288 __in BURN_USER_EXPERIENCE* pUserExperience,
289 __in HRESULT hrStatus
290 );
291BAAPI UserExperienceOnError(
292 __in BURN_USER_EXPERIENCE* pUserExperience,
293 __in BOOTSTRAPPER_ERROR_TYPE errorType,
294 __in_z_opt LPCWSTR wzPackageId,
295 __in DWORD dwCode,
296 __in_z_opt LPCWSTR wzError,
297 __in DWORD dwUIHint,
298 __in DWORD cData,
299 __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
300 __inout int* pnResult
301 );
302BAAPI UserExperienceOnExecuteBegin(
303 __in BURN_USER_EXPERIENCE* pUserExperience,
304 __in DWORD cExecutingPackages
305 );
306BAAPI UserExperienceOnExecuteComplete(
307 __in BURN_USER_EXPERIENCE* pUserExperience,
308 __in HRESULT hrStatus
309 );
310BAAPI UserExperienceOnExecuteFilesInUse(
311 __in BURN_USER_EXPERIENCE* pUserExperience,
312 __in_z LPCWSTR wzPackageId,
313 __in DWORD cFiles,
314 __in_ecount_z_opt(cFiles) LPCWSTR* rgwzFiles,
315 __in BOOTSTRAPPER_FILES_IN_USE_TYPE source,
316 __inout int* pnResult
317 );
318BAAPI UserExperienceOnExecuteMsiMessage(
319 __in BURN_USER_EXPERIENCE* pUserExperience,
320 __in_z LPCWSTR wzPackageId,
321 __in INSTALLMESSAGE messageType,
322 __in DWORD dwUIHint,
323 __in_z LPCWSTR wzMessage,
324 __in DWORD cData,
325 __in_ecount_z_opt(cData) LPCWSTR* rgwzData,
326 __inout int* pnResult
327 );
328BAAPI UserExperienceOnExecutePackageBegin(
329 __in BURN_USER_EXPERIENCE* pUserExperience,
330 __in_z LPCWSTR wzPackageId,
331 __in BOOL fExecute,
332 __in BOOTSTRAPPER_ACTION_STATE action,
333 __in INSTALLUILEVEL uiLevel,
334 __in BOOL fDisableExternalUiHandler
335 );
336BAAPI UserExperienceOnExecutePackageComplete(
337 __in BURN_USER_EXPERIENCE* pUserExperience,
338 __in_z LPCWSTR wzPackageId,
339 __in HRESULT hrStatus,
340 __in BOOTSTRAPPER_APPLY_RESTART restart,
341 __inout BOOTSTRAPPER_EXECUTEPACKAGECOMPLETE_ACTION* pAction
342 );
343BAAPI UserExperienceOnExecutePatchTarget(
344 __in BURN_USER_EXPERIENCE* pUserExperience,
345 __in_z LPCWSTR wzPackageId,
346 __in_z LPCWSTR wzTargetProductCode
347 );
348BAAPI UserExperienceOnExecuteProcessCancel(
349 __in BURN_USER_EXPERIENCE* pUserExperience,
350 __in_z LPCWSTR wzPackageId,
351 __in DWORD dwProcessId,
352 __inout BOOTSTRAPPER_EXECUTEPROCESSCANCEL_ACTION* pAction
353 );
354BAAPI UserExperienceOnExecuteProgress(
355 __in BURN_USER_EXPERIENCE* pUserExperience,
356 __in_z LPCWSTR wzPackageId,
357 __in DWORD dwProgressPercentage,
358 __in DWORD dwOverallPercentage,
359 __out int* pnResult
360 );
361BAAPI UserExperienceOnLaunchApprovedExeBegin(
362 __in BURN_USER_EXPERIENCE* pUserExperience
363 );
364BAAPI UserExperienceOnLaunchApprovedExeComplete(
365 __in BURN_USER_EXPERIENCE* pUserExperience,
366 __in HRESULT hrStatus,
367 __in DWORD dwProcessId
368 );
369BAAPI UserExperienceOnPauseAUBegin(
370 __in BURN_USER_EXPERIENCE* pUserExperience
371 );
372BAAPI UserExperienceOnPauseAUComplete(
373 __in BURN_USER_EXPERIENCE* pUserExperience,
374 __in HRESULT hrStatus
375 );
376BAAPI UserExperienceOnPlanBegin(
377 __in BURN_USER_EXPERIENCE* pUserExperience,
378 __in DWORD cPackages
379 );
380BAAPI UserExperienceOnPlanCompatibleMsiPackageBegin(
381 __in BURN_USER_EXPERIENCE* pUserExperience,
382 __in_z LPCWSTR wzPackageId,
383 __in_z LPCWSTR wzCompatiblePackageId,
384 __in VERUTIL_VERSION* pCompatiblePackageVersion,
385 __inout BOOL* pfRequested
386 );
387BAAPI UserExperienceOnPlanCompatibleMsiPackageComplete(
388 __in BURN_USER_EXPERIENCE* pUserExperience,
389 __in_z LPCWSTR wzPackageId,
390 __in_z LPCWSTR wzCompatiblePackageId,
391 __in HRESULT hrStatus,
392 __in BOOL fRequested
393 );
394BAAPI UserExperienceOnPlanComplete(
395 __in BURN_USER_EXPERIENCE* pUserExperience,
396 __in HRESULT hrStatus
397 );
398BAAPI UserExperienceOnPlanForwardCompatibleBundle(
399 __in BURN_USER_EXPERIENCE* pUserExperience,
400 __in_z LPCWSTR wzBundleId,
401 __in BOOTSTRAPPER_RELATION_TYPE relationType,
402 __in_z LPCWSTR wzBundleTag,
403 __in BOOL fPerMachine,
404 __in VERUTIL_VERSION* pVersion,
405 __inout BOOL* pfIgnoreBundle
406 );
407BAAPI UserExperienceOnPlanMsiFeature(
408 __in BURN_USER_EXPERIENCE* pUserExperience,
409 __in_z LPCWSTR wzPackageId,
410 __in_z LPCWSTR wzFeatureId,
411 __inout BOOTSTRAPPER_FEATURE_STATE* pRequestedState
412 );
413BAAPI UserExperienceOnPlanMsiPackage(
414 __in BURN_USER_EXPERIENCE* pUserExperience,
415 __in_z LPCWSTR wzPackageId,
416 __in BOOL fExecute,
417 __in BOOTSTRAPPER_ACTION_STATE action,
418 __inout BURN_MSI_PROPERTY* pActionMsiProperty,
419 __inout INSTALLUILEVEL* pUiLevel,
420 __inout BOOL* pfDisableExternalUiHandler,
421 __inout BOOTSTRAPPER_MSI_FILE_VERSIONING* pFileVersioning
422 );
423BAAPI UserExperienceOnPlannedCompatiblePackage(
424 __in BURN_USER_EXPERIENCE* pUserExperience,
425 __in_z LPCWSTR wzPackageId,
426 __in_z LPCWSTR wzCompatiblePackageId,
427 __in BOOL fRemove
428 );
429BAAPI UserExperienceOnPlannedPackage(
430 __in BURN_USER_EXPERIENCE* pUserExperience,
431 __in_z LPCWSTR wzPackageId,
432 __in BOOTSTRAPPER_ACTION_STATE execute,
433 __in BOOTSTRAPPER_ACTION_STATE rollback,
434 __in BOOL fPlannedCache,
435 __in BOOL fPlannedUncache
436 );
437BAAPI UserExperienceOnPlanPackageBegin(
438 __in BURN_USER_EXPERIENCE* pUserExperience,
439 __in_z LPCWSTR wzPackageId,
440 __in BOOTSTRAPPER_PACKAGE_STATE state,
441 __in BOOL fCached,
442 __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT installCondition,
443 __in BOOTSTRAPPER_PACKAGE_CONDITION_RESULT repairCondition,
444 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState,
445 __inout BOOTSTRAPPER_CACHE_TYPE* pRequestedCacheType
446 );
447BAAPI UserExperienceOnPlanPackageComplete(
448 __in BURN_USER_EXPERIENCE* pUserExperience,
449 __in_z LPCWSTR wzPackageId,
450 __in HRESULT hrStatus,
451 __in BOOTSTRAPPER_REQUEST_STATE requested
452 );
453BAAPI UserExperienceOnPlanRelatedBundle(
454 __in BURN_USER_EXPERIENCE* pUserExperience,
455 __in_z LPCWSTR wzBundleId,
456 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
457 );
458BAAPI UserExperienceOnPlanRelatedBundleType(
459 __in BURN_USER_EXPERIENCE* pUserExperience,
460 __in_z LPCWSTR wzBundleId,
461 __inout BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE* pRequestedType
462 );
463BAAPI UserExperienceOnPlanRestoreRelatedBundle(
464 __in BURN_USER_EXPERIENCE* pUserExperience,
465 __in_z LPCWSTR wzBundleId,
466 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
467 );
468BAAPI UserExperienceOnPlanRollbackBoundary(
469 __in BURN_USER_EXPERIENCE* pUserExperience,
470 __in_z LPCWSTR wzRollbackBoundaryId,
471 __inout BOOL *pfTransaction
472 );
473BAAPI UserExperienceOnPlanPatchTarget(
474 __in BURN_USER_EXPERIENCE* pUserExperience,
475 __in_z LPCWSTR wzPackageId,
476 __in_z LPCWSTR wzProductCode,
477 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
478 );
479BAAPI UserExperienceOnProgress(
480 __in BURN_USER_EXPERIENCE* pUserExperience,
481 __in BOOL fRollback,
482 __in DWORD dwProgressPercentage,
483 __in DWORD dwOverallPercentage
484 );
485BAAPI UserExperienceOnRegisterBegin(
486 __in BURN_USER_EXPERIENCE* pUserExperience,
487 __inout BOOTSTRAPPER_REGISTRATION_TYPE* pRegistrationType
488 );
489BAAPI UserExperienceOnRegisterComplete(
490 __in BURN_USER_EXPERIENCE* pUserExperience,
491 __in HRESULT hrStatus
492 );
493BAAPI UserExperienceOnRollbackMsiTransactionBegin(
494 __in BURN_USER_EXPERIENCE* pUserExperience,
495 __in LPCWSTR wzTransactionId
496 );
497BAAPI UserExperienceOnRollbackMsiTransactionComplete(
498 __in BURN_USER_EXPERIENCE* pUserExperience,
499 __in LPCWSTR wzTransactionId,
500 __in HRESULT hrStatus,
501 __in BOOTSTRAPPER_APPLY_RESTART restart,
502 __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction
503);
504BAAPI UserExperienceOnSetUpdateBegin(
505 __in BURN_USER_EXPERIENCE* pUserExperience
506 );
507BAAPI UserExperienceOnSetUpdateComplete(
508 __in BURN_USER_EXPERIENCE* pUserExperience,
509 __in HRESULT hrStatus,
510 __in_z_opt LPCWSTR wzPreviousPackageId,
511 __in_z_opt LPCWSTR wzNewPackageId
512 );
513BAAPI UserExperienceOnShutdown(
514 __in BURN_USER_EXPERIENCE* pUserExperience,
515 __inout BOOTSTRAPPER_SHUTDOWN_ACTION* pAction
516 );
517BAAPI UserExperienceOnStartup(
518 __in BURN_USER_EXPERIENCE* pUserExperience
519 );
520BAAPI UserExperienceOnSystemRestorePointBegin(
521 __in BURN_USER_EXPERIENCE* pUserExperience
522 );
523BAAPI UserExperienceOnSystemRestorePointComplete(
524 __in BURN_USER_EXPERIENCE* pUserExperience,
525 __in HRESULT hrStatus
526 );
527BAAPI UserExperienceOnUnregisterBegin(
528 __in BURN_USER_EXPERIENCE* pUserExperience,
529 __inout BOOTSTRAPPER_REGISTRATION_TYPE* pRegistrationType
530 );
531BAAPI UserExperienceOnUnregisterComplete(
532 __in BURN_USER_EXPERIENCE* pUserExperience,
533 __in HRESULT hrStatus
534 );
535#endif
536
537#if defined(__cplusplus)
538}
539#endif
diff --git a/src/burn/test/BurnUnitTest/precomp.h b/src/burn/test/BurnUnitTest/precomp.h
index 7a84dd41..d0105107 100644
--- a/src/burn/test/BurnUnitTest/precomp.h
+++ b/src/burn/test/BurnUnitTest/precomp.h
@@ -52,7 +52,6 @@
52#include "burnextension.h" 52#include "burnextension.h"
53#include "search.h" 53#include "search.h"
54#include "ba.h" 54#include "ba.h"
55#include "userexperience.h"
56#include "package.h" 55#include "package.h"
57#include "update.h" 56#include "update.h"
58#include "pseudobundle.h" 57#include "pseudobundle.h"