diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-04-19 17:11:46 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-04-19 23:12:55 -0500 |
| commit | 61a8d39f689222faa677e4bd79475cd77795c57a (patch) | |
| tree | 951c72ede571b23a1b1513136c861066ab8d3313 /src/engine/cache.cpp | |
| parent | 707e77212e105cd7fa8a74baca6efa3ae3e6d6b3 (diff) | |
| download | wix-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.cpp | 11 |
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 | } |
