diff options
Diffstat (limited to 'src/burn/engine/userexperience.cpp')
-rw-r--r-- | src/burn/engine/userexperience.cpp | 118 |
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 | ||
1018 | EXTERN_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 | |||
1044 | LExit: | ||
1045 | return hr; | ||
1046 | } | ||
1047 | |||
1018 | EXTERN_C BAAPI UserExperienceOnDetectComplete( | 1048 | EXTERN_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 | ||
1831 | EXTERN_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 | |||
1861 | LExit: | ||
1862 | return hr; | ||
1863 | } | ||
1864 | |||
1865 | EXTERN_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 | |||
1888 | LExit: | ||
1889 | return hr; | ||
1890 | } | ||
1891 | |||
1801 | EXTERN_C BAAPI UserExperienceOnPlanMsiFeature( | 1892 | EXTERN_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 | ||
2026 | EXTERN_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 | |||
2047 | LExit: | ||
2048 | return hr; | ||
2049 | } | ||
2050 | |||
1935 | EXTERN_C BAAPI UserExperienceOnPlannedPackage( | 2051 | EXTERN_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, |