diff options
author | Nir Bar <nir.bar@panel-sw.co.il> | 2021-03-17 14:45:03 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-03-17 14:49:24 -0500 |
commit | b7582318f6cb6e166f5ca22128caea2a97551a1f (patch) | |
tree | f92071000dd33376e6b982b52ed2172278ef4035 /src/engine/package.cpp | |
parent | af68033509730ffe01602f839861a47287bb709f (diff) | |
download | wix-b7582318f6cb6e166f5ca22128caea2a97551a1f.tar.gz wix-b7582318f6cb6e166f5ca22128caea2a97551a1f.tar.bz2 wix-b7582318f6cb6e166f5ca22128caea2a97551a1f.zip |
Use wiutil to start/end msi transactions
Release MSI transaction handles immediately
contributes to #5386
Diffstat (limited to 'src/engine/package.cpp')
-rw-r--r-- | src/engine/package.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/engine/package.cpp b/src/engine/package.cpp index 115866f3..124b356b 100644 --- a/src/engine/package.cpp +++ b/src/engine/package.cpp | |||
@@ -377,6 +377,7 @@ extern "C" void PackagesUninitialize( | |||
377 | for (DWORD i = 0; i < pPackages->cRollbackBoundaries; ++i) | 377 | for (DWORD i = 0; i < pPackages->cRollbackBoundaries; ++i) |
378 | { | 378 | { |
379 | ReleaseStr(pPackages->rgRollbackBoundaries[i].sczId); | 379 | ReleaseStr(pPackages->rgRollbackBoundaries[i].sczId); |
380 | ReleaseStr(pPackages->rgRollbackBoundaries[i].sczLogPath); | ||
380 | } | 381 | } |
381 | MemFree(pPackages->rgRollbackBoundaries); | 382 | MemFree(pPackages->rgRollbackBoundaries); |
382 | } | 383 | } |
@@ -511,6 +512,32 @@ LExit: | |||
511 | return hr; | 512 | return hr; |
512 | } | 513 | } |
513 | 514 | ||
515 | extern "C" HRESULT PackageFindRollbackBoundaryById( | ||
516 | __in BURN_PACKAGES* pPackages, | ||
517 | __in_z LPCWSTR wzId, | ||
518 | __out BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary | ||
519 | ) | ||
520 | { | ||
521 | HRESULT hr = S_OK; | ||
522 | BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL; | ||
523 | |||
524 | for (DWORD i = 0; i < pPackages->cRollbackBoundaries; ++i) | ||
525 | { | ||
526 | pRollbackBoundary = &pPackages->rgRollbackBoundaries[i]; | ||
527 | |||
528 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pRollbackBoundary->sczId, -1, wzId, -1)) | ||
529 | { | ||
530 | *ppRollbackBoundary = pRollbackBoundary; | ||
531 | ExitFunction1(hr = S_OK); | ||
532 | } | ||
533 | } | ||
534 | |||
535 | hr = E_NOTFOUND; | ||
536 | |||
537 | LExit: | ||
538 | return hr; | ||
539 | } | ||
540 | |||
514 | 541 | ||
515 | // internal function declarations | 542 | // internal function declarations |
516 | 543 | ||