diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-04-16 10:47:54 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-04-19 23:12:55 -0500 |
| commit | d7b0329e16ba9cae4a33970e26591ae5f1d98f0d (patch) | |
| tree | 4305d0af48d5b5a5c6c95a2d76efc7a37dc3124c /src | |
| parent | e09a129ee276457d02d19a6444657cf3a2c73905 (diff) | |
| download | wix-d7b0329e16ba9cae4a33970e26591ae5f1d98f0d.tar.gz wix-d7b0329e16ba9cae4a33970e26591ae5f1d98f0d.tar.bz2 wix-d7b0329e16ba9cae4a33970e26591ae5f1d98f0d.zip | |
Add OnCacheContainerOrPayloadVerify* for a file already in the cache.
Diffstat (limited to 'src')
| -rw-r--r-- | src/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h | 45 | ||||
| -rw-r--r-- | src/engine/apply.cpp | 85 | ||||
| -rw-r--r-- | src/engine/userexperience.cpp | 87 | ||||
| -rw-r--r-- | src/engine/userexperience.h | 19 |
4 files changed, 227 insertions, 9 deletions
diff --git a/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h b/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h index 9fb6ffff..edb981a9 100644 --- a/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h +++ b/src/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h | |||
| @@ -150,6 +150,9 @@ enum BOOTSTRAPPER_APPLICATION_MESSAGE | |||
| 150 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, | 150 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, |
| 151 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE, | 151 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANFORWARDCOMPATIBLEBUNDLE, |
| 152 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS, | 152 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEVERIFYPROGRESS, |
| 153 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN, | ||
| 154 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE, | ||
| 155 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS, | ||
| 153 | }; | 156 | }; |
| 154 | 157 | ||
| 155 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION | 158 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION |
| @@ -399,6 +402,48 @@ struct BA_ONCACHECOMPLETE_RESULTS | |||
| 399 | DWORD cbSize; | 402 | DWORD cbSize; |
| 400 | }; | 403 | }; |
| 401 | 404 | ||
| 405 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS | ||
| 406 | { | ||
| 407 | DWORD cbSize; | ||
| 408 | LPCWSTR wzPackageOrContainerId; | ||
| 409 | LPCWSTR wzPayloadId; | ||
| 410 | }; | ||
| 411 | |||
| 412 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS | ||
| 413 | { | ||
| 414 | DWORD cbSize; | ||
| 415 | BOOL fCancel; | ||
| 416 | }; | ||
| 417 | |||
| 418 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS | ||
| 419 | { | ||
| 420 | DWORD cbSize; | ||
| 421 | LPCWSTR wzPackageOrContainerId; | ||
| 422 | LPCWSTR wzPayloadId; | ||
| 423 | HRESULT hrStatus; | ||
| 424 | }; | ||
| 425 | |||
| 426 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS | ||
| 427 | { | ||
| 428 | DWORD cbSize; | ||
| 429 | }; | ||
| 430 | |||
| 431 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS | ||
| 432 | { | ||
| 433 | DWORD cbSize; | ||
| 434 | LPCWSTR wzPackageOrContainerId; | ||
| 435 | LPCWSTR wzPayloadId; | ||
| 436 | DWORD64 dw64Progress; | ||
| 437 | DWORD64 dw64Total; | ||
| 438 | DWORD dwOverallPercentage; | ||
| 439 | }; | ||
| 440 | |||
| 441 | struct BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS | ||
| 442 | { | ||
| 443 | DWORD cbSize; | ||
| 444 | BOOL fCancel; | ||
| 445 | }; | ||
| 446 | |||
| 402 | struct BA_ONCACHEPACKAGEBEGIN_ARGS | 447 | struct BA_ONCACHEPACKAGEBEGIN_ARGS |
| 403 | { | 448 | { |
| 404 | DWORD cbSize; | 449 | DWORD cbSize; |
diff --git a/src/engine/apply.cpp b/src/engine/apply.cpp index 5826f513..f40b3841 100644 --- a/src/engine/apply.cpp +++ b/src/engine/apply.cpp | |||
| @@ -15,6 +15,7 @@ enum BURN_CACHE_PROGRESS_TYPE | |||
| 15 | { | 15 | { |
| 16 | BURN_CACHE_PROGRESS_TYPE_ACQUIRE, | 16 | BURN_CACHE_PROGRESS_TYPE_ACQUIRE, |
| 17 | BURN_CACHE_PROGRESS_TYPE_VERIFY, | 17 | BURN_CACHE_PROGRESS_TYPE_VERIFY, |
| 18 | BURN_CACHE_PROGRESS_TYPE_CONTAINER_OR_PAYLOAD_VERIFY, | ||
| 18 | }; | 19 | }; |
| 19 | 20 | ||
| 20 | // structs | 21 | // structs |
| @@ -101,6 +102,12 @@ static HRESULT ApplyProcessPayload( | |||
| 101 | __in_opt BURN_PACKAGE* pPackage, | 102 | __in_opt BURN_PACKAGE* pPackage, |
| 102 | __in BURN_PAYLOAD* pPayload | 103 | __in BURN_PAYLOAD* pPayload |
| 103 | ); | 104 | ); |
| 105 | static HRESULT ApplyCacheVerifyContainerOrPayload( | ||
| 106 | __in BURN_CACHE_CONTEXT* pContext, | ||
| 107 | __in_opt BURN_CONTAINER* pContainer, | ||
| 108 | __in_opt BURN_PACKAGE* pPackage, | ||
| 109 | __in_opt BURN_PAYLOAD* pPayload | ||
| 110 | ); | ||
| 104 | static HRESULT ExtractContainer( | 111 | static HRESULT ExtractContainer( |
| 105 | __in BURN_CACHE_CONTEXT* pContext, | 112 | __in BURN_CACHE_CONTEXT* pContext, |
| 106 | __in BURN_CONTAINER* pContainer | 113 | __in BURN_CONTAINER* pContainer |
| @@ -910,11 +917,9 @@ static HRESULT ApplyLayoutContainer( | |||
| 910 | 917 | ||
| 911 | Assert(!pContainer->fAttached); | 918 | Assert(!pContainer->fAttached); |
| 912 | 919 | ||
| 913 | hr = CacheVerifyContainer(pContainer, pContext->wzLayoutDirectory); | 920 | hr = ApplyCacheVerifyContainerOrPayload(pContext, pContainer, NULL, NULL); |
| 914 | if (SUCCEEDED(hr)) | 921 | if (SUCCEEDED(hr)) |
| 915 | { | 922 | { |
| 916 | // TODO: send Acquire and Verify messages to BA? | ||
| 917 | pContext->qwSuccessfulCacheProgress += pContainer->qwFileSize * 2; | ||
| 918 | ExitFunction(); | 923 | ExitFunction(); |
| 919 | } | 924 | } |
| 920 | 925 | ||
| @@ -969,11 +974,9 @@ static HRESULT ApplyProcessPayload( | |||
| 969 | ExitFunction(); | 974 | ExitFunction(); |
| 970 | } | 975 | } |
| 971 | 976 | ||
| 972 | hr = CacheVerifyPayload(pPayload, pContext->wzLayoutDirectory ? pContext->wzLayoutDirectory : pPackage->sczCacheFolder); | 977 | hr = ApplyCacheVerifyContainerOrPayload(pContext, NULL, pPackage, pPayload); |
| 973 | if (SUCCEEDED(hr)) | 978 | if (SUCCEEDED(hr)) |
| 974 | { | 979 | { |
| 975 | // TODO: send Acquire and Verify messages to BA? | ||
| 976 | pContext->qwSuccessfulCacheProgress += pPayload->qwFileSize * 2; | ||
| 977 | ExitFunction(); | 980 | ExitFunction(); |
| 978 | } | 981 | } |
| 979 | 982 | ||
| @@ -1012,6 +1015,54 @@ LExit: | |||
| 1012 | return hr; | 1015 | return hr; |
| 1013 | } | 1016 | } |
| 1014 | 1017 | ||
| 1018 | static HRESULT ApplyCacheVerifyContainerOrPayload( | ||
| 1019 | __in BURN_CACHE_CONTEXT* pContext, | ||
| 1020 | __in_opt BURN_CONTAINER* pContainer, | ||
| 1021 | __in_opt BURN_PACKAGE* pPackage, | ||
| 1022 | __in_opt BURN_PAYLOAD* pPayload | ||
| 1023 | ) | ||
| 1024 | { | ||
| 1025 | AssertSz(pContainer || pPayload, "Must provide a container or a payload."); | ||
| 1026 | |||
| 1027 | HRESULT hr = S_OK; | ||
| 1028 | BURN_CACHE_PROGRESS_CONTEXT progress = { }; | ||
| 1029 | LPCWSTR wzPackageOrContainerId = pContainer ? pContainer->sczId : pPackage ? pPackage->sczId : NULL; | ||
| 1030 | LPCWSTR wzPayloadId = pPayload ? pPayload->sczKey : NULL; | ||
| 1031 | |||
| 1032 | progress.pCacheContext = pContext; | ||
| 1033 | progress.pContainer = pContainer; | ||
| 1034 | progress.pPackage = pPackage; | ||
| 1035 | progress.pPayload = pPayload; | ||
| 1036 | progress.type = BURN_CACHE_PROGRESS_TYPE_CONTAINER_OR_PAYLOAD_VERIFY; | ||
| 1037 | |||
| 1038 | hr = UserExperienceOnCacheContainerOrPayloadVerifyBegin(pContext->pUX, wzPackageOrContainerId, wzPayloadId); | ||
| 1039 | ExitOnRootFailure(hr, "BA aborted cache container or payload verify begin."); | ||
| 1040 | |||
| 1041 | if (pContainer) | ||
| 1042 | { | ||
| 1043 | hr = CacheVerifyContainer(pContainer, pContext->wzLayoutDirectory); | ||
| 1044 | } | ||
| 1045 | else | ||
| 1046 | { | ||
| 1047 | hr = CacheVerifyPayload(pPayload, pContext->wzLayoutDirectory ? pContext->wzLayoutDirectory : pPackage->sczCacheFolder); | ||
| 1048 | } | ||
| 1049 | |||
| 1050 | // This was best effort to avoid acquiring the container or payload. | ||
| 1051 | if (FAILED(hr)) | ||
| 1052 | { | ||
| 1053 | ExitFunction(); | ||
| 1054 | } | ||
| 1055 | |||
| 1056 | pContext->qwSuccessfulCacheProgress += pContainer ? pContainer->qwFileSize : pPayload->qwFileSize; | ||
| 1057 | |||
| 1058 | hr = CompleteCacheProgress(&progress, pContainer ? pContainer->qwFileSize : pPayload->qwFileSize); | ||
| 1059 | |||
| 1060 | LExit: | ||
| 1061 | UserExperienceOnCacheContainerOrPayloadVerifyComplete(pContext->pUX, wzPackageOrContainerId, wzPayloadId, hr); | ||
| 1062 | |||
| 1063 | return hr; | ||
| 1064 | } | ||
| 1065 | |||
| 1015 | static HRESULT ExtractContainer( | 1066 | static HRESULT ExtractContainer( |
| 1016 | __in BURN_CACHE_CONTEXT* pContext, | 1067 | __in BURN_CACHE_CONTEXT* pContext, |
| 1017 | __in BURN_CONTAINER* pContainer | 1068 | __in BURN_CONTAINER* pContainer |
| @@ -1112,9 +1163,21 @@ static HRESULT LayoutBundle( | |||
| 1112 | 1163 | ||
| 1113 | if (CSTR_EQUAL == nEquivalentPaths && FileExistsEx(sczDestinationPath, NULL)) | 1164 | if (CSTR_EQUAL == nEquivalentPaths && FileExistsEx(sczDestinationPath, NULL)) |
| 1114 | { | 1165 | { |
| 1115 | // TODO: send Acquire and Verify messages to BA? | 1166 | hr = UserExperienceOnCacheContainerOrPayloadVerifyBegin(pContext->pUX, NULL, NULL); |
| 1116 | pContext->qwSuccessfulCacheProgress += 2 * qwBundleSize; | 1167 | if (FAILED(hr)) |
| 1117 | ExitFunction1(hr = S_OK); | 1168 | { |
| 1169 | UserExperienceOnCacheContainerOrPayloadVerifyComplete(pContext->pUX, NULL, NULL, hr); | ||
| 1170 | ExitOnRootFailure(hr, "BA aborted cache payload verify begin."); | ||
| 1171 | } | ||
| 1172 | |||
| 1173 | pContext->qwSuccessfulCacheProgress += qwBundleSize; | ||
| 1174 | |||
| 1175 | progress.type = BURN_CACHE_PROGRESS_TYPE_CONTAINER_OR_PAYLOAD_VERIFY; | ||
| 1176 | hr = CompleteCacheProgress(&progress, qwBundleSize); | ||
| 1177 | |||
| 1178 | UserExperienceOnCacheContainerOrPayloadVerifyComplete(pContext->pUX, NULL, NULL, hr); | ||
| 1179 | |||
| 1180 | ExitFunction(); | ||
| 1118 | } | 1181 | } |
| 1119 | 1182 | ||
| 1120 | do | 1183 | do |
| @@ -1702,6 +1765,10 @@ static DWORD CALLBACK CacheProgressRoutine( | |||
| 1702 | hr = UserExperienceOnCacheVerifyProgress(pProgress->pCacheContext->pUX, wzPackageOrContainerId, wzPayloadId, TotalBytesTransferred.QuadPart, TotalFileSize.QuadPart, dwOverallPercentage); | 1765 | hr = UserExperienceOnCacheVerifyProgress(pProgress->pCacheContext->pUX, wzPackageOrContainerId, wzPayloadId, TotalBytesTransferred.QuadPart, TotalFileSize.QuadPart, dwOverallPercentage); |
| 1703 | ExitOnRootFailure(hr, "BA aborted verify of %hs: %ls", pProgress->pContainer ? "container" : "payload", pProgress->pContainer ? wzPackageOrContainerId : wzPayloadId); | 1766 | ExitOnRootFailure(hr, "BA aborted verify of %hs: %ls", pProgress->pContainer ? "container" : "payload", pProgress->pContainer ? wzPackageOrContainerId : wzPayloadId); |
| 1704 | break; | 1767 | break; |
| 1768 | case BURN_CACHE_PROGRESS_TYPE_CONTAINER_OR_PAYLOAD_VERIFY: | ||
| 1769 | hr = UserExperienceOnCacheContainerOrPayloadVerifyProgress(pProgress->pCacheContext->pUX, wzPackageOrContainerId, wzPayloadId, TotalBytesTransferred.QuadPart, TotalFileSize.QuadPart, dwOverallPercentage); | ||
| 1770 | ExitOnRootFailure(hr, "BA aborted container or payload verify: %ls", wzPayloadId); | ||
| 1771 | break; | ||
| 1705 | } | 1772 | } |
| 1706 | 1773 | ||
| 1707 | LExit: | 1774 | LExit: |
diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp index b42eb5a7..02c67fc5 100644 --- a/src/engine/userexperience.cpp +++ b/src/engine/userexperience.cpp | |||
| @@ -610,6 +610,93 @@ LExit: | |||
| 610 | return hr; | 610 | return hr; |
| 611 | } | 611 | } |
| 612 | 612 | ||
| 613 | EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyBegin( | ||
| 614 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 615 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 616 | __in_z_opt LPCWSTR wzPayloadId | ||
| 617 | ) | ||
| 618 | { | ||
| 619 | HRESULT hr = S_OK; | ||
| 620 | BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_ARGS args = { }; | ||
| 621 | BA_ONCACHECONTAINERORPAYLOADVERIFYBEGIN_RESULTS results = { }; | ||
| 622 | |||
| 623 | args.cbSize = sizeof(args); | ||
| 624 | args.wzPackageOrContainerId = wzPackageOrContainerId; | ||
| 625 | args.wzPayloadId = wzPayloadId; | ||
| 626 | |||
| 627 | results.cbSize = sizeof(results); | ||
| 628 | |||
| 629 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYBEGIN, &args, &results); | ||
| 630 | ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyBegin failed."); | ||
| 631 | |||
| 632 | if (results.fCancel) | ||
| 633 | { | ||
| 634 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); | ||
| 635 | } | ||
| 636 | |||
| 637 | LExit: | ||
| 638 | return hr; | ||
| 639 | } | ||
| 640 | |||
| 641 | EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyComplete( | ||
| 642 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 643 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 644 | __in_z_opt LPCWSTR wzPayloadId, | ||
| 645 | __in HRESULT hrStatus | ||
| 646 | ) | ||
| 647 | { | ||
| 648 | HRESULT hr = S_OK; | ||
| 649 | BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_ARGS args = { }; | ||
| 650 | BA_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE_RESULTS results = { }; | ||
| 651 | |||
| 652 | args.cbSize = sizeof(args); | ||
| 653 | args.wzPackageOrContainerId = wzPackageOrContainerId; | ||
| 654 | args.wzPayloadId = wzPayloadId; | ||
| 655 | args.hrStatus = hrStatus; | ||
| 656 | |||
| 657 | results.cbSize = sizeof(results); | ||
| 658 | |||
| 659 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYCOMPLETE, &args, &results); | ||
| 660 | ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyComplete failed."); | ||
| 661 | |||
| 662 | LExit: | ||
| 663 | return hr; | ||
| 664 | } | ||
| 665 | |||
| 666 | EXTERN_C BAAPI UserExperienceOnCacheContainerOrPayloadVerifyProgress( | ||
| 667 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 668 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 669 | __in_z_opt LPCWSTR wzPayloadId, | ||
| 670 | __in DWORD64 dw64Progress, | ||
| 671 | __in DWORD64 dw64Total, | ||
| 672 | __in DWORD dwOverallPercentage | ||
| 673 | ) | ||
| 674 | { | ||
| 675 | HRESULT hr = S_OK; | ||
| 676 | BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_ARGS args = { }; | ||
| 677 | BA_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS_RESULTS results = { }; | ||
| 678 | |||
| 679 | args.cbSize = sizeof(args); | ||
| 680 | args.wzPackageOrContainerId = wzPackageOrContainerId; | ||
| 681 | args.wzPayloadId = wzPayloadId; | ||
| 682 | args.dw64Progress = dw64Progress; | ||
| 683 | args.dw64Total = dw64Total; | ||
| 684 | args.dwOverallPercentage = dwOverallPercentage; | ||
| 685 | |||
| 686 | results.cbSize = sizeof(results); | ||
| 687 | |||
| 688 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHECONTAINERORPAYLOADVERIFYPROGRESS, &args, &results); | ||
| 689 | ExitOnFailure(hr, "BA OnCacheContainerOrPayloadVerifyProgress failed."); | ||
| 690 | |||
| 691 | if (results.fCancel) | ||
| 692 | { | ||
| 693 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); | ||
| 694 | } | ||
| 695 | |||
| 696 | LExit: | ||
| 697 | return hr; | ||
| 698 | } | ||
| 699 | |||
| 613 | EXTERN_C BAAPI UserExperienceOnCachePackageBegin( | 700 | EXTERN_C BAAPI UserExperienceOnCachePackageBegin( |
| 614 | __in BURN_USER_EXPERIENCE* pUserExperience, | 701 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 615 | __in_z LPCWSTR wzPackageId, | 702 | __in_z LPCWSTR wzPackageId, |
diff --git a/src/engine/userexperience.h b/src/engine/userexperience.h index e09c9ec1..d3dfb810 100644 --- a/src/engine/userexperience.h +++ b/src/engine/userexperience.h | |||
| @@ -165,6 +165,25 @@ BAAPI UserExperienceOnCacheComplete( | |||
| 165 | __in BURN_USER_EXPERIENCE* pUserExperience, | 165 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 166 | __in HRESULT hrStatus | 166 | __in HRESULT hrStatus |
| 167 | ); | 167 | ); |
| 168 | BAAPI UserExperienceOnCacheContainerOrPayloadVerifyBegin( | ||
| 169 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 170 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 171 | __in_z_opt LPCWSTR wzPayloadId | ||
| 172 | ); | ||
| 173 | BAAPI UserExperienceOnCacheContainerOrPayloadVerifyComplete( | ||
| 174 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 175 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 176 | __in_z_opt LPCWSTR wzPayloadId, | ||
| 177 | __in HRESULT hrStatus | ||
| 178 | ); | ||
| 179 | BAAPI UserExperienceOnCacheContainerOrPayloadVerifyProgress( | ||
| 180 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 181 | __in_z_opt LPCWSTR wzPackageOrContainerId, | ||
| 182 | __in_z_opt LPCWSTR wzPayloadId, | ||
| 183 | __in DWORD64 dw64Progress, | ||
| 184 | __in DWORD64 dw64Total, | ||
| 185 | __in DWORD dwOverallPercentage | ||
| 186 | ); | ||
| 168 | BAAPI UserExperienceOnCachePackageBegin( | 187 | BAAPI UserExperienceOnCachePackageBegin( |
| 169 | __in BURN_USER_EXPERIENCE* pUserExperience, | 188 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 170 | __in_z LPCWSTR wzPackageId, | 189 | __in_z LPCWSTR wzPackageId, |
