aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/userexperience.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/userexperience.cpp')
-rw-r--r--src/burn/engine/userexperience.cpp118
1 files changed, 117 insertions, 1 deletions
diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp
index 6ea16905..1439f5f2 100644
--- a/src/burn/engine/userexperience.cpp
+++ b/src/burn/engine/userexperience.cpp
@@ -104,7 +104,7 @@ extern "C" HRESULT UserExperienceLoad(
104 args.pCommand = pCommand; 104 args.pCommand = pCommand;
105 args.pfnBootstrapperEngineProc = EngineForApplicationProc; 105 args.pfnBootstrapperEngineProc = EngineForApplicationProc;
106 args.pvBootstrapperEngineProcContext = pEngineContext; 106 args.pvBootstrapperEngineProcContext = pEngineContext;
107 args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 12, 30, 0); 107 args.qwEngineAPIVersion = MAKEQWORDVERSION(2022, 1, 10, 0);
108 108
109 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); 109 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS);
110 110
@@ -1015,6 +1015,36 @@ LExit:
1015 return hr; 1015 return hr;
1016} 1016}
1017 1017
1018EXTERN_C BAAPI UserExperienceOnDetectCompatibleMsiPackage(
1019 __in BURN_USER_EXPERIENCE* pUserExperience,
1020 __in_z LPCWSTR wzPackageId,
1021 __in_z LPCWSTR wzCompatiblePackageId,
1022 __in VERUTIL_VERSION* pCompatiblePackageVersion
1023 )
1024{
1025 HRESULT hr = S_OK;
1026 BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS args = { };
1027 BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS results = { };
1028
1029 args.cbSize = sizeof(args);
1030 args.wzPackageId = wzPackageId;
1031 args.wzCompatiblePackageId = wzCompatiblePackageId;
1032 args.wzCompatiblePackageVersion = pCompatiblePackageVersion->sczVersion;
1033
1034 results.cbSize = sizeof(results);
1035
1036 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, &args, &results);
1037 ExitOnFailure(hr, "BA OnDetectCompatibleMsiPackage failed.");
1038
1039 if (results.fCancel)
1040 {
1041 hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1042 }
1043
1044LExit:
1045 return hr;
1046}
1047
1018EXTERN_C BAAPI UserExperienceOnDetectComplete( 1048EXTERN_C BAAPI UserExperienceOnDetectComplete(
1019 __in BURN_USER_EXPERIENCE* pUserExperience, 1049 __in BURN_USER_EXPERIENCE* pUserExperience,
1020 __in HRESULT hrStatus, 1050 __in HRESULT hrStatus,
@@ -1798,6 +1828,67 @@ LExit:
1798 return hr; 1828 return hr;
1799} 1829}
1800 1830
1831EXTERN_C BAAPI UserExperienceOnPlanCompatibleMsiPackageBegin(
1832 __in BURN_USER_EXPERIENCE* pUserExperience,
1833 __in_z LPCWSTR wzPackageId,
1834 __in_z LPCWSTR wzCompatiblePackageId,
1835 __in VERUTIL_VERSION* pCompatiblePackageVersion,
1836 __inout BOOL* pfRequested
1837 )
1838{
1839 HRESULT hr = S_OK;
1840 BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS args = { };
1841 BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS results = { };
1842
1843 args.cbSize = sizeof(args);
1844 args.wzPackageId = wzPackageId;
1845 args.wzCompatiblePackageId = wzCompatiblePackageId;
1846 args.wzCompatiblePackageVersion = pCompatiblePackageVersion->sczVersion;
1847 args.fRecommendedRemove = *pfRequested;
1848
1849 results.cbSize = sizeof(results);
1850 results.fRequestRemove = *pfRequested;
1851
1852 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, &args, &results);
1853 ExitOnFailure(hr, "BA OnPlanCompatibleMsiPackageBegin failed.");
1854
1855 if (results.fCancel)
1856 {
1857 hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT);
1858 }
1859 *pfRequested = results.fRequestRemove;
1860
1861LExit:
1862 return hr;
1863}
1864
1865EXTERN_C BAAPI UserExperienceOnPlanCompatibleMsiPackageComplete(
1866 __in BURN_USER_EXPERIENCE* pUserExperience,
1867 __in_z LPCWSTR wzPackageId,
1868 __in_z LPCWSTR wzCompatiblePackageId,
1869 __in HRESULT hrStatus,
1870 __in BOOL fRequested
1871 )
1872{
1873 HRESULT hr = S_OK;
1874 BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS args = { };
1875 BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS results = { };
1876
1877 args.cbSize = sizeof(args);
1878 args.wzPackageId = wzPackageId;
1879 args.wzCompatiblePackageId = wzCompatiblePackageId;
1880 args.hrStatus = hrStatus;
1881 args.fRequestedRemove = fRequested;
1882
1883 results.cbSize = sizeof(results);
1884
1885 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, &args, &results);
1886 ExitOnFailure(hr, "BA OnPlanCompatibleMsiPackageComplete failed.");
1887
1888LExit:
1889 return hr;
1890}
1891
1801EXTERN_C BAAPI UserExperienceOnPlanMsiFeature( 1892EXTERN_C BAAPI UserExperienceOnPlanMsiFeature(
1802 __in BURN_USER_EXPERIENCE* pUserExperience, 1893 __in BURN_USER_EXPERIENCE* pUserExperience,
1803 __in_z LPCWSTR wzPackageId, 1894 __in_z LPCWSTR wzPackageId,
@@ -1932,6 +2023,31 @@ LExit:
1932 return hr; 2023 return hr;
1933} 2024}
1934 2025
2026EXTERN_C BAAPI UserExperienceOnPlannedCompatiblePackage(
2027 __in BURN_USER_EXPERIENCE* pUserExperience,
2028 __in_z LPCWSTR wzPackageId,
2029 __in_z LPCWSTR wzCompatiblePackageId,
2030 __in BOOL fRemove
2031 )
2032{
2033 HRESULT hr = S_OK;
2034 BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS args = { };
2035 BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS results = { };
2036
2037 args.cbSize = sizeof(args);
2038 args.wzPackageId = wzPackageId;
2039 args.wzCompatiblePackageId = wzCompatiblePackageId;
2040 args.fRemove = fRemove;
2041
2042 results.cbSize = sizeof(results);
2043
2044 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, &args, &results);
2045 ExitOnFailure(hr, "BA OnPlannedCompatiblePackage failed.");
2046
2047LExit:
2048 return hr;
2049}
2050
1935EXTERN_C BAAPI UserExperienceOnPlannedPackage( 2051EXTERN_C BAAPI UserExperienceOnPlannedPackage(
1936 __in BURN_USER_EXPERIENCE* pUserExperience, 2052 __in BURN_USER_EXPERIENCE* pUserExperience,
1937 __in_z LPCWSTR wzPackageId, 2053 __in_z LPCWSTR wzPackageId,