aboutsummaryrefslogtreecommitdiff
path: root/src/engine/apply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/apply.cpp')
-rw-r--r--src/engine/apply.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/engine/apply.cpp b/src/engine/apply.cpp
index 5402e55c..f80baf26 100644
--- a/src/engine/apply.cpp
+++ b/src/engine/apply.cpp
@@ -869,6 +869,12 @@ static HRESULT ApplyExtractContainer(
869{ 869{
870 HRESULT hr = S_OK; 870 HRESULT hr = S_OK;
871 871
872 if (pContainer->qwCommittedCacheProgress)
873 {
874 pContext->qwSuccessfulCacheProgress -= pContainer->qwCommittedCacheProgress;
875 pContainer->qwCommittedCacheProgress = 0;
876 }
877
872 if (!pContainer->fActuallyAttached) 878 if (!pContainer->fActuallyAttached)
873 { 879 {
874 hr = ApplyAcquireContainerOrPayload(pContext, pContainer, NULL, NULL); 880 hr = ApplyAcquireContainerOrPayload(pContext, pContainer, NULL, NULL);
@@ -884,7 +890,8 @@ static HRESULT ApplyExtractContainer(
884 CacheSetLastUsedSource(pContext->pVariables, pContext->sczLastUsedFolderCandidate, pContainer->sczFilePath); 890 CacheSetLastUsedSource(pContext->pVariables, pContext->sczLastUsedFolderCandidate, pContainer->sczFilePath);
885 } 891 }
886 892
887 pContext->qwSuccessfulCacheProgress += pContainer->qwFileSize; 893 pContext->qwSuccessfulCacheProgress += pContainer->qwExtractSizeTotal;
894 pContainer->qwCommittedCacheProgress += pContainer->qwExtractSizeTotal;
888 895
889LExit: 896LExit:
890 ReleaseNullStr(pContext->sczLastUsedFolderCandidate); 897 ReleaseNullStr(pContext->sczLastUsedFolderCandidate);
@@ -1110,7 +1117,7 @@ static HRESULT ExtractContainer(
1110 for (DWORD iExtract = 0; iExtract < pContext->pPayloads->cPayloads; ++iExtract) 1117 for (DWORD iExtract = 0; iExtract < pContext->pPayloads->cPayloads; ++iExtract)
1111 { 1118 {
1112 BURN_PAYLOAD* pExtract = pContext->pPayloads->rgPayloads + iExtract; 1119 BURN_PAYLOAD* pExtract = pContext->pPayloads->rgPayloads + iExtract;
1113 if (pExtract->sczUnverifiedPath && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczExtractPayloadId, -1, pExtract->sczSourcePath, -1)) 1120 if (pExtract->sczUnverifiedPath && pExtract->cRemainingInstances && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczExtractPayloadId, -1, pExtract->sczSourcePath, -1))
1114 { 1121 {
1115 hr = PreparePayloadDestinationPath(pExtract->sczUnverifiedPath); 1122 hr = PreparePayloadDestinationPath(pExtract->sczUnverifiedPath);
1116 ExitOnFailure(hr, "Failed to prepare payload destination path: %ls", pExtract->sczUnverifiedPath); 1123 ExitOnFailure(hr, "Failed to prepare payload destination path: %ls", pExtract->sczUnverifiedPath);
@@ -1747,7 +1754,11 @@ static HRESULT CompleteCacheProgress(
1747 if (PROGRESS_CONTINUE == dwResult) 1754 if (PROGRESS_CONTINUE == dwResult)
1748 { 1755 {
1749 pContext->pCacheContext->qwSuccessfulCacheProgress += qwFileSize; 1756 pContext->pCacheContext->qwSuccessfulCacheProgress += qwFileSize;
1750 if (pContext->pPayloadGroupItem) 1757 if (pContext->pContainer)
1758 {
1759 pContext->pContainer->qwCommittedCacheProgress += qwFileSize;
1760 }
1761 else if (pContext->pPayloadGroupItem)
1751 { 1762 {
1752 pContext->pPayloadGroupItem->qwCommittedCacheProgress += qwFileSize; 1763 pContext->pPayloadGroupItem->qwCommittedCacheProgress += qwFileSize;
1753 } 1764 }