aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Mba.Core
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-03-11 19:57:12 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-03-11 20:44:10 -0600
commitb036b878a6b477158a22e508ee3a9e8f569f5bf4 (patch)
treeec613efd903fd3a2b618b0ec52dd02784d725e70 /src/WixToolset.Mba.Core
parent4bdf4846de8c96a1c2ad5e9ea791b575e3b0e37d (diff)
downloadwix-b036b878a6b477158a22e508ee3a9e8f569f5bf4.tar.gz
wix-b036b878a6b477158a22e508ee3a9e8f569f5bf4.tar.bz2
wix-b036b878a6b477158a22e508ee3a9e8f569f5bf4.zip
Integrate ForwardCompatible and RelatedBundle changes in Burn headers.
Diffstat (limited to 'src/WixToolset.Mba.Core')
-rw-r--r--src/WixToolset.Mba.Core/BootstrapperApplication.cs34
-rw-r--r--src/WixToolset.Mba.Core/EventArgs.cs97
-rw-r--r--src/WixToolset.Mba.Core/IBootstrapperApplication.cs33
-rw-r--r--src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs5
4 files changed, 134 insertions, 35 deletions
diff --git a/src/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/WixToolset.Mba.Core/BootstrapperApplication.cs
index 1812c80b..b6c0dd0d 100644
--- a/src/WixToolset.Mba.Core/BootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/BootstrapperApplication.cs
@@ -226,6 +226,9 @@ namespace WixToolset.Mba.Core
226 /// <inheritdoc/> 226 /// <inheritdoc/>
227 public event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete; 227 public event EventHandler<SystemRestorePointCompleteEventArgs> SystemRestorePointComplete;
228 228
229 /// <inheritdoc/>
230 public event EventHandler<PlanForwardCompatibleBundleEventArgs> PlanForwardCompatibleBundle;
231
229 /// <summary> 232 /// <summary>
230 /// Entry point that is called when the bootstrapper application is ready to run. 233 /// Entry point that is called when the bootstrapper application is ready to run.
231 /// </summary> 234 /// </summary>
@@ -1083,6 +1086,18 @@ namespace WixToolset.Mba.Core
1083 } 1086 }
1084 } 1087 }
1085 1088
1089 /// <summary>
1090 /// Called by the engine, raises the <see cref="PlanForwardCompatibleBundle"/> event.
1091 /// </summary>
1092 protected virtual void OnPlanForwardCompatibleBundle(PlanForwardCompatibleBundleEventArgs args)
1093 {
1094 EventHandler<PlanForwardCompatibleBundleEventArgs> handler = this.PlanForwardCompatibleBundle;
1095 if (null != handler)
1096 {
1097 handler(this, args);
1098 }
1099 }
1100
1086 #region IBootstrapperApplication Members 1101 #region IBootstrapperApplication Members
1087 1102
1088 int IBootstrapperApplication.OnStartup() 1103 int IBootstrapperApplication.OnStartup()
@@ -1120,13 +1135,12 @@ namespace WixToolset.Mba.Core
1120 return args.HResult; 1135 return args.HResult;
1121 } 1136 }
1122 1137
1123 int IBootstrapperApplication.OnDetectForwardCompatibleBundle(string wzBundleId, RelationType relationType, string wzBundleTag, bool fPerMachine, string wzVersion, ref bool fCancel, ref bool fIgnoreBundle) 1138 int IBootstrapperApplication.OnDetectForwardCompatibleBundle(string wzBundleId, RelationType relationType, string wzBundleTag, bool fPerMachine, string wzVersion, bool fMissingFromCache, ref bool fCancel)
1124 { 1139 {
1125 DetectForwardCompatibleBundleEventArgs args = new DetectForwardCompatibleBundleEventArgs(wzBundleId, relationType, wzBundleTag, fPerMachine, wzVersion, fCancel, fIgnoreBundle); 1140 DetectForwardCompatibleBundleEventArgs args = new DetectForwardCompatibleBundleEventArgs(wzBundleId, relationType, wzBundleTag, fPerMachine, wzVersion, fMissingFromCache, fCancel);
1126 this.OnDetectForwardCompatibleBundle(args); 1141 this.OnDetectForwardCompatibleBundle(args);
1127 1142
1128 fCancel = args.Cancel; 1143 fCancel = args.Cancel;
1129 fIgnoreBundle = args.IgnoreBundle;
1130 return args.HResult; 1144 return args.HResult;
1131 } 1145 }
1132 1146
@@ -1159,9 +1173,9 @@ namespace WixToolset.Mba.Core
1159 return args.HResult; 1173 return args.HResult;
1160 } 1174 }
1161 1175
1162 int IBootstrapperApplication.OnDetectRelatedBundle(string wzProductCode, RelationType relationType, string wzBundleTag, bool fPerMachine, string wzVersion, RelatedOperation operation, ref bool fCancel) 1176 int IBootstrapperApplication.OnDetectRelatedBundle(string wzProductCode, RelationType relationType, string wzBundleTag, bool fPerMachine, string wzVersion, RelatedOperation operation, bool fMissingFromCache, ref bool fCancel)
1163 { 1177 {
1164 DetectRelatedBundleEventArgs args = new DetectRelatedBundleEventArgs(wzProductCode, relationType, wzBundleTag, fPerMachine, wzVersion, operation, fCancel); 1178 DetectRelatedBundleEventArgs args = new DetectRelatedBundleEventArgs(wzProductCode, relationType, wzBundleTag, fPerMachine, wzVersion, operation, fMissingFromCache, fCancel);
1165 this.OnDetectRelatedBundle(args); 1179 this.OnDetectRelatedBundle(args);
1166 1180
1167 fCancel = args.Cancel; 1181 fCancel = args.Cancel;
@@ -1656,6 +1670,16 @@ namespace WixToolset.Mba.Core
1656 return args.HResult; 1670 return args.HResult;
1657 } 1671 }
1658 1672
1673 int IBootstrapperApplication.OnPlanForwardCompatibleBundle(string wzBundleId, RelationType relationType, string wzBundleTag, bool fPerMachine, string wzVersion, bool fRecommendedIgnoreBundle, ref bool fCancel, ref bool fIgnoreBundle)
1674 {
1675 PlanForwardCompatibleBundleEventArgs args = new PlanForwardCompatibleBundleEventArgs(wzBundleId, relationType, wzBundleTag, fPerMachine, wzVersion, fRecommendedIgnoreBundle, fCancel, fIgnoreBundle);
1676 this.OnPlanForwardCompatibleBundle(args);
1677
1678 fCancel = args.Cancel;
1679 fIgnoreBundle = args.IgnoreBundle;
1680 return args.HResult;
1681 }
1682
1659 int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext) 1683 int IBootstrapperApplication.BAProc(int message, IntPtr pvArgs, IntPtr pvResults, IntPtr pvContext)
1660 { 1684 {
1661 switch (message) 1685 switch (message)
diff --git a/src/WixToolset.Mba.Core/EventArgs.cs b/src/WixToolset.Mba.Core/EventArgs.cs
index 56705769..7e7cbd11 100644
--- a/src/WixToolset.Mba.Core/EventArgs.cs
+++ b/src/WixToolset.Mba.Core/EventArgs.cs
@@ -226,22 +226,13 @@ namespace WixToolset.Mba.Core
226 } 226 }
227 227
228 /// <summary> 228 /// <summary>
229 /// Additional arguments used when detected a forward compatible bundle. 229 /// Event arguments for <see cref="IDefaultBootstrapperApplication.DetectForwardCompatibleBundle"/>
230 /// </summary> 230 /// </summary>
231 [Serializable] 231 [Serializable]
232 public class DetectForwardCompatibleBundleEventArgs : CancellableHResultEventArgs 232 public class DetectForwardCompatibleBundleEventArgs : CancellableHResultEventArgs
233 { 233 {
234 /// <summary> 234 /// <summary />
235 /// Creates a new instance of the <see cref="DetectUpdateBeginEventArgs"/> class. 235 public DetectForwardCompatibleBundleEventArgs(string bundleId, RelationType relationType, string bundleTag, bool perMachine, string version, bool missingFromCache, bool cancelRecommendation)
236 /// </summary>
237 /// <param name="bundleId">The identity of the forward compatible bundle.</param>
238 /// <param name="relationType">Relationship type for this forward compatible bundle.</param>
239 /// <param name="bundleTag">The tag of the forward compatible bundle.</param>
240 /// <param name="perMachine">Whether the detected forward compatible bundle is per machine.</param>
241 /// <param name="version">The version of the forward compatible bundle detected.</param>
242 /// <param name="cancelRecommendation">The cancel recommendation from the engine.</param>
243 /// <param name="ignoreBundleRecommendation">The ignore recommendation from the engine.</param>
244 public DetectForwardCompatibleBundleEventArgs(string bundleId, RelationType relationType, string bundleTag, bool perMachine, string version, bool cancelRecommendation, bool ignoreBundleRecommendation)
245 : base(cancelRecommendation) 236 : base(cancelRecommendation)
246 { 237 {
247 this.BundleId = bundleId; 238 this.BundleId = bundleId;
@@ -249,7 +240,7 @@ namespace WixToolset.Mba.Core
249 this.BundleTag = bundleTag; 240 this.BundleTag = bundleTag;
250 this.PerMachine = perMachine; 241 this.PerMachine = perMachine;
251 this.Version = version; 242 this.Version = version;
252 this.IgnoreBundle = ignoreBundleRecommendation; 243 this.MissingFromCache = missingFromCache;
253 } 244 }
254 245
255 /// <summary> 246 /// <summary>
@@ -278,9 +269,9 @@ namespace WixToolset.Mba.Core
278 public string Version { get; private set; } 269 public string Version { get; private set; }
279 270
280 /// <summary> 271 /// <summary>
281 /// Instructs the engine whether to use the forward compatible bundle. 272 /// Whether the forward compatible bundle is missing from the package cache.
282 /// </summary> 273 /// </summary>
283 public bool IgnoreBundle { get; set; } 274 public bool MissingFromCache { get; set; }
284 } 275 }
285 276
286 /// <summary> 277 /// <summary>
@@ -408,22 +399,13 @@ namespace WixToolset.Mba.Core
408 } 399 }
409 400
410 /// <summary> 401 /// <summary>
411 /// Additional arguments used when a related bundle has been detected for a bundle. 402 /// Event arguments for <see cref="IDefaultBootstrapperApplication.DetectRelatedBundle"/>
412 /// </summary> 403 /// </summary>
413 [Serializable] 404 [Serializable]
414 public class DetectRelatedBundleEventArgs : CancellableHResultEventArgs 405 public class DetectRelatedBundleEventArgs : CancellableHResultEventArgs
415 { 406 {
416 /// <summary> 407 /// <summary />
417 /// Creates a new instance of the <see cref="DetectRelatedBundleEventArgs"/> class. 408 public DetectRelatedBundleEventArgs(string productCode, RelationType relationType, string bundleTag, bool perMachine, string version, RelatedOperation operation, bool missingFromCache, bool cancelRecommendation)
418 /// </summary>
419 /// <param name="productCode">The identity of the related package bundle.</param>
420 /// <param name="relationType">Relationship type for this related bundle.</param>
421 /// <param name="bundleTag">The tag of the related package bundle.</param>
422 /// <param name="perMachine">Whether the detected bundle is per machine.</param>
423 /// <param name="version">The version of the related bundle detected.</param>
424 /// <param name="operation">The operation that will be taken on the detected bundle.</param>
425 /// <param name="cancelRecommendation">The recommendation from the engine.</param>
426 public DetectRelatedBundleEventArgs(string productCode, RelationType relationType, string bundleTag, bool perMachine, string version, RelatedOperation operation, bool cancelRecommendation)
427 : base(cancelRecommendation) 409 : base(cancelRecommendation)
428 { 410 {
429 this.ProductCode = productCode; 411 this.ProductCode = productCode;
@@ -432,6 +414,7 @@ namespace WixToolset.Mba.Core
432 this.PerMachine = perMachine; 414 this.PerMachine = perMachine;
433 this.Version = version; 415 this.Version = version;
434 this.Operation = operation; 416 this.Operation = operation;
417 this.MissingFromCache = missingFromCache;
435 } 418 }
436 419
437 /// <summary> 420 /// <summary>
@@ -463,6 +446,11 @@ namespace WixToolset.Mba.Core
463 /// Gets the operation that will be taken on the detected bundle. 446 /// Gets the operation that will be taken on the detected bundle.
464 /// </summary> 447 /// </summary>
465 public RelatedOperation Operation { get; private set; } 448 public RelatedOperation Operation { get; private set; }
449
450 /// <summary>
451 /// Whether the related bundle is missing from the package cache.
452 /// </summary>
453 public bool MissingFromCache { get; set; }
466 } 454 }
467 455
468 /// <summary> 456 /// <summary>
@@ -1010,6 +998,61 @@ namespace WixToolset.Mba.Core
1010 } 998 }
1011 999
1012 /// <summary> 1000 /// <summary>
1001 /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlanForwardCompatibleBundle"/>
1002 /// </summary>
1003 [Serializable]
1004 public class PlanForwardCompatibleBundleEventArgs : CancellableHResultEventArgs
1005 {
1006 /// <summary />
1007 public PlanForwardCompatibleBundleEventArgs(string bundleId, RelationType relationType, string bundleTag, bool perMachine, string version, bool recommendedIgnoreBundle, bool cancelRecommendation, bool ignoreBundle)
1008 : base(cancelRecommendation)
1009 {
1010 this.BundleId = bundleId;
1011 this.RelationType = relationType;
1012 this.BundleTag = bundleTag;
1013 this.PerMachine = perMachine;
1014 this.Version = version;
1015 this.RecommendedIgnoreBundle = recommendedIgnoreBundle;
1016 this.IgnoreBundle = ignoreBundle;
1017 }
1018
1019 /// <summary>
1020 /// Gets the identity of the forward compatible bundle detected.
1021 /// </summary>
1022 public string BundleId { get; private set; }
1023
1024 /// <summary>
1025 /// Gets the relationship type of the forward compatible bundle.
1026 /// </summary>
1027 public RelationType RelationType { get; private set; }
1028
1029 /// <summary>
1030 /// Gets the tag of the forward compatible bundle.
1031 /// </summary>
1032 public string BundleTag { get; private set; }
1033
1034 /// <summary>
1035 /// Gets whether the forward compatible bundle is per machine.
1036 /// </summary>
1037 public bool PerMachine { get; private set; }
1038
1039 /// <summary>
1040 /// Gets the version of the forward compatible bundle.
1041 /// </summary>
1042 public string Version { get; private set; }
1043
1044 /// <summary>
1045 /// Gets the recommendation of whether the engine should use the forward compatible bundle.
1046 /// </summary>
1047 public bool RecommendedIgnoreBundle { get; set; }
1048
1049 /// <summary>
1050 /// Gets or sets whether the engine will use the forward compatible bundle.
1051 /// </summary>
1052 public bool IgnoreBundle { get; set; }
1053 }
1054
1055 /// <summary>
1013 /// Additional arguments used when the engine has begun installing the bundle. 1056 /// Additional arguments used when the engine has begun installing the bundle.
1014 /// </summary> 1057 /// </summary>
1015 [Serializable] 1058 [Serializable]
diff --git a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
index 4812c038..14cb8fd5 100644
--- a/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/IBootstrapperApplication.cs
@@ -64,8 +64,8 @@ namespace WixToolset.Mba.Core
64 /// <param name="wzBundleTag"></param> 64 /// <param name="wzBundleTag"></param>
65 /// <param name="fPerMachine"></param> 65 /// <param name="fPerMachine"></param>
66 /// <param name="wzVersion"></param> 66 /// <param name="wzVersion"></param>
67 /// <param name="fMissingFromCache"></param>
67 /// <param name="fCancel"></param> 68 /// <param name="fCancel"></param>
68 /// <param name="fIgnoreBundle"></param>
69 /// <returns></returns> 69 /// <returns></returns>
70 [PreserveSig] 70 [PreserveSig]
71 [return: MarshalAs(UnmanagedType.I4)] 71 [return: MarshalAs(UnmanagedType.I4)]
@@ -75,8 +75,8 @@ namespace WixToolset.Mba.Core
75 [MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag, 75 [MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
76 [MarshalAs(UnmanagedType.Bool)] bool fPerMachine, 76 [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
77 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion, 77 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
78 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel, 78 [MarshalAs(UnmanagedType.Bool)] bool fMissingFromCache,
79 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle 79 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
80 ); 80 );
81 81
82 /// <summary> 82 /// <summary>
@@ -143,6 +143,7 @@ namespace WixToolset.Mba.Core
143 /// <param name="fPerMachine"></param> 143 /// <param name="fPerMachine"></param>
144 /// <param name="wzVersion"></param> 144 /// <param name="wzVersion"></param>
145 /// <param name="operation"></param> 145 /// <param name="operation"></param>
146 /// <param name="fMissingFromCache"></param>
146 /// <param name="fCancel"></param> 147 /// <param name="fCancel"></param>
147 /// <returns></returns> 148 /// <returns></returns>
148 [PreserveSig] 149 [PreserveSig]
@@ -154,6 +155,7 @@ namespace WixToolset.Mba.Core
154 [MarshalAs(UnmanagedType.Bool)] bool fPerMachine, 155 [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
155 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion, 156 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
156 [MarshalAs(UnmanagedType.U4)] RelatedOperation operation, 157 [MarshalAs(UnmanagedType.U4)] RelatedOperation operation,
158 [MarshalAs(UnmanagedType.Bool)] bool fMissingFromCache,
157 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel 159 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel
158 ); 160 );
159 161
@@ -1001,6 +1003,31 @@ namespace WixToolset.Mba.Core
1001 ); 1003 );
1002 1004
1003 /// <summary> 1005 /// <summary>
1006 /// See <see cref="IDefaultBootstrapperApplication.PlanForwardCompatibleBundle"/>.
1007 /// </summary>
1008 /// <param name="wzBundleId"></param>
1009 /// <param name="relationType"></param>
1010 /// <param name="wzBundleTag"></param>
1011 /// <param name="fPerMachine"></param>
1012 /// <param name="wzVersion"></param>
1013 /// <param name="fRecommendedIgnoreBundle"></param>
1014 /// <param name="fCancel"></param>
1015 /// <param name="fIgnoreBundle"></param>
1016 /// <returns></returns>
1017 [PreserveSig]
1018 [return: MarshalAs(UnmanagedType.I4)]
1019 int OnPlanForwardCompatibleBundle(
1020 [MarshalAs(UnmanagedType.LPWStr)] string wzBundleId,
1021 [MarshalAs(UnmanagedType.U4)] RelationType relationType,
1022 [MarshalAs(UnmanagedType.LPWStr)] string wzBundleTag,
1023 [MarshalAs(UnmanagedType.Bool)] bool fPerMachine,
1024 [MarshalAs(UnmanagedType.LPWStr)] string wzVersion,
1025 [MarshalAs(UnmanagedType.Bool)] bool fRecommendedIgnoreBundle,
1026 [MarshalAs(UnmanagedType.Bool)] ref bool fCancel,
1027 [MarshalAs(UnmanagedType.Bool)] ref bool fIgnoreBundle
1028 );
1029
1030 /// <summary>
1004 /// Low level method that is called directly from the engine. 1031 /// Low level method that is called directly from the engine.
1005 /// </summary> 1032 /// </summary>
1006 /// <param name="message"></param> 1033 /// <param name="message"></param>
diff --git a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
index 5803a26a..269d4955 100644
--- a/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
+++ b/src/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs
@@ -230,6 +230,11 @@ namespace WixToolset.Mba.Core
230 event EventHandler<PlanCompleteEventArgs> PlanComplete; 230 event EventHandler<PlanCompleteEventArgs> PlanComplete;
231 231
232 /// <summary> 232 /// <summary>
233 /// Fired when the engine is about to plan a forward compatible bundle.
234 /// </summary>
235 event EventHandler<PlanForwardCompatibleBundleEventArgs> PlanForwardCompatibleBundle;
236
237 /// <summary>
233 /// Fired when the engine has completed planning a package. 238 /// Fired when the engine has completed planning a package.
234 /// </summary> 239 /// </summary>
235 event EventHandler<PlannedPackageEventArgs> PlannedPackage; 240 event EventHandler<PlannedPackageEventArgs> PlannedPackage;