summaryrefslogtreecommitdiff
path: root/src/api/burn/WixToolset.Mba.Core
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-12-10 11:42:44 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-12-11 20:03:13 -0600
commitfc30db9fa3aa1d25a6ef078452864673caa67ec5 (patch)
treee3415a5a1329a867b2934a038243e95098214ec3 /src/api/burn/WixToolset.Mba.Core
parent1d58b3333d1d694d08b68f6c87223aa504bfe773 (diff)
downloadwix-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/burn/WixToolset.Mba.Core')
-rw-r--r--src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs48
-rw-r--r--src/api/burn/WixToolset.Mba.Core/BundleInfo.cs8
-rw-r--r--src/api/burn/WixToolset.Mba.Core/EventArgs.cs37
-rw-r--r--src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs18
-rw-r--r--src/api/burn/WixToolset.Mba.Core/IBundleInfo.cs7
-rw-r--r--src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs10
-rw-r--r--src/api/burn/WixToolset.Mba.Core/PackageInfo.cs19
7 files changed, 147 insertions, 0 deletions
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);