aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-05-14 18:23:05 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-05-16 21:26:53 +1000
commit05781eabd0e71261959aabe27ab5ff2d3d859ca2 (patch)
treebe48c354c90a73c7c8c3f1eeca1df26714de1c87
parent49b650dcfd513dcda5913cebe32839d0b28fbc2e (diff)
downloadwix-05781eabd0e71261959aabe27ab5ff2d3d859ca2.tar.gz
wix-05781eabd0e71261959aabe27ab5ff2d3d859ca2.tar.bz2
wix-05781eabd0e71261959aabe27ab5ff2d3d859ca2.zip
WIXFEAT:6164 Add WiuInitializeInternalUI.
-rw-r--r--src/dutil/inc/wiutil.h7
-rw-r--r--src/dutil/wiutil.cpp35
2 files changed, 34 insertions, 8 deletions
diff --git a/src/dutil/inc/wiutil.h b/src/dutil/inc/wiutil.h
index 4264b815..07f6b56c 100644
--- a/src/dutil/inc/wiutil.h
+++ b/src/dutil/inc/wiutil.h
@@ -330,10 +330,15 @@ HRESULT DAPI WiuEnableLog(
330 __in_z LPCWSTR wzLogFile, 330 __in_z LPCWSTR wzLogFile,
331 __in DWORD dwLogAttributes 331 __in DWORD dwLogAttributes
332 ); 332 );
333HRESULT DAPI WiuInitializeInternalUI(
334 __in INSTALLUILEVEL internalUILevel,
335 __in_opt HWND hwndParent,
336 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext
337 );
333HRESULT DAPI WiuInitializeExternalUI( 338HRESULT DAPI WiuInitializeExternalUI(
334 __in PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler, 339 __in PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler,
335 __in INSTALLUILEVEL internalUILevel, 340 __in INSTALLUILEVEL internalUILevel,
336 __in HWND hwndParent, 341 __in_opt HWND hwndParent,
337 __in LPVOID pvContext, 342 __in LPVOID pvContext,
338 __in BOOL fRollback, 343 __in BOOL fRollback,
339 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext 344 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext
diff --git a/src/dutil/wiutil.cpp b/src/dutil/wiutil.cpp
index 1a489d54..1b3dd317 100644
--- a/src/dutil/wiutil.cpp
+++ b/src/dutil/wiutil.cpp
@@ -715,10 +715,32 @@ LExit:
715} 715}
716 716
717 717
718extern "C" HRESULT DAPI WiuInitializeInternalUI(
719 __in INSTALLUILEVEL internalUILevel,
720 __in_opt HWND hwndParent,
721 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext
722 )
723{
724 HRESULT hr = S_OK;
725
726 memset(pExecuteContext, 0, sizeof(WIU_MSI_EXECUTE_CONTEXT));
727
728 pExecuteContext->previousInstallUILevel = vpfnMsiSetInternalUI(internalUILevel, &hwndParent);
729 pExecuteContext->hwndPreviousParentWindow = hwndParent;
730
731 if (INSTALLUILEVEL_NOCHANGE == pExecuteContext->previousInstallUILevel)
732 {
733 hr = E_INVALIDARG;
734 }
735
736 return hr;
737}
738
739
718extern "C" HRESULT DAPI WiuInitializeExternalUI( 740extern "C" HRESULT DAPI WiuInitializeExternalUI(
719 __in PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler, 741 __in PFN_MSIEXECUTEMESSAGEHANDLER pfnMessageHandler,
720 __in INSTALLUILEVEL internalUILevel, 742 __in INSTALLUILEVEL internalUILevel,
721 __in HWND hwndParent, 743 __in_opt HWND hwndParent,
722 __in LPVOID pvContext, 744 __in LPVOID pvContext,
723 __in BOOL fRollback, 745 __in BOOL fRollback,
724 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext 746 __in WIU_MSI_EXECUTE_CONTEXT* pExecuteContext
@@ -730,7 +752,7 @@ extern "C" HRESULT DAPI WiuInitializeExternalUI(
730 DWORD dwMessageFilter = INSTALLLOGMODE_INITIALIZE | INSTALLLOGMODE_TERMINATE | 752 DWORD dwMessageFilter = INSTALLLOGMODE_INITIALIZE | INSTALLLOGMODE_TERMINATE |
731 INSTALLLOGMODE_FATALEXIT | INSTALLLOGMODE_ERROR | INSTALLLOGMODE_WARNING | 753 INSTALLLOGMODE_FATALEXIT | INSTALLLOGMODE_ERROR | INSTALLLOGMODE_WARNING |
732 INSTALLLOGMODE_RESOLVESOURCE | INSTALLLOGMODE_OUTOFDISKSPACE | 754 INSTALLLOGMODE_RESOLVESOURCE | INSTALLLOGMODE_OUTOFDISKSPACE |
733 INSTALLLOGMODE_ACTIONSTART | INSTALLLOGMODE_ACTIONDATA | INSTALLLOGMODE_COMMONDATA| 755 INSTALLLOGMODE_ACTIONSTART | INSTALLLOGMODE_ACTIONDATA | INSTALLLOGMODE_COMMONDATA |
734 INSTALLLOGMODE_PROGRESS | INSTALLLOGMODE_FILESINUSE; 756 INSTALLLOGMODE_PROGRESS | INSTALLLOGMODE_FILESINUSE;
735 757
736 if (MAKEDWORD(0, 4) <= vdwMsiDllMajorMinor) 758 if (MAKEDWORD(0, 4) <= vdwMsiDllMajorMinor)
@@ -738,15 +760,14 @@ extern "C" HRESULT DAPI WiuInitializeExternalUI(
738 dwMessageFilter |= INSTALLLOGMODE_RMFILESINUSE; 760 dwMessageFilter |= INSTALLLOGMODE_RMFILESINUSE;
739 } 761 }
740 762
741 memset(pExecuteContext, 0, sizeof(WIU_MSI_EXECUTE_CONTEXT)); 763 // Wire the internal and external UI handler.
764 hr = WiuInitializeInternalUI(internalUILevel, hwndParent, pExecuteContext);
765 ExitOnFailure(hr, "Failed to set internal UI level and window.");
766
742 pExecuteContext->fRollback = fRollback; 767 pExecuteContext->fRollback = fRollback;
743 pExecuteContext->pfnMessageHandler = pfnMessageHandler; 768 pExecuteContext->pfnMessageHandler = pfnMessageHandler;
744 pExecuteContext->pvContext = pvContext; 769 pExecuteContext->pvContext = pvContext;
745 770
746 // Wire the internal and external UI handler.
747 pExecuteContext->previousInstallUILevel = vpfnMsiSetInternalUI(internalUILevel, &hwndParent);
748 pExecuteContext->hwndPreviousParentWindow = hwndParent;
749
750 // If the external UI record is available (MSI version >= 3.1) use it but fall back to the standard external 771 // If the external UI record is available (MSI version >= 3.1) use it but fall back to the standard external
751 // UI handler if necesary. 772 // UI handler if necesary.
752 if (vpfnMsiSetExternalUIRecord) 773 if (vpfnMsiSetExternalUIRecord)