diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-12-10 11:42:44 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-12-11 20:03:13 -0600 |
commit | fc30db9fa3aa1d25a6ef078452864673caa67ec5 (patch) | |
tree | e3415a5a1329a867b2934a038243e95098214ec3 /src/api | |
parent | 1d58b3333d1d694d08b68f6c87223aa504bfe773 (diff) | |
download | wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.tar.gz wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.tar.bz2 wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.zip |
Add BA events for setting the update bundle.
Fixes #6410
Diffstat (limited to 'src/api')
16 files changed, 292 insertions, 2 deletions
diff --git a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h index ad920577..2ffcf9d6 100644 --- a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h +++ b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h | |||
@@ -197,6 +197,8 @@ enum BOOTSTRAPPER_APPLICATION_MESSAGE | |||
197 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, | 197 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, |
198 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, | 198 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, |
199 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, | 199 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, |
200 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, | ||
201 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, | ||
200 | }; | 202 | }; |
201 | 203 | ||
202 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION | 204 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION |
@@ -1228,6 +1230,29 @@ struct BA_ONROLLBACKMSITRANSACTIONCOMPLETE_RESULTS | |||
1228 | DWORD cbSize; | 1230 | DWORD cbSize; |
1229 | }; | 1231 | }; |
1230 | 1232 | ||
1233 | struct BA_ONSETUPDATEBEGIN_ARGS | ||
1234 | { | ||
1235 | DWORD cbSize; | ||
1236 | }; | ||
1237 | |||
1238 | struct BA_ONSETUPDATEBEGIN_RESULTS | ||
1239 | { | ||
1240 | DWORD cbSize; | ||
1241 | }; | ||
1242 | |||
1243 | struct BA_ONSETUPDATECOMPLETE_ARGS | ||
1244 | { | ||
1245 | DWORD cbSize; | ||
1246 | HRESULT hrStatus; | ||
1247 | LPCWSTR wzPreviousPackageId; | ||
1248 | LPCWSTR wzNewPackageId; | ||
1249 | }; | ||
1250 | |||
1251 | struct BA_ONSETUPDATECOMPLETE_RESULTS | ||
1252 | { | ||
1253 | DWORD cbSize; | ||
1254 | }; | ||
1255 | |||
1231 | struct BA_ONSHUTDOWN_ARGS | 1256 | struct BA_ONSHUTDOWN_ARGS |
1232 | { | 1257 | { |
1233 | DWORD cbSize; | 1258 | DWORD cbSize; |
diff --git a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs index 0520463f..a78bf43f 100644 --- a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs | |||
@@ -253,6 +253,12 @@ namespace WixToolset.Mba.Core | |||
253 | /// <inheritdoc/> | 253 | /// <inheritdoc/> |
254 | public event EventHandler<CachePayloadExtractCompleteEventArgs> CachePayloadExtractComplete; | 254 | public event EventHandler<CachePayloadExtractCompleteEventArgs> CachePayloadExtractComplete; |
255 | 255 | ||
256 | /// <inheritdoc/> | ||
257 | public event EventHandler<SetUpdateBeginEventArgs> SetUpdateBegin; | ||
258 | |||
259 | /// <inheritdoc/> | ||
260 | public event EventHandler<SetUpdateCompleteEventArgs> SetUpdateComplete; | ||
261 | |||
256 | /// <summary> | 262 | /// <summary> |
257 | /// Entry point that is called when the bootstrapper application is ready to run. | 263 | /// Entry point that is called when the bootstrapper application is ready to run. |
258 | /// </summary> | 264 | /// </summary> |
@@ -1225,6 +1231,32 @@ namespace WixToolset.Mba.Core | |||
1225 | } | 1231 | } |
1226 | } | 1232 | } |
1227 | 1233 | ||
1234 | /// <summary> | ||
1235 | /// Called by the engine, raises the <see cref="SetUpdateBegin"/> event. | ||
1236 | /// </summary> | ||
1237 | /// <param name="args"></param> | ||
1238 | protected virtual void OnSetUpdateBegin(SetUpdateBeginEventArgs args) | ||
1239 | { | ||
1240 | EventHandler<SetUpdateBeginEventArgs> handler = this.SetUpdateBegin; | ||
1241 | if (null != handler) | ||
1242 | { | ||
1243 | handler(this, args); | ||
1244 | } | ||
1245 | } | ||
1246 | |||
1247 | /// <summary> | ||
1248 | /// Called by the engine, raises the <see cref="SetUpdateComplete"/> event. | ||
1249 | /// </summary> | ||
1250 | /// <param name="args"></param> | ||
1251 | protected virtual void OnSetUpdateComplete(SetUpdateCompleteEventArgs args) | ||
1252 | { | ||
1253 | EventHandler<SetUpdateCompleteEventArgs> handler = this.SetUpdateComplete; | ||
1254 | if (null != handler) | ||
1255 | { | ||
1256 | handler(this, args); | ||
1257 | } | ||
1258 | } | ||
1259 | |||
1228 | #region IBootstrapperApplication Members | 1260 | #region IBootstrapperApplication Members |
1229 | 1261 | ||
1230 | int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext) | 1262 | int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext) |
@@ -1895,6 +1927,22 @@ namespace WixToolset.Mba.Core | |||
1895 | return args.HResult; | 1927 | return args.HResult; |
1896 | } | 1928 | } |
1897 | 1929 | ||
1930 | int IBootstrapperApplication.OnSetUpdateBegin() | ||
1931 | { | ||
1932 | SetUpdateBeginEventArgs args = new SetUpdateBeginEventArgs(); | ||
1933 | this.OnSetUpdateBegin(args); | ||
1934 | |||
1935 | return args.HResult; | ||
1936 | } | ||
1937 | |||
1938 | int IBootstrapperApplication.OnSetUpdateComplete(int hrStatus, string wzPreviousPackageId, string wzNewPackageId) | ||
1939 | { | ||
1940 | SetUpdateCompleteEventArgs args = new SetUpdateCompleteEventArgs(hrStatus, wzPreviousPackageId, wzNewPackageId); | ||
1941 | this.OnSetUpdateComplete(args); | ||
1942 | |||
1943 | return args.HResult; | ||
1944 | } | ||
1945 | |||
1898 | #endregion | 1946 | #endregion |
1899 | } | 1947 | } |
1900 | } | 1948 | } |
diff --git a/src/api/burn/WixToolset.Mba.Core/BundleInfo.cs b/src/api/burn/WixToolset.Mba.Core/BundleInfo.cs index 4a533bf9..ee751ebf 100644 --- a/src/api/burn/WixToolset.Mba.Core/BundleInfo.cs +++ b/src/api/burn/WixToolset.Mba.Core/BundleInfo.cs | |||
@@ -41,6 +41,14 @@ namespace WixToolset.Mba.Core | |||
41 | return package; | 41 | return package; |
42 | } | 42 | } |
43 | 43 | ||
44 | /// <inheritdoc/> | ||
45 | public IPackageInfo AddUpdateBundleAsPackage(SetUpdateCompleteEventArgs e) | ||
46 | { | ||
47 | var package = PackageInfo.GetUpdateBundleAsPackage(e.NewPackageId); | ||
48 | this.Packages.Add(package.Id, package); | ||
49 | return package; | ||
50 | } | ||
51 | |||
44 | /// <summary> | 52 | /// <summary> |
45 | /// Parses BA manifest from the given stream. | 53 | /// Parses BA manifest from the given stream. |
46 | /// </summary> | 54 | /// </summary> |
diff --git a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs index 556db821..55c9e74c 100644 --- a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs +++ b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs | |||
@@ -2230,4 +2230,41 @@ namespace WixToolset.Mba.Core | |||
2230 | /// </summary> | 2230 | /// </summary> |
2231 | public string PayloadId { get; private set; } | 2231 | public string PayloadId { get; private set; } |
2232 | } | 2232 | } |
2233 | |||
2234 | /// <summary> | ||
2235 | /// EventArgs for <see cref="IDefaultBootstrapperApplication.SetUpdateBegin"/>. | ||
2236 | /// </summary> | ||
2237 | [Serializable] | ||
2238 | public class SetUpdateBeginEventArgs : HResultEventArgs | ||
2239 | { | ||
2240 | /// <summary /> | ||
2241 | public SetUpdateBeginEventArgs() | ||
2242 | { | ||
2243 | } | ||
2244 | } | ||
2245 | |||
2246 | /// <summary> | ||
2247 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.SetUpdateComplete"/> | ||
2248 | /// </summary> | ||
2249 | [Serializable] | ||
2250 | public class SetUpdateCompleteEventArgs : StatusEventArgs | ||
2251 | { | ||
2252 | /// <summary /> | ||
2253 | public SetUpdateCompleteEventArgs(int hrStatus, string previousPackageId, string newPackageId) | ||
2254 | : base(hrStatus) | ||
2255 | { | ||
2256 | this.PreviousPackageId = previousPackageId; | ||
2257 | this.NewPackageId = newPackageId; | ||
2258 | } | ||
2259 | |||
2260 | /// <summary> | ||
2261 | /// Gets the identifier of the update package that was removed. | ||
2262 | /// </summary> | ||
2263 | public string PreviousPackageId { get; private set; } | ||
2264 | |||
2265 | /// <summary> | ||
2266 | /// Gets the identifier of the update package that was added. | ||
2267 | /// </summary> | ||
2268 | public string NewPackageId { get; private set; } | ||
2269 | } | ||
2233 | } | 2270 | } |
diff --git a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs index 259c407f..f0c0b7ec 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs | |||
@@ -1097,6 +1097,24 @@ namespace WixToolset.Mba.Core | |||
1097 | [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId, | 1097 | [MarshalAs(UnmanagedType.LPWStr)] string wzPayloadId, |
1098 | int hrStatus | 1098 | int hrStatus |
1099 | ); | 1099 | ); |
1100 | |||
1101 | /// <summary> | ||
1102 | /// See <see cref="IDefaultBootstrapperApplication.SetUpdateBegin"/>. | ||
1103 | /// </summary> | ||
1104 | [PreserveSig] | ||
1105 | [return: MarshalAs(UnmanagedType.I4)] | ||
1106 | int OnSetUpdateBegin(); | ||
1107 | |||
1108 | /// <summary> | ||
1109 | /// See <see cref="IDefaultBootstrapperApplication.SetUpdateComplete"/>. | ||
1110 | /// </summary> | ||
1111 | [PreserveSig] | ||
1112 | [return: MarshalAs(UnmanagedType.I4)] | ||
1113 | int OnSetUpdateComplete( | ||
1114 | int hrStatus, | ||
1115 | [MarshalAs(UnmanagedType.LPWStr)] string wzPreviousPackageId, | ||
1116 | [MarshalAs(UnmanagedType.LPWStr)] string wzNewPackageId | ||
1117 | ); | ||
1100 | } | 1118 | } |
1101 | 1119 | ||
1102 | /// <summary> | 1120 | /// <summary> |
diff --git a/src/api/burn/WixToolset.Mba.Core/IBundleInfo.cs b/src/api/burn/WixToolset.Mba.Core/IBundleInfo.cs index 35decc88..3227b72d 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBundleInfo.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBundleInfo.cs | |||
@@ -40,5 +40,12 @@ namespace WixToolset.Mba.Core | |||
40 | /// <param name="e"></param> | 40 | /// <param name="e"></param> |
41 | /// <returns>The created <see cref="IPackageInfo"/>.</returns> | 41 | /// <returns>The created <see cref="IPackageInfo"/>.</returns> |
42 | IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e); | 42 | IPackageInfo AddRelatedBundleAsPackage(DetectRelatedBundleEventArgs e); |
43 | |||
44 | /// <summary> | ||
45 | /// Adds an update bundle as a package. | ||
46 | /// </summary> | ||
47 | /// <param name="e"></param> | ||
48 | /// <returns>The created <see cref="IPackageInfo"/>.</returns> | ||
49 | IPackageInfo AddUpdateBundleAsPackage(SetUpdateCompleteEventArgs e); | ||
43 | } | 50 | } |
44 | } \ No newline at end of file | 51 | } \ No newline at end of file |
diff --git a/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs index 20ce9f88..e809a965 100644 --- a/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs | |||
@@ -344,6 +344,16 @@ namespace WixToolset.Mba.Core | |||
344 | event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; | 344 | event EventHandler<RollbackMsiTransactionCompleteEventArgs> RollbackMsiTransactionComplete; |
345 | 345 | ||
346 | /// <summary> | 346 | /// <summary> |
347 | /// Fired when the engine has begun to setup the update package. | ||
348 | /// </summary> | ||
349 | event EventHandler<SetUpdateBeginEventArgs> SetUpdateBegin; | ||
350 | |||
351 | /// <summary> | ||
352 | /// Fired when the engine has completed setting up the update package. | ||
353 | /// </summary> | ||
354 | event EventHandler<SetUpdateCompleteEventArgs> SetUpdateComplete; | ||
355 | |||
356 | /// <summary> | ||
347 | /// Fired when the engine is shutting down the bootstrapper application. | 357 | /// Fired when the engine is shutting down the bootstrapper application. |
348 | /// </summary> | 358 | /// </summary> |
349 | event EventHandler<ShutdownEventArgs> Shutdown; | 359 | event EventHandler<ShutdownEventArgs> Shutdown; |
diff --git a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs index 567a7cdd..3681a497 100644 --- a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs +++ b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs | |||
@@ -51,6 +51,11 @@ namespace WixToolset.Mba.Core | |||
51 | /// | 51 | /// |
52 | /// </summary> | 52 | /// </summary> |
53 | PatchBundle, | 53 | PatchBundle, |
54 | |||
55 | /// <summary> | ||
56 | /// | ||
57 | /// </summary> | ||
58 | UpdateBundle, | ||
54 | } | 59 | } |
55 | 60 | ||
56 | /// <summary> | 61 | /// <summary> |
@@ -269,6 +274,20 @@ namespace WixToolset.Mba.Core | |||
269 | return package; | 274 | return package; |
270 | } | 275 | } |
271 | 276 | ||
277 | /// <summary> | ||
278 | /// | ||
279 | /// </summary> | ||
280 | /// <param name="id"></param> | ||
281 | /// <returns></returns> | ||
282 | public static IPackageInfo GetUpdateBundleAsPackage(string id) | ||
283 | { | ||
284 | PackageInfo package = new PackageInfo(); | ||
285 | package.Id = id; | ||
286 | package.Type = PackageType.UpdateBundle; | ||
287 | |||
288 | return package; | ||
289 | } | ||
290 | |||
272 | internal static void ParseBalPackageInfoFromXml(XPathNavigator root, XmlNamespaceManager namespaceManager, Dictionary<string, IPackageInfo> packagesById) | 291 | internal static void ParseBalPackageInfoFromXml(XPathNavigator root, XmlNamespaceManager namespaceManager, Dictionary<string, IPackageInfo> packagesById) |
273 | { | 292 | { |
274 | XPathNodeIterator nodes = root.Select("/p:BootstrapperApplicationData/p:WixBalPackageInfo", namespaceManager); | 293 | XPathNodeIterator nodes = root.Select("/p:BootstrapperApplicationData/p:WixBalPackageInfo", namespaceManager); |
diff --git a/src/api/burn/balutil/balinfo.cpp b/src/api/burn/balutil/balinfo.cpp index 2746f49e..d9cc9b76 100644 --- a/src/api/burn/balutil/balinfo.cpp +++ b/src/api/burn/balutil/balinfo.cpp | |||
@@ -166,7 +166,7 @@ LExit: | |||
166 | 166 | ||
167 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( | 167 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( |
168 | __in BAL_INFO_PACKAGES* pPackages, | 168 | __in BAL_INFO_PACKAGES* pPackages, |
169 | __in LPCWSTR wzId, | 169 | __in_z LPCWSTR wzId, |
170 | __in BOOTSTRAPPER_RELATION_TYPE relationType, | 170 | __in BOOTSTRAPPER_RELATION_TYPE relationType, |
171 | __in BOOL /*fPerMachine*/, | 171 | __in BOOL /*fPerMachine*/, |
172 | __out_opt BAL_INFO_PACKAGE** ppPackage | 172 | __out_opt BAL_INFO_PACKAGE** ppPackage |
@@ -228,6 +228,47 @@ LExit: | |||
228 | } | 228 | } |
229 | 229 | ||
230 | 230 | ||
231 | DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage( | ||
232 | __in BAL_INFO_PACKAGES* pPackages, | ||
233 | __in_z LPCWSTR wzId, | ||
234 | __in_z LPCWSTR /*wzPreviousId*/, | ||
235 | __out_opt BAL_INFO_PACKAGE** ppPackage | ||
236 | ) | ||
237 | { | ||
238 | HRESULT hr = S_OK; | ||
239 | BAL_INFO_PACKAGE* pPackage = NULL; | ||
240 | |||
241 | // Check to see if the bundle is already in the list of packages. | ||
242 | for (DWORD i = 0; i < pPackages->cPackages; ++i) | ||
243 | { | ||
244 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1)) | ||
245 | { | ||
246 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)); | ||
247 | } | ||
248 | } | ||
249 | |||
250 | // Add the update bundle as a package. | ||
251 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pPackages->rgPackages), pPackages->cPackages + 1, sizeof(BAL_INFO_PACKAGE), 2); | ||
252 | ExitOnFailure(hr, "Failed to allocate memory for update bundle package information."); | ||
253 | |||
254 | pPackage = pPackages->rgPackages + pPackages->cPackages; | ||
255 | ++pPackages->cPackages; | ||
256 | |||
257 | hr = StrAllocString(&pPackage->sczId, wzId, 0); | ||
258 | ExitOnFailure(hr, "Failed to copy update bundle package id."); | ||
259 | |||
260 | pPackage->type = BAL_INFO_PACKAGE_TYPE_BUNDLE_UPDATE; | ||
261 | |||
262 | if (ppPackage) | ||
263 | { | ||
264 | *ppPackage = pPackage; | ||
265 | } | ||
266 | |||
267 | LExit: | ||
268 | return hr; | ||
269 | } | ||
270 | |||
271 | |||
231 | DAPI_(HRESULT) BalInfoFindPackageById( | 272 | DAPI_(HRESULT) BalInfoFindPackageById( |
232 | __in BAL_INFO_PACKAGES* pPackages, | 273 | __in BAL_INFO_PACKAGES* pPackages, |
233 | __in LPCWSTR wzId, | 274 | __in LPCWSTR wzId, |
diff --git a/src/api/burn/balutil/inc/BAFunctions.h b/src/api/burn/balutil/inc/BAFunctions.h index 21cace1f..2698a6e3 100644 --- a/src/api/burn/balutil/inc/BAFunctions.h +++ b/src/api/burn/balutil/inc/BAFunctions.h | |||
@@ -82,6 +82,8 @@ enum BA_FUNCTIONS_MESSAGE | |||
82 | BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, | 82 | BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE, |
83 | BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, | 83 | BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS = BOOTSTRAPPER_APPLICATION_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS, |
84 | BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, | 84 | BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, |
85 | BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, | ||
86 | BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, | ||
85 | 87 | ||
86 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, | 88 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, |
87 | BA_FUNCTIONS_MESSAGE_WNDPROC, | 89 | BA_FUNCTIONS_MESSAGE_WNDPROC, |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h index e45db2dc..8d9bddca 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h | |||
@@ -794,6 +794,20 @@ public: // IBootstrapperApplication | |||
794 | return S_OK; | 794 | return S_OK; |
795 | } | 795 | } |
796 | 796 | ||
797 | virtual STDMETHODIMP OnSetUpdateBegin() | ||
798 | { | ||
799 | return S_OK; | ||
800 | } | ||
801 | |||
802 | virtual STDMETHODIMP OnSetUpdateComplete( | ||
803 | __in HRESULT /*hrStatus*/, | ||
804 | __in_z_opt LPCWSTR /*wzPreviousPackageId*/, | ||
805 | __in_z_opt LPCWSTR /*wzNewPackageId*/ | ||
806 | ) | ||
807 | { | ||
808 | return S_OK; | ||
809 | } | ||
810 | |||
797 | public: // IBAFunctions | 811 | public: // IBAFunctions |
798 | virtual STDMETHODIMP OnPlan( | 812 | virtual STDMETHODIMP OnPlan( |
799 | ) | 813 | ) |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h index e841c660..1ab0df59 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h | |||
@@ -153,6 +153,8 @@ static HRESULT WINAPI BalBaseBAFunctionsProc( | |||
153 | case BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE: | 153 | case BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTCOMPLETE: |
154 | case BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS: | 154 | case BA_FUNCTIONS_MESSAGE_ONCACHEPAYLOADEXTRACTPROGRESS: |
155 | case BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY: | 155 | case BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY: |
156 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN: | ||
157 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE: | ||
156 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); | 158 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); |
157 | break; | 159 | break; |
158 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: | 160 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h index c10b662c..4d043dfe 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | |||
@@ -990,6 +990,20 @@ public: // IBootstrapperApplication | |||
990 | return S_OK; | 990 | return S_OK; |
991 | } | 991 | } |
992 | 992 | ||
993 | virtual STDMETHODIMP OnSetUpdateBegin() | ||
994 | { | ||
995 | return S_OK; | ||
996 | } | ||
997 | |||
998 | virtual STDMETHODIMP OnSetUpdateComplete( | ||
999 | __in HRESULT /*hrStatus*/, | ||
1000 | __in_z_opt LPCWSTR /*wzPreviousPackageId*/, | ||
1001 | __in_z_opt LPCWSTR /*wzNewPackageId*/ | ||
1002 | ) | ||
1003 | { | ||
1004 | return S_OK; | ||
1005 | } | ||
1006 | |||
993 | public: //CBalBaseBootstrapperApplication | 1007 | public: //CBalBaseBootstrapperApplication |
994 | virtual STDMETHODIMP Initialize( | 1008 | virtual STDMETHODIMP Initialize( |
995 | __in const BOOTSTRAPPER_CREATE_ARGS* pCreateArgs | 1009 | __in const BOOTSTRAPPER_CREATE_ARGS* pCreateArgs |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h index f17e1fcb..59bfc1f8 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h | |||
@@ -666,6 +666,24 @@ static HRESULT BalBaseBAProcOnCachePayloadExtractComplete( | |||
666 | return pBA->OnCachePayloadExtractComplete(pArgs->wzContainerId, pArgs->wzPayloadId, pArgs->hrStatus); | 666 | return pBA->OnCachePayloadExtractComplete(pArgs->wzContainerId, pArgs->wzPayloadId, pArgs->hrStatus); |
667 | } | 667 | } |
668 | 668 | ||
669 | static HRESULT BalBaseBAProcOnSetUpdateBegin( | ||
670 | __in IBootstrapperApplication* pBA, | ||
671 | __in BA_ONSETUPDATEBEGIN_ARGS* /*pArgs*/, | ||
672 | __inout BA_ONSETUPDATEBEGIN_RESULTS* /*pResults*/ | ||
673 | ) | ||
674 | { | ||
675 | return pBA->OnSetUpdateBegin(); | ||
676 | } | ||
677 | |||
678 | static HRESULT BalBaseBAProcOnSetUpdateComplete( | ||
679 | __in IBootstrapperApplication* pBA, | ||
680 | __in BA_ONSETUPDATECOMPLETE_ARGS* pArgs, | ||
681 | __inout BA_ONSETUPDATECOMPLETE_RESULTS* /*pResults*/ | ||
682 | ) | ||
683 | { | ||
684 | return pBA->OnSetUpdateComplete(pArgs->hrStatus, pArgs->wzPreviousPackageId, pArgs->wzNewPackageId); | ||
685 | } | ||
686 | |||
669 | /******************************************************************* | 687 | /******************************************************************* |
670 | BalBaseBootstrapperApplicationProc - requires pvContext to be of type IBootstrapperApplication. | 688 | BalBaseBootstrapperApplicationProc - requires pvContext to be of type IBootstrapperApplication. |
671 | Provides a default mapping between the new message based BA interface and | 689 | Provides a default mapping between the new message based BA interface and |
@@ -904,6 +922,12 @@ static HRESULT WINAPI BalBaseBootstrapperApplicationProc( | |||
904 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY: | 922 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY: |
905 | hr = BalBaseBAProcOnPlanRollbackBoundary(pBA, reinterpret_cast<BA_ONPLANROLLBACKBOUNDARY_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANROLLBACKBOUNDARY_RESULTS*>(pvResults)); | 923 | hr = BalBaseBAProcOnPlanRollbackBoundary(pBA, reinterpret_cast<BA_ONPLANROLLBACKBOUNDARY_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANROLLBACKBOUNDARY_RESULTS*>(pvResults)); |
906 | break; | 924 | break; |
925 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN: | ||
926 | hr = BalBaseBAProcOnSetUpdateBegin(pBA, reinterpret_cast<BA_ONSETUPDATEBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONSETUPDATEBEGIN_RESULTS*>(pvResults)); | ||
927 | break; | ||
928 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE: | ||
929 | hr = BalBaseBAProcOnSetUpdateComplete(pBA, reinterpret_cast<BA_ONSETUPDATECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSETUPDATECOMPLETE_RESULTS*>(pvResults)); | ||
930 | break; | ||
907 | } | 931 | } |
908 | } | 932 | } |
909 | 933 | ||
diff --git a/src/api/burn/balutil/inc/IBootstrapperApplication.h b/src/api/burn/balutil/inc/IBootstrapperApplication.h index 1fc99988..be9b7b6e 100644 --- a/src/api/burn/balutil/inc/IBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/IBootstrapperApplication.h | |||
@@ -658,4 +658,12 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
658 | __in_z_opt LPCWSTR wzPayloadId, | 658 | __in_z_opt LPCWSTR wzPayloadId, |
659 | __in HRESULT hrStatus | 659 | __in HRESULT hrStatus |
660 | ) = 0; | 660 | ) = 0; |
661 | |||
662 | STDMETHOD(OnSetUpdateBegin)() = 0; | ||
663 | |||
664 | STDMETHOD(OnSetUpdateComplete)( | ||
665 | __in HRESULT hrStatus, | ||
666 | __in_z_opt LPCWSTR wzPreviousPackageId, | ||
667 | __in_z_opt LPCWSTR wzNewPackageId | ||
668 | ) = 0; | ||
661 | }; | 669 | }; |
diff --git a/src/api/burn/balutil/inc/balinfo.h b/src/api/burn/balutil/inc/balinfo.h index 769becb2..8f61685f 100644 --- a/src/api/burn/balutil/inc/balinfo.h +++ b/src/api/burn/balutil/inc/balinfo.h | |||
@@ -16,6 +16,7 @@ typedef enum BAL_INFO_PACKAGE_TYPE | |||
16 | BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE, | 16 | BAL_INFO_PACKAGE_TYPE_BUNDLE_UPGRADE, |
17 | BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON, | 17 | BAL_INFO_PACKAGE_TYPE_BUNDLE_ADDON, |
18 | BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH, | 18 | BAL_INFO_PACKAGE_TYPE_BUNDLE_PATCH, |
19 | BAL_INFO_PACKAGE_TYPE_BUNDLE_UPDATE, | ||
19 | } BAL_INFO_PACKAGE_TYPE; | 20 | } BAL_INFO_PACKAGE_TYPE; |
20 | 21 | ||
21 | typedef enum _BAL_INFO_RESTART | 22 | typedef enum _BAL_INFO_RESTART |
@@ -125,7 +126,7 @@ DAPI_(HRESULT) BalInfoParseFromXml( | |||
125 | ********************************************************************/ | 126 | ********************************************************************/ |
126 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( | 127 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( |
127 | __in BAL_INFO_PACKAGES* pPackages, | 128 | __in BAL_INFO_PACKAGES* pPackages, |
128 | __in LPCWSTR wzId, | 129 | __in_z LPCWSTR wzId, |
129 | __in BOOTSTRAPPER_RELATION_TYPE relationType, | 130 | __in BOOTSTRAPPER_RELATION_TYPE relationType, |
130 | __in BOOL fPerMachine, | 131 | __in BOOL fPerMachine, |
131 | __out_opt BAL_INFO_PACKAGE** ppPackage | 132 | __out_opt BAL_INFO_PACKAGE** ppPackage |
@@ -133,6 +134,18 @@ DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( | |||
133 | 134 | ||
134 | 135 | ||
135 | /******************************************************************* | 136 | /******************************************************************* |
137 | BalInfoAddUpdateBundleAsPackage - adds an update bundle as a package. | ||
138 | |||
139 | ********************************************************************/ | ||
140 | DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage( | ||
141 | __in BAL_INFO_PACKAGES* pPackages, | ||
142 | __in_z LPCWSTR wzId, | ||
143 | __in_z LPCWSTR wzPreviousId, | ||
144 | __out_opt BAL_INFO_PACKAGE** ppPackage | ||
145 | ); | ||
146 | |||
147 | |||
148 | /******************************************************************* | ||
136 | BalInfoFindPackageById - finds a package by its id. | 149 | BalInfoFindPackageById - finds a package by its id. |
137 | 150 | ||
138 | ********************************************************************/ | 151 | ********************************************************************/ |