aboutsummaryrefslogtreecommitdiff
path: root/src/engine/cache.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-04-19 17:11:46 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-04-19 23:12:55 -0500
commit61a8d39f689222faa677e4bd79475cd77795c57a (patch)
tree951c72ede571b23a1b1513136c861066ab8d3313 /src/engine/cache.cpp
parent707e77212e105cd7fa8a74baca6efa3ae3e6d6b3 (diff)
downloadwix-61a8d39f689222faa677e4bd79475cd77795c57a.tar.gz
wix-61a8d39f689222faa677e4bd79475cd77795c57a.tar.bz2
wix-61a8d39f689222faa677e4bd79475cd77795c57a.zip
Allow setting source from OnCacheAcquireResolving.
Diffstat (limited to 'src/engine/cache.cpp')
-rw-r--r--src/engine/cache.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/engine/cache.cpp b/src/engine/cache.cpp
index 16f2c1e5..764de065 100644
--- a/src/engine/cache.cpp
+++ b/src/engine/cache.cpp
@@ -440,7 +440,8 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
440 __in_z_opt LPCWSTR wzLayoutDirectory, 440 __in_z_opt LPCWSTR wzLayoutDirectory,
441 __in BURN_VARIABLES* pVariables, 441 __in BURN_VARIABLES* pVariables,
442 __inout LPWSTR** prgSearchPaths, 442 __inout LPWSTR** prgSearchPaths,
443 __out DWORD* pcSearchPaths 443 __out DWORD* pcSearchPaths,
444 __out DWORD* pdwLikelySearchPath
444 ) 445 )
445{ 446{
446 HRESULT hr = S_OK; 447 HRESULT hr = S_OK;
@@ -452,6 +453,7 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
452 BOOL fTryRelativePath = FALSE; 453 BOOL fTryRelativePath = FALSE;
453 BOOL fSourceIsAbsolute = FALSE; 454 BOOL fSourceIsAbsolute = FALSE;
454 DWORD cSearchPaths = 0; 455 DWORD cSearchPaths = 0;
456 DWORD dwLikelySearchPath = 0;
455 457
456 AssertSz(vfInitializedCache, "Cache wasn't initialized"); 458 AssertSz(vfInitializedCache, "Cache wasn't initialized");
457 459
@@ -473,6 +475,12 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
473 hr = StrAllocString(psczPath, wzSourcePath, 0); 475 hr = StrAllocString(psczPath, wzSourcePath, 0);
474 ExitOnFailure(hr, "Failed to copy absolute source path."); 476 ExitOnFailure(hr, "Failed to copy absolute source path.");
475 } 477 }
478 else
479 {
480 // If none of the paths exist, then most BAs will want to prompt the user with a possible path.
481 // The destination path is a temporary location and so not really a possible path.
482 dwLikelySearchPath = 1;
483 }
476 484
477 // Try the destination path next. 485 // Try the destination path next.
478 hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(prgSearchPaths), cSearchPaths + 1, sizeof(LPWSTR), BURN_CACHE_MAX_SEARCH_PATHS); 486 hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(prgSearchPaths), cSearchPaths + 1, sizeof(LPWSTR), BURN_CACHE_MAX_SEARCH_PATHS);
@@ -593,6 +601,7 @@ LExit:
593 601
594 AssertSz(cSearchPaths <= BURN_CACHE_MAX_SEARCH_PATHS, "Got more than BURN_CACHE_MAX_SEARCH_PATHS search paths"); 602 AssertSz(cSearchPaths <= BURN_CACHE_MAX_SEARCH_PATHS, "Got more than BURN_CACHE_MAX_SEARCH_PATHS search paths");
595 *pcSearchPaths = cSearchPaths; 603 *pcSearchPaths = cSearchPaths;
604 *pdwLikelySearchPath = dwLikelySearchPath;
596 605
597 return hr; 606 return hr;
598} 607}